職工信息管理系統(tǒng)C++版 程序設(shè)計(jì)說(shuō)明書(shū)_第1頁(yè)
職工信息管理系統(tǒng)C++版 程序設(shè)計(jì)說(shuō)明書(shū)_第2頁(yè)
職工信息管理系統(tǒng)C++版 程序設(shè)計(jì)說(shuō)明書(shū)_第3頁(yè)
職工信息管理系統(tǒng)C++版 程序設(shè)計(jì)說(shuō)明書(shū)_第4頁(yè)
職工信息管理系統(tǒng)C++版 程序設(shè)計(jì)說(shuō)明書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、高級(jí)語(yǔ)言程序設(shè)計(jì)說(shuō)明書(shū)職工信息管理系統(tǒng) 系 別 專業(yè)班級(jí) 學(xué)生姓名 指導(dǎo)教師 注釋:2010計(jì)算機(jī)工程系高級(jí)語(yǔ)言程序設(shè)計(jì)大作業(yè)目 錄引言 (3)程序結(jié)構(gòu) (3)程序流程圖 (4)程序源程序模塊設(shè)計(jì)說(shuō)明 (5) 1.函數(shù)頭 (5)2.主函數(shù) (5)3.基類及繼承類 (5)3-1.基類 (5)3-2.繼承類 (6)3-3.公司類 (6)程序使用說(shuō)明 (8)總結(jié) (9)引言程序名稱:職工信息管理系統(tǒng) 開(kāi)發(fā)平臺(tái):windows 7 microsoft visual c+ 6.0主要功能:1。添加職工信息; 2。刪除職工信息及薪酬; 3。修改職工信息; 4。查詢職工信息及薪酬; 5。設(shè)置職位基本薪酬;

2、6。存儲(chǔ)職位信息;程序說(shuō)明:準(zhǔn)確性要求高,可靠性要求高,輸入控制嚴(yán)格,頁(yè)面響應(yīng)時(shí)間短,用戶界面友好,輸出準(zhǔn)確,功能強(qiáng)大! 運(yùn)行環(huán)境:windows nt/2000/xp/vista/win7文件說(shuō)明:程序源代碼(職工信息管理系統(tǒng).cpp); 程序運(yùn)行文件(職工信息管理系統(tǒng).exe); 職工信息存儲(chǔ)文件(employee.text);參考資料:c+程序設(shè)計(jì) 譚浩強(qiáng) 編著 清華大學(xué)出版社程序結(jié)構(gòu)函數(shù)頭: / cin , cout , 等函數(shù) /類,對(duì)象,等函數(shù)定義 / 文本文檔的讀/寫(xiě)/復(fù)制 等函數(shù) 主函數(shù):void main () 基類職工類employee派生類:technician技術(shù)員類、

3、salesman銷售員類、salesmanager銷售經(jīng)理類、manager經(jīng)理類、company公司類。在公司類中定義六個(gè)模塊功能的實(shí)現(xiàn)方法:void add () /添加 void delete () /刪除 void modify () /修改 void query () /查詢 void set () /設(shè)置 void save() /載入 void load() /儲(chǔ)存 程序流程圖開(kāi)始定義變量數(shù)據(jù)處理調(diào)用輸出函數(shù)退出系統(tǒng)yn輸入c的值c=1&c=7調(diào)用設(shè)置函數(shù)調(diào)用儲(chǔ)存函數(shù)調(diào)用載入函數(shù)調(diào)用查詢函數(shù)調(diào)用輸出函數(shù)調(diào)用修改函數(shù)調(diào)用刪除函數(shù)調(diào)用增加函數(shù)程序流程圖程序源程序模塊設(shè)計(jì)說(shuō)明1.函數(shù)頭

4、: #include #include #include #include 調(diào)用系統(tǒng)在程序中將要用到的函數(shù)。2.主函數(shù):switch(c) case 1: a.add(); break; case 2: a.delete();break; case 3: a.modify();break; case 4: a.query(); break; case 5: a.set(); break; case 6: a.save(); break; case 7: a.load(); break; 在do-while循環(huán)中嵌套switch結(jié)構(gòu),用來(lái)調(diào)用構(gòu)造函數(shù),實(shí)現(xiàn)函數(shù)模塊的功能。3.基類及繼承類:3-1

5、.基類: class employee /職工類 protected: int no; /編號(hào) char name20; /姓名char sex10; /性別int duty; /職位 double earning; /收入 employee *next; public: employee(char id,char *name,int duty) this-duty=duty; strcpy(this-name,name); this-no=id; virtual void calcsalary()=0; virtual void output()=0; friend class compan

