2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論