【毕设】班级管理系统——登陆模块

【登陆模块介绍】数据库

主要是处理用户的登陆,赋予不一样用户的不一样权限。在登陆模块中,系统在安全性上还增设了验证码和限制错误登陆次数。主要目的是为了缓解服务器压力以及在必定程度上保护用户隐私。安全

【界面设计】服务器

【登陆错误图解】this

限制错误登陆次数功能说明:每名用户每次登录初始时均有三次输入机会,一旦连续输错三次,则禁止再次输入,只能访问普通用户功能;若在一次或两次输错后但成功登录者,输入机会将会再次重置为三次,以此类推。spa

 

【程序流程图】设计

【部分代码详解】3d

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);//从新生成验证码  
}} 
相关文章
相关标签/搜索