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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  課程設計報告</b></p><p><b>  課程設計題目:</b></p><p><b>  人員管理系統公司</b></p><p><b>  學生姓名: </b></p><p><b>  班

2、級: </b></p><p><b>  學 號: </b></p><p>  專 業:信息管理與信息系統</p><p><b>  指導教師: </b></p><p>  2011年11月10日</p><p><b>  目錄&l

3、t;/b></p><p>  第一章 緒論……………………………………………………………3</p><p>  第二章 需求分析………………………………………………………4</p><p>  第三章 總體設計………………………………………………………5</p><p>  第四章 詳細設計(個人負責的模塊)………………………………6

4、</p><p>  第五章 程序代碼(個人負責的部分)………………………………8</p><p>  第六章 系統程序結果…………………………………………………11</p><p>  第七章 課程設計總結…………………………………………………13</p><p>  第九章 參考文獻………………………………………………………14</

5、p><p><b>  第一章 緒 論</b></p><p>  本章簡單介紹公司員工管理系統的有關基礎理論知識,這是深入了解后續內容的必要準備。</p><p>  1公司員工管理系統概述</p><p>  1.1 管理信息系統的概念</p><p>  管理信息系統(Management I

6、nformation Systems,簡稱MIS),是一個不斷發展的新型學科,MIS的定義隨著計算機技術和通信技術的進步也在不斷更新,在現階段普遍認為MIS 是人為或計算機設備以及其他信息處理手段組成并用于管理信息的系統。包括以下幾個基本概念:</p><p>  (1) MIS的對象就是信息。信息是經過加工的對決策者有價值的數據。信息的主要特征是來源分散,數量龐大。信息來源于生產第一線、社會環境、市場以及行政管

7、理等部門。信息具有時間性。</p><p>  (2) 系統是由相互聯系、相互作用的若干要素按一定的規則組成并具有一定功能的整體。 系統由輸入、處理、輸出、反饋、控制等五個基本要素組成。</p><p>  (3) 管理信息由信息的采集、信息的傳遞、信息的儲存、信息的加工、信息的維護和信息的使用等五個方面組成。 </p><p>  MIS包括計算機、網絡通信設備等

8、硬件成分,也包括操作系統、應用軟件包等軟件成分,并隨著計算機技術和通信技術的迅速發展還會出現更多的內容。</p><p><b>  1.2 課題背景</b></p><p>  該項目開發的軟件為公司員工信息管理系統軟件,是鑒于目前公司對員工的管理越來越來要求高,員工信息呈爆炸性增長的前提下,公司對員工信息管理的自動化與準確化的要求日益強烈的背景下構思出來的。&l

9、t;/p><p>  目前社會上信息管理系統發展飛快,各個企事業單位都引入了信息管理軟件來管理自己日益增長的各種信息,商業化的員工信息管理軟件也不少.但本系統完全獨立開發,力求使系統功能簡潔明了,但功能齊全且易于操作</p><p>  1.3 目的背景與意義</p><p>  員工信息管理系統是一個公司不可缺少的部分。一個功能齊全、簡單易用的信息管理系統不但能有效

10、地減輕公司相關工作人員的工作負擔,它的內容對于公司的決策者和管理者來說都至關重要。所以員工信息管理系統應該能夠為用戶提供充足的信息和快捷的查詢手段。但一直以來人們使用傳統人工的方式管理文件檔案、統計和查詢數據,這種管理方式存在著許多缺點,如:效率低、保密性差,人工的大量浪費;另外時間一長,將產生大量的文件和數據,這對于查找、更新和維護都帶來了不少困難。隨著科學技術的不斷提高,計算機科學日漸成熟,其強大的功能已為人們深刻認識,它已進入人類

11、社會的各個領域并發揮著來越重要的作用。</p><p>  作為計算機應用的一部分,使用計算機對學校的各類信息進行管理,具有手工管理所無法比擬的優點.例如:檢索迅速、查詢方便、效率高、可靠性好、存儲量大、保密性好、壽命長、成本低等。這些優點能夠極大地提高員工信息管理的效率,也是一個單位科學化、正規化管理,與世界接軌的重要條件。</p><p>  1.4 程序開發的目標 </p&g