6、y; ;先定義一個(gè)職工基類,設(shè)置了屬于保護(hù)類的職工基本屬性,以及構(gòu)造函數(shù)employee,可以給職工類型繼承。3-2.繼承類:class technician:public employee /技術(shù)員類 private: double workload; /上個(gè)月完成工作量 public: technician(char id,char *name,int duty,double workload):employee(id,name,duty) this-workload=workload; double getworkload() return workload; void setworkl

7、oad(double amount) this-workload=amount; void calcsalary() earning=workload*100; void output() calcsalary(); coutnotnamet技術(shù)員tttearningnext; delete worker; worker=p; worker=0; 在公司類中先定義一個(gè)職工表worker用于存儲(chǔ)職工信息,然后構(gòu)造函數(shù)中可以構(gòu)造鏈表,用于管理職工的信息。析構(gòu)函數(shù)用來(lái)釋放存儲(chǔ)空間,清除鏈表結(jié)點(diǎn)中的信息。模塊功能的實(shí)現(xiàn)方法:void company:add() /增加人員 employee *p; /

8、新結(jié)點(diǎn)指針 int duty; char name20;char sex10; /性別double workload; coutn* 新增員工 *n; /輸入員工信息 coutid; coutduty; coutname; coutsex;if(duty!=4) coutworkload; /創(chuàng)建新員工結(jié)點(diǎn) switch(duty) case 1:p=new technician(id,name,duty,workload); break; case 3:p=new manager(id,name,duty,workload); break; case 4:p=new salesmanager

9、(id,name,duty); break; case 5:p=new salesman(id,name,duty,workload); break; p-next=0;構(gòu)造添加函數(shù)add(),在函數(shù)中先定義職工的基本信息和新節(jié)點(diǎn)指針,創(chuàng)建新的初始化構(gòu)造函數(shù),用于添加新的職工信息。職工結(jié)點(diǎn)加入鏈表 :if(worker) /若已經(jīng)存在結(jié)點(diǎn) employee *p2; p2=worker; while(p2-next) /查找尾結(jié)點(diǎn) p2=p2-next; p2-next=p; /連接 else /若不存在結(jié)點(diǎn)(表空) worker=p; /連接 使用指針p和職工表worker構(gòu)造一個(gè)單鏈表,在

10、if選擇結(jié)構(gòu)和while選擇結(jié)構(gòu)中添加新的結(jié)點(diǎn),這個(gè)新的結(jié)點(diǎn)可以輸入職工信息和存儲(chǔ)信息的地址,再把職工信息添加到職工鏈表中。其他模塊刪除函數(shù)delete()、修改函數(shù)modify()、查詢函數(shù)query()、載入函數(shù)save()和存儲(chǔ)函數(shù)load()都使用了鏈表的構(gòu)造方法。具體內(nèi)容可以看代碼部分。void company:set() /設(shè)置基礎(chǔ)數(shù)據(jù) coutn* 設(shè)置基礎(chǔ)數(shù)據(jù) *n; cout經(jīng)理的基本工資csalarycsalary; cout銷售經(jīng)理的基本工資apsalaryapsalary; cout=idid; 設(shè)置經(jīng)理和銷售經(jīng)理的基本工資,用于計(jì)算這兩個(gè)職位的工資。 使用說(shuō)明這是一個(gè)

11、關(guān)于職工信息管理系統(tǒng),具有增加、輸出、刪除、查詢、修改、保存、載入數(shù)據(jù)、計(jì)算總支出薪酬等功能,建立了一個(gè)含有工號(hào)、姓名、性別、工作量等成員的類的變量class employee。系統(tǒng)中已預(yù)輸入了5個(gè)職工的相關(guān)數(shù)據(jù)以及基本薪酬數(shù)據(jù),調(diào)試是可按“4”鍵先查看輸入的數(shù)據(jù)記錄。調(diào)試過(guò)程中,可按照有關(guān)提示進(jìn)行相關(guān)操作:增加職工數(shù)據(jù)按“1”鍵;刪除職工數(shù)據(jù)按“2”鍵;修改職工數(shù)據(jù)按“3”鍵;查詢職工數(shù)據(jù)按“4”鍵;基礎(chǔ)數(shù)據(jù)設(shè)置按“5”鍵;數(shù)據(jù)存盤(pán)按“6”鍵;數(shù)據(jù)裝入按“7”鍵;退出系統(tǒng)按“8”鍵。總結(jié)經(jīng)過(guò)對(duì)職工信息管理系統(tǒng)的分析與編寫(xiě),我得到了很大的收獲。自主學(xué)習(xí)的必要性更是解決問(wèn)題的基礎(chǔ)。這次設(shè)計(jì)使我重

12、溫了以前學(xué)過(guò)的各科知識(shí),讓我對(duì)c編程有了更深刻的認(rèn)識(shí)。除了對(duì)系統(tǒng)作出正確的分析,實(shí)際的調(diào)查工作對(duì)系統(tǒng)的整體設(shè)計(jì)有著至關(guān)重要的作用。所以在分析系統(tǒng)之前,我花了一些時(shí)間在公司的實(shí)際管理工作調(diào)查上。也因?yàn)檫@樣,如何編寫(xiě)代碼逐漸變得明朗。每一個(gè)功能模塊經(jīng)過(guò)調(diào)查后后,各個(gè)功能逐漸顯露出來(lái),然后,反復(fù)探討,驗(yàn)證這項(xiàng)功能是否有存在的必要,是否可以改進(jìn)得更好。在這樣的前提下,最后順利完成了這份設(shè)計(jì)。 這次c系統(tǒng)設(shè)計(jì)作業(yè),提升了我分析問(wèn)題的能力和思考問(wèn)題的邏輯能力,更明白實(shí)際調(diào)研的重要性。從這次設(shè)計(jì)學(xué)到的東西,相信會(huì)對(duì)我們?nèi)蘸蟮膶W(xué)習(xí)工作起到很大的指導(dǎo)作用代碼附錄:#include #include #inclu

13、de #include using namespace std;/全局?jǐn)?shù)據(jù),對(duì)象 double apsalary; double csalary; int id; /員工工號(hào) class employee /員工類 protected: int no; /編號(hào) char name20; /姓名char sex10; /性別int duty; /職位 double earning; /收入 employee *next; public: employee(char id,char *name,int duty) this-duty=duty; strcpy(this-name,name); th

14、is-no=id; virtual void calcsalary()=0; virtual void output()=0; friend class company; ; class technician:public employee /技術(shù)員類 private: double workload; /上個(gè)月完成工作量 public: technician(char id,char *name,int duty,double workload):employee(id,name,duty) this-workload=workload; double getworkload() retur

15、n workload; void setworkload(double amount) this-workload=amount; void calcsalary() earning=workload*100; void output() calcsalary(); coutnotnamet技術(shù)員tttearningworkload=workload; double getworkload() return workload; void setworkload(double amount) this-workload=amount; void calcsalary() earning=work

16、load*0.04; void output() calcsalary(); coutnotnamet銷售員tttearningworkload=workload; double getworkload() return workload; void setworkload(double amount) this-workload=amount; void calcsalary() earning=apsalary+workload*0.005; void output() calcsalary(); coutnotnamet銷售經(jīng)理ttearningworkload=workload; do

17、uble getworkload() return workload; void setworkload(double amount) this-workload=amount; void calcsalary() earning=csalary;/固定月薪 void output() calcsalary(); coutnotnamet經(jīng)理tearningnext; delete worker; worker=p; worker=0; void find(char name20);/按姓名查找 void find(int id);/按編號(hào)查找 void add(); /增加人員 void d

18、elete(); /刪除人員 void modify(); /修改人員 void query(); /查詢?nèi)藛T void set(); /基礎(chǔ)數(shù)據(jù)設(shè)置 void save(); /數(shù)據(jù)存盤(pán)(包括基礎(chǔ)數(shù)據(jù),人員數(shù)據(jù)) void load(); /數(shù)據(jù)裝入(包括基礎(chǔ)數(shù)據(jù),人員數(shù)據(jù)) ; void company:clear() /清除內(nèi)存中人員數(shù)據(jù)(內(nèi)部使用) employee* p=worker; while(p) worker=p-next; delete p; p=worker; void company:find(char name20) void company:add() /增加人員

19、employee *p; /新結(jié)點(diǎn)指針 int duty; char name20;char sex10; /性別double workload; coutn* 新增員工 *n; /輸入員工信息 coutid; coutduty; coutname; coutsex;if(duty!=4) coutworkload; /創(chuàng)建新員工結(jié)點(diǎn) switch(duty) case 1:p=new technician(id,name,duty,workload); break; case 3:p=new manager(id,name,duty,workload); break; case 4:p=ne

20、w salesmanager(id,name,duty); break; case 5:p=new salesman(id,name,duty,workload); break; p-next=0; /員工結(jié)點(diǎn)加入鏈表 if(worker) /若已經(jīng)存在結(jié)點(diǎn) employee *p2; p2=worker; while(p2-next) /查找尾結(jié)點(diǎn) p2=p2-next; p2-next=p; /連接 else /若不存在結(jié)點(diǎn)(表空) worker=p; /連接 void company:delete() /刪除人員 int no; coutn* 刪除員工 *n; coutno; /查找要?jiǎng)h

