版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)任務(wù)書</b></p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 課程:面向?qū)ο蟪绦蛟O(shè)計(jì) </p><p> 學(xué)號(hào): </p><p> 姓名: </p><p> 班級(jí):
2、 </p><p> 教師: </p><p> 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院</p><p> 課程設(shè)計(jì)名稱:高校工資管理系統(tǒng)</p><p><b> 1.設(shè)計(jì)內(nèi)容:</b></p><p> 問題的描述(功能要求):</p><p&g
3、t; 高校有五類職工:教師,實(shí)驗(yàn)員,行政人員,教師兼職實(shí)驗(yàn)員,行政人員兼職教師。為了實(shí)現(xiàn)工資發(fā)放的自動(dòng)功能,現(xiàn)要求編寫程序來自動(dòng)完成此功能。同時(shí)注意生成的相關(guān)數(shù)據(jù)結(jié)果以文件方式存放在硬盤中。程序應(yīng)具備從鍵盤錄入,文件的可繼續(xù)錄入,任意職工的工資查詢(可由職工編號(hào)和職工姓名來實(shí)現(xiàn)),若有職工由于工作調(diào)動(dòng),則可進(jìn)行相對(duì)應(yīng)的調(diào)整動(dòng)作。</p><p><b> 相關(guān)信息:</b></p&
4、gt;<p> 每一學(xué)期將學(xué)校職工的本學(xué)期任職情況及上學(xué)期工作的相關(guān)情況輸入計(jì)算機(jī),則本學(xué)期職工的月工資按程序處理后的結(jié)果發(fā)放,其中職工的工資計(jì)算方法如下:</p><p> 其中工資的基本構(gòu)成如下:</p><p> 教師: 基本工資+課時(shí)費(fèi);</p><p> 實(shí)驗(yàn)員: 基本工資+實(shí)驗(yàn)室補(bǔ)助;<
5、/p><p> 行政人員: 基本工資+行政補(bǔ)貼;</p><p> 教師兼職實(shí)驗(yàn)員: 基本工資+課時(shí)費(fèi)+實(shí)驗(yàn)室補(bǔ)助;</p><p> 行政人員兼職教師:基本工資+行政補(bǔ)貼+課時(shí)費(fèi);</p><p><b> 其中:</b></p><p> 1.課時(shí)費(fèi):教師每一學(xué)期的基本工
6、作量為120,實(shí)驗(yàn)員每學(xué)期基本工作量為70,行政人員沒有基本工作量,每節(jié)課時(shí)費(fèi)為20元;課時(shí)費(fèi)=(上學(xué)期工作量-基本工作量)*20;</p><p> 注意:如果上學(xué)期基本工作量沒完成,則其(上學(xué)期工作量-基本工作量)*20為負(fù)值。</p><p> 2.基本工資:教師800元,實(shí)驗(yàn)員650元,行政人員750元。</p><p> 3.行政補(bǔ)貼:250元。&l
7、t;/p><p> 2.設(shè)計(jì)目的與要求:</p><p><b> 2.1設(shè)計(jì)目的</b></p><p> 達(dá)到熟練掌握C++語言的基本知識(shí)和技能; </p><p> 基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思路和方法; </p><p> 能夠利用所學(xué)的基本知識(shí)和技能,解決簡(jiǎn)單的面向?qū)ο蟪绦蛟O(shè)計(jì)
8、問題。</p><p><b> 2.2設(shè)計(jì)要求</b></p><p> 要求利用面向?qū)ο蟮姆椒ㄒ约癈++的編程思想來完成系統(tǒng)的設(shè)計(jì); </p><p> 要求在設(shè)計(jì)的過程中,建立清晰的類層次; </p><p> 在系統(tǒng)的設(shè)計(jì)中,至少要用到面向?qū)ο蟮囊环N機(jī)制。</p><p><
9、b> 3.系統(tǒng)分析與設(shè)計(jì)</b></p><p><b> 3.1主要知識(shí)點(diǎn)</b></p><p> 本程序共有三個(gè)文件組成,分別是Salary.h, Salary.cpp和main.cpp; Salary.h中定義了程序所需的類,全局函數(shù),以及要用到的標(biāo)準(zhǔn)頭文件。用到的知識(shí)主要有類的繼承與派生,純虛函數(shù),頭文件的組織,鏈表操作,程序菜單選擇
10、和處理函數(shù)的組織和編寫,文件的讀寫操作。</p><p><b> 3.2關(guān)鍵技術(shù)</b></p><p> 程序中每一種數(shù)據(jù)類型用一個(gè)類來實(shí)現(xiàn),共設(shè)計(jì)了6個(gè)類。人員類 Person,教師類Teacher,實(shí)驗(yàn)員類Assistant,行政人員類 Manager,教師兼實(shí)驗(yàn)員類Teacher_Manager,行政人員兼教師類Manager_Teacher以及工資信息
11、管理類Salary_Management。每一種類都定義了相應(yīng)的成員函數(shù)。具體定義如下所示:</p><p> ?。?)類Person</p><p> 類Person為抽象類,為另外五個(gè)類的基類,在類Person中,成員變量ID表示職工編號(hào),name表示職工姓名,duty表示崗位類別,salary表示職工工資以及next表示Person類的指針域。兩個(gè)input()成員函數(shù),無參成員函
12、數(shù)input()為純虛函數(shù)用來從鍵盤輸入職工數(shù)據(jù),有參成員函數(shù)input(ifstream& infile)用來從文件讀入職工數(shù)據(jù);兩個(gè)output()成員函數(shù),無參成員函數(shù)output()用來向屏幕輸出職工信息,有參成員函數(shù)output(ofstream& outfile)向指定文件Salary.txt中輸出職工信息以及成員函數(shù)incoming()用來計(jì)算職工工資。類中還將將Salary_Management類聲明為友
13、員類,將Work_type(int duty)函數(shù)聲明為友元函數(shù),用來將職工類別標(biāo)志轉(zhuǎn)換為相應(yīng)的類別名稱,以便顯示職工崗位類別名稱。</p><p> ?。?)類Teacher</p><p> 類Teacher中,在繼承基類數(shù)據(jù)成員的基礎(chǔ)上增加了成員變量hours用來存放教師的上課課時(shí)數(shù),并重新定義了成員函數(shù)input()和output()分別用來輸入和輸出職工信息,incoming(
14、)用來計(jì)算教師類的人員工資。</p><p> ?。?)類Assistant</p><p> 類Assistant中,,在繼承基類數(shù)據(jù)成員的基礎(chǔ)上增加了成員變量hours用來存放教師的上課課時(shí)數(shù)和Allowance用來存放試驗(yàn)室補(bǔ)助,并重新定義了成員函數(shù)input()和output()分別用來輸入和輸出職工信息,incoming()用來計(jì)算教師類的人員工資。</p>&l
15、t;p> ?。?)類Manager</p><p> 類Manager中,在繼承基類數(shù)據(jù)成員的基礎(chǔ)上增加了成員變量Allowance用來存放行政補(bǔ)貼,并重新定義了成員函數(shù)input()和output()分別用來輸入和輸出職工信息,incoming()用來計(jì)算教師類的人員工資。</p><p> ?。?)類Teacher_Assistant</p><p>
16、 類Teacher_Assistant以Teacher類和Assistant類為直接基類,重新定義了成員函數(shù)input()和output()分別用來輸入和輸出職工信息,incoming()用來計(jì)算教師類的人員工資。</p><p> (6)類Manager_Teacher</p><p> 類Manager_Teacher以Teacher類和Assistant類為直接基類,重新定義了成
17、員函數(shù)input()和output()分別用來輸入和輸出職工信息,incoming()用來計(jì)算教師類的人員工資。</p><p> ?。?)類Salary_Management</p><p> 類Salary_Management用來為管理職工信息提供相關(guān)功能函數(shù),有私有數(shù)據(jù)成員PL是鏈表的頭指針,私有成員函數(shù)clear清除所有職工結(jié)點(diǎn),私有成員函數(shù)QueryRec用來查詢職工記錄。共
18、有成員函數(shù)AddRec用來增加職工記錄,DelRec用來刪除職工記錄,Modify用來修改職工記錄,display用來顯示職工記錄,Save用來保存職工信息,F(xiàn)indRecID按職工編號(hào)查找職工記錄,F(xiàn)indRecName按職工姓名查找職工記錄,Load用來從鍵盤錄入職工信息,Build用來從文件讀取職工信息,Statistics提供職工信息統(tǒng)計(jì)功能,可以實(shí)現(xiàn)分別按職工類別、職工工資、要發(fā)工資總數(shù)、職工人數(shù)的統(tǒng)計(jì)功能,MenuSelec
19、t菜單功能選擇函數(shù),顯示程序主功能菜單并接收用戶的選擇,返回用戶選擇提供給Handle_menu函數(shù),Handle_menu菜單處理函數(shù),用來處理用戶的功能選擇,并調(diào)用相應(yīng)的功能函數(shù)實(shí)現(xiàn)用戶所要求實(shí)現(xiàn)的功能。</p><p><b> (8)全局函數(shù)</b></p><p> duty_to_string函數(shù)用來將崗位類別標(biāo)識(shí)轉(zhuǎn)換為相應(yīng)的名稱。</p>
20、<p> print_worktype_menu函數(shù)用來顯示人員類別選擇菜單。</p><p> dis_mainmenu函數(shù)用來選擇程序主功能菜單。</p><p> (9)調(diào)用的系統(tǒng)庫(kù)函數(shù)</p><p> system("pause"); //在屏幕上輸出:press any
21、key to quit,意思是停留,看程序的輸出結(jié)果</p><p> system("cls"); 清屏 </p><p><b> ?。?0)頭文件說明</b></p><p> 本程序有一個(gè)Salary.h頭文件,該頭文件包含程序所需包含的標(biāo)準(zhǔn)頭
22、文件和定義的類以及全局函數(shù)。為了防止頭文件重復(fù)包含,采用如下格式:</p><p> #if !defined (宏)</p><p><b> #define 宏</b></p><p> …… //頭文件具體內(nèi)容</p><p><b> #endif</b></p>
23、<p> 這樣可以使源文件中只要包含Salary.h一個(gè)頭文件即可,使文件頭變得簡(jiǎn)潔。</p><p> ?。?1)程序的主要功能函數(shù)及相關(guān)算法</p><p> 本程序共定義六個(gè)類,分別是Person類、Teacher類、Assistant類、 Manager類、 Teacher_Assistant類、Manager_Teacher類和Salary_Management類。
24、Person類為抽象類作為Teacher類、Assistant類和Manager類直接基類。Teacher_Assistant類以Teacher類和Assistant類作為直接基類,多重繼承,Manager_Teacher類以Manager類和Teacher類作為直接基類多重繼承。Salary_Management類是為職工信息管理提供功能函數(shù)。</p><p> Salary_Management類中主要的成
25、員函數(shù)有:</p><p> AddRec函數(shù)用來提供添加職工信息的功能。該函數(shù)先調(diào)用print_worktype_menu函數(shù)打印職工類別選擇菜單供用戶選擇,程序再根據(jù)用戶的不同選擇分別調(diào)用Teacher類、Assistant類、 Manager類、 Teacher_Assistant類、Manager_Teacher類的input函數(shù)實(shí)現(xiàn)添加職工信息。</p><p> Build
26、函數(shù)的功能是從文件讀取職工信息來實(shí)現(xiàn)程序的初始化,該函數(shù)使用文件指針操作函數(shù)tellg和seekg函數(shù)來不斷調(diào)整文件指針,以實(shí)現(xiàn)從文件讀取職工信息供程序初始化的功能。再該函數(shù)中,先定義buf臨時(shí)空間,用infile>>buf>>buf>>Duty;語句先讀取職工信息中的duty的值,然后在根據(jù)duty的值分別調(diào)用Teacher類、Assistant類、 Manager類、 Teacher_Assist
27、ant類、Manager_Teacher類的input(ifstream&)函數(shù)來實(shí)現(xiàn)從文件輸入職工信息的功能。</p><p> DelRec函數(shù)的功能是根據(jù)用戶輸入的編號(hào)來刪除指定的職工記錄。該函數(shù)先調(diào)用QueryRec函數(shù)查找與用戶輸入的編號(hào)相對(duì)應(yīng)的職工記錄,然后從鏈表中刪除對(duì)應(yīng)的結(jié)點(diǎn),實(shí)現(xiàn)職工記錄的刪除,同樣也會(huì)相應(yīng)的輸出文件中的信息。</p><p> display
28、函數(shù)的功能是顯示所用的職工記錄。</p><p> Search函數(shù)功能是通過調(diào)用FindRecID函數(shù)和FindRecName函數(shù)來實(shí)現(xiàn)按職工編號(hào)或按姓名來查找相應(yīng)的職工信息,如果能查找到則輸出相應(yīng)的職工信息,沒找到會(huì)給出” 找不到你要查找的職工信息!”的提示信息。該函數(shù)具有循環(huán)查找功能。</p><p> Load函數(shù)的功能是錄入職工信息。該函數(shù)先要求用戶輸入要錄入的職工數(shù),然后調(diào)
29、用print_worktype_menu函數(shù)提示用戶輸入職工的類別,程序再根據(jù)用戶輸入的職工類別duty來調(diào)用相應(yīng)類的input函數(shù)實(shí)現(xiàn)職工信息的鍵盤錄入功能。</p><p> Handle_menu函數(shù)的功能是處理用戶的功能選擇。該函數(shù)通過調(diào)用MenuSelect函數(shù)獲取用戶的功能選擇序號(hào)來給select變量賦值,然后再用switch語句根據(jù)select的值調(diào)用相應(yīng)的功能函數(shù)來實(shí)現(xiàn)用戶選擇的功能。</
30、p><p> Save函數(shù)的功能是將職工信息已成功保存到Salary.txt文件中。</p><p> Statistics函數(shù)的是職工信息的統(tǒng)計(jì)。共提供四種不同方式的統(tǒng)計(jì)功能:</p><p> 1、統(tǒng)計(jì)各職工類別職工的人數(shù)</p><p> 2、根據(jù)用戶輸入的工資范圍統(tǒng)計(jì)并輸出該范圍內(nèi)的職工信息</p><p>
31、; 3、統(tǒng)計(jì)要發(fā)工資總數(shù)</p><p> 4、統(tǒng)計(jì)職工的總?cè)藬?shù)</p><p> Modify函數(shù)的功能是修改指定職工的信息;但不能修改職工的類別信息。函數(shù)先要求用戶輸入要修改的職工編號(hào),然后調(diào)用QueryRec函數(shù)查找到相應(yīng)職工的記錄,然后調(diào)用該職工所屬類的input函數(shù)來時(shí)用戶信息的重新賦值。</p><p><b> 3.3基本功能要求&l
32、t;/b></p><p> ?。?)功能選擇可以用菜單來實(shí)現(xiàn)</p><p><b> 例如:</b></p><p> 請(qǐng)選擇您的計(jì)算內(nèi)容:</p><p><b> 數(shù)據(jù)錄入</b></p><p><b> 查詢職工信息</b>&l
33、t;/p><p><b> 查詢職工信息</b></p><p><b> 增加職工記錄</b></p><p><b> 刪除職工信息</b></p><p><b> 統(tǒng)計(jì)職工信息</b></p><p><b>
34、 顯示所有信息</b></p><p><b> 退出系統(tǒng)</b></p><p> 用戶通過輸入不同的數(shù)字進(jìn)入不同的菜單。次級(jí)菜單主要顯示本程序的功能,主要的功能有錄入職工信息、查詢信息、添加職工記錄、刪除職工記錄、統(tǒng)計(jì)職工信息、顯示所有信息。</p><p> ?。?)運(yùn)行時(shí)給出明確的提示信息。</p>&l
35、t;p> 比如,在選擇主功能菜單是選擇范圍是(1-8),如果用戶輸入的選項(xiàng)不在可選擇范圍之內(nèi),程序會(huì)給出輸入選項(xiàng)不在可選范圍之內(nèi)的提示,并要求用戶且知道輸入選項(xiàng)在可選范圍內(nèi)才執(zhí)行相應(yīng)的功能。本程序有較友好的用戶交互界面,每進(jìn)入或離開一個(gè)功能界面時(shí)都會(huì)有相應(yīng)的提示信息,方便用戶操作。</p><p> 4.系統(tǒng)總體設(shè)計(jì)(確定程序功能模塊)</p><p> 本程序的類繼承關(guān)系如1
36、所示:</p><p> Salary_Management類中成員函數(shù)調(diào)用關(guān)系如圖所示:</p><p> 圖2、Salary_Management類中成員函數(shù)調(diào)用關(guān)系圖</p><p> 5、程序文件組成及各文件中的源代碼</p><p> 本程序由一個(gè)Salary.h頭文件和兩個(gè)源文件Salary.cpp和main.cpp組成。
37、各文件的源代碼如下:</p><p> Salary.h文件代碼</p><p> /**********************************************************************/</p><p> #if !defined (H_Salary_H)</p><p> #define H
38、_Salary_H</p><p> #include <iostream></p><p> #include <string></p><p> #include <fstream></p><p> #include <iomanip></p><p>
39、using namespace std;</p><p> class Person //人員信息類 (抽象基類)</p><p><b> {</b></p><p><b> public:</b></p><p> virtual void input()=0;
40、 //從鍵盤輸入職工數(shù)據(jù)</p><p> virtual void input(ifstream& infile)=0; //從文件讀入職工數(shù)據(jù)</p><p> virtual void output()=0; //向屏幕輸出職工信息</p><p> virtual void
41、output(ofstream& outfile)=0; //向指定文件輸出職工信息</p><p> virtual double incoming()=0; // 計(jì)算職工收入函數(shù)</p><p> Person() //Person基類構(gòu)造函數(shù)</p><p> {next=
42、0; } //指針賦值為空 </p><p> virtual ~Person(){}</p><p> protected:</p><p> char name[15]; //職工姓名</p><p> string ID; //職工編號(hào)&
43、lt;/p><p> int duty; /*崗位類別 :1:教師 2:實(shí)驗(yàn)員 3:行政人員 4:教師兼實(shí)驗(yàn)員 5:行政人員兼教師*/</p><p> double salary; //職工薪水</p><p> Person *next; //指針成員</p><p>
44、 friend bool isexist(string id);</p><p> friend class Salary_Management; //將Salary_Management類聲明為友員類</p><p><b> };</b></p><p> class Teacher :virtual public Person
45、</p><p><b> {</b></p><p> protected:</p><p> int hours; //上學(xué)期工作量</p><p><b> public:</b></p><p><b> Teacher()&l
46、t;/b></p><p><b> {</b></p><p> salary=800; //教師基本工資800元</p><p> duty=1; //崗位類別為1</p><p><b> }</b></p><p> void
47、input();</p><p> void input(ifstream& infile);</p><p> void output();</p><p> void output(ofstream& outfile);</p><p> double incoming();</p><p>
48、;<b> };</b></p><p> class Assitant :virtual public Person</p><p><b> {</b></p><p><b> public:</b></p><p> Assitant()</p>
49、<p><b> {</b></p><p> salary=650; //實(shí)驗(yàn)員基本工資650元</p><p> duty=2; //崗位類別為2</p><p> allowance=150; //實(shí)驗(yàn)室補(bǔ)助為150元</p><p><b> };&
50、lt;/b></p><p> void input();</p><p> void input(ifstream& infile);</p><p> void output();</p><p> void output(ofstream& outfile);</p><p> d
51、ouble incoming();</p><p> protected:</p><p> int hours;</p><p> double allowance;</p><p><b> };</b></p><p> class Manager :virtual public
52、Person</p><p><b> {</b></p><p><b> public:</b></p><p><b> Manager()</b></p><p><b> {</b></p><p> salar
53、y=750; //行政人員基本工資為750元</p><p> duty=3; //崗位類別為3</p><p> allowance=250; //行政補(bǔ)貼</p><p><b> }</b></p><p> void input();</p>&l
54、t;p> void input(ifstream& infile);</p><p> void output();</p><p> void output(ofstream& outfile);</p><p> double incoming();</p><p> protected:</p>
55、;<p> double allowance; //行政補(bǔ)貼</p><p><b> };</b></p><p> class Teacher_Assistant : public Teacher,public Assitant</p><p><b> {</b></p>
56、<p><b> public:</b></p><p> Teacher_Assistant()</p><p><b> {</b></p><p> Teacher::salary=800; //基本工資800元</p><p> duty=4;
57、 //崗位類別為4</p><p> Assitant::allowance=150; //實(shí)驗(yàn)室補(bǔ)助150元</p><p><b> }</b></p><p> void input();</p><p> void input(ifstream& i
58、nfile);</p><p> void output();</p><p> void output(ofstream& outfile);</p><p> double incoming();</p><p><b> };</b></p><p> class Mana
59、ger_Teacher :public Manager,public Teacher</p><p><b> {</b></p><p><b> public:</b></p><p> Manager_Teacher()</p><p><b> {</b><
60、;/p><p> salary=750; //基本工資750元</p><p> duty=5; //崗位類別為5</p><p> Manager::allowance=250; //行政補(bǔ)貼250元</p><p><b> }</b>
61、;</p><p> void input();</p><p> void input(ifstream& infile);</p><p> void output();</p><p> void output(ofstream& outfile);</p><p> double in
62、coming();</p><p><b> };</b></p><p> class Salary_Management</p><p><b> {</b></p><p><b> public:</b></p><p> Salary
63、_Management(); //構(gòu)造函數(shù)</p><p> ~Salary_Management(); //析構(gòu)函數(shù)</p><p> void AddRec(); //增加職工記錄</p><p> void DelRec(); //刪除職工記錄</p><p> void Modify();
64、 //修改職工記錄</p><p> void display(); //顯示職工記錄</p><p> void Save(); //保存職工信息</p><p> void FindRecID(); //按職工編號(hào)查找職工記錄</p><p> void FindRecN
65、ame(); //按職工姓名查找職工記錄</p><p> void Load(); //職工信息裝入</p><p> void Build(); //引導(dǎo)</p><p> void Statistics(); //職工信息統(tǒng)計(jì)</p><p> int MenuSelect()
66、; //菜單功能選擇</p><p> void Handle_menu(); //菜單處理函數(shù)</p><p><b> private:</b></p><p> Person *PL; //鏈表頭指針 </p><p> void clear();
67、//清除所有職工結(jié)點(diǎn),僅保留頭結(jié)點(diǎn)</p><p> bool QueryRec(string ID,Person** p1,Person** p2 ); //查找職工結(jié)點(diǎn)</p><p><b> };</b></p><p> string Work_type(int duty);</p><p>
68、 void print_worktype_menu();</p><p> void dis_mainmenu();</p><p><b> #endif</b></p><p> Salary.cpp文件中的代碼</p><p> /**************************************
69、****************************/</p><p> #include "Salary.h"</p><p> void Teacher::input() //從鍵盤補(bǔ)充其他數(shù)據(jù)</p><p><b> {</b></p><p> cout<<&qu
70、ot;\t編號(hào): "; cin>>ID;</p><p> cout<<"\t姓名: "; cin>>name;</p><p> cout<<"\t教師上學(xué)期課時(shí): "; cin>>hours;</p><p> salary=incoming();
71、</p><p><b> }</b></p><p> void Teacher::input(ifstream& infile)</p><p><b> {</b></p><p> infile>>ID;</p><p> infile&
72、gt;>name;</p><p> infile>>duty;</p><p> infile>>hours>>salary;</p><p><b> }</b></p><p> void Teacher::output()</p><p>
73、<b> {</b></p><p> cout<<"\t編號(hào): "<<ID<<endl;</p><p> cout<<"\t姓名: "<<name<<endl;</p><p> cout<<"\t人
74、員類別: "<<Work_type(duty)<<endl;</p><p> cout<<"\t上學(xué)期上課課時(shí): "<<hours<<endl;</p><p> cout<<"\t工資: "<<salary<<" 元"
75、<<endl;</p><p><b> }</b></p><p> void Teacher::output(ofstream& outfile)</p><p><b> {</b></p><p> outfile<<ID<<"\
76、t"<<name<<"\t"<<duty<<"\t"<<hours<<"\t"<<salary<<endl;</p><p><b> }</b></p><p> double Teacher::i
77、ncoming()</p><p><b> {</b></p><p> if(hours>120)</p><p> return salary+(hours-120)*20;</p><p> else return salary;</p><p><b> }&l
78、t;/b></p><p> void Assitant::input()</p><p><b> {</b></p><p> cout<<"\t編 號(hào): "; cin>>ID;</p><p> cout<<"\t姓 名:
79、"; cin>>name; </p><p> cout<<"\t實(shí)驗(yàn)員上學(xué)期試驗(yàn)課時(shí): "; cin>>hours;</p><p> salary=incoming();</p><p><b> }</b></p><p> void Ass
80、itant::input(ifstream& infile)</p><p><b> {</b></p><p> infile>>ID>>name>>duty>>hours>>salary;</p><p><b> }</b></p>
81、;<p> void Assitant::output()</p><p><b> {</b></p><p> cout<<"\t編 號(hào): "<<ID<<endl;</p><p> cout<<"\t姓 名: "<
82、;<name<<endl;</p><p> cout<<"\t人員類別: "<<Work_type(duty);</p><p> cout<<"\t上學(xué)期試驗(yàn)課時(shí): "<<hours<<endl;</p><p> cout<<
83、"\t工 資: "<<salary<<" 元"<<endl;</p><p><b> }</b></p><p> void Assitant::output(ofstream& outfile)</p><p><b> {</b
84、></p><p> outfile<<ID<<"\t"<<name<<"\t"<<duty<<"\t"<<hours<<"\t"<<salary<<endl;</p><p><
85、;b> }</b></p><p> double Assitant::incoming()</p><p><b> {</b></p><p> if(hours>70)</p><p> return salary+(hours-70)*20+allowance;</p>
86、;<p> else return salary+allowance;</p><p><b> }</b></p><p> void Manager::input()</p><p><b> {</b></p><p> cout<<"\t編
87、 號(hào): ";cin>>ID;</p><p> cout<<"\t姓 名: ";cin>>name;</p><p> salary=incoming();</p><p><b> }</b></p><p> void Manager
88、 ::input(ifstream& infile)</p><p><b> {</b></p><p> infile>>ID>>name>>duty>>salary;</p><p><b> }</b></p><p> voi
89、d Manager::output()</p><p><b> {</b></p><p> cout<<"\t編 號(hào): "<<ID<<endl;</p><p> cout<<"\t姓 名: "<<name<<e
90、ndl;</p><p> cout<<"\t人員類別: "<<Work_type(duty)<<endl;</p><p> cout<<"\t工 資: "<<salary<<" 元"<<endl;</p><p&g
91、t;<b> }</b></p><p> void Manager::output(ofstream& outfile)</p><p><b> {</b></p><p> outfile<<ID<<"\t"<<name<<"
92、;\t"<<duty<<"\t"<<salary<<endl;</p><p><b> }</b></p><p> double Manager::incoming()</p><p><b> {</b></p><
93、;p> return salary+allowance;</p><p><b> }</b></p><p> void Teacher_Assistant::input()</p><p><b> {</b></p><p> cout<<"\t編 號(hào)
94、: ";cin>>ID;</p><p> cout<<"\t姓 名: ";cin>>name;</p><p> cout<<"\t教師上學(xué)期上課課時(shí): ";</p><p> cin>>Teacher::hours;</p>&l
95、t;p> salary=incoming();</p><p><b> }</b></p><p> void Teacher_Assistant::input(ifstream& infile)</p><p><b> {</b></p><p> infile>
96、>ID>>name>>duty>>Teacher::hours>>salary;</p><p><b> }</b></p><p> void Teacher_Assistant::output()</p><p><b> {</b></p>
97、<p> cout<<"\t編 號(hào): "<<ID;</p><p> cout<<"\t姓 名: "<<name;</p><p> cout<<"\t人員類別: "<<Work_type(duty);</p><p
98、> cout<<"\t教師上學(xué)期上課課時(shí): "<<Teacher::hours;</p><p> cout<<"\t工資: "<<salary<<" 元"<<endl;</p><p><b> }</b></p>
99、;<p> void Teacher_Assistant::output(ofstream& outfile)</p><p><b> {</b></p><p> outfile<<ID<<"\t"<<name<<"\t"<<duty&l
100、t;<"\t"<<Teacher::hours<<"\t"<<salary<<endl; </p><p><b> }</b></p><p> double Teacher_Assistant::incoming()</p><p><
101、;b> {</b></p><p> if(Teacher::hours>120)</p><p> return salary+allowance+(Teacher::hours-120)*20;</p><p> else return salary+allowance;</p><p><b>
102、 }</b></p><p> void Manager_Teacher::input()</p><p><b> {</b></p><p> cout<<"\t編 號(hào): "; cin>>ID;</p><p> cout<<"
103、;\t姓 名: "; cin>>name;</p><p> cout<<"\t上學(xué)期上課課時(shí): "; cin>>Teacher::hours;</p><p> salary=incoming();</p><p><b> }</b></p><
104、p> void Manager_Teacher::input(ifstream& infile)</p><p><b> {</b></p><p> infile>>ID>>name>>duty>>Teacher::hours>>salary;</p><p>
105、<b> }</b></p><p> void Manager_Teacher::output()</p><p><b> {</b></p><p> cout<<"\t編 號(hào): "<<ID<<endl;</p><p>
106、 cout<<"\t姓 名: "<<name<<endl;</p><p> cout<<"\t人員類別: "<<Work_type(duty);</p><p> cout<<"\t上學(xué)期上課課時(shí): "<<Teacher::hours&
107、lt;<endl;</p><p> cout<<"\t工資: "<<salary<<" 元"<<endl;</p><p><b> }</b></p><p> void Manager_Teacher::output(ofstream&am
108、p; outfile)</p><p><b> {</b></p><p> outfile<<ID<<"\t"<<name<<"\t"<<duty<<"\t"<<Teacher::hours<<"
109、\t"<<salary<<endl;</p><p><b> }</b></p><p> double Manager_Teacher::incoming()</p><p><b> {</b></p><p> return salary+Teach
110、er::hours*20+allowance;</p><p><b> }</b></p><p> Salary_Management::Salary_Management()</p><p> //構(gòu)造函數(shù) (創(chuàng)建一個(gè)頭結(jié)點(diǎn)的鏈表)</p><p><b> {</b></p&g
111、t;<p> Person* p=new Teacher;</p><p><b> PL=p;</b></p><p><b> Build();</b></p><p><b> }</b></p><p> Salary_Management::~
112、Salary_Management()</p><p> //析構(gòu)函數(shù)(僅保留一個(gè)結(jié)點(diǎn))</p><p><b> {</b></p><p> Person* p=PL;</p><p><b> while (p)</b></p><p><b> {
113、</b></p><p> PL=p->next;delete p;p=PL;</p><p><b> }</b></p><p><b> PL=0;</b></p><p><b> }</b></p><p> v
114、oid print_worktype_menu()</p><p><b> {</b></p><p> cout<<"\t\t請(qǐng)選擇人員類別: "<<endl;</p><p> cout<<"\t\t\t1、教 師: "<<endl
115、;</p><p> cout<<"\t\t\t2、實(shí) 驗(yàn) 員: "<<endl;</p><p> cout<<"\t\t\t3、行 政 人 員: "<<endl;</p><p> cout<<"\t\t\t4、教師兼實(shí)驗(yàn)員: "
116、;<<endl;</p><p> cout<<"\t\t\t5、行政 兼 教師: "<<endl;</p><p> cout<<"\n\t\t請(qǐng)選擇要添加的相應(yīng)的人員類別分類碼: ";</p><p><b> }</b></p>&
117、lt;p> void Salary_Management::AddRec()</p><p><b> {</b></p><p> char ch='y';</p><p> //創(chuàng)建新結(jié)點(diǎn),錄入數(shù)據(jù),連接到鏈表</p><p> Teacher* pt;</p><
118、p> Assitant* pa;</p><p> Manager* pm;</p><p> Teacher_Assistant* pta;</p><p> Manager_Teacher* pmt;</p><p> while (ch=='y'||ch=='Y')</p>
119、<p><b> {</b></p><p> cout<<"\t*******************增加職工**********************"<<endl;</p><p> Person* p=PL;</p><p> while (p->next)p=p-&
120、gt;next; //查找尾結(jié)點(diǎn)</p><p> print_worktype_menu();</p><p> char select;</p><p> cin>>select;</p><p> switch(select)</p><p><b> {</b>&
121、lt;/p><p> case '1': pt=new Teacher;</p><p> pt->input();</p><p> p->next=pt;</p><p><b> break;</b></p><p> case '2' :
122、pa=new Assitant;</p><p> pa->input();</p><p> p->next=pa;</p><p><b> break;</b></p><p> case '3' : pm=new Manager;</p><p> p
123、m->input();</p><p> p->next=pm;</p><p><b> break;</b></p><p> case '4' : pta=new Teacher_Assistant;</p><p> pta->input();</p>&l
124、t;p> p->next=pta;</p><p><b> break;</b></p><p> case '5' : pmt=new Manager_Teacher;</p><p> pmt->input();</p><p> p->next=pmt;<
125、/p><p><b> break;</b></p><p> default : return;</p><p><b> }</b></p><p> cout<<"\t是否繼續(xù)添加職工信息(Y/N): "; cin>>ch;</p>
126、;<p> system("cls");</p><p> system("pause");</p><p><b> }</b></p><p><b> }</b></p><p> void Salary_Management::
127、clear() //清除所有的職工結(jié)點(diǎn)(僅保留頭結(jié)點(diǎn))</p><p><b> {</b></p><p> Person* p=PL->next;</p><p><b> while (p)</b></p><p><b> {</b></p>
128、;<p> PL->next=p->next;</p><p><b> delete p;</b></p><p> p=PL->next;</p><p><b> }</b></p><p><b> }</b></p>
129、;<p> void Salary_Management::FindRecID()</p><p> //按職工編號(hào)查找相應(yīng)的人員信息</p><p><b> {</b></p><p> string id;</p><p> Person* p1;</p><p>
130、 Person* p2;</p><p> cout<<"\t請(qǐng)輸入你要查找的職工編號(hào): "; cin>>id;</p><p> p1=PL->next;</p><p><b> p2=PL;</b></p><p> while (p1)</p>
131、<p><b> {</b></p><p> if (p1->ID==id)</p><p> break; //找到</p><p><b> else</b></p><p><b> {</b></p><p>
132、 p2=p1; //繼續(xù)向后查找</p><p> p1=p1->next;</p><p><b> }</b></p><p><b> }</b></p><p><b> if (!p1)</b></p><p>
133、<b> {</b></p><p> cout<<"\n\t找不到你要查找的職工信息!"<<endl;</p><p> cout<<"\t請(qǐng)確認(rèn)你輸入的編號(hào)是否正確!!!\n"<<endl;</p><p><b> return;&l
134、t;/b></p><p><b> }</b></p><p> else{ cout<<"\n"; p1->output();}</p><p><b> }</b></p><p> bool Salary_Management::Q
135、ueryRec(string id,Person** p1,Person** p2 )</p><p> //查找職工結(jié)點(diǎn),找到返回1,未找到返回0,結(jié)點(diǎn)指針由p1返回,p2為前看指針</p><p><b> {</b></p><p> *p1=PL->next;</p><p><b> *
136、p2=PL;</b></p><p> while (*p1)</p><p><b> {</b></p><p> if ((*p1)->ID==id)break;</p><p><b> else</b></p><p><b>
137、 {</b></p><p><b> *p2=*p1;</b></p><p> *p1=(*p1)->next;</p><p><b> }</b></p><p><b> }</b></p><p> return
138、 *p1?true:false;</p><p><b> }</b></p><p> void Salary_Management::FindRecName() //按職工姓名查找相應(yīng)的人員信息</p><p><b> {</b></p><p> string NAME;<
139、;/p><p> Person* p1;</p><p> Person* p2;</p><p> cout<<"\t請(qǐng)輸入你要查找的職工姓名: "; cin>>NAME;</p><p> p1=PL->next;</p><p><b> p2=P
140、L;</b></p><p> while (p1)</p><p><b> {</b></p><p> if (p1->name==NAME)</p><p> break; //找到</p><p><b> else</b></
141、p><p><b> {</b></p><p> p2=p1; //繼續(xù)向后查找</p><p> p1=p1->next;</p><p><b> }</b></p><p><b> }</b></p>
142、<p><b> if (!p1)</b></p><p><b> {</b></p><p> cout<<"\n\t\t找不到你要查找的職工信息!"<<endl;</p><p> cout<<"\n\t\t請(qǐng)確認(rèn)你輸入的姓名是否正確
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高校工資管理系統(tǒng)課程設(shè)計(jì)
- 高校工資管理系統(tǒng)課程設(shè)計(jì)
- c++課程設(shè)計(jì)報(bào)告--高校工資管理系統(tǒng)
- c++課程設(shè)計(jì)報(bào)告---高校工資管理系統(tǒng)
- c++課程設(shè)計(jì)--高校工資管理系統(tǒng)
- c++課程設(shè)計(jì)-----高校工資管理系統(tǒng)
- 課程設(shè)計(jì)--高校工資管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)報(bào)告
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--高校工資管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--高校工資管理系統(tǒng)
- 工資管理系統(tǒng)-課程設(shè)計(jì)報(bào)告
- 高校工資管理系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)
- 工資管理系統(tǒng)課程設(shè)計(jì)
- 工資管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)-工資管理系統(tǒng)
- 課程設(shè)計(jì)---企業(yè)工資管理系統(tǒng)設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告---企業(yè)工資管理系統(tǒng)設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)---企業(yè)工資管理系統(tǒng)設(shè)計(jì)報(bào)告
- 工資管理系統(tǒng)課程設(shè)計(jì)
- 工資管理系統(tǒng)課程設(shè)計(jì)
- 工資管理系統(tǒng)(課程設(shè)計(jì))
評(píng)論
0/150
提交評(píng)論