12、t;<p>  建立員工信息管理系統,采用計算機對員工信息進行管理,進一步提高管理效益和現代化水平。幫助廣大公司提高工作效率,實現員工信息管理工作流程的系統化、規范化和自動化。</p><p><b>  第二章 需求分析</b></p><p>  隨著信息時代的到來,各行各業都需要對信息進行有效快速的處理,當然公司的員工管理尤其需要。有一個好的管理系

13、統,是任何一個公司對其業務進行分析及平時日常管理的必要條件。</p><p>  在進行管理得方法和手段方面,最有效得工具就是電腦管理了。傳統的人力管理存在著許多無法避免的問題,針對這些問題需要設計出運用計算機管理的信息系統。系統實現員工管理的信息記錄和存儲,進行全面自動管理,大幅度提高了信息管理得效率,使得公司對員工的管理更為輕松。</p><p>  本應用程序實現的是Visual C

14、++的功能,用戶進入該程序后,可以在用戶界面進行有效的操作。用戶開始登錄界面后,可以在文本框中輸入信息,在此過程中,可以對員工進行查詢、修改、增加、刪除等操作,若系統處理后,根據自己的需要,用戶可以對其進行保存。</p><p>  開發工具:Microsoft Visual C++ 6.0</p><p><b>  第三章 總體設計</b></p>

15、<p><b>  系統總體框架</b></p><p>  使用面向對象的程序設計思想進行分析,整個系統涉及兩大類信息和操作,公司,人員。所以系統主要涉及兩個大類:公司類Company、人員類Person。系統的總體框架就是公司類,人員類的定義;主函數中定義一個公司對象,循環顯示主菜單并根據用戶選擇調用公司類的相應方法(成員函數)。</p><p>  

16、(1)公司類Company:考慮系統操作的人員信息的數量具有不確定性,所以考慮使用鏈表保存、處理人員信息。公司類包含:所有人員信息的一個不帶頭結點的鏈表(作為數據成員)及可以對人員信息進行增,刪,改,查詢經營信息,基礎數據設置,數據存盤,數據裝入等操作的相關模塊(Add,Delete,Modify,Query,Set,Save,Load)作為成員函數。</p><p>  (2)人員類Person:所有人員都具有

17、的公共信息及操作可以使用人員類進行描述。由于系統具有4類人員且4類人員數據,操作有所不同,如銷售員包含銷售額,而技術人員包含工作小時數且計算工資的方法不同,所以應當為4類人員創建相應的Person類的派生類。</p><p>  (3)為了使公司類可以方便處理人員信息,可以考慮將公司類確定為人員類的友元類或者人員類提供公共的方法以便公司類進行操作。為了公司類可以用共同方法操作人員類,可以將人員類的方法確定為虛函數

18、。</p><p><b>  類的層次圖</b></p><p><b>  Person</b></p><p>  { No,Name,Duty,Earning,next,Person(),CalcSalary(),Output()}</p><p>  Manager Sale

19、s SalesManager Technician</p><p>  { Manager(), {Amount, {Amount, { t,</p><p>  CalcSalary(), Sales(),GetAmount(), SalesManager(), Technician(

20、),</p><p>  Output()} SetAmount(), SetAmount(), GetT(),SetT(),</p><p>  CalcSalary(), CalcSalary(), CalcSalary(),</p><p>  Output()} Output

21、()} Output()}</p><p><b>  其中:</b></p><p> ?。?)Person 類的No-人員編號,Name-人員姓名,Duty-人員類別,Earning-工資,next-指向下一個人員的指針;Person 類的CalcSalary(),Output()定義為純虛函數分別表示要計算人員工資和輸出人員信息,由于定義純虛

22、函數,所以Person是抽象類,具體計算工資,輸出人員信息由派生類完成。</p><p> ?。?)各個派生的類,包含本類對象特有的數據,Sales::Amount-銷售員銷售額,SalesManager::Amount-銷售經理的總銷售額(系統統計各個銷售員銷售額得到銷售經理的總銷售額),Technician::t-技術人員工作小時數。</p><p><b>  Compan

23、y </b></p><p>  {Person *Worker,</p><p>  Clear(),Company(),~Company(),Add(),Delete(),Modify(),</p><p>  Query(),Set(),Save(),Load()}</p><p><b>  其中:</b&