21、除的結(jié)點(diǎn) employee *p1,*p2; p1=worker; while(p1) if(p1-no=no) break; else p2=p1; p1=p1-next; /刪除結(jié)點(diǎn) if(p1!=null)/若找到結(jié)點(diǎn),則刪除 if(p1=worker) /若要?jiǎng)h除的結(jié)點(diǎn)是第一個(gè)結(jié)點(diǎn) worker=p1-next; delete p1; else /若要?jiǎng)h除的結(jié)點(diǎn)是后續(xù)結(jié)點(diǎn) p2-next=p1-next; delete p1; cout找到并刪除n; else /未找到結(jié)點(diǎn) cout未找到!n; void company:modify()/修改員工 int no,duty; char

22、name20; double workload; coutn* 修改員工 *n; coutno; /查找要修改的結(jié)點(diǎn) employee *p1,*p2; p1=worker; while(p1) if(p1-no=no) break; else p2=p1; p1=p1-next; /修改結(jié)點(diǎn) if(p1!=null)/若找到結(jié)點(diǎn) p1-output(); coutduty; if(p1-duty!=duty) /若職位發(fā)生變動(dòng) /修改其它數(shù)據(jù) coutname; if(duty!=4) coutworkload; /創(chuàng)建新員工結(jié)點(diǎn) employee *p3; switch(duty) cas

23、e 1:p3=new technician(p1-no,name,duty,workload); break; case 3:p3=new manager(p1-no,name,duty,workload); break; case 4:p3=new salesmanager(p1-no,name,duty); break; case 5:p3=new salesman(p1-no,name,duty,workload); break; /員工結(jié)點(diǎn)替換到鏈表 p3-next=p1-next; if(p1=worker) /若要替換的結(jié)點(diǎn)是第一個(gè)結(jié)點(diǎn) worker=p3; else /若要?jiǎng)h除的

24、結(jié)點(diǎn)是后續(xù)結(jié)點(diǎn) p2-next=p3; /刪除原來(lái)的員工結(jié)點(diǎn) delete p1; else /若職位沒(méi)有變動(dòng) coutp1-name; if(duty=1) coutworkload; (technician *)p1)-setworkload(workload); else if(duty=3) coutworkload; (manager *)p1)-setworkload(workload); else if (duty=5) coutworkload; (salesman *)p1)-setworkload(workload); cout修改成功!n; else /未找到結(jié)點(diǎn) cou

25、t未找到!n; void company:query()/查詢?nèi)藛T int chet,count(0); coutn* 查詢職工信息以及本月銷售信息 *n; cout編號(hào)t姓名t職位ttt工資(元/月)output(); sum2+=p-earning; p=p-next; cout本月實(shí)發(fā)工資總數(shù):sum2元endl; coutchet; employee *p4=worker; while(p4) if(p4-no=chet) if(p4-duty=1) (technician*)p4)-output(); count+; break; else if(p4-duty=3) (manage

26、r*)p4)-output(); count+; break; else if(p4-duty=4) (salesmanager*)p4)-output(); count+; break; else if(p4-duty=5) (salesman*)p4)-output(); count+; break; else p4=p4-next; if(count=0) cout未找到!endl; void company:set() /設(shè)置基礎(chǔ)數(shù)據(jù) coutn* 設(shè)置基礎(chǔ)數(shù)據(jù) *n; cout經(jīng)理的基本工資csalarycsalary; cout銷售經(jīng)理的基本工資apsalaryapsalary;

27、cout=idid; void company:save() /數(shù)據(jù)存盤(pán)(包括基礎(chǔ)數(shù)據(jù),人員數(shù)據(jù)),均采用文本文件 ofstream femployee,fbase; char c; coutc; if(toupper(c)!=y)return; /保存人員編號(hào)、姓名、職位 femployee.open(employee.txt,ios:out); employee *p=worker; while(p) femployeenotnametdutyduty=1) femployeegetworkload()duty=3) femployeegetworkload()duty=5) femplo

28、yeegetworkload()t; femployeenext; femployee.close(); /保存基礎(chǔ)數(shù)據(jù) fbase.open(base.txt,ios:out); fbase經(jīng)理的基本工資tcsalaryendl; fbase銷售經(jīng)理的基本工資tapsalaryendl; fbaseidtidendl; femployee.close(); coutbufcsalary; /經(jīng)理的基本工資 fbasebufapsalary; /銷售經(jīng)理的基本工資 fbasebufid; /員工工號(hào)fbase.close(); /清除內(nèi)存人員數(shù)據(jù) clear(); /人員數(shù)據(jù)數(shù)據(jù)裝入 ifstream femployee; employee *p=worker; int no; char name20; int duty; double worklo

溫馨提示

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

評(píng)論

0/150

提交評(píng)論