C#:试图为两个用户制作极其简单的登录系统

时间:2016-01-28 16:14:06

标签: c# visual-studio-2013

我目前正在尝试将Visual Studio 2013与C#一起使用,以创建一个非常简单的登录系统。它专为两个用户设计。其中一个简称为user,当成功输入用户名和密码时,程序会打开一个名为NewBooking的表单。第二个用户称为管理员,在输入他们的凭证后,应打开一个名为manager的表单。这是我到目前为止所做的代码:

public partial class login : Form
{
    Thread th;

    public login()
    {
        InitializeComponent();
    }

    private void btnLogIn_Click(object sender, EventArgs e)
    {
        string a = txtUsername.Text;
        string b = txtPassword.Text;

        if (a == "user")
        {
            if (b == "password")
            {
                MessageBox.Show("Welcome User");

                this.Close();

                th = new Thread(opennewform);
                th.SetApartmentState(ApartmentState.STA);
                th.Start();
            }
            if (a == "manager")
            {
                if (b == "managerpassword")
                {
                    MessageBox.Show("Welcome Manager");

                    this.Close();

                    th = new Thread(openmanagerform);
                    th.SetApartmentState(ApartmentState.STA);
                    th.Start();
                }
            }
            else
              MessageBox.Show("Password Incorrect ,Try Again"); 
        } 
        else
          MessageBox.Show("Username Incorrect ,Try Again");
    }

    private void openmanagerform(object obj)
    {
        Application.Run(new manager());
    }

    private void opennewform(object obj)
    {
        Application.Run(new NewBooking());
    }
}

目前,用户帐户可以登录并打开其关联的表单。当我尝试以管理员身份登录时,程序只是说用户名和密码不正确。如何更改代码,以便程序打开管理器表单而不是这样做。

必要的附言:是的我知道这不是你在实际程序中实现登录系统的方式。请告诉我是否可以更改我的代码,以便按照我的意愿进行操作。

提前致谢。

1 个答案:

答案 0 :(得分:4)

你有

if (a == "manager")
if-block中的

if (a == "user")

所以基本上if (a == "manager")将总是评估为假(因此永远不会执行。

如果从顶层角度来看,您的代码如下所示:

if (a == "user")
{
    // ... bunch of code

    if (a == "manager")  // <-- never gonna be true!
    { }
}

只需拔出if (a == "manager")代码块,然后将其放在另一个if-block之后。

或者,您可以重写代码以使用switch语句而不是连续的if语句:

switch(a)
{
    case "user":
        // code here
        break;
    case "manager":
        // code here
        break;
}

就个人而言,我会说switch更容易阅读和管理。