1.5 登錄模塊設(shè)計(jì)
1.5.1 登錄模塊概述
系統(tǒng)登錄主要用于對(duì)進(jìn)入家庭視頻監(jiān)控系統(tǒng)的用戶進(jìn)行安全性檢查,以防止非法用戶進(jìn)入該系統(tǒng)。在登錄時(shí),只有合法的用戶才可以進(jìn)入該系統(tǒng)。系統(tǒng)登錄模塊的運(yùn)行結(jié)果如圖1.11所示。
1.5.2 登錄模塊技術(shù)分析
登錄模塊的重點(diǎn)在于將用戶輸入的用戶名和密碼與數(shù)據(jù)庫(kù)中的用戶名和密碼進(jìn)行比較,如果相同將允許用戶進(jìn)入系統(tǒng)的操作界面;否則會(huì)彈出提示框,提示用戶輸入的用戶名或者密碼錯(cuò)誤。該模塊的實(shí)現(xiàn)原理是,根據(jù)用戶輸入的用戶名和密碼在數(shù)據(jù)庫(kù)中查找是否有相符的記錄,并將查詢結(jié)果填充到DataSet數(shù)據(jù)集中,然后判斷該數(shù)據(jù)集中所包含表的行數(shù)是否大于零,如果大于零,則表示輸入的用戶名和密碼正確,從而成功登錄系統(tǒng);否則,彈出提示信息。
1.5.3 登錄模塊實(shí)現(xiàn)過程
本模塊使用的數(shù)據(jù)表:tb_admin
登錄模塊的實(shí)現(xiàn)過程并不復(fù)雜,具體實(shí)現(xiàn)步驟如下:
(1)新建一個(gè)Windows窗體,命名為frmLogin.cs,主要用于實(shí)現(xiàn)系統(tǒng)的登錄功能。該窗體用到的主要控件如表1.13所示。
(2)frmLogin.cs代碼文件中,首先實(shí)例化公共類DataCon和DataOperate的兩個(gè)全局對(duì)象,通過類對(duì)象調(diào)用類中的功能方法。實(shí)例化DataCon和DataOperate類對(duì)象的關(guān)鍵代碼如下:
例程11 代碼位置:光盤\TM\01\VWMS\VWMS\frmLogin.cs
DataCon datacon = new DataCon();
DataOperate dataoperate = new DataOperate();
單擊“登錄”按鈕,首先判斷是否輸入了用戶名,如果沒有輸入用戶名,彈出信息提示框,提示用戶名不能為空;否則,系統(tǒng)會(huì)判斷輸入的用戶名和密碼是否與數(shù)據(jù)庫(kù)中記錄相符。如果符合,則隱藏當(dāng)前窗體,并顯示主窗體;否則,彈出“用戶名或密碼錯(cuò)誤”信息提示?!暗卿洝卑粹o的Click事件代碼如下:
例程12 代碼位置:光盤\TM\01\VWMS\VWMS\frmLogin.cs
private void btnLogin_Click(object sender, EventArgs e)
{
if (txtName.Text == "")
{
u errorProName.SetError(txtName, "用戶名不能為空!");
}
else
{
errorProName.Clear(); //清除錯(cuò)誤提示信息
string strSql = "select * from tb_admin where name='" + txtName.Text + "' and pwd='" + txtPwd.Text + "'";
v DataSet ds = dataoperate.getDs(strSql, "tb_admin");
w if (ds.Tables[0].Rows.Count > 0)
{
this.Hide(); //隱藏當(dāng)前窗體
frmMain frmmain = new frmMain(); //實(shí)例化主窗體對(duì)象
frmmain.Show(); //顯示主窗體
}
else
{
MessageBox.Show("用戶名或密碼錯(cuò)誤!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
U 代碼貼士
u SetError:該方法用來設(shè)置ErrorProvider控件的提示信息。
v DataSet:根據(jù)用戶輸入的登錄用戶名和密碼在數(shù)據(jù)庫(kù)中查找記錄,并填充到DataSet數(shù)據(jù)集。
w Count:該屬性用來獲得DataSet數(shù)據(jù)集中所包含表的行數(shù)。
當(dāng)輸入用戶名或密碼之后,還可以按Enter鍵將鼠標(biāo)焦點(diǎn)移動(dòng)到下一個(gè)控件上。實(shí)現(xiàn)原理是在輸入用戶名或密碼的文本框的KeyPress事件下,判斷是否按了Enter鍵,如果是,則將焦點(diǎn)移動(dòng)到下一個(gè)控件上。按Enter鍵移動(dòng)鼠標(biāo)焦點(diǎn)的實(shí)現(xiàn)代碼如下: