企業(yè)員工工資管理系統(tǒng)課程設(shè)計_第1頁
企業(yè)員工工資管理系統(tǒng)課程設(shè)計_第2頁
企業(yè)員工工資管理系統(tǒng)課程設(shè)計_第3頁
企業(yè)員工工資管理系統(tǒng)課程設(shè)計_第4頁
企業(yè)員工工資管理系統(tǒng)課程設(shè)計_第5頁
已閱讀5頁,還剩40頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、42/45仲愷農(nóng)業(yè)工程學院課程設(shè)計報告*課 程 面向?qū)ο笳n程設(shè)計姓 名 院 (系) 專業(yè)年級 學 號 指導教師 日 期 仲愷農(nóng)業(yè)工程學院教務(wù)處制目 錄 TOC o 1-3 h z u HYPERLINK l _Toc272268147 1 需求與功能分析1 HYPERLINK l _Toc272268148 2 系統(tǒng)框架圖2 HYPERLINK l _Toc272268149 3 類的設(shè)計與分析2 HYPERLINK l _Toc272268150 4 非成員函數(shù)的設(shè)計與分析4 HYPERLINK l _Toc272268151 5 特色算法分析4 HYPERLINK l _Toc272268

2、152 6 存在的問題及對策8 HYPERLINK l _Toc272268153 7 用戶手冊及測試結(jié)果8 HYPERLINK l _Toc272268154 7.1 用戶手冊8 HYPERLINK l _Toc272268155 7.2 測試結(jié)果8 HYPERLINK l _Toc272268156 8 心得體會11 HYPERLINK l _Toc272268157 9 附:程序源代碼111 需求與功能分析在信息技術(shù)高速發(fā)展的今天,傳統(tǒng)的數(shù)據(jù)統(tǒng)計方式在處理龐大繁雜的信息量時顯得力不從心,于是,人們對于運用計算機來輔助和管理工作的需求正在逐步提高。隨著各個企業(yè)業(yè)務(wù)的逐步擴展,企業(yè)的員工人數(shù)

3、也在迅速增加,由于管理人員水平有限,導致某些員工紀錄管理并不完善,特別是繁雜的員工工資管理紀錄,不易查詢、修改,極易導致錯誤,而落后的員工管理方法隨著社會的日益競爭,必將被淘汰。由計算機來管理龐大而繁雜的企業(yè)員工紀錄是非常合適的,不僅查詢和修改方便,并且效率高,速度快,完全能夠滿足現(xiàn)代化企業(yè)管理的需要,同時也更利于實現(xiàn)全面辦公自動化。因此開發(fā)一套企業(yè)員工工資管理系統(tǒng)軟件勢在必行。企業(yè)員工工資管理系統(tǒng)是企業(yè)管理系統(tǒng)中的一個重要組成部分,它為企業(yè)合理的員工調(diào)配與編制,以及有關(guān)問題的決策能夠提供各種必要的基礎(chǔ)數(shù)據(jù),是公司管理現(xiàn)代化的一個重要方面。利用微機對龐雜而繁鎖的員工工資系統(tǒng)實現(xiàn)自動化管理,是計

4、算機公司信息管理系統(tǒng)的重要內(nèi)容。我在陳勇老師指導下開發(fā)了企業(yè)員工工資管理系統(tǒng)。企業(yè)員工工資管理系統(tǒng)旨在為商業(yè)人士及在社會團體、機構(gòu)中負責管理關(guān)系的人士提供一個功能全面、使用方便的工資管理系統(tǒng),以替代傳統(tǒng)的手工管理工資紀錄,同時利用先進信息技術(shù)為用戶提供一些更為方便實用的功能。 本系統(tǒng)實現(xiàn)五種基本功能:輸入員工工資信息、刪除員工工資信息、修改員工工資信息、查找員工工資信息、列出所有員工工資信息。所以該工資管理系統(tǒng)可以分為5個模塊,分別為輸入模塊、刪除模塊、修改模塊、查找模塊、列表模塊,每個模塊都有其對應的功能以及其設(shè)計。(1)輸入模塊輸入模塊的功能是創(chuàng)建存儲職工工資信息的存儲系統(tǒng)以及添加某職工的

