【登陸模塊介紹】數據庫
主要是處理用戶的登陸,賦予不一樣用戶的不一樣權限。在登陸模塊中,系統在安全性上還增設了驗證碼和限制錯誤登陸次數。主要目的是爲了緩解服務器壓力以及在必定程度上保護用戶隱私。安全
【界面設計】服務器
【登陸錯誤圖解】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);//從新生成驗證碼 }}