24、gt;</p><p> ?。?)Worker就是人員鏈表。</p><p> ?。?)Clear()用于清除人員鏈表所有結點。</p><p> ?。?)Add(),Delete(),Modify(),Query(),Set(),Save(),Load()分別表示系統各個功能模塊:增加人員,刪除人員,修改人員,查詢本月經營信息,基礎數據設置,數據存盤,數據裝入。&

25、lt;/p><p>  第四章 詳細設計(個人負責模塊)</p><p>  我主要負責增加函數模塊。</p><p><b>  1、錄入函數</b></p><p><b>  (1)主函數流程</b></p><p>  (2) Company::Add()</p&

26、gt;<p>  第五章 程序代碼(個人負責的部分)</p><p>  我主要負責的代碼部分有錄入函數、顯示函數和清空函數,如下:</p><p><b>  錄入函數代碼:</b></p><p>  #include <iostream.h></p><p>  #include <

27、;fstream.h></p><p>  #include <ctype.h></p><p>  #include <string.h></p><p><b>  //全局數據,對象</b></p><p>  double ManagerSalary; //經理固定月薪&

28、lt;/p><p>  double SalesManagerSalary; //銷售經理固定月薪</p><p>  double SalesManagerPercent; //銷售經理提成%</p><p>  double SalesPercent; //銷售人員提成%</p><p>  double WagePerHou

29、r; //技術人員小時工資</p><p>  int ID; //員工標識(要保證唯一)</p><p>  class Person //員工類</p><p><b>  {</b></p><p>  protected:</p><p

30、>  int No; //編號</p><p>  char Name[20]; //姓名</p><p>  int Duty; //崗位</p><p>  double Earning; //收入</p><p>  Person *next;</p><p><b>  publ

31、ic:</b></p><p>  Person(char ID,char *Name,int Duty)</p><p><b>  {</b></p><p>  this->Duty=Duty;</p><p>  strcpy(this->Name,Name);</p>&l

32、t;p>  this->No=ID;</p><p><b>  }</b></p><p>  virtual void CalcSalary()=0; </p><p>  virtual void Output()=0;</p><p>  friend class Company;</p>

33、<p><b>  };</b></p><p>  class Manager:public Person //經理類</p><p><b>  {</b></p><p><b>  public:</b></p><p>  Manager(char I

34、D,char *Name,int Duty):Person(ID,Name,Duty){}</p><p>  void CalcSalary(){Earning=ManagerSalary;}</p><p>  void Output()</p><p><b>  {</b></p><p>  CalcSalar

35、y();</p><p>  cout<<No<<"\t"<<Name<<"\t經理\t"<<Earning<<endl;</p><p><b>  }</b></p><p><b>  };</b><

36、/p><p>  class SalesManager:public Person //銷售經理類</p><p><b>  {</b></p><p><b>  private:</b></p><p>  double Amount;</p><p><b>

37、  public:</b></p><p>  SalesManager(char ID,char *Name,int Duty):Person(ID,Name,Duty){}</p><p>  void SetAmount(double s)</p><p><b>  {</b></p><p><

38、;b>  Amount=s;</b></p><p><b>  }</b></p><p>  void CalcSalary()</p><p><b>  {</b></p><p>  Earning=SalesManagerSalary+Amount*SalesManag

39、erPercent/100;</p><p><b>  }</b></p><p>  void Output()</p><p><b>  {</b></p><p>  CalcSalary();</p><p>  cout<<No<<&qu

40、ot;\t"<<Name<<"\t銷售經理\t"<<Earning<<endl;</p><p><b>  }</b></p><p><b>  };</b></p><p>  class Technician:public Person

41、 //技術員類</p><p><b>  {</b></p><p><b>  private:</b></p><p><b>  double t;</b></p><p><b>  public:</b></p><p>

42、;  Technician(char ID,char *Name,int Duty,double T):Person(ID,Name,Duty)</p><p><b>  {</b></p><p>  this->t=T;</p><p><b>  }</b></p><p>  dou

43、ble GetT()</p><p><b>  {</b></p><p><b>  return t;</b></p><p><b>  }</b></p><p>  void SetT(double T)</p><p><b> 

44、 {</b></p><p>  this->t=T;</p><p><b>  }</b></p><p>  void CalcSalary()</p><p><b>  {</b></p><p>  Earning=WagePerHour*t;&

45、lt;/p><p><b>  }</b></p><p>  void Output()</p><p><b>  {</b></p><p>  CalcSalary();</p><p>  cout<<No<<"\t"<

46、<Name<<"\t技術員\t"<<t<<"\t"<<Earning<<endl;</p><p><b>  }</b></p><p><b>  };</b></p><p>  class Sales:publ

47、ic Person //銷售員類</p><p><b>  {</b></p><p><b>  private:</b></p><p>  double Amount;</p><p><b>  public:</b></p><p>  S

48、ales(char ID,char *Name,int Duty,double Amount):Person(ID,Name,Duty)</p><p><b>  {</b></p><p>  this->Amount=Amount;</p><p><b>  }</b></p><p>

49、;  double GetAmount()</p><p><b>  {</b></p><p>  return Amount;</p><p><b>  }</b></p><p>  void SetAmount(double Amount)</p><p><

50、;b>  {</b></p><p>  this->Amount=Amount;</p><p><b>  }</b></p><p>  void CalcSalary()</p><p><b>  {</b></p><p>  Earnin

51、g=SalesPercent/100*Amount;</p><p><b>  }</b></p><p>  void Output()</p><p><b>  {</b></p><p>  CalcSalary();</p><p>  cout<<N

52、o<<"\t"<<Name<<"\t銷售員\t"<<Amount<<"\t"<<Earning<<endl;</p><p><b>  }</b></p><p><b>  };</b></p&

53、gt;<p>  class Company //公司類</p><p><b>  {</b></p><p><b>  private:</b></p><p>  Person *Worker; //員工表</p><p>  void Clear(); //清除內存中數

54、據</p><p><b>  public:</b></p><p><b>  Company()</b></p><p><b>  {</b></p><p>  Worker=0; </p><p><b>  Load()

55、;</b></p><p><b>  }</b></p><p>  ~Company()</p><p><b>  {</b></p><p>  Person *p;</p><p><b>  p=Worker;</b></p

56、><p><b>  while(p)</b></p><p><b>  {</b></p><p>  p=p->next;</p><p>  delete Worker;</p><p><b>  Worker=p;</b></p>

57、;<p><b>  }</b></p><p><b>  Worker=0;</b></p><p><b>  }</b></p><p>  void Add(); //增加人員</p><p>  void Delete(); //刪除人員&l

58、t;/p><p>  void Modify(); //修改人員</p><p>  void Query(); //查詢人員</p><p>  void Set(); //基礎數據設置</p><p>  void Save(); //數據存盤(包括基礎數據,人員數據)</p><p>  void

59、 Load(); //數據裝入(包括基礎數據,人員數據)</p><p><b>  };</b></p><p>  void Company::Clear() //清除內存中人員數據(內部使用)</p><p><b>  {</b></p><p>  Person* p=Worker