5、工資信息。為實現(xiàn)輸入的功能,有兩個方面的任務(wù):定義結(jié)構(gòu)體以及建立鏈表。(2)刪除模塊刪除模塊的功能是刪除某職工的工資信息。(3)修改模塊修改模塊的功能是修改某職工的部分工資信息。(4)查找模塊查找模塊的功能就是輸出指定編號職工的工資信息。(5)列表模塊列表模塊的功能是輸出當月全體職工的工資信息。2 系統(tǒng)框架圖主菜單主菜單輸入員工工資信息刪除指定員工工資信息修改指定員工工資信息查找指定員工工資信息輸出全體員工工資信息退出 圖1 系統(tǒng)框架圖3 類的設(shè)計與分析class Workerprotected:Worker_pay * head; /鏈表的頭結(jié)點指針public:Worker()head=N

6、ULL; /構(gòu)造函數(shù)void Display(Worker_pay *); /輸出函數(shù) Worker_pay * Find(int); /查找函數(shù)int ListCount(); /統(tǒng)計員工人數(shù)函數(shù) void AddItem(int,string,int,string,string,string,float,float); /創(chuàng)建鏈表并鏈表的插入void RemoveItem(int); /刪除函數(shù)void ReplaceItem(int); /修改函數(shù)void ListL(); /遍歷函數(shù) void Search(int); /查找并輸出某個員工信息函數(shù)void Real_wage(floa

7、t,float); /計算函數(shù)void Recordinfo(int,string,int,string,string,string,float,float,float,float); /存儲函數(shù);表1 Worker類說明表名稱屬性說明head數(shù)據(jù)成員鏈表頭結(jié)點指針Worker()成員函數(shù)缺省的構(gòu)造函數(shù),缺省值為head=NULLvoid Display(Worker_pay *)成員函數(shù)輸出函數(shù)Worker_pay * Find(int)成員函數(shù)查找函數(shù)int ListCount()成員函數(shù)統(tǒng)計員工人數(shù)函數(shù)void AddItem(int,float,float)成員函數(shù)創(chuàng)建鏈表并鏈表的插入

8、void RemoveItem(int)成員函數(shù)刪除函數(shù)void ReplaceItem(int)成員函數(shù)修改函數(shù)void ListL()成員函數(shù)遍歷函數(shù)void Search(int)成員函數(shù)查找并輸出某個員工信息函數(shù)void Real_wage()成員函數(shù)計算函數(shù)voidRecoreinfo(int,float,float)成員函數(shù)存儲函數(shù)4 非成員函數(shù)的設(shè)計與分析表2 非成員函數(shù)說明表名稱說明int Menu()用于顯示主菜單char Exit()用于退出程序void Input(int * num,float * allowance)用于輸入員工工資信息void AddNew()用于調(diào)

9、用成員函數(shù)AddItem(int,float,float)Real_wage()和Recoreinfo(int,float,float)void DoFind()用于調(diào)用成員函數(shù)Search(int)void DoDelete()用于調(diào)用成員函數(shù)RemoveItem(int)void DoMotify()用于調(diào)用成員函數(shù)ReplaceItem(int)void List()用于調(diào)用成員函數(shù)ListL()int main()主函數(shù)5 特色算法分析Worker類中的成員函數(shù)void AddItem(int,float,float)(1)功能:創(chuàng)建存儲職工工資信息的存儲系統(tǒng)以及添加某職工的工資信息。

10、算法思路:先定義一個結(jié)構(gòu)體Worker_pay,通過從表尾插入的方法來建立鏈表。首先要先設(shè)立一個頭指針(head)來存放鏈表的首地址,然后,不斷用new運算符生成一個新的結(jié)點,將這個結(jié)點鏈入已有的鏈表尾部;如果鏈表中還沒有結(jié)點,則這個新結(jié)點將是首結(jié)點,否則,將新結(jié)點的地址賦給原有鏈表的尾結(jié)點的next指針。(2)流程圖:StartStartIF !head員工工資信息賦給headReturn*t=headWhile t&t-num!= num1t=t-nextIF t操作失敗Return*p-headWhilep-nextp-nextp-next員工工資信息賦給pReturnEnd圖2 流程圖

