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

下載本文檔

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

文檔簡介

1、<p><b>  課程設計報告</b></p><p><b>  公司人員管理系統(tǒng)</b></p><p>  課 程 :面向對象課程設計</p><p><b>  班 級 : </b></p><p><b>  學 號 : <

2、;/b></p><p><b>  姓 名 : </b></p><p><b>  指導老師 :</b></p><p>  2012年 6月12日</p><p>  設計題目(問題)描述和要求</p><p>  題目:公司人員管理系統(tǒng) </p>

3、;<p><b>  問題描述:</b></p><p>  某小型公司,主要有四類人員:經理、兼職技術人員、銷售經理和兼職推銷員。現在,需要存儲這些人員的姓名、編號、級別、當月薪水,計算月薪總額并顯示全部信息。 </p><p><b>  要求: </b></p><p>  其中,人員編號在生成人員信息

4、時同時生成,每輸入一個人員信息編號順序加1。 </p><p>  程序對所有人員有提升級別的功能 </p><p>  月薪的計算方法是:經理拿固定月薪,兼職技術人員按工作小時數領取月薪,兼職推銷員的報酬按該推銷員當月銷售額提成 ,銷售經理既拿固定月薪也領取銷售提成。 </p><p>  能按姓名或者編號顯示、查找、增加、刪除和保存各類人員的信息 </p&

5、gt;<p><b>  系統(tǒng)分析與模塊設計</b></p><p>  根據問題描述和要求,系統(tǒng)要求能夠按姓名或者編號顯示、查找、增加、刪除和保存各類人員的信息。確定程序至少應該具備如下功能:“查詢人員”、“增加人員”、“刪除人員”、“數據存盤”基本模塊。</p><p>  系統(tǒng)既然具有“數據存盤”功能-人員數據可以保存到磁盤文件,那么也就意味著今后

6、可以從磁盤文件讀出人員數據,所以系統(tǒng)增加了“人員數據裝入”模塊,以方便用戶使用、避免數據重復錄入??紤]到系統(tǒng)實現簡捷,人員數據文件采用文本文件,人員數據文件名:Person.txt。</p><p>  做為一個完整系統(tǒng),除了具有增加人員,刪除人員信息模塊,還應該具有修改人員相關信息的功能,所以本系統(tǒng)設計時考慮增加“修改人員”模塊。</p><p>  考慮到根據編號查找人員信息功能在“刪

7、除人員”、“修改人員”等模塊都使用,所以可以考慮設置為一個模塊。</p><p>  考慮到系統(tǒng)要求人員編號在生成人員信息時同時生成,每輸入一個人員信息編號順序加1。這樣就要求人員編號在增加人員時自動生成(增加1)且不重復。根據這個要求,可以考慮設置一個全局量:“當前最大編號”,每增加一個人員,當前最大編號自動增1,然后新增加人員使用這個編號。為了保證系統(tǒng)能記憶這個編號,可以使用一個數據文件保存當前這個編號。系統(tǒng)

8、每次開始運行前從文件讀入這個編號,隨著人員增加,編號自動增加,系統(tǒng)每次運行結束時將這個編號寫入文件。本系統(tǒng)將初值(沒有一個用戶時)設置為0。</p><p>  考慮到人員的許多固定信息如:經理、銷售經理的固定月薪,銷售經理、銷售人員提成,技術人員小時工資等都是一些不需要每個人員都要輸入的信息,所以可以將這些信息都保存在一個數據文件中,本系統(tǒng)為了方便起見,將這些信息與“最大編號”全部保存在一個文件中,并使用“基礎

9、數據設置”模塊進行設置和管理?;A數據文件也采用文本文件,基礎數據文件名:Base.txt。</p><p>  本系統(tǒng)還提供“查詢本月經營信息”幫助計算銷售總額,工資總額,并按照公式計算本月盈虧。</p><p>  綜合考慮系統(tǒng)具有下面8項功能模塊:增加人員,刪除人員,修改人員,查詢本月經營信息,基礎數據設置,數據存盤,數據裝入。</p><p>  系統(tǒng)使用的

10、數據文件格式如下:</p><p>  Base.txt:(格式:項目 數據)</p><p>  經理固定月薪3000</p><p>  銷售經理固定月薪1000</p><p><b>  銷售經理提成%1</b></p><p><b>  銷售人員提成%2</b&

11、gt;</p><p>  技術人員小時工資20</p><p><b>  ID6</b></p><p>  Person.txt:(格式:編號,姓名,人員類別,其它數據,銷售員銷售額,技術人員工作小時)</p><p>  2wang3100000</p><p><b&g