60、;</p><p><b>  while(p)</b></p><p><b>  {</b></p><p>  Worker=p->next;</p><p><b>  delete p;</b></p><p><b>  p=

61、Worker;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void Company::Add()</p><p><b>  {</b></p><p>  Person *p

62、; //新結點指針</p><p>  int Duty; </p><p>  char Name[20];</p><p>  double Amount,T;</p><p>  cout<<"\n** 新增員工 **\n"; </p><p><b>  //輸入

63、員工信息</b></p><p><b>  ID++;</b></p><p>  cout<<"輸入崗位(1-經理2-銷售經理3-銷售員4-技術員):"; cin>>Duty;</p><p>  cout<<"輸入姓名:"; cin>>

64、Name;</p><p>  if(Duty==3)</p><p><b>  {</b></p><p>  cout<<"本月銷售額:"; cin>>Amount;</p><p><b>  }</b></p><p>

65、  else if(Duty==4)</p><p><b>  {</b></p><p>  cout<<"本月工作小時數(0-168):"; </p><p><b>  cin>>T;</b></p><p><b>  }</b

66、></p><p><b>  //創建新員工結點</b></p><p>  switch(Duty)</p><p><b>  {</b></p><p>  case 1:p=new Manager(ID,Name,Duty); break;</p><p> 

67、 case 2:p=new SalesManager(ID,Name,Duty); break;</p><p>  case 3:p=new Sales(ID,Name,Duty,Amount); break;</p><p>  case 4:p=new Technician(ID,Name,Duty,T); break;</p><p><b&g

68、t;  }</b></p><p>  p->next=0;</p><p>  //員工結點加入鏈表</p><p>  if(Worker) //若已經存在結點</p><p><b>  {</b></p><p>  Person *p2;</p><

69、;p>  p2=Worker;</p><p>  while(p2->next) //查找尾結點</p><p><b>  {</b></p><p>  p2=p2->next;</p><p><b>  }</b></p><p>  p2-&g

70、t;next=p; //連接</p><p><b>  }</b></p><p>  else //若不存在結點(表空)</p><p><b>  {</b></p><p>  Worker=p; //連接</p><p><b>  } </

71、b></p><p><b>  }</b></p><p>  else if(Duty==4)</p><p><b>  {</b></p><p>  cout<<"本月工作小時數(0-168):"; </p><p><

72、b>  cin>>T;</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p><b>  char c;</b></p><p>

73、  Company a;</p><p><b>  do</b></p><p><b>  {</b></p><p>  cout<<"\n*** 公司人員管理系統 ***\n";</p><p>  cout<<"1-增加人員\n&quo

74、t;;</p><p><b>  cin>>c;</b></p><p><b>  switch(c)</b></p><p><b>  {</b></p><p>  case '1': a.Add(); break;</p>

75、;<p><b>  }</b></p><p>  }while(c!='8');</p><p><b>  }</b></p><p>  第六章 系統程序結果</p><p>  第七章 課程設計總結</p><p>  通過完成本次

76、面向對象程序設計的任務,使我熟練和掌握了這學期所學的有關visual c++中的一些主要知識點和應用點,如類的定義,類的實現,對象的定義,類的繼承等等??梢运鶎W有所學,所有所用,不至于自己所學知識由于沒有經歷可用過程,而放棄對它的興趣。</p><p>  面向對象程序設計作為一門軟件設計的課程,具有極強的實踐性,使我加強了靈活應用理論知識的能力及面向對象程序設計技能。</p><p> 

77、 此次,應用程序的設計和創建,經歷了平時在課堂中和考試中,決不會有的重重難題和問題。而這些問題,又都是課本上很少提到的、更深一層的知識領域和應用領域。這些問題,并不是我們平時只靠課本,就可以輕易解決的。所以,鍛煉了我們面對難題,自己思索,自己探索,自己查資料發現問題、解決問題的獨斷能力。</p><p>  當然,此次任務的完成,也體現出同學之間的團結精神。所遇種種難以解決的問題,大家都會把它當作共同遇到的問題,

78、在一起共同探討,共同發揮自己所學和所知,投入式的互相幫助和解決困難。</p><p>  “實踐是檢驗真理的唯一標準”。沒有實踐,就不會發現和深刻體會它的真實所在。只有通過檢驗的真理,在自己的心里,才會認可它的真實性。面向對象程序設計的完成,使我們懂得了真理的重要性,理論和實際的相結合,才能真正把握所學和所掌握的知識。</p><p>  理論的擁有并不能代表我們的實力和能力,一切的事件和

79、其成功都是理論和實踐的結合??傊?,我們學習和掌握的知識,只有通過實際應用,才能真正的理解和掌握,才能更好的去應用。</p><p>  第八章 源代碼 </p><p>  /*本程序有關的兩個數據文件:</p><p>  base.txt-基礎數據文件(必須存在,且按規定格式保存)<

80、/p><p>  person.txt-人員信息文件(可選)</p><p><b>  */</b></p><p>  #include <iostream.h></p><p>  #include <fstream.h></p><p>  #include <c

81、type.h></p><p>  #include <string.h></p><p><b>  //全局數據,對象</b></p><p>  double ManagerSalary; //經理固定月薪</p><p>  double SalesManagerSalary; /

82、/銷售經理固定月薪</p><p>  double SalesManagerPercent; //銷售經理提成%</p><p>  double SalesPercent; //銷售人員提成%</p><p>  double WagePerHour; //技術人員小時工資</p><p>  int ID;

