【畢設】班級管理系統——登陸模塊

【登陸模塊介紹】數據庫

主要是處理用戶的登陸,賦予不一樣用戶的不一樣權限。在登陸模塊中,系統在安全性上還增設了驗證碼和限制錯誤登陸次數。主要目的是爲了緩解服務器壓力以及在必定程度上保護用戶隱私。安全

【界面設計】服務器

【登陸錯誤圖解】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);//從新生成驗證碼  
}} 
相關文章
相關標籤/搜索