12、t;  3liu1</b></p><p>  4wu4100</p><p><b>  5huang2</b></p><p>  6tao3150000</p><p>  注:人員類型編號1-經理;2-銷售經理;3-銷售員;4-技術人員</p><p>

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

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

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

16、行操作。為了公司類可以用共同方法操作人員類,可以將人員類的方法確定為虛函數。</p><p><b>  類的層次圖</b></p><p><b>  Person</b></p><p>  { No,Name,Duty,Earning,next,Person(),CalcSalary(),Output()}</

17、p><p>  Manager Sales SalesManager Technician</p><p>  { Manager(), {Amount, {Amount, { t,</p><p>  CalcSalary(), Sales(),GetAmou

18、nt(), SalesManager(), Technician(),</p><p>  Output()} SetAmount(), SetAmount(), GetT(),SetT(),</p><p>  CalcSalary(), CalcSalary(), CalcSalary(),</p>

19、<p>  Output()} Output()} Output()}</p><p><b>  其中:</b></p><p> ?。?)Person 類的No-人員編號,Name-人員姓名,Duty-人員類別,Earning-工資,next-指向下一個人員的指針;Person 類的CalcSalary(),Out

20、put()定義為純虛函數分別表示要計算人員工資和輸出人員信息,由于定義純虛函數,所以Person是抽象類,具體計算工資,輸出人員信息由派生類完成。</p><p> ?。?)各個派生的類,包含本類對象特有的數據,Sales::Amount-銷售員銷售額,SalesManager::Amount-銷售經理的總銷售額(系統(tǒng)統(tǒng)計各個銷售員銷售額得到銷售經理的總銷售額),Technician::t-技術人員工作小時數。&

21、lt;/p><p><b>  Company </b></p><p>  {Person *Worker,</p><p>  Clear(),Company(),~Company(),Add(),Delete(),Modify(),</p><p>  Query(),Set(),Save(),Load()}</

22、p><p><b>  其中:</b></p><p> ?。?)Worker就是人員鏈表。</p><p>  (2)Clear()用于清除人員鏈表所有結點。</p><p> ?。?)Add(),Delete(),Modify(),Query(),Set(),Save(),Load()分別表示系統(tǒng)各個功能模塊:增加人員,

23、刪除人員,修改人員,查詢本月經營信息,基礎數據設置,數據存盤,數據裝入。</p><p><b>  系統(tǒng)關鍵算法流程圖</b></p><p><b>  (1)主函數流程</b></p><p>  (2) Company::Add()</p><p>  (3) Company::Delete

24、()</p><p>  (4) Company::Modify</p><p>  (5) Company::Query() </p><p>  (6)Company::Save()</p><p>  (7) Company::Load()</p><p><b>  源程序清單</b>&l

25、t;/p><p><b>  參見附錄</b></p><p><b>  系統(tǒng)測試</b></p><p><b>  小結</b></p><p>  通過程序設計,我能夠基本掌握C++程序設計的方法,并且在此基礎上掌握類的構造方法,明確類中構造函數、成員函數的建立以及調用,此

26、外,并且,結合C++中字符串函數的編譯系統(tǒng)給定的庫函數,采用一定的邏輯編譯,實現題目中要求的各項要求,達到基本實驗目的,提高自己的C++語言使用水平。</p><p><b>  參考文獻</b></p><p>  【1】陳維興,林小茶.C++面向對象程序設計教程.北京.清華大學出版社2010,10</p><p>  【2】譚浩強.C語言程

27、序設計.北京:清華大學出版社.2010,5</p><p><b>  附錄:</b></p><p>  /*本程序有關的兩個數據文件:</p><p>  base.txt-基礎數據文件(必須存在,且按規(guī)定格式保存)</p><p>  person.txt-人員信息文件(可選)</p><p&g

28、t;<b>  */</b></p><p>  #include <iostream.h></p><p>  #include <fstream.h></p><p>  #include <ctype.h></p><p>  #include <string.h>&

29、lt;/p><p><b>  //全局數據,對象</b></p><p>  double ManagerSalary; //經理固定月薪</p><p>  double SalesManagerSalary; //銷售經理固定月薪</p><p>  double SalesManagerPercent;

30、 //銷售經理提成%</p><p>  double SalesPercent; //銷售人員提成%</p><p>  double WagePerHour; //技術人員小時工資</p><p>  int ID; //員工標識(要保證唯一)</p><p>  cl

