【登录模块介绍】
主要是处理用户的登录,赋予不同用户的不同权限。在登录模块中,系统在安全性上还增设了验证码和限制错误登录次数。主要目的是为了缓解服务器压力以及在一定程度上保护用户隐私。
【界面设计】
【登录错误图解】
限制错误登录次数功能说明:每名用户每次登陆初始时均有三次输入机会,一旦连续输错三次,则禁止再次输入,只能访问普通用户功能;若在一次或两次输错后但成功登陆者,输入机会将会再次重置为三次,以此类推。
【程序流程图】
【部分代码详解】
private string UserA, PwA; //用户名,密码
private static bool checkAvailabled=true;//记录是否可登录
static private int checkTimes=0;//记录错误次数
bool haveuser = true; //用来判断用户名是否存在private void btnLogin_Click(object sender, EventArgs e)
{
if (flagSecurityCode) //如果验证码正确
{
if (checkAvailabled == true)//如果用户可登录
{
//如果登录次数达到3次,则不允许再次登录
if (checkTimes == 3) { checkAvailabled = false; }
else
{
SqlConnection conCon = new SqlConnection(strCon);
string cmd = "select Luser,Lpassword from LoginInfo";
try
{ conCon.Open();
SqlCommand sc = new SqlCommand(cmd, conCon);
SqlDataReader reader = sc.ExecuteReader();
while (reader.Read())//从数据库中读取用户信息
{ UserA = reader["Luser"].ToString();//读取用户名
PwA= reader["Lpassword"].ToString();//读取密码
if (UserA.Trim() == txtUser.Text & PwA.Trim() == txtKey.Text)//如果登录成功
{MainFrm.islogin = true;//将主界面登录标识记为true
MainFrm.useName = txtUser.Text;//显示主界面用户名
username = txtUser.Text;//记录用户名
checkTimes = 0;//将错误次数重置为0
haveuser = true;//数据库中有该用户名
break;}
else if (User == txtUser.Text)//如果仅密码错误
{ MessageBox.Show("密码错误!", "提示");
MainFrm.islogin = false;
txtKey.Text = "";
txtKey.Focus();
txtSecurityCode.Text = "验证码";
txtSecurityCode.ForeColor = SystemColors.ScrollBar;
LoginFrm_Load(sender, e);//重新生成验证码
checkTimes++;//错误次数加1
haveuser = true;//数据库中有该用户名
break;}
else
{ haveuser = false; }//数据库中无该用户名
}
if (MainFrm.islogin == true)
{ this.Close();}//如果登陆成功,则关闭登录窗体
if (haveuser==false)//如果用户名错误 { MessageBox.Show("用户名错误!", "提示");
MainFrm.islogin = false;
txtUser.Text = "";
txtKey.Text = "请输入密码";
txtKey.ForeColor = SystemColors.ScrollBar;
txtKey.UseSystemPasswordChar = false;
txtSecurityCode.Text = "验证码";
txtSecurityCode.ForeColor = SystemColors.ScrollBar;
LoginFrm_Load(sender, e); //重新生成验证码
txtUser.Focus();
checkTimes++;
}reader.Close();
}
catch (Exception ex)
{ MessageBox.Show(ex.Message, "操作数据库出错!"); }
finally
{ conCon.Close(); }//断开数据库连接
}
switch (checkTimes) //依据不同登错次数显示相应出错图标
{ case 0: pictureBox2.Visible = false;break;
case 1: pictureBox2.Visible = true;
pictureBox2.Image = Image.FromFile(_path + errorImage[0]);
MainFrm.str = "您已连续输错一次"; break;
case 2: pictureBox2.Visible = true;
pictureBox2.Image = Image.FromFile(_path + errorImage[1]);
MainFrm.str = "您已连续输错两次"; break;
case 3: pictureBox2.Visible = true;
pictureBox2.Image = Image.FromFile(_path + errorImage[2]);
MainFrm.str = "您已连续输错三次不可再输入";
MessageBox.Show("您已连续输错三次不可再输入", "提示"); break;
}}}else
{ MessageBox.Show("验证码错误!", "提示");
txtSecurityCode.Text = "";
LoginFrm_Load(sender, e);//重新生成验证码
}}
【毕设】班级管理系统——登录模块,布布扣,bubuko.com