版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、公司員工工資管理系統(tǒng)1 課程設(shè)計目的公司員工工資管理系統(tǒng)是典型的人員信息管理系統(tǒng),其主要的功能是把人員管理過程信息化,自動化以減輕人工的重復(fù)繁瑣勞動。其開發(fā)主要包括后臺數(shù)據(jù)庫的建立維護以及前臺應(yīng)用程序的開發(fā)兩個方面。對于后臺數(shù)據(jù)庫要求建立一個穩(wěn)定的數(shù)據(jù)庫,保持?jǐn)?shù)據(jù)的一致性,完整性,安全性也是必要的。對于前臺要求穩(wěn)定,實用,易用。本系統(tǒng)是為公司人事管理的各種工作而設(shè)計的。根據(jù)需求分析,需要實現(xiàn)對系統(tǒng)用戶,基本信息(公司部門,人員相關(guān)信息等),考勤考評的管理。經(jīng)過分析,本系統(tǒng)使用SQL SERVER 做為其后臺數(shù)據(jù)庫,采用ADO 數(shù)據(jù)庫鏈接技術(shù);Visual C+做為開發(fā)工具,提供了相當(dāng)齊備的類庫
2、、友好的編程界面和多種多樣的數(shù)據(jù)庫訪問技術(shù)。其中ADO 使得編寫數(shù)據(jù)庫應(yīng)用程序變得簡單容易。公司人事管理系統(tǒng)是典型的信息管理系統(tǒng),其開發(fā)主要包括后臺數(shù)據(jù)庫的建立和維護以及前端應(yīng)用程序的開發(fā)兩個方面。對于前者要求建立起數(shù)據(jù)一致性,完整性,安全性好的庫。而對于后者則要求應(yīng)用程序功能完備,易使用等特點。2 功能描述系統(tǒng)功能分析企業(yè)工資管理系統(tǒng)需要完成的功能主要有* 系統(tǒng)數(shù)據(jù)初始化* 員工基本信息數(shù)據(jù)的輸入* 員工基本信息數(shù)據(jù)的修改、刪除* 企業(yè)工資的基本設(shè)定* 員工工資的瀏覽* 員工個人工資表的查詢3 方案論證3.1 總體設(shè)計系統(tǒng)功能模塊設(shè)計如下圖所示。員工信息資員員員料工工工輸增查修入刪詢改員工工
3、資管理系 統(tǒng)工工資資基匯本總設(shè)置基員工個工個本工人資資人工獎罰??偣べY金款利表資查詢圖 1系統(tǒng)功能模塊3.2 詳細(xì)設(shè)計3.2.1 數(shù)據(jù)庫設(shè)計通過對企業(yè)工資管理的內(nèi)容和數(shù)據(jù)流程分析,設(shè)計的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)如下。* 員工基本狀況包括的數(shù)據(jù)庫項有員工號、員工姓名、性別、所在部門、生日、家庭住址、聯(lián)系電話等。因為本程序中只涉及到工資管理,故為了說明簡單在數(shù)據(jù)庫中只包含進了與員工的工資相關(guān)的資料,如入廠時間、所在部門、崗位、工資級別等。* 工資級別的工資金額,包括的數(shù)據(jù)庫項有工資技能等級、工資額。* 企業(yè)部門及工作崗位信息包括的數(shù)據(jù)庫項有部門名稱、工作崗位名稱、崗位工資等。* 公司福利金額包含的數(shù)據(jù)庫項
4、有福利值。* 工資信息包含的數(shù)據(jù)庫項有員工號、員工姓名、員工基礎(chǔ)工資、公司福利、員工實得工資。3.2.2 數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計根據(jù)公司員工信息管理系統(tǒng)設(shè)計的信息數(shù)據(jù)和系統(tǒng)功能模塊結(jié)構(gòu),公司員工信息管理系統(tǒng)數(shù)據(jù)庫包括工資詳情表、登陸框結(jié)構(gòu)表、工資詳情表、員工信息表。為數(shù)據(jù)庫員工工資表添加如下數(shù)據(jù)表。表 1 工資詳情表結(jié)構(gòu)字段名稱數(shù)據(jù)類型說明編號自動編號ID文本員工號departmen文本部門號name文本姓名salary數(shù)字工資remark文本備注表 2登陸框結(jié)構(gòu)字段名稱Namepassword數(shù)據(jù)類型文本文本說明用戶名密碼表 3工資詳情表結(jié)構(gòu)字段名稱數(shù)據(jù)類型說明編號自動編號ID文本員工號depa
5、rtment文本部號basic數(shù)字基本工資bonus數(shù)字獎金welfare數(shù)字福利fine數(shù)字罰款total數(shù)字總工資表 4 員工信息表結(jié)構(gòu)字段名稱數(shù)據(jù)類說明編號自動編號ID文本員工號department文本部門號name文本姓名sex文本性別tob文本職務(wù)tel文本電話address文本住址3.3 創(chuàng)建數(shù)據(jù)源為數(shù)據(jù)庫創(chuàng)建用戶DSN,數(shù)據(jù)源名稱為 “員工工資表 ”。圖 2 創(chuàng)建數(shù)據(jù)源3.3.1 數(shù)據(jù)庫結(jié)構(gòu)的實現(xiàn)在需求分析、概念結(jié)構(gòu)設(shè)計的繼承上得數(shù)據(jù)庫的邏輯結(jié)構(gòu)之后,我們就可以在數(shù)據(jù)庫系統(tǒng)中實現(xiàn)該邏輯結(jié)構(gòu)。數(shù)據(jù)庫的邏輯結(jié)構(gòu)直接使用項目管理器來實現(xiàn)在這之前先建一個名為 salary 工資的項目保存
6、在磁盤,如D salary 。存儲為D:salarydatabasesalary.dbc。為數(shù)據(jù)庫添加數(shù)據(jù)表存儲為Dsalarydatabasetms.dbf.3.3.2 程序界面設(shè)計(1)員工工資模塊設(shè)計圖 3 員工工資管理模塊查詢控件的設(shè)計在CEX_Viewl類中添加按扭控件查詢IDC_BUTTON_QUERYY的BN_CLICKED消息映射并添加下列代碼。void CEx_View:OnButtonQuery()UpdateData();m_strQuery.TrimLeft ();if(m_strQuery.IsEmpty ()MessageBox( 要查詢的員工號不能為空);retu
7、rn;if(m_pSet-IsOpen ()m_pSet-Close();m_pSet-m_strFilter.Format(ID=%s,m_strQuery);m_pSet-m_strSort=department;m_pSet-Open();if(!m_pSet-IsEOF()UpdateData(FALSE);elseMessageBox( 沒有查到你要找員工的記錄!);(2)添加、修改、刪除控件的設(shè)計添加一對話框資源 ID 號為 IDD_SALARY_TABLE,將表單資源的控件復(fù)制到對話框即可,然后為對話框資源創(chuàng)建一個對話框類CSalaryDlg,在 MFC 中為控件添加成員變量如下
8、圖所示。圖 4 員工工資表界面圖 5 為控件添加成員變量然后為 IDOK添加 BN_CLICKED消息映射并添加下列代碼:void CSalaryDlg:OnOK()UpdateData();m_strID.TrimLeft();m_strDepartment.TrimLeft();if(m_strID.IsEmpty()MessageBox( 員工號不能為空!);elseif(m_strDepartment.IsEmpty()MessageBox( 部門號不能為空!);elseCDialog:OnOK();然后 CEx_View 類中的三個按扭 IDC_REC_ADDIDC_REC_EDIT
9、IDC_REC_DEL添加BN_CLICKED消息映射 ,并添加下列代碼:void CEx_View:OnRecAdd()CSalaryDlg dlg;if(dlg.DoModal()=IDOK)m_pSet-AddNew();m_pSet-m_department =dlg.m_strDepartment;m_pSet-m_ID =dlg.m_strID;m_pSet-m_name =dlg.m_strName;m_pSet-m_salary =dlg.m_fSalary;m_pSet-Update();m_pSet-Requery();void CEx_View:OnRecEdit()CS
10、alaryDlg dlg;dlg.m_strDepartment =m_pSet-m_department;dlg.m_strID =m_pSet-m_ID;dlg.m_strName =m_pSet-m_name;dlg.m_fSalary =m_pSet-m_salary;if(dlg.DoModal()=IDOK)m_pSet-Edit();m_pSet-m_department =dlg.m_strDepartment;m_pSet-m_ID =dlg.m_strID;m_pSet-m_name =dlg.m_strName;m_pSet-m_salary =dlg.m_fSalary
11、;m_pSet-Update();m_pSet-Requery();UpdateData(FALSE);void CEx_View:OnRecDel()CRecordsetStatus status;m_pSet-GetStatus(status);m_pSet-Delete();if(status.m_lCurrentRecord=0)m_pSet-MoveNext();elsem_pSet-MoveFirst();UpdateData(FALSE);(3)工資詳情模塊的設(shè)計圖 6 工資詳情設(shè)計為對話框資源創(chuàng)建一個對話框類CDetailDlg, 在MFC 中為控件添加成員變量如下圖所示。圖
12、7 為控件添加成員變量為表單資源的按扭添加 BN_CLICKED消息映射并添加下列代碼。void CEx_View:OnButtonDetail()CDetailDlg dlg;dlg.DoModal();在 CDetailDlg類中添加按扭控件查詢IDC_BUTTON_QUERYY2的 BN_CLICKED消息映射并添加下列代碼void CDetailDlg:OnButtonQuery2()UpdateData();m_strQuery2.TrimLeft ();if(m_strQuery2.IsEmpty ()MessageBox( 要查詢的員工號不能為空!);return;CString
13、 str;str=m_strQuery2;CDetailSet cSet;cSet.m_strFilter.Format(ID=%s,str);cSet.Open();if(!cSet.IsEOF()m_strDepartment=cSet.m_department;m_fBasic=cSet.m_basic;m_fBonus=cSet.m_bonus;m_fWelfare=cSet.m_welfare;m_fFine=cSet.m_fine;m_fTotal=cSet.m_total;m_strID=cSet.m_ID;UpdateData(FALSE);elseMessageBox( 查詢
14、的員工記錄不存在!);if(cSet.IsOpen()cSet.Close();添加一對話框資源 ID 號為 IDD_DETAIL_TABEL 將工資詳情的控件復(fù)制到對話框即可。然后為話框資源創(chuàng)建一個對話框類 CDtabelDlg 在MFC 中為控件添加成員變量如下圖所示。圖 8 工資詳情表界面然后為 IDOK添加 BN_CLICKED消息映射,并添加下列代碼:void CDtabelDlg:OnOK()UpdateData();m_strID.TrimLeft();m_strDepartment.TrimLeft();if(m_strID.IsEmpty()MessageBox( 員工號不能
15、為空!);elseif(m_strDepartment.IsEmpty()MessageBox( 部門號不能為空!);elseCDialog:OnOK();然后 CDetailDlg 類中的三個按扭, IDC_REC_ADD ,IDC_REC_EDIT ,IDC_REC_DEL添加BN_CLICKED消息映射,并添加下列代碼:void CDetailDlg:OnButtonAdd2()CDtabelDlg dlg;if(dlg.DoModal()=IDOK)CDetailSet pSet;pSet.AddNew();pSet.m_department =dlg.m_strDepartment;
16、pSet.m_ID =dlg.m_strID;pSet.m_basic =dlg.m_fBasic;pSet.m_bonus =dlg.m_fBonus;pSet.m_welfare =dlg.m_fWelfare;pSet.m_fine =dlg.m_fFine;pSet.m_total =dlg.m_fTotal;pSet.Update();pSet.Requery();void CDetailDlg:OnButtonEdit2()CDetailSet pSet;pSet.Open();UpdateData();pSet.Edit();pSet.m_department=m_strDepa
17、rtment;pSet.m_ID= m_strID;pSet.m_basic=m_fBasic;pSet.m_bonus= m_fBonus;pSet.m_welfare=m_fWelfare;pSet.m_fine= m_fFine;pSet.m_total= m_fTotal;UpdateData(FALSE);pSet.Update();pSet.Requery();pSet.Close();MessageBox( 修改成功 );void CDetailDlg:OnButtonDel2()UpdateData();CDetailSet cSet;cSet.Open();cSet.m_st
18、rFilter=ID=+m_strID+;cSet.Requery();cSet.Delete();cSet.Close();UpdateData(false);(4) 登陸框的設(shè)計如上的方法依次為其創(chuàng)建對話框類DengluDlg 和CRecordSet 派生類 CDengluSet 在MFC 中為控件添加成員變量。登陸框界面如下圖所示。圖 9 登陸框界面然后為 IDOK添加 BN_CLICKED消息映射,并添加下列代碼:BOOL CDengluDlg:check()UpdateData();CDengluSet pSet;pSet.Open();if(m_stryonghu.IsEmpty(
19、)|m_strmima.IsEmpty()MessageBox( 請輸用戶名和密碼!);return false;pSet.m_strFilter.Format(name=%s,m_stryonghu);pSet.Requery();if(pSet.m_name!=m_stryonghu|pSet.m_password!=m_strmima)MessageBox( 密碼或用戶名有錯!);return false;return true;void CDengluDlg:OnOK()CWnd *m_pMainWnd;if(!check()return;CDialog:OnOK();m_pMainW
20、nd=AfxGetMainWnd();CDialog:OnOK();4 系統(tǒng)測試4.1系統(tǒng)測試結(jié)果系統(tǒng)測試結(jié)果如圖所示。圖 10 進入登陸框測試用戶進入主界面如下圖所示。圖 11 進入主界面測試4.2 異常處理由于時間匆忙以及本人水平有限,本程序存在的問題比較多,自認(rèn)為主要有以下幾個方面。(1)程序沒有對輸入的員工信息諸如工號、姓名、部門號等進行檢測其合理性所以在工號姓名、部門號等中可以輸入字母或在名字中可以輸入數(shù)字就在所難免了作為一個員工信息管理,這樣的安全性是致命的。要解決這個問題就要在重載函數(shù)中加入各種判斷語句工作量比較大。(2)由于水平有限沒有制作圖形界面多媒體等美化程序的設(shè)置只是一些
21、簡單的對話框和界面,看起來難免有些單調(diào)不夠完善。(3)程序的功能也是一個問題員工的信息太簡單,可進行的操作也少可能有些功能實現(xiàn)起來顯得有些別扭。5 心得體會通過這次課題設(shè)計,我覺得做好一個程序,靈活運用是關(guān)鍵。把基礎(chǔ)學(xué)好不一定能把程序編好,但基礎(chǔ)知識不好,一定編不出好程序。做大規(guī)模的程序不只是一個人努力就行了,一定要有團隊合作能力。編程最主要是思路清晰,只要你把思路理順了,就有利于你在編程的過程中少走彎路。要想學(xué)好這門課我覺得除了在課堂上認(rèn)真學(xué)習(xí)之外也要做好以下幾點:1.認(rèn)真對待每一個程序的編寫2.做好對每一個所編程序的總結(jié)3.寫程序盡量要規(guī)范、嚴(yán)謹(jǐn),效率盡量要高4.養(yǎng)成自我測試的習(xí)慣5.多看
22、一些別人編的程序,把好的思路和方法記下來,以備不時之需6.要有恃之以恒的精神以及嚴(yán)謹(jǐn)?shù)目茖W(xué)研究作風(fēng)在努力奮斗中,我終于把本次課題設(shè)計順利完成?;叵肫鹫n題設(shè)計過程中面對程序錯誤一大堆的失望與成功完成程序中每一個模塊的喜悅時,我真正的體會到了:細(xì)節(jié)決定成?。粚W(xué)術(shù)不管是哪一門,只要你用心去對待它,它也會用心地來回報你,這也正印證了一句話: “一分耕耘一分收獲 ”。6 參考文獻1 鄭阿奇 ,丁有和 .Visual C+教程 M. 北京:清華大學(xué)出版社 ,2016.3:346-3492 馬石安 ,魏文平 .Visual C+程序設(shè)計與應(yīng)用教程題解及課程設(shè)計M. 北京:清華大學(xué)出版社 ,2015.7:10
23、1-2303 鄭莉 . C+語言程序設(shè)計案例教程 M. 北京:清華大學(xué)出版社 ,2016.7:24-1394 黃明 .面向?qū)ο蟪绦蛟O(shè)計習(xí)題詳解 M. 北京:機械工業(yè)出版社 ,2015.9:32-1055 徐士良 .C 常用算法程序集 M. 北京:清華大學(xué)出版社 ,2015.9:29-916 黃維 通 .Visual C+ 面 向 對象與可 視化 設(shè)計 ( 第 2 版 )M. 北京 : 清華 大 學(xué)出 版社 ,2014.12:36-1057 附錄(部分源代碼)在CEX_Viewl類中添加按扭控件查詢IDC_BUTTON_QUERYY的BN_CLICKED消息映射并添加下列代碼。void CEx_
24、View:OnButtonQuery()UpdateData();m_strQuery.TrimLeft ();if(m_strQuery.IsEmpty ()MessageBox(要查詢的員工號不能為空);return;if(m_pSet-IsOpen ()m_pSet-Close();m_pSet-m_strFilter.Format(ID=%s,m_strQuery);m_pSet-m_strSort=department;m_pSet-Open();if(!m_pSet-IsEOF()UpdateData(FALSE);elseMessageBox(沒有查到你要找員工的記錄!);然后為
25、 IDOK添加 BN_CLICKED消息映射并添加下列代碼:void CSalaryDlg:OnOK()UpdateData();m_strID.TrimLeft();m_strDepartment.TrimLeft();if(m_strID.IsEmpty()MessageBox(員工號不能為空! );elseif(m_strDepartment.IsEmpty()MessageBox(部門號不能為空! );elseCDialog:OnOK();然后 CEx_View 類中的三個按扭 IDC_REC_ADDIDC_REC_EDITIDC_REC_DEL添加BN_CLICKED消息映射 ,并添
26、加下列代碼 :void CEx_View:OnRecAdd()CSalaryDlg dlg;if(dlg.DoModal()=IDOK)m_pSet-AddNew();m_pSet-m_department =dlg.m_strDepartment;m_pSet-m_ID =dlg.m_strID;m_pSet-m_name =dlg.m_strName;m_pSet-m_salary =dlg.m_fSalary;m_pSet-Update();m_pSet-Requery();void CEx_View:OnRecEdit()CSalaryDlg dlg;dlg.m_strDepartme
27、nt =m_pSet-m_department;dlg.m_strID =m_pSet-m_ID;dlg.m_strName =m_pSet-m_name;dlg.m_fSalary =m_pSet-m_salary;if(dlg.DoModal()=IDOK)m_pSet-Edit();m_pSet-m_department =dlg.m_strDepartment;m_pSet-m_ID =dlg.m_strID;m_pSet-m_name =dlg.m_strName;m_pSet-m_salary =dlg.m_fSalary;m_pSet-Update();m_pSet-Requer
28、y();UpdateData(FALSE);void CEx_View:OnRecDel()CRecordsetStatus status;m_pSet-GetStatus(status);m_pSet-Delete();if(status.m_lCurrentRecord=0)m_pSet-MoveNext();elsem_pSet-MoveFirst();UpdateData(FALSE);為表單資源的按扭添加 BN_CLICKED消息映射并添加下列代碼。void CEx_View:OnButtonDetail()CDetailDlg dlg;dlg.DoModal();在CDetailD
29、lg 類中添加按扭控件查詢 IDC_BUTTON_QUERYY2 的BN_CLICKED 消息映射并添加下列代碼void CDetailDlg:OnButtonQuery2()UpdateData();m_strQuery2.TrimLeft ();if(m_strQuery2.IsEmpty ()MessageBox(要查詢的員工號不能為空!);return;CString str;str=m_strQuery2;CDetailSet cSet;cSet.m_strFilter.Format(ID=%s,str);cSet.Open();if(!cSet.IsEOF()m_strDepart
30、ment=cSet.m_department;m_fBasic=cSet.m_basic;m_fBonus=cSet.m_bonus;m_fWelfare=cSet.m_welfare;m_fFine=cSet.m_fine;m_fTotal=cSet.m_total;m_strID=cSet.m_ID;UpdateData(FALSE);elseMessageBox(查詢的員工記錄不存在!);if(cSet.IsOpen()cSet.Close();然后為 IDOK添加 BN_CLICKED消息映射,并添加下列代碼:void CDtabelDlg:OnOK()UpdateData();m_s
31、trID.TrimLeft();m_strDepartment.TrimLeft();if(m_strID.IsEmpty()MessageBox(員工號不能為空! );elseif(m_strDepartment.IsEmpty()MessageBox(部門號不能為空! );elseCDialog:OnOK();然后 CDetailDlg 類中的三個按扭, IDC_REC_ADD ,IDC_REC_EDIT ,IDC_REC_DEL添加BN_CLICKED消息映射,并添加下列代碼:void CDetailDlg:OnButtonAdd2()CDtabelDlg dlg;if(dlg.DoModal()=IDOK)CDetailSet pSet;pSet.AddNew();pSet.m_department =dlg.m_strDepartment;pSet.m_ID =dlg.m_strID;pSet.m_basic =dlg.m_fBasic;pSet.m_bonus =dlg.m_fBonus;pSet.m_we
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年文山壯族苗族自治州西疇縣數(shù)學(xué)三年級第一學(xué)期期末教學(xué)質(zhì)量檢測模擬試題含解析
- 大學(xué)生軍訓(xùn)心得筆記10篇
- 婚禮新娘答謝詞(15篇)
- 學(xué)生頂崗實習(xí)報告
- 標(biāo)準(zhǔn)的辭職報告模板集合九篇
- 大學(xué)生面試自我介紹集錦15篇
- 藥店疫情應(yīng)急預(yù)案
- 九年級化學(xué)上冊 第七單元 燃料及其利用 課題1 燃燒與滅火教學(xué)實錄 (新版)新人教版
- 小學(xué)語文教師教學(xué)計劃三篇
- 中專第一學(xué)年自我鑒定集錦7篇
- 幼兒園防止小學(xué)化工作計劃
- DB1403-T 35-2024 耐火澆注料施工現(xiàn)場管理規(guī)范
- 連鑄工職業(yè)技能大賽考試題庫-上(單選、多選題)
- 2024年四川省成都市青羊區(qū)數(shù)學(xué)六上期末考試試題含解析
- 內(nèi)蒙古呼和浩特市(2024年-2025年小學(xué)四年級語文)部編版階段練習(xí)(下學(xué)期)試卷及答案
- 人教版高中地理必修一《常見地貌類型》課件
- DB65-T 4828-2024 和田玉(子料)鑒定
- 人教版(2024新版)七年級上冊英語各單元重點單詞、句型背誦清單
- 證券投資學(xué)期末考試卷及答案2套
- 爆花(2023年陜西中考語文試卷記敘文閱讀題及答案)
- 2024住院患者靜脈血栓栓塞癥預(yù)防護理與管理專家共識要點(全文)
評論
0/150
提交評論