31、ass Person //員工類</p><p><b>  {</b></p><p>  protected:</p><p>  int No; //編號</p><p>  char Name[20]; //姓名</p><p>  int Duty; //崗位</

32、p><p>  double Earning; //收入</p><p>  Person *next;</p><p><b>  public:</b></p><p>  Person(char ID,char *Name,int Duty)</p><p><b>  {</b

33、></p><p>  this->Duty=Duty;</p><p>  strcpy(this->Name,Name);</p><p>  this->No=ID;</p><p><b>  }</b></p><p>  virtual void CalcSal

34、ary()=0; </p><p>  virtual void Output()=0;</p><p>  friend class Company;</p><p><b>  };</b></p><p>  class Manager:public Person //經理類</p><p&g

35、t;<b>  {</b></p><p><b>  public:</b></p><p>  Manager(char ID,char *Name,int Duty):Person(ID,Name,Duty){}</p><p>  void CalcSalary(){Earning=ManagerSalary;}&

36、lt;/p><p>  void Output()</p><p><b>  {</b></p><p>  CalcSalary();</p><p>  cout<<No<<"\t"<<Name<<"\t經理\t"<<E

37、arning<<endl;</p><p><b>  }</b></p><p><b>  };</b></p><p>  class SalesManager:public Person //銷售經理類</p><p><b>  {</b></p&

38、gt;<p><b>  private:</b></p><p>  double Amount;</p><p><b>  public:</b></p><p>  SalesManager(char ID,char *Name,int Duty):Person(ID,Name,Duty){}<

39、/p><p>  void SetAmount(double s)</p><p><b>  {</b></p><p><b>  Amount=s;</b></p><p><b>  }</b></p><p>  void CalcSalary()

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

41、><b>  {</b></p><p>  CalcSalary();</p><p>  cout<<No<<"\t"<<Name<<"\t銷售經理\t"<<Earning<<endl;</p><p><b> 

42、 }</b></p><p><b>  };</b></p><p>  class Technician:public Person //技術員類</p><p><b>  {</b></p><p><b>  private:</b></p>

43、<p><b>  double t;</b></p><p><b>  public:</b></p><p>  Technician(char ID,char *Name,int Duty,double T):Person(ID,Name,Duty)</p><p><b>  {</

44、b></p><p>  this->t=T;</p><p><b>  }</b></p><p>  double GetT()</p><p><b>  {</b></p><p><b>  return t;</b></p

45、><p><b>  }</b></p><p>  void SetT(double T)</p><p><b>  {</b></p><p>  this->t=T;</p><p><b>  }</b></p><p&g

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

47、{</b></p><p>  CalcSalary();</p><p>  cout<<No<<"\t"<<Name<<"\t技術員\t"<<t<<"\t"<<Earning<<endl;</p><

48、p><b>  }</b></p><p><b>  };</b></p><p>  class Sales:public Person //銷售員類</p><p><b>  {</b></p><p><b>  private:</b>

49、</p><p>  double Amount;</p><p><b>  public:</b></p><p>  Sales(char ID,char *Name,int Duty,double Amount):Person(ID,Name,Duty)</p><p><b>  {</b>

50、;</p><p>  this->Amount=Amount;</p><p><b>  }</b></p><p>  double GetAmount()</p><p><b>  {</b></p><p>  return Amount;</p>

51、;<p><b>  }</b></p><p>  void SetAmount(double Amount)</p><p><b>  {</b></p><p>  this->Amount=Amount;</p><p><b>  }</b>&l

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

53、p><p><b>  {</b></p><p>  CalcSalary();</p><p>  cout<<No<<"\t"<<Name<<"\t銷售員\t"<<Amount<<"\t"<<Earn

54、ing<<endl;</p><p><b>  }</b></p><p><b>  };</b></p><p>  class Company //公司類</p><p><b>  {</b></p><p><b> 

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

56、;<p><b>  {</b></p><p>  Worker=0; </p><p><b>  Load();</b></p><p><b>  }</b></p><p>  ~Company()</p><p>&l

57、t;b>  {</b></p><p>  Person *p;</p><p><b>  p=Worker;</b></p><p><b>  while(p)</b></p><p><b>  {</b></p><p>  

58、p=p->next;</p><p>  delete Worker;</p><p><b>  Worker=p;</b></p><p><b>  }</b></p><p><b>  Worker=0;</b></p><p><

59、b>  }</b></p><p>  void Add(); //增加人員</p><p>  void Delete(); //刪除人員</p><p>  void Modify(); //修改人員</p><p>  void Query(); //查詢人員</p><p> 