11、(3)代碼:void Worker:AddItem(int num1,string name1,int age1,string sex1,string department1,string title1,float wage1,float allowance1)if(!head)head=new Worker_pay;head-num=num1;head-name=name1;head-age=age1;head-sex=sex1;head-department=department1;head-title=title1;head-wage=wage1;head-allowance=allow

12、ance1;head-next=NULL;return;Worker_pay * t=head;while(t&t-num!=num1)t=t-next;if(t)cout操作失敗;員工編號為num1的信息已經(jīng)存在!next)p=p-next;Worker_pay * p1=new Worker_pay;p1-num=num1;p1-name=name1;p1-age=age1;p1-sex=sex1;p1-department=department1;p1-title=title1;p1-wage=wage1;p1-allowance=allowance1;p1-next=NULL;p-ne

13、xt=p1;return;6 存在的問題及對策(1)設(shè)計初期,先完成初步構(gòu)思,寫出主函數(shù)。然后對主函數(shù)所涉及的各個模塊進行編程,將各個模塊利用指針和鏈表聯(lián)系起來。在環(huán)境中進行調(diào)試,應一邊編譯,一邊調(diào)試,并且要一個模塊一個模塊的調(diào)試。直至此模塊完全沒有錯誤時,在進入下一模塊的調(diào)試。不能直接輸入全部的代碼一次性調(diào),這樣錯誤會很多,并且不易找出和修改。在完成程序的編譯鏈接后,要用多組數(shù)據(jù)進行審查,確保做到系統(tǒng)無誤。設(shè)計過程中,不應忽視環(huán)境提示的警告,有時程序運行不正確與警告也有很大的關(guān)系。這次設(shè)計中遇到很多問題都是提示類型不匹配,這時就要認真檢查前面的代碼,及時改正并且認真仔細,杜絕此類錯再次發(fā)生。

14、編寫代碼時應該少用全局變量,全局變量在編寫試看似定義次數(shù)少,很方便。但全局變量出錯幾率較大,且不易修改,每次修改時都要全面考慮,所以應避免用到。程序調(diào)試中碰到的錯誤可以使自己學到知識。養(yǎng)成良好的編程習慣,可以節(jié)省很多時間,避免很多不必要的錯誤。(2)在編輯完整個程序后,進行調(diào)試階段總是會數(shù)顯head無定義。解決辦法:再類的定義是忘記聲明指針Worker_pay *head;。7 用戶手冊及測試結(jié)果 7.1 用戶手冊運行程序時,界面剛開始出現(xiàn)一個主菜單及提示信息,用戶通過在鍵盤上輸入來選擇某個功能。當用戶選擇了某個功能,系統(tǒng)將跳轉(zhuǎn)到所選擇的功能界面,用戶將可以根據(jù)提示信息來使用該功能,當用戶通過

15、鍵盤輸入編號為-1時,系統(tǒng)將返回主界面。 7.2 測試結(jié)果圖3 系統(tǒng)主界面圖4 輸入員工信息測試圖圖5 刪除員工信息測試圖圖6 修改員工信息測試圖圖7 查找員工信息測試圖圖8 輸出全體員工信息測試圖圖9 退出系統(tǒng)測試圖8 心得體會經(jīng)過兩周的C+課程設(shè)計,我對C+語言設(shè)計有了一個更深、更全面的了解,尤其體會到了C+面向?qū)ο蟛僮鲗喕绦虻闹匾饔?。下面是我的幾點體會:剛拿到課題時,我一臉的茫然,看到如此龐大的工程,不知如何下手。這個工資管理系統(tǒng)中職工子信息竟然包含15條,以前從來沒有遇到過如此多的變量。和同學討論很久好,我發(fā)現(xiàn)其實可以化繁為簡的,信息中15條不一定全都要,因為其中本身就有重復的,