83、 //員工標識(要保證唯一)</p><p>  class Person //員工類</p><p><b>  {</b></p><p>  protected:</p><p>  int No; //編號</p><p>  char Name

84、[20]; //姓名</p><p>  int Duty; //崗位</p><p>  double Earning; //收入</p><p>  Person *next;</p><p><b>  public:</b></p><p>  Person(char ID,

85、char *Name,int Duty)</p><p><b>  {</b></p><p>  this->Duty=Duty;</p><p>  strcpy(this->Name,Name);</p><p>  this->No=ID;</p><p><b&

86、gt;  }</b></p><p>  virtual void CalcSalary()=0; </p><p>  virtual void Output()=0;</p><p>  friend class Company;</p><p><b>  };</b></p><p

87、>  class Manager:public Person //經理類</p><p><b>  {</b></p><p><b>  public:</b></p><p>  Manager(char ID,char *Name,int Duty):Person(ID,Name,Duty){}</p

88、><p>  void CalcSalary(){Earning=ManagerSalary;}</p><p>  void Output()</p><p><b>  {</b></p><p>  CalcSalary();</p><p>  cout<<No<<&q

89、uot;\t"<<Name<<"\t經理\t"<<Earning<<endl;</p><p><b>  }</b></p><p><b>  };</b></p><p>  class SalesManager:public Person

90、 //銷售經理類</p><p><b>  {</b></p><p><b>  private:</b></p><p>  double Amount;</p><p><b>  public:</b></p><p>  SalesMana

91、ger(char ID,char *Name,int Duty):Person(ID,Name,Duty){}</p><p>  void SetAmount(double s)</p><p><b>  {</b></p><p><b>  Amount=s;</b></p><p><

92、;b>  }</b></p><p>  void CalcSalary()</p><p><b>  {</b></p><p>  Earning=SalesManagerSalary+Amount*SalesManagerPercent/100;</p><p><b>  }<

93、/b></p><p>  void Output()</p><p><b>  {</b></p><p>  CalcSalary();</p><p>  cout<<No<<"\t"<<Name<<"\t銷售經理\t"

94、<<Earning<<endl;</p><p><b>  }</b></p><p><b>  };</b></p><p>  class Technician:public Person //技術員類</p><p><b>  {</b>&

95、lt;/p><p><b>  private:</b></p><p><b>  double t;</b></p><p><b>  public:</b></p><p>  Technician(char ID,char *Name,int Duty,double T)

96、:Person(ID,Name,Duty)</p><p><b>  {</b></p><p>  this->t=T;</p><p><b>  }</b></p><p>  double GetT()</p><p><b>  {</b&g

97、t;</p><p><b>  return t;</b></p><p><b>  }</b></p><p>  void SetT(double T)</p><p><b>  {</b></p><p>  this->t=T;<

98、;/p><p><b>  }</b></p><p>  void CalcSalary()</p><p><b>  {</b></p><p>  Earning=WagePerHour*t;</p><p><b>  }</b></p>

99、;<p>  void Output()</p><p><b>  {</b></p><p>  CalcSalary();</p><p>  cout<<No<<"\t"<<Name<<"\t技術員\t"<<t<<

100、;"\t"<<Earning<<endl;</p><p><b>  }</b></p><p><b>  };</b></p><p>  class Sales:public Person //銷售員類</p><p><b>  {&

101、lt;/b></p><p><b>  private:</b></p><p>  double Amount;</p><p><b>  public:</b></p><p>  Sales(char ID,char *Name,int Duty,double Amount):Per

102、son(ID,Name,Duty)</p><p><b>  {</b></p><p>  this->Amount=Amount;</p><p><b>  }</b></p><p>  double GetAmount()</p><p><b>