60、 void Set(); //基礎數據設置</p><p>  void Save(); //數據存盤(包括基礎數據,人員數據)</p><p>  void Load(); //數據裝入(包括基礎數據,人員數據)</p><p><b>  };</b></p><p>  void Company

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

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

63、gt;<p>  void Company::Add()</p><p><b>  {</b></p><p>  Person *p; //新結點指針</p><p>  int Duty; </p><p>  char Name[20];</p><p>  double

64、 Amount,T;</p><p>  cout<<"\n** 新增員工 **\n"; </p><p><b>  //輸入員工信息</b></p><p><b>  ID++;</b></p><p>  cout<<"輸入崗位(1-經

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

66、lt;<"本月銷售額:"; cin>>Amount;</p><p><b>  }</b></p><p>  else if(Duty==4)</p><p><b>  {</b></p><p>  cout<<"本月工作小時數(

67、0-168):"; </p><p><b>  cin>>T;</b></p><p><b>  }</b></p><p><b>  //創(chuàng)建新員工結點</b></p><p>  switch(Duty)</p><p>

68、;<b>  {</b></p><p>  case 1:p=new Manager(ID,Name,Duty); break;</p><p>  case 2:p=new SalesManager(ID,Name,Duty); break;</p><p>  case 3:p=new Sales(ID,Name,Duty,Amount

69、); break;</p><p>  case 4:p=new Technician(ID,Name,Duty,T); break;</p><p><b>  }</b></p><p>  p->next=0;</p><p>  //員工結點加入鏈表</p><p>  if(

70、Worker) //若已經存在結點</p><p><b>  {</b></p><p>  Person *p2;</p><p>  p2=Worker;</p><p>  while(p2->next) //查找尾結點</p><p><b>  {</b>

71、;</p><p>  p2=p2->next;</p><p><b>  }</b></p><p>  p2->next=p; //連接</p><p><b>  }</b></p><p>  else //若不存在結點(表空)</p>

72、<p><b>  {</b></p><p>  Worker=p; //連接</p><p><b>  } </b></p><p><b>  }</b></p><p>  void Company::Delete() //刪除人員</p>

73、;<p><b>  {</b></p><p><b>  int No;</b></p><p>  cout<<"\n** 刪除員工 **\n";</p><p>  cout<<"ID:"; cin>>No;</p&g

74、t;<p>  //查找要刪除的結點</p><p>  Person *p1,*p2; p1=Worker;</p><p><b>  while(p1)</b></p><p><b>  {</b></p><p>  if(p1->No==No)</p>

75、<p><b>  break;</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  p2=p1;</b></p><p>  p1=p1->next;</p&g

76、t;<p><b>  }</b></p><p><b>  }</b></p><p><b>  //刪除結點</b></p><p>  if(p1!=NULL)//若找到結點,則刪除</p><p><b>  {</b></

77、p><p>  if(p1==Worker) //若要刪除的結點是第一個結點</p><p><b>  {</b></p><p>  Worker=p1->next;</p><p>  delete p1;</p><p><b>  }</b></p>

78、<p>  else //若要刪除的結點是后續(xù)結點</p><p><b>  {</b></p><p>  p2->next=p1->next;</p><p>  delete p1;</p><p><b>  }</b></p><p>

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

80、<p>  void Company::Modify()</p><p><b>  {</b></p><p>  int No,Duty;</p><p>  char Name[20]; </p><p>  double Amount,T;</p><p>  cout&l

81、t;<"\n** 修改員工 **\n";</p><p>  cout<<"ID:"; cin>>No;</p><p>  //查找要修改的結點</p><p>  Person *p1,*p2; p1=Worker;</p><p><b>  while

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

83、;  {</b></p><p><b>  p2=p1;</b></p><p>  p1=p1->next;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //

84、修改結點</b></p><p>  if(p1!=NULL)//若找到結點</p><p><b>  {</b></p><p>  p1->Output();</p><p>  cout<<"調整崗位(1-經理2-銷售經理3-銷售員4-技術員):"; cin&g

85、t;>Duty;</p><p>  if(p1->Duty!=Duty) //若崗位發(fā)生變動</p><p><b>  { </b></p><p><b>  //修改其它數據</b></p><p>  cout<<"輸入姓名:"; ci

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

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

88、;b>  }</b></p><p><b>  //創(chuàng)建新員工結點</b></p><p>  Person *p3;</p><p>  switch(Duty)</p><p><b>  {</b></p><p>  case 1:p3=new M

89、anager(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->No,Name,Duty,Amount); break;</p><p>  cas

90、e 4:p3=new Technician(p1->No,Name,Duty,T); break;</p><p><b>  }</b></p><p>  //員工結點替換到鏈表</p><p>  p3->next=p1->next;</p><p>  if(p1==Worker) //若要