16、例如津貼和補貼。并且可以有一個pay的數(shù)組來處理數(shù)據(jù)。所以做任何事情都必須要開動腦筋,積極思考,有時還要學會化繁為簡。在編程時條理清晰是至關(guān)重要的。主函數(shù),函數(shù),成員函數(shù)之間的層次關(guān)系,調(diào)用關(guān)系一定要有一個全面的把握,尤其要體會類的封裝性。另外很重要的一點就是一定要對鏈表的五種操作熟練的掌握。在編譯,鏈接,調(diào)試的過程中一定要有耐心。因為一個程序中會有很多小的錯誤,甚至有的問題要幾個小時才能解決。遇到問題,一定要全面分析,有時候還要向同學請教??偟脕碚f,編程時極需要耐心的??傊?,C+課程設(shè)計為我們提供了一個綜合應用所學知識,解決實際問題的平臺,增強了我們實踐動手的能力和工程實踐能力,并且鍛煉和培

17、養(yǎng)了我們的自學能力,讓我們對C+有了一個更全面的了解。9 附:程序源代碼/*/#include#include#include#includeusing namespace std;/*/*定義一個員工信息的結(jié)構(gòu)體Worker_pay*/struct Worker_payint num; /員工編號string name; /員工姓名int age; /年齡string sex; /性別string department; /部門string title; /職務(wù)float wage; /工資float allowance; /津貼float tax; /個人所得稅float real_wag

18、e; /實發(fā)數(shù)Worker_pay * next; /鏈表結(jié)點的指針域;/*/*定義一個員工類Worker*/class Workerprotected:Worker_pay * head; /鏈表的頭結(jié)點指針public:Worker()head=NULL; /構(gòu)造函數(shù)void Display(Worker_pay *); /輸出函數(shù) Worker_pay * Find(int); /查找函數(shù)int ListCount(); /統(tǒng)計員工人數(shù)函數(shù) void AddItem(int,string,int,string,string,string,float,float); /創(chuàng)建鏈表并鏈表的插入

19、void RemoveItem(int); /刪除函數(shù)void ReplaceItem(int); /修改函數(shù)void ListL(); /遍歷函數(shù) void Search(int); /查找并輸出某個員工信息函數(shù)void Real_wage(float,float); /計算函數(shù)void Recordinfo(int,string,int,string,string,string,float,float,float,float); /存儲函數(shù);/*/功能:用于統(tǒng)計員工人數(shù)int Worker:ListCount()if(!head) return 0;Worker_pay * p=head;

20、int n=0;while(p)n+;p=p-next;return n;/*/功能:在鏈表中查找員工的編號Worker_pay * Worker:Find(int num)if(ListCount=0)cout列表為空,請先輸入數(shù)據(jù)!num=num) break;p=p-next;if(!p)cout錯誤,找不到該信息!num=num1;head-name=name1;head-age=age1;head-sex=sex1;head-department=department1;head-title=title1;head-wage=wage1;head-allowance=allowanc

21、e1;head-next=NULL;return;Worker_pay * t=head;while(t&t-num!=num1)t=t-next;if(t)cout操作失?。粏T工編號為num1的信息已經(jīng)存在!next)p=p-next;Worker_pay * p1=new Worker_pay;p1-num=num1;p1-name=name1;p1-age=age1;p1-sex=sex1;p1-department=department1;p1-title=title1;p1-wage=wage1;p1-allowance=allowance1;p1-next=NULL;p-next=

22、p1;return;/*/功能:從鏈表中刪除一個結(jié)點void Worker:RemoveItem(int num)Worker_pay * t=Find(num);if(!t)return;Worker_pay * p=head;if(head=t)head=head-next;delete p;cout成功刪除員工編號為num的信息!next!=t)p=p-next;Worker_pay * p1=p-next;p-next=p1-next;delete p1;cout成功刪除員工編號為num的信息!endl;return;/*/功能:修改員工信息void Worker:ReplaceIte

