學習C#和Microsoft SQL Server以來,作為一個初學者的我,第一次有了一個較為完整的小案例的實現,想通過這個案例的實現過程與各位前輩進行交流,如有不足懇請各位前輩指正,希望我們共同進步:
人事管理系統在網上有很多的源碼,卻很少有針對這些源碼進行分析的案例,對于初學者在理解上確實有一定的困難,往往其中有很多細節,可能困擾像我這樣的初學者很長時間。
一個人事管理系統首先有一個登陸使用的賬號和密碼組成的口令進入系統,相應的應該有一個數據存放的“容器”,這時候需要使用到數據庫來作為這個“數據倉庫”,對于數據庫的設計在以后的內容中會進行補充。
登陸界面,設計了一種最常見的類型,設計界面如下:
界面利用了TextBox控件接收用戶名和密碼,label控件用于顯示姓名,密碼的文字提示,兩個Button按鈕分別為LogIn和Cancel。
當我們輸入用戶名和密碼之后需要將這個組合進行驗證,這時候我們就需要對數據庫進行訪問,對于數據庫的訪問設計了一個MyMeans類,這個類放到DataClass文件夾下,這個將在后續進行補充這個類的設計。
實例化MyMeans類的一個對象:
DataClass.MyMeans MyClass = new DataClass.MyMeans();當運行時,通過窗體的加載事件來對數據庫進行連接,連接為一次一連接類型,這樣可以減少資源占用,提高效率。
PRivate void F_LogIn_Load(object sender, EventArgs e) { try { MyClass.con_open(); MyClass.con_close(); textName.Text = ""; textPass.Text = ""; } catch { MessageBox.Show("數據庫連接失敗!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); application.Exit(); } }當窗體活動時,將焦點設置到用戶名TextBox:
private void F_LogIn_Activated(object sender, EventArgs e) { //當處于活動窗體時,焦點在name的TextBox控件上 textName.Focus(); }實現的過程如下:通過兩個TextBox控件得到組合,當點擊登陸按鈕時將會觸發這個按鈕的Click事件:
private void butLogIn_Click(object sender, EventArgs e) { if (textName.Text != "" & textPass.Text != "") { //獲取登陸表中的用戶名和密碼的組合 SqlDataReader temDataReader = MyClass.getCommand("select * from tb_Login where Name='" + textName.Text.Trim() + "' and Pass= '" + textPass.Text.Trim() + "'"); //read()得到的返回值bool型,利用這個特性 bool ifcom = temDataReader.Read(); if (ifcom) { //獲取登錄名 DataClass.MyMeans.LogIn_Name = textName.Text.Trim(); //獲取登陸的ID地址 DataClass.MyMeans.LogIn_ID = temDataReader.GetString(0); //斷開連接 DataClass.MyMeans.My_Con.Close(); //釋放占用的資源 DataClass.MyMeans.My_Con.Dispose(); //獲取對象的引用 DataClass.MyMeans.LogIn_n = (int)(this.Tag); //窗口關閉,進入主界面 this.Close(); } else { MessageBox.Show("用戶名或密碼錯誤!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); //重新設置為空 textName.Text = ""; textPass.Text = ""; } //調用MyMeans類中定義的Close方法 MyClass.con_close(); } else MessageBox.Show("請將登錄信息添寫完整!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); }設計兩個TextBox窗體的KeyPress事件,當輸入完畢后,按回車鍵跳到下一個控件:
private void textName_KeyPress(object sender, KeyPressEventArgs e) { //當按下回車鍵時,焦點轉移到密碼textBox控件上 if (e.KeyChar == '/r') textPass.Focus(); } private void textPass_KeyPress(object sender, KeyPressEventArgs e) { //當按下回車鍵時,焦點轉移到密碼LogIn按鈕 if (e.KeyChar == '/r') butLogIn.Focus(); }注:當設計完畢后續的主窗體時,需要將啟動窗體設置為啟動窗體:
在Program.cs文件中修改 為 Application.Run(new F_Main());
假設F_Main()為主窗體。
新聞熱點
疑難解答