91、替換的結點是第一個結點</p><p>  Worker=p3;</p><p>  else //若要刪除的結點是后續(xù)結點</p><p>  p2->next=p3;</p><p>  //刪除原來的員工結點</p><p>  delete p1;</p><p><b&g

92、t;  }</b></p><p>  else //若崗位沒有變動</p><p><b>  {</b></p><p>  cout<<"輸入姓名:"; cin>>p1->Name;</p><p>  if(Duty==3)</p>

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

94、4)</p><p><b>  {</b></p><p>  cout<<"本月工作小時數(0-168):";cin>>T; ((Technician *)p1)->SetT(T);</p><p><b>  }</b></p><p><

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

96、lt;p><b>  }</b></p><p>  void Company::Query()</p><p><b>  {</b></p><p>  cout<<"\n** 查詢人員本月銷售信息 **\n";</p><p>  double sum=0

97、; //銷售額總和</p><p>  Person *p=Worker;</p><p><b>  while(p)</b></p><p><b>  {</b></p><p>  if(p->Duty==3)sum+=((Sales *)p)->GetAmount();&l

98、t;/p><p>  p=p->next;</p><p><b>  }</b></p><p><b>  p=Worker;</b></p><p>  double sum2=0; //工資總和</p><p><b>  while(p)</b&

99、gt;</p><p><b>  {</b></p><p>  if(p->Duty==2)((SalesManager *)p)->SetAmount(sum);</p><p>  p->Output();</p><p>  sum2+=p->Earning;</p>&l

100、t;p>  p=p->next;</p><p><b>  }</b></p><p>  cout<<"本月盈利:"<<sum*0.20-sum2<<endl;</p><p>  cout<<"(按照20%利潤計算)\n";</p&g

101、t;<p><b>  }</b></p><p>  void Company::Set()</p><p><b>  {</b></p><p>  cout<<"\n** 設置基礎數據 **\n";</p><p>  cout<<&

102、quot;經理固定月薪["<<ManagerSalary<<"元]:";</p><p>  cin>>ManagerSalary; </p><p>  cout<<"銷售經理固定月薪["<<SalesManagerSalary<<"元]:"; &

103、lt;/p><p>  cin>>SalesManagerSalary; </p><p>  cout<<"銷售經理提成["<<SalesManagerPercent<<"%]:";</p><p>  cin>>SalesManagerPercent; </p

104、><p>  cout<<"銷售人員提成["<<SalesPercent<<"%]:";</p><p>  cin>>SalesPercent;</p><p>  cout<<"技術人員小時工資["<<WagePerHour<&l

105、t;"(元/小時)]:"; </p><p>  cin>>WagePerHour;</p><p>  cout<<"員工標識[>="<<ID<<"]:";</p><p><b>  cin>>ID;</b><

106、/p><p><b>  }</b></p><p>  void Company::Save() //數據存盤(包括基礎數據,人員數據),均采用文本文件</p><p><b>  {</b></p><p>  ofstream fPerson,fBase;</p><p>

107、;<b>  char c;</b></p><p>  cout<<"\n保存人員和基礎數據,是否繼續(xù)?[Y/N]:"; cin>>c;</p><p>  if(toupper(c)!='Y')return;</p><p>  //保存人員編號、姓名、崗位</p>

108、<p>  fPerson.open("person.txt",ios::out); </p><p>  Person *p=Worker;</p><p><b>  while(p)</b></p><p><b>  {</b></p><p>  fPer

109、son<<p->No<<"\t"<<p->Name<<"\t"<<p->Duty<<"\t";</p><p>  if(p->Duty==3)</p><p>  fPerson<<((Sales*)p)->GetA

110、mount()<<"\t";</p><p>  else if(p->Duty==4)</p><p>  fPerson<<((Technician *)p)->GetT()<<"\t";</p><p>  fPerson<<endl;</p>&

111、lt;p>  p=p->next;</p><p><b>  }</b></p><p>  fPerson.close();</p><p><b>  //保存基礎數據</b></p><p>  fBase.open("base.txt",ios::out);