103、  {</b></p><p>  return Amount;</p><p><b>  }</b></p><p>  void SetAmount(double Amount)</p><p><b>  {</b></p><p>  this->

104、Amount=Amount;</p><p><b>  }</b></p><p>  void CalcSalary()</p><p><b>  {</b></p><p>  Earning=SalesPercent/100*Amount;</p><p><

105、b>  }</b></p><p>  void Output()</p><p><b>  {</b></p><p>  CalcSalary();</p><p>  cout<<No<<"\t"<<Name<<"\t

106、銷售員\t"<<Amount<<"\t"<<Earning<<endl;</p><p><b>  }</b></p><p><b>  };</b></p><p>  class Company //公司類</p><

107、;p><b>  {</b></p><p><b>  private:</b></p><p>  Person *Worker; //員工表</p><p>  void Clear(); //清除內存中數據</p><p><b>  public:</b>&

108、lt;/p><p><b>  Company()</b></p><p><b>  {</b></p><p>  Worker=0; </p><p><b>  Load();</b></p><p><b>  }</b&

109、gt;</p><p>  ~Company()</p><p><b>  {</b></p><p>  Person *p;</p><p><b>  p=Worker;</b></p><p><b>  while(p)</b></p&

110、gt;<p><b>  {</b></p><p>  p=p->next;</p><p>  delete Worker;</p><p><b>  Worker=p;</b></p><p><b>  }</b></p><p

111、><b>  Worker=0;</b></p><p><b>  }</b></p><p>  void Add(); //增加人員</p><p>  void Delete(); //刪除人員</p><p>  void Modify(); //修改人員</p&g

112、t;<p>  void Query(); //查詢人員</p><p>  void Set(); //基礎數據設置</p><p>  void Save(); //數據存盤(包括基礎數據,人員數據)</p><p>  void Load(); //數據裝入(包括基礎數據,人員數據)</p><p>

113、;<b>  };</b></p><p>  void Company::Clear() //清除內存中人員數據(內部使用)</p><p><b>  {</b></p><p>  Person* p=Worker;</p><p><b>  while(p)</b>

114、</p><p><b>  {</b></p><p>  Worker=p->next;</p><p><b>  delete p;</b></p><p><b>  p=Worker;</b></p><p><b>  }&

115、lt;/b></p><p><b>  }</b></p><p>  void Company::Add()</p><p><b>  {</b></p><p>  Person *p; //新結點指針</p><p>  int Duty; </p&

116、gt;<p>  char Name[20];</p><p>  double Amount,T;</p><p>  cout<<"\n** 新增員工 **\n"; </p><p><b>  //輸入員工信息</b></p><p><b>  ID++;

117、</b></p><p>  cout<<"輸入崗位(1-經理2-銷售經理3-銷售員4-技術員):"; cin>>Duty;</p><p>  cout<<"輸入姓名:"; cin>>Name;</p><p>  if(Duty==3)</p>

118、<p><b>  {</b></p><p>  cout<<"本月銷售額:"; cin>>Amount;</p><p><b>  }</b></p><p>  else if(Duty==4)</p><p><b>  {

119、</b></p><p>  cout<<"本月工作小時數(0-168):"; </p><p><b>  cin>>T;</b></p><p><b>  }</b></p><p><b>  //創建新員工結點</b

120、></p><p>  switch(Duty)</p><p><b>  {</b></p><p>  case 1:p=new Manager(ID,Name,Duty); break;</p><p>  case 2:p=new SalesManager(ID,Name,Duty); break;&l

121、t;/p><p>  case 3:p=new Sales(ID,Name,Duty,Amount); break;</p><p>  case 4:p=new Technician(ID,Name,Duty,T); break;</p><p><b>  }</b></p><p>  p->next=0;

122、</p><p>  //員工結點加入鏈表</p><p>  if(Worker) //若已經存在結點</p><p><b>  {</b></p><p>  Person *p2;</p><p>  p2=Worker;</p><p>  while(p2-&

123、gt;next) //查找尾結點</p><p><b>  {</b></p><p>  p2=p2->next;</p><p><b>  }</b></p><p>  p2->next=p; //連接</p><p><b>  }<

124、;/b></p><p>  else //若不存在結點(表空)</p><p><b>  {</b></p><p>  Worker=p; //連接</p><p><b>  } </b></p><p><b>  }</b><

125、;/p><p>  void Company::Delete() //刪除人員</p><p><b>  {</b></p><p><b>  int No;</b></p><p>  cout<<"\n** 刪除員工 **\n";</p><

126、p>  cout<<"ID:"; cin>>No;</p><p>  //查找要刪除的結點</p><p>  Person *p1,*p2; p1=Worker;</p><p><b>  while(p1)</b></p><p><b>  {&l