23、m(int num)Worker_pay * p=Find(num);if(!p)return;cout請重新輸入相應信息endl;coutp-num;coutp-name;coutp-age;coutp-sex;coutp-department;coutp-title;coutp-wage;coutp-allowance;return;/*/功能:輸出員工信息void Worker:Display(Worker_pay * p)coutnumsetw(8)namesetw(8)agesetw(8)sexsetw(8)departmentsetw(8)titlesetw(8)wagesetw(

24、8)allowancesetw(8)taxsetw(8)real_wageendl;return;/*/功能:遍歷鏈表void Worker:ListL()float sum=0;float aver=0;int n=0;if(ListCount=0)cout當前列表為空,請先輸入數(shù)據(jù)!endl;return;Worker_pay * p=head;cout*員工信息*endl;cout共有ListCount()個員工信息endl;cout員工編號 員工姓名 年齡 性別 部門 職務(wù) 工資 津貼 個稅 實發(fā)數(shù)wage;p=p-next;aver=sum/n;cout員工平均薪水:averendl

25、;return;/*/功能:查找并輸出指定員工信息void Worker:Search(int num)coutSearchendl;Worker_pay * p=Find(num);if(p)cout員工編號為num的員工工資信息:endl;cout員工編號 員工姓名 年齡 性別 部門 職務(wù) 工資 津貼 個稅 實發(fā)數(shù)endl;Display(p);coutendl;return;/*/功能:程序內(nèi)部函數(shù)計算的信息例如個人所得稅,實發(fā)數(shù)void Worker:Real_wage(float tax,float real_wage)if(ListCount()=0)cout當前列表為空,請先輸入

26、數(shù)據(jù)!wagetax=0;else if(p-wage2000&p-wagetax=p-wage*0.05;else if(p-wage2500&p-wagetax=p-wage*0.1-25;else if(p-wage4000&p-wagetax=p-wage*0.15-125;else if(p-wage7000&p-wagetax=p-wage*0.2-375;else if(p-wage22000&p-wagetax=p-wage*0.25-1375;else if(p-wage42000&p-wagetax=p-wage*0.3-3375;else if(p-wage62000&p

27、-wagetax=p-wage*0.35-6375;else if(p-wage82000&p-wagetax=p-wage*0.4-10375;else p-tax=p-wage*0.45-15375;p-real_wage=p-wage+p-allowance-p-tax;p=p-next;return;/*/功能:存儲員工信息void Worker:Recordinfo(int num1,string name1,int age1,string sex1,string department1,string title1,float wage1,float allowance1,float

28、 tax1,float real_wage1) ofstream file1(info1.txt,ios:app);file1員工編號:num1 員工姓名:name1 年齡:age1 性別:sex1 部門:department1 職務(wù):title1 工資(元):wage1 津貼(元):allowance1 個人所得稅(元):tax1 實發(fā)數(shù)(元):real_wage1endl;file1.close(); /*/*定義一個對象Worker1*/Worker Worker1; /*/ /*主菜單函數(shù)*/ int Menu() couttttendl;couttt 企業(yè)員工工資管理系統(tǒng) tendl

29、;couttt *主菜單* tendl;int n=1,select=-1;couttt n+.輸入員工信息 ttendl;couttt n+.刪除指定員工編號信息ttendl;couttt n+.修改指定員工編號信息ttendl;couttt n+.查找指定員工編號信息ttendl;couttt n+.輸出全體員工信息tttendl;couttt 0.退出ttttendl;coutttttendl;coutselect;return select;/*/功能:退出程序char Exit() char s;couts;return s;/*/功能:輸入員工信息void Input(int *

30、num,string * name,int * age,string * sex,string * department,string * title,float * wage,float * allowance) cout現(xiàn)在輸入員工信息!endl;cout* num;if(* num=-1)return;cout* name;cout* age;cout* sex;cout* department;cout* title;cout* wage;cout* allowance;return;/*/功能:把員工信息插入到鏈表中void AddNew() int num=0;string name;int age=0;string sex;string department;string title;float wage=0;float allowance=0;float tax=0;float real_wage=0;cout當輸入的員工編號為-1是表示結(jié)束輸入endl;Input(&num,&name,&age,&sex,&department,&title,&wage,&allowance);while(num!=-1)Worker1.AddItem(num,name,age,sex,department,title,wage,allo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論