【正文】
e rf ld _ d e p a rt m e n t _ t e leT A B _ U s e rf ld _ u se rN a m ef ld _ u se rP a ssw o rdf ld _ u se rI dt b l _ e m p l o y e e s *u s e r _ IDu s e r _ n a m eu s e r _ s e xu s e r _ d e p a rtu s e r _ t e lu s e r _ b a s e s a la ryu s e r _ e m a ilu s e r _ a d d re s su e r _ p a s s w ordu s e r _ t y p eFK _ TAB _ User _ tbl _ employeesFK _ tbl _ employees _ TAB _ DepartMent 圖 數(shù)據(jù)表關(guān)系圖 22 公司人員管理系統(tǒng)的設(shè)計與開發(fā) ( 3) 數(shù)據(jù)庫 ER 圖 : 圖 數(shù)據(jù)庫 ER 圖 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計 數(shù)據(jù)庫共包括 3 表,表中字段的設(shè)計如下: 表 員工信息表 字段 類型 是否可空 是否主鍵 描述 user_ID nchar(10) 否 是 編號 user_name varchar(20) 否 否 姓名 user_sex varchar(6) 否 否 性別 user_depart nchar(10) 否 外鍵 部門 編號 user_tel varchar(50) 是 否 電話 user_basesalary money 否 否 工資 user_ varchar(50) 是 否 郵箱 user_address varchar(20) 是 否 地址 user_type tinyint 否 否 類型 員工 信息表 使用 屬于 用戶表 部門 信息表 員工 編號 性別 電話 密碼 管理者 用戶名 基本工資 部門編號 電話 部門名 姓名 郵箱 地址 類型 第 四 章 系統(tǒng)總體設(shè)計方案 23 表 部門信息 表 表 用戶表 字段 類型 是否可空 是否主鍵 描述 fld_userName nchar(10) 否 是 用戶 名 fld_userPassword nchar(10) 否 否 密碼 fld_userId nchar(10) 否 外鍵 員工編號 本章小結(jié) 軟件的總體設(shè)計是一個將軟件需求轉(zhuǎn)換為軟件實現(xiàn)方案的過程,分為體系設(shè)計和詳細(xì)設(shè)計兩個階段。體系設(shè)計階段主要是完成對體系宏觀結(jié)構(gòu)的設(shè)計,包括系統(tǒng)總體設(shè)計的思想、目標(biāo)以及總體的操作流程;詳細(xì)設(shè)計階段主要完成系統(tǒng)內(nèi)部實現(xiàn)細(xì)節(jié)的確定,包括數(shù)據(jù)庫的需求設(shè)計、表結(jié)構(gòu)的設(shè)計以及 數(shù)據(jù)庫邏輯結(jié)構(gòu)的 設(shè)計 。 字段 類型 是否可空 是否主鍵 描述 fld_department_Id nchar(10) 否 是 編號 fld_department_Name nchar(10) 否 否 部門名 fld_department_Manager nchar(10) 否 否 管理者 fld_department_tele varchar(11) 否 否 電話 24 公司人員管理系統(tǒng)的設(shè)計與開發(fā) 第 五 章 窗體的設(shè)計與功能的實現(xiàn) 25 第 五 章 窗體的設(shè)計與功能的實現(xiàn) 主窗體的設(shè)計 在 Microsoft Excel 中,我們可以同時打開多個 Excel 文檔,而不需要新打開一個 Excel 窗口,這種程序我們叫做 MDI[7][8](多文檔界面)應(yīng)用程序,該系統(tǒng)的主菜單頁面也使用了 MDI,使其所有打開的窗口都在主窗體區(qū)域顯示,而不會移出 MDI 框架區(qū)域。主窗體如圖 所示: 圖 主窗體設(shè)計圖 26 公司人員管理系統(tǒng)的設(shè)計與開發(fā) 登陸界面的設(shè)計 在主窗體中,可以直接點擊登錄工具欄中的登錄按鈕或者點擊菜單欄中的系統(tǒng)的下一級菜單中的登錄,進行登錄。點擊登陸后,彈出登 錄頁面, 登陸界面 如圖 所示: 登陸界面 對于登錄按鈕 的觸發(fā)事件 , 首先要驗證文本框的合法性輸入; 并 與數(shù)據(jù)庫實現(xiàn)交互, 驗證 文本框 的正確性輸入 [9][10]。其代碼 的 實現(xiàn) 如下 : private void btnEnter_Click(object sender, EventArgs e) { Administrator ad = new Administrator()。 if (visibleUser()) { int type。 if() { type=0。 } else { type=1。 第 五 章 窗體的設(shè)計與功能的實現(xiàn) 27 } string sql = (select * from tbl_employees where user_ID=39。{0}39。 and uer_password =39。{1}39。 and user_type={2} , , , type)。 int count = 0。 try { using (SqlConnection con = new SqlConnection(connString)) { ()。 SqlCommand = new SqlCommand(sql, con)。 SqlDataReader read = ()。 if (()) { count = 1。 } ()。 } } catch (Exception ex) { ()。 } if (count==0) { (登錄失??! )。 …… //部分代碼省略 } else { (登錄成功! )。 ()。 } } } /// summary /// 該方法用來驗證用戶輸入是否合法 /// /summary public bool visibleUser() { if (().Length == 0) { (用戶名不能為空! )。 return false。 } 28 公司人員管理系統(tǒng)的設(shè)計與開發(fā) if (().Length == 0) { (密碼不能為空! )。 return false。 } …… //部分代碼 省略 return true。 } 主功能界面的設(shè)計 正確填寫登錄信息后,即可登錄到公司管理人員的系統(tǒng)中,若是成功登錄的話,下邊的任務(wù)欄中會顯示登錄者的用戶名以及他是以何種身份登錄進來的。若是以員工身份登錄的,則因為權(quán)限的設(shè)置以致有些權(quán)限不能達到,比如員工不能進行系統(tǒng)的維護,員工的增刪改,只能查看一些信息,不能看到員工所有的信息,比如員工的密碼、家庭住址等一些比較隱私的東西;若是以管理員身份登錄的,則不受權(quán)限的限制。 管理員登陸后的主界面如圖 所示: 圖 第 五 章 窗體的設(shè)計與功能的實現(xiàn) 29 在系統(tǒng)主界面的狀態(tài)欄中顯示:系統(tǒng)窗口 wengejuan管理員,這是成功登陸以后的狀態(tài)顯示,其功能實現(xiàn)代碼如下: …… //部分代碼省略 if (().Length != 0 amp。amp。 ().Length != 0) { if (斷開 == true) { .Text = .Text + + + + 。 } else { .Text = .Text。 } } …… //部分代碼省略 數(shù)據(jù)庫功能實現(xiàn)的界面設(shè)計 人員信息的查看連接到員工信息管理頁面,實現(xiàn)員 工信息在數(shù)據(jù)庫中的檢索,并且實現(xiàn)了分頁查看,而且對數(shù)據(jù)庫中的員工進行了計數(shù),可以清楚的知道員工的總?cè)藬?shù),也可以利用姓名、部門、用戶名、性別進行檢索,計數(shù)課得出所要檢索的人員數(shù)目,例如檢索市場部中的男性,共有三名,如圖 所示 : 檢索結(jié)果圖 30 公司人員管理系統(tǒng)的設(shè)計與開發(fā) 此功能界面同時也實現(xiàn)了員工信息的添加、修改和刪除。修改和刪除時只能選擇一條記錄。實現(xiàn)了與數(shù)據(jù)庫的交互。 其部分核心代碼如下: /// summary /// 查詢 /// /summary private void btnSelect_Click(object sender, EventArgs e) { string userName = , name = , dapart = , sex = , baseSalary = 。 if ( != ) { name = AND user_ID=39。 + + 39。 } if ( != ) { userName = AND user_name LIKE 39。[ + + ]%39。 } if ( != ) { dapart = AND user_depart=39。 + + 39。 } if ( != ) { sex = AND user_sex=39。 + + 39。 } if ( != 0) { baseSalary = and user_basesalary = + 。 } s