我目前正在尝试将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());
}
}
目前,用户帐户可以登录并打开其关联的表单。当我尝试以管理员身份登录时,程序只是说用户名和密码不正确。如何更改代码,以便程序打开管理器表单而不是这样做。
必要的附言:是的我知道这不是你在实际程序中实现登录系统的方式。请告诉我是否可以更改我的代码,以便按照我的意愿进行操作。
提前致谢。
答案 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
更容易阅读和管理。