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


    【登录模块介绍】

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

    【界面设计】

    【登录错误图解】

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

     

    【程序流程图】

    【部分代码详解】

    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);//重新生成验证码  
    }} 
  • 相关阅读:
    js-url打开方式
    eclipse删除所有空行
    Oracle重启 error: ora-01034:oracle not available ora-27101:shared memory realm does not exist
    最近面试遇到了高阶函数的概念混乱了
    关于跨域的cookie问题
    二叉树 呜呜
    函数的尾递归
    react context
    二叉树
    dom3级事件
  • 原文地址:https://www.cnblogs.com/xuhang/p/3782546.html
Copyright © 2020-2023  润新知