127、t;/b></p><p>  if(p1->No==No)</p><p><b>  break;</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  p2=

128、p1;</b></p><p>  p1=p1->next;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //刪除結點</b></p><p>  if(p1!=NULL)

129、//若找到結點,則刪除</p><p><b>  {</b></p><p>  if(p1==Worker) //若要刪除的結點是第一個結點</p><p><b>  {</b></p><p>  Worker=p1->next;</p><p>  dele

130、te p1;</p><p><b>  }</b></p><p>  else //若要刪除的結點是后續結點</p><p><b>  {</b></p><p>  p2->next=p1->next;</p><p>  delete p1;</

131、p><p><b>  }</b></p><p>  cout<<"找到并刪除\n";</p><p><b>  }</b></p><p>  else //未找到結點</p><p>  cout<<"未找到!\n&

132、quot;;</p><p><b>  }</b></p><p>  void Company::Modify()</p><p><b>  {</b></p><p>  int No,Duty;</p><p>  char Name[20]; </p>

133、;<p>  double Amount,T;</p><p>  cout<<"\n** 修改員工 **\n";</p><p>  cout<<"ID:"; cin>>No;</p><p>  //查找要修改的結點</p><p>  Perso

134、n *p1,*p2; p1=Worker;</p><p><b>  while(p1)</b></p><p><b>  {</b></p><p>  if(p1->No==No)</p><p><b>  break;</b></p><

135、p><b>  else</b></p><p><b>  {</b></p><p><b>  p2=p1;</b></p><p>  p1=p1->next;</p><p><b>  }</b></p><p&

136、gt;<b>  }</b></p><p><b>  //修改結點</b></p><p>  if(p1!=NULL)//若找到結點</p><p><b>  {</b></p><p>  p1->Output();</p><p>  

137、cout<<"調整崗位(1-經理2-銷售經理3-銷售員4-技術員):"; cin>>Duty;</p><p>  if(p1->Duty!=Duty) //若崗位發生變動</p><p><b>  { </b></p><p><b>  //修改其它數據</b&g

138、t;</p><p>  cout<<"輸入姓名:"; cin>>Name; </p><p>  if(Duty==3)</p><p><b>  {</b></p><p>  cout<<"本月銷售額:"; cin>&

139、gt;Amount;</p><p><b>  }</b></p><p>  else if(Duty==4)</p><p><b>  {</b></p><p>  cout<<"本月工作小時數(0-168):"; </p><p>

140、;<b>  cin>>T;</b></p><p><b>  }</b></p><p><b>  //創建新員工結點</b></p><p>  Person *p3;</p><p>  switch(Duty)</p><p>&

141、lt;b>  {</b></p><p>  case 1:p3=new Manager(p1->No,Name,Duty); break;</p><p>  case 2:p3=new SalesManager(p1->No,Name,Duty); break;</p><p>  case 3:p3=new Sales(p1-&

142、gt;No,Name,Duty,Amount); break;</p><p>  case 4:p3=new Technician(p1->No,Name,Duty,T); break;</p><p><b>  }</b></p><p>  //員工結點替換到鏈表</p><p>  p3->n

143、ext=p1->next;</p><p>  if(p1==Worker) //若要替換的結點是第一個結點</p><p>  Worker=p3;</p><p>  else //若要刪除的結點是后續結點</p><p>  p2->next=p3;</p><p>  //刪除原來的員工結點&l

144、t;/p><p>  delete p1;</p><p><b>  }</b></p><p>  else //若崗位沒有變動</p><p><b>  {</b></p><p>  cout<<"輸入姓名:"; cin>>

145、;p1->Name;</p><p>  if(Duty==3)</p><p><b>  {</b></p><p>  cout<<"本月銷售額:";cin>>Amount; ((Sales *)p1)->SetAmount(Amount);</p><p>

146、<b>  }</b></p><p>  else if(Duty==4)</p><p><b>  {</b></p><p>  cout<<"本月工作小時數(0-168):";cin>>T; ((Technician *)p1)->SetT(T);</p&g

147、t;<p><b>  }</b></p><p><b>  }</b></p><p>  cout<<"修改成功!\n";</p><p><b>  }</b></p><p>  else //未找到結點</p&g

溫馨提示

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

評論

0/150

提交評論