我有一个学校项目,要求我们使用WindowsForm构建登录系统,并且要求是
我对这种语言很陌生,但是如果有人可以向我解释这个要求想要什么,并且可能有一些关于如何开始&gt;的提示,那么它是否有可能。&lt;&#39;&#39; < / p>
登录系统适用于客户 并且客户有VIP和非VIP
谢谢!
答案 0 :(得分:0)
所以我知道你在哪里,你甚至不明白这些词是什么意思所以你甚至无法开始。让我分解一下。在编码领域,存在一种称为面向对象编程(oop)的原理。它具有以下原则:重用,继承,多态和抽象。
所以父/基类只是一个“东西”,它有核心变量,子程序/空洞和函数,子/派生类可以从它们自己的实现继承或覆盖它们。一篇很好的(但非常非常简单的)示例演示了所有这些疯狂的内容:本文使用形状:https://msdn.microsoft.com/en-us/library/9fkccyh4.aspx
class TestClass
{
public class Shape
{
public const double PI = Math.PI;
protected double x, y;
public Shape()
{
}
public Shape(double x, double y)
{
this.x = x;
this.y = y;
}
public virtual double Area()
{
return x * y;
}
}
public class Circle : Shape
{
public Circle(double r) : base(r, 0)
{
}
public override double Area()
{
return PI * x * x;
}
}
class Sphere : Shape
{
public Sphere(double r) : base(r, 0)
{
}
public override double Area()
{
return 4 * PI * x * x;
}
}
class Cylinder : Shape
{
public Cylinder(double r, double h) : base(r, h)
{
}
public override double Area()
{
return 2 * PI * x * x + 2 * PI * x * y;
}
}
static void Main()
{
double r = 3.0, h = 5.0;
Shape c = new Circle(r);
Shape s = new Sphere(r);
Shape l = new Cylinder(r, h);
// Display results:
Console.WriteLine("Area of Circle = {0:F2}", c.Area());
Console.WriteLine("Area of Sphere = {0:F2}", s.Area());
Console.WriteLine("Area of Cylinder = {0:F2}", l.Area());
}
}
输出: 圆圈面积= 28.27 球面积= 113.10 圆柱面积......
在这里看到类“Shape”如何有一个名为Area的函数。我们可以将它作为父类使用,并通过不同形状的Area函数的不同实现继承它。显然,Shape类的Area函数适用于矩形,但是你可以看到Circle类覆盖了Area函数。这是OOP,我们正在以抽象的方式重用代码继承和多态。
现在,您需要使用Authenticate函数对父登录类进行编码,并使用名为VIPLogin的派生类及其自己的Authenticate函数实现。
您会问,当用户单击按钮登录时,如何运行父登录类函数而不是子VIPLogin类验证函数?有多种方法,但我会向您展示一种快速而肮脏的方式,只是为了让您轻松理解。顺便说一下,我在手机上输入了所有这些内容,因此下一个代码段可能无法编译:
class Login {
public bool Authenticate(string un, string pw) {
//ToDo: login using database or openid or etc
return true;
}
}
class VIPLogin : Login {
public bool Authenticate(bool isVIP, string un, string pw) {
// if it's not a VIP (like checkbox control ticked) use the generic parent class
if (!isVIP) {
return base.Authenticate(un,pw);
}
else {
//ToDo: VIP login using database or openid or etc
return true;
}
}
}
致电代码:
VIPLogin obj = new VIPLogin();
if ( obj.Authenticate(chkIsVip.Checked, txtUN.Text, txtPW.Text) ) {
// login was successful
}