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

下載本文檔

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

文檔簡介

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

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

3、salesman銷售員類、salesmanager銷售經(jīng)理類、manager經(jīng)理類、company公司類。在公司類中定義六個模塊功能的實現(xiàn)方法:void add () /添加 void delete () /刪除 void modify () /修改 void query () /查詢 void set () /設置 void save() /載入 void load() /儲存 程序流程圖開始定義變量數(shù)據(jù)處理調(diào)用輸出函數(shù)退出系統(tǒng)yn輸入c的值c=1&c=7調(diào)用設置函數(shù)調(diào)用儲存函數(shù)調(diào)用載入函數(shù)調(diào)用查詢函數(shù)調(diào)用輸出函數(shù)調(diào)用修改函數(shù)調(diào)用刪除函數(shù)調(diào)用增加函數(shù)程序流程圖程序源程序模塊設計說明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),用來調(diào)用構(gòu)造函數(shù),實現(xiàn)函數(shù)模塊的功能。3.基類及繼承類:3-1

5、.基類: class employee /職工類 protected: int no; /編號 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òu)造函數(shù)employee,可以給職工類型繼承。3-2.繼承類:class technician:public employee /技術(shù)員類 private: double workload; /上個月完成工作量 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; 在公司類中先定義一個職工表worker用于存儲職工信息,然后構(gòu)造函數(shù)中可以構(gòu)造鏈表,用于管理職工的信息。析構(gòu)函數(shù)用來釋放存儲空間,清除鏈表結(jié)點中的信息。模塊功能的實現(xiàn)方法:void company:add() /增加人員 employee *p; /

8、新結(jié)點指針 int duty; char name20;char sex10; /性別double workload; coutn* 新增員工 *n; /輸入員工信息 coutid; coutduty; coutname; coutsex;if(duty!=4) coutworkload; /創(chuàng)建新員工結(jié)點 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é)點指針,創(chuàng)建新的初始化構(gòu)造函數(shù),用于添加新的職工信息。職工結(jié)點加入鏈表 :if(worker) /若已經(jīng)存在結(jié)點 employee *p2; p2=worker; while(p2-next) /查找尾結(jié)點 p2=p2-next; p2-next=p; /連接 else /若不存在結(jié)點(表空) worker=p; /連接 使用指針p和職工表worker構(gòu)造一個單鏈表,在

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

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

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

13、de #include using namespace std;/全局數(shù)據(jù),對象 double apsalary; double csalary; int id; /員工工號 class employee /員工類 protected: int no; /編號 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; /上個月完成工作量 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);/按編號查找 void add(); /增加人員 void d

18、elete(); /刪除人員 void modify(); /修改人員 void query(); /查詢?nèi)藛T void set(); /基礎(chǔ)數(shù)據(jù)設置 void save(); /數(shù)據(jù)存盤(包括基礎(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é)點指針 int duty; char name20;char sex10; /性別double workload; coutn* 新增員工 *n; /輸入員工信息 coutid; coutduty; coutname; coutsex;if(duty!=4) coutworkload; /創(chuàng)建新員工結(jié)點 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é)點加入鏈表 if(worker) /若已經(jīng)存在結(jié)點 employee *p2; p2=worker; while(p2-next) /查找尾結(jié)點 p2=p2-next; p2-next=p; /連接 else /若不存在結(jié)點(表空) worker=p; /連接 void company:delete() /刪除人員 int no; coutn* 刪除員工 *n; coutno; /查找要刪

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

22、name20; double workload; coutn* 修改員工 *n; coutno; /查找要修改的結(jié)點 employee *p1,*p2; p1=worker; while(p1) if(p1-no=no) break; else p2=p1; p1=p1-next; /修改結(jié)點 if(p1!=null)/若找到結(jié)點 p1-output(); coutduty; if(p1-duty!=duty) /若職位發(fā)生變動 /修改其它數(shù)據(jù) coutname; if(duty!=4) coutworkload; /創(chuàng)建新員工結(jié)點 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é)點替換到鏈表 p3-next=p1-next; if(p1=worker) /若要替換的結(jié)點是第一個結(jié)點 worker=p3; else /若要刪除的

24、結(jié)點是后續(xù)結(jié)點 p2-next=p3; /刪除原來的員工結(jié)點 delete p1; else /若職位沒有變動 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é)點 cou

25、t未找到!n; void company:query()/查詢?nèi)藛T int chet,count(0); coutn* 查詢職工信息以及本月銷售信息 *n; cout編號t姓名t職位ttt工資(元/月)output(); sum2+=p-earning; p=p-next; cout本月實發(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() /設置基礎(chǔ)數(shù)據(jù) coutn* 設置基礎(chǔ)數(shù)據(jù) *n; cout經(jīng)理的基本工資csalarycsalary; cout銷售經(jīng)理的基本工資apsalaryapsalary;

27、cout=idid; void company:save() /數(shù)據(jù)存盤(包括基礎(chǔ)數(shù)據(jù),人員數(shù)據(jù)),均采用文本文件 ofstream femployee,fbase; char c; coutc; if(toupper(c)!=y)return; /保存人員編號、姓名、職位 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; /員工工號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. 本站所有資源如無特殊說明,都需要本地電腦安裝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

提交評論