112、</p><p>  fBase<<"經理固定月薪\t"<<ManagerSalary<<endl; </p><p>  fBase<<"銷售經理固定月薪\t"<<SalesManagerSalary<<endl; </p><p>  fBase&

113、lt;<"銷售經理提成%\t"<<SalesManagerPercent<<endl; </p><p>  fBase<<"銷售人員提成%\t"<<SalesPercent<<endl; </p><p>  fBase<<"技術人員小時工資\t&

114、quot;<<WagePerHour<<endl; </p><p>  fBase<<"ID\t"<<ID<<endl;</p><p>  fPerson.close();</p><p>  cout<<"\n保存人員和基礎數據已經完成...\n&

115、quot;;</p><p><b>  }</b></p><p>  void Company::Load() //數據裝入(包括基礎數據,人員數據)</p><p><b>  {</b></p><p><b>  //基礎數據裝入</b></p>&l

116、t;p>  ifstream fBase;</p><p>  char buf[80]; //buf用于保存數據文件中的注釋字符串</p><p>  fBase.open("base.txt",ios::in);</p><p>  fBase>>buf>>ManagerSalary; //經理固定

117、月薪</p><p>  fBase>>buf>>SalesManagerSalary; //銷售經理固定月薪</p><p>  fBase>>buf>>SalesManagerPercent; //銷售經理提成%</p><p>  fBase>>buf>>SalesPercent;

118、 //銷售人員提成%</p><p>  fBase>>buf>>WagePerHour; //技術人員小時工資</p><p>  fBase>>buf>>ID; //員工標識</p><p>  fBase.close(); </p><

119、;p>  //清除內存人員數據</p><p>  Clear(); </p><p>  //人員數據數據裝入</p><p>  ifstream fPerson;</p><p>  Person *p=Worker;</p><p>  int No; char Name[20]; int Du

120、ty;</p><p>  double Amount,T;</p><p>  fPerson.open("person.txt",ios::in);</p><p><b>  //讀一條記錄</b></p><p>  fPerson>>No>>Name>>D

121、uty;</p><p>  if(Duty==3)fPerson>>Amount;</p><p>  else if(Duty==4)fPerson>>T;</p><p>  while(fPerson.good())</p><p><b>  {</b></p><p

122、><b>  //創(chuàng)建員工結點</b></p><p>  switch(Duty)</p><p><b>  {</b></p><p>  case 1:p=new Manager(No,Name,Duty); break;</p><p>  case 2:p=new SalesMa

123、nager(No,Name,Duty); break;</p><p>  case 3:p=new Sales(No,Name,Duty,Amount); break;</p><p>  case 4:p=new Technician(No,Name,Duty,T); break;</p><p><b>  }</b></p&

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

125、/p><p>  while(p2->next) //查找尾結點</p><p><b>  {</b></p><p>  p2=p2->next;</p><p><b>  }</b></p><p>  p2->next=p; //連接</p&

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

127、><b>  //讀下一條記錄</b></p><p>  fPerson>>No>>Name>>Duty;</p><p>  if(Duty==3)fPerson>>Amount;</p><p>  else if(Duty==4)fPerson>>T;</p>

128、<p><b>  }</b></p><p>  fPerson.close();</p><p>  cout<<"\n人員和基礎數據已經裝入...\n";</p><p><b>  }</b></p><p>  void main()</

129、p><p><b>  {</b></p><p><b>  char c;</b></p><p>  Company a;</p><p><b>  do</b></p><p><b>  {</b></p>&

130、lt;p>  cout<<"\n*** 公司人員管理系統(tǒng) ***\n";</p><p>  cout<<"1-增加人員\n";</p><p>  cout<<"2-刪除人員\n";</p><p>  cout<<"3-修改人員\n&quo

131、t;;</p><p>  cout<<"4-查詢本月經營信息\n";</p><p>  cout<<"5-基礎數據設置\n";</p><p>  cout<<"6-數據存盤\n";</p><p>  cout<<"7-

132、數據裝入\n";</p><p>  cout<<"8-退出\t請選擇(1-8):";</p><p><b>  cin>>c;</b></p><p><b>  switch(c)</b></p><p><b>  {</

133、b></p><p>  case '1': a.Add(); break;</p><p>  case '2': a.Delete();break;</p><p>  case '3': a.Modify();break;</p><p>  case '4'

134、;: a.Query(); break;</p><p>  case '5': a.Set(); break;</p><p>  case '6': a.Save(); break;</p><p>  case '7': a.Load(); break;</p><p>&

溫馨提示

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

評論

0/150

提交評論