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

下載本文檔

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

文檔簡介

1、<p><b>  課程設計</b></p><p>  設計題目 職工工資管理系統設計 </p><p><b>  目錄</b></p><p><b>  1概述:6</b></p><p>

2、  1.1基本功能6</p><p><b>  2課題分析6</b></p><p>  2.1類的設計62.2類的實現6</p><p>  3詳細設計說明8</p><p>  3.1程序主界面8</p><p><b>  3.2方案8</b&

3、gt;</p><p>  3.3程序描述(輸入input)8</p><p>  4課程設計總結9</p><p>  5軟件使用說明10</p><p>  6附錄(參考文獻,原代碼:)10</p><p><b>  參考文獻:10</b></p><p

4、><b>  原代碼10</b></p><p><b>  概述</b></p><p><b>  1.1基本功能</b></p><p>  輸入職工的姓名編號以及相關信息,系統計算個職工工資。職工分別有秘書、技術經理、技術人員、銷售經理、銷售人員。技術人員的工資根據他當月工作的小時數來

5、定,時薪35元;銷售人員的工資則是根據本人當月銷售額來確定,工資為銷售額的5%;文秘有4000元的基本工資,獎金視為當月工作情況而定;技術經理和銷售經理都有6000元的固定工資,技術經理的工作業績可分為3個等級,每級可獲得1000元獎金,銷售經理的獎金由他所管理的銷售員的銷售業績而定,總銷售額的2%。</p><p>  功能一目了然,方便用戶使用</p><p><b>  2

6、.課題分析</b></p><p><b>  類的設計及實現</b></p><p>  本課程設計有7個類,分別是employee1,secretary,technician,salesman,manager,technicianmanager,salesmanager7個類。其中technician、salesman以及manager類在繼承empl

7、oyee1的時候用了virtual,如果不用這在調試的時候不通過。</p><p><b>  技術人員類</b></p><p><b>  先寫公有成員函數:</b></p><p>  有讀入信息的構造函數以及計算薪資的函數。</p><p>  再寫私有型成員變量:要有工作的小時數以及單位小

8、時工作的薪水。</p><p><b>  具體寫法:</b></p><p>  class technician:virtual public employee1</p><p><b>  {</b></p><p><b>  private:</b></p>

9、;<p>  float hourlyRate;</p><p>  int workHours;</p><p><b>  public:</b></p><p>  technician();</p><p>  void SetworkHours(int wh);</p><p&

10、gt;  void pay();</p><p>  void promote(int);</p><p><b>  };</b></p><p><b>  銷售人員類</b></p><p><b>  先寫公有成員函數:</b></p><p>

11、  有讀入信息的構造函數以及計算薪資的函數。</p><p>  再寫保護型成員變量:要有銷售額以及銷售額的百分比。</p><p><b>  具體寫法:</b></p><p>  class salesman:virtual public employee1</p><p><b>  {</b&g

12、t;</p><p>  protected:</p><p>  float CommRate;</p><p>  float sales;</p><p><b>  public:</b></p><p>  salesman();</p><p>  void S

13、etsales(float s1);</p><p>  void pay();</p><p>  void promote(int);</p><p><b>  };</b></p><p><b>  文秘類</b></p><p><b>  先寫公有成員

14、函數:</b></p><p>  有讀入信息的構造函數以及計算薪資的函數。</p><p>  再寫保護型成員變量:要有固定工資以及獎金</p><p><b>  具體寫法:</b></p><p>  class secretary:virtual public employee1</p>

15、<p><b>  {</b></p><p>  protected:</p><p>  float monthlyPay;</p><p>  float workPay;</p><p><b>  public:</b></p><p>  secret

16、ary();</p><p>  void SetworkPay(int wp);</p><p>  void pay();</p><p>  void promote(int);</p><p><b>  };</b></p><p><b>  經理類</b><

17、;/p><p>  先寫公有成員函數:有讀入信息的構造函數以及計算薪資的函數。</p><p>  再寫保護型成員變量:要有固定工資</p><p><b>  具體寫法:</b></p><p>  class manager:virtual public employee1</p><p><

18、;b>  {</b></p><p>  protected:</p><p>  float monthlyPay;</p><p><b>  public:</b></p><p>  manager();</p><p>  void pay();</p>

19、<p>  void promote(int);</p><p><b>  };</b></p><p><b>  技術經理類</b></p><p>  先寫公有成員函數:有讀入信息的構造函數以及計算薪資的函數。</p><p>  再寫保護型成員變量:要有級別以及此級別的獎金。&

20、lt;/p><p><b>  具體寫法:</b></p><p>  class techmanager:virtual public manager,public technician //技術經理類 </p><p>  {public:techmanager(float x=1000);

21、 //技術經理類的構造函數</p><p>  void countSalary(); //計算薪資的函數</p><p>  protected:float gradeBonus; //此級別的獎金</p><p>  int gra

22、de; //級別</p><p><b>  };</b></p><p><b>  銷售經理類</b></p><p>  先寫公有成員函數:有讀入信息的構造函數以及計算薪資的函數。</p><p>  再寫保護型成員

23、變量:要有級別以及此級別的獎金。</p><p><b>  具體寫法:</b></p><p>  class salesmanager:public manager,public salesman</p><p><b>  {</b></p><p><b>  public:<

24、;/b></p><p>  salesmanager();</p><p>  void pay();</p><p>  void promote(int);</p><p><b>  };</b></p><p><b>  3.詳細設計說明</b></p

25、><p><b>  3.1程序主界面</b></p><p>  一個單文檔的界面(如右邊兩張圖所示),以及附屬一個對話框(用于用戶輸入信息)。</p><p><b>  3.2方案</b></p><p>  利用VC中MFC(exe)來編譯此程序。劃分功能,根據功能分別設計出相應的類來實現程序。

26、設計出需要的類,即其功能,再組合在一起,并經行改進達到理想中的程序。</p><p>  用MFC的臨一個好處則是方便編譯員實現程序,并且界面比較美觀,所以選用MFC來編寫此程序</p><p><b>  3.3程序描述</b></p><p>  由用戶輸入職工的姓名、編號、以及相應信息。程序源代碼清晰,一看就能明白每條代碼的用處。程序的對

27、話框簡潔明了,功能清晰。對于用戶的使用很方便。對于編譯員日后對程序的改進升級也很方便。</p><p><b>  設計流程圖</b></p><p><b>  4 課程設計總結</b></p><p>  在編譯此程序時總體還是比較順利的,但難免會遇到個別問題。</p><p>  比如一開始t

28、echnician與salesman類在繼承employee1類的時候并未用virtual來繼承,編譯不通過,于是改用virtual來公共繼承employee1類。剛開始的時候有用戶輸入的編號無法顯示,問題出在對話框中edit的控件弄錯而倒是一系列的問題。之后又發現在銷售經理與銷售人員的工資上發生錯亂。開始并未發現是兩者工資錯亂,只是一味的以為是銷售經理的工資計算出了問題,進行多次改編以后依然毫無進展。于是與老師進行討論發現了兩個問題,

29、一個是兩者工資互換并且CommRate無法提取數據</p><p>  salesmanager::salesmanager()</p><p><b>  {</b></p><p>  monthlyPay=6000;</p><p>  CommRate=2/100;</p><p><

30、;b>  }</b></p><p>  void salesmanager::pay()</p><p>  {accumPay=(sales*CommRate)+monthlyPay;}</p><p>  void salesmanager::promote(int)</p><p>  {employee1::pro

31、mote(2);}</p><p>  salesman::salesman()</p><p>  {CommRate=5/100;}</p><p>  void salesman::Setsales(float s1)</p><p>  {sales=s1;}</p><p>  void salesman::

32、pay()</p><p>  {accumPay=(sales*CommRate);}</p><p>  并且經行多次改編依然無效,于是將CommRate全部改成數據編譯通過。</p><p>  而兩者的工資問題則在emp中</p><p>  DDX_Text(pDX, IDC_EDIT13, m_ss1);</p>

33、<p>  DDX_Text(pDX, IDC_EDIT14, m_ss2);</p><p>  將ss1與ss2互換問題得以解決。</p><p><b>  至此程序完成。</b></p><p><b>  5 軟件使用說明</b></p><p>  在對話框選擇Test-〉In

34、put Data(如圖一),出現職員信息的對話框(如圖二),將相應信息輸入按確定,再選擇Test-〉Output Data就能讀取用戶所輸入的信息了(如圖三)。</p><p>  6 附錄(參考文獻,源代碼:)</p><p>  參考文獻:C++語言程序設計(第三版)</p><p><b>  源代碼:(部分)</b></p>

35、<p>  //employee1.cpp</p><p>  #include"stdafx.h"</p><p>  #include<iostream></p><p>  #include<cstring></p><p>  #include<fstream>&l

36、t;/p><p>  #include<vector></p><p>  #include"wenjian.h"</p><p>  #include"employee1.h"</p><p>  using namespace std;</p><p>  emplo

37、yee1::employee1()</p><p><b>  {</b></p><p><b>  grade=1;</b></p><p>  accumPay=0.0;</p><p><b>  }</b></p><p>  employee

38、1::~employee1(){}</p><p>  void employee1::promote(int increment)</p><p>  {grade+=increment;}</p><p>  void employee1::SetName(char * names)</p><p>  {strcpy(name,name

39、s);}</p><p>  char* employee1::GetName()</p><p>  {return name;}</p><p>  void employee1::SetindividualEmpNo(char * individualEmpNos)</p><p>  {strcpy(individualEmpNo,i

40、ndividualEmpNos);}</p><p>  char* employee1::GetindividualEmpNo()</p><p>  {return individualEmpNo;}</p><p>  int employee1::Getgrade()</p><p>  {return grade;}</p&g

41、t;<p>  float employee1::GetaccumPay()</p><p>  {return accumPay;}</p><p>  technician::technician()</p><p>  {hourlyRate=35;}</p><p>  void technician::SetworkH

42、ours(int wh)</p><p>  {workHours=wh;}</p><p>  void technician::pay()</p><p>  {accumPay=hourlyRate*workHours;}</p><p>  void technician::promote(int)</p><p&

43、gt;  {employee1::promote(2);}</p><p>  manager::manager()</p><p>  {monthlyPay=6000;}</p><p>  void manager::pay()</p><p>  {accumPay=monthlyPay;}</p><p> 

44、 void manager::promote(int)</p><p>  {employee1::promote(3);}</p><p>  salesmanager::salesmanager()</p><p><b>  {</b></p><p>  monthlyPay=6000;</p>&

45、lt;p>  CommRate=2/100;</p><p><b>  }</b></p><p>  void salesmanager::pay()</p><p>  {accumPay=(sales*0.02)+6000;}</p><p>  void salesmanager::promote(int

46、)</p><p>  {employee1::promote(2);}</p><p>  salesman::salesman()</p><p>  {CommRate=5/100;}</p><p>  void salesman::Setsales(float s1)</p><p>  {sales=s1;

47、}</p><p>  void salesman::pay()</p><p>  {accumPay=(sales*0.05);}</p><p>  void salesman::promote(int)</p><p>  {employee1::promote(0);}</p><p>  technicia

48、nmanager::technicianmanager()</p><p>  {monthlyPay=6000;}</p><p>  void technicianmanager::Setlevel(int dj)</p><p>  {dengji=dj;}</p><p>  void technicianmanager::pay()

49、</p><p>  {accumPay=monthlyPay+(1000*dengji);}</p><p>  void technicianmanager::promote(int)</p><p>  {employee1::promote(2);}</p><p>  secretary::secretary()</p>

50、<p>  {monthlyPay=4000;}</p><p>  void secretary::SetworkPay(int wp)</p><p>  {workPay=wp;}</p><p>  void secretary::pay()</p><p>  {accumPay=workPay+monthlyPay;

51、}</p><p>  void secretary::promote(int)</p><p>  {employee1::promote(0);}</p><p>  class FileException</p><p><b>  {</b></p><p><b>  publ

52、ic:</b></p><p>  FileException()</p><p>  :message("File is not created !"){}</p><p>  const char *what() const{return message;}</p><p><b>  priva

53、te:</b></p><p>  const char *message;</p><p><b>  };</b></p><p>  int main()</p><p><b>  {</b></p><p>  technician t1;</p&

54、gt;<p>  secretary st1;</p><p>  salesmanager sm1;</p><p>  technicianmanager tm1;</p><p>  salesman s1;</p><p>  char namestr[20];</p><p>  char in

55、dividualEmpNostr[1000];</p><p>  vector < employee1 * >vchar;</p><p>  vchar.push_back(&t1);</p><p>  vchar.push_back(&st1);</p><p>  vchar.push_back(&

56、;sm1);</p><p>  vchar.push_back(&tm1);</p><p>  vchar.push_back(&s1);</p><p><b>  int i;</b></p><p>  for(i=0;i<5;i++)</p><p><b&

57、gt;  {</b></p><p>  cout<<"請輸入雇員的姓名:";</p><p>  cin>>namestr;</p><p>  vchar[i]->SetName(namestr);</p><p>  cout<<"請輸入雇員的編號:&q

58、uot;;</p><p>  cin>>individualEmpNostr;</p><p>  vchar[i]->SetindividualEmpNo(individualEmpNostr);</p><p>  vchar[i]->promote(i);</p><p><b>  }</b&

59、gt;</p><p>  cout<<"請輸入兼職技術人員"<<t1.GetName()<<"本月的工作時數:";</p><p><b>  int wh;</b></p><p><b>  cin>>wh;</b></p&

60、gt;<p>  t1.SetworkHours(wh);</p><p>  cout<<"請輸入秘書姓名"<<st1.GetName()<<"本月的獎金:";</p><p><b>  int wp;</b></p><p><b>  c

61、in>>wp;</b></p><p>  st1.SetworkPay(wp);</p><p>  cout<<"請輸入銷售經理"<<sm1.GetName()<<"所管轄部門本月的銷售總額:";</p><p><b>  float sl;</

62、b></p><p><b>  cin>>sl;</b></p><p>  sm1.Setsales(sl);</p><p>  cout<<"請輸入推銷人員"<<s1.GetName()<<"本月的銷售額:";</p><p

63、><b>  cin>>sl;</b></p><p>  s1.Setsales(sl);</p><p>  cout<<"請輸入技術經理"<<tm1.GetName()<<"所升等級:";</p><p><b>  float l;&

64、lt;/b></p><p><b>  cin>>l;</b></p><p>  tm1.Setlevel(l);</p><p>  ofstream ofile("employee.txt",ios_base::out);</p><p>  for(i=0;i<5;i

65、++)</p><p><b>  {</b></p><p>  vchar[i]->pay();</p><p>  ofile<<"職工 "<<vchar[i]->GetName()<<" 編號 "<<vchar[i]->Getind

66、ividualEmpNo()<<" 級別為 "<<vchar[i]->Getgrade()<<" 級,本月工資 "<<vchar[i]->GetaccumPay()<<endl;</p><p><b>  }</b></p><p>  ofile.clo

67、se();</p><p>  cout<<"職員信息已存入文件"<<endl;</p><p>  ifstream infile("employee.txt",ios::in);</p><p><b>  try</b></p><p><b&g

68、t;  {</b></p><p>  if(! infile)</p><p>  throw FileException();</p><p><b>  }</b></p><p>  catch (FileException fe)</p><p><b>  {&l

69、t;/b></p><p>  cout<<fe.what()<<endl;</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p>  cout<<"從文件中讀取信息并顯示如下:"&

70、lt;<endl;</p><p>  char line[101];</p><p>  for(i=0;i<5;i++)</p><p><b>  {</b></p><p>  infile.getline(line,100);</p><p>  cout<<li

71、ne<<endl;</p><p><b>  }</b></p><p>  infile.close();</p><p><b>  return 0;</b></p><p><b>  } </b></p><p>  //empl

72、oyee1.h</p><p>  class employee1</p><p><b>  {</b></p><p>  protected:</p><p>  char name[20];</p><p>  char individualEmpNo[1000];</p>

73、<p>  int grade;</p><p>  float accumPay;</p><p><b>  public:</b></p><p>  employee1();</p><p>  ~employee1();</p><p>  virtual void pay()

74、=0;</p><p>  virtual void promote(int increment = 0);</p><p>  void SetName(char *);</p><p>  char * GetName();</p><p>  void SetindividualEmpNo(char *);</p><

75、;p>  char * GetindividualEmpNo();</p><p>  int Getgrade();</p><p>  float GetaccumPay();</p><p><b>  };</b></p><p>  class secretary:virtual public emplo

76、yee1</p><p><b>  {</b></p><p>  protected:</p><p>  float monthlyPay;</p><p>  float workPay;</p><p><b>  public:</b></p>&l

77、t;p>  secretary();</p><p>  void SetworkPay(int wp);</p><p>  void pay();</p><p>  void promote(int);</p><p><b>  };</b></p><p>  class tech

78、nician:virtual public employee1</p><p><b>  {</b></p><p><b>  private:</b></p><p>  float hourlyRate;</p><p>  int workHours;</p><p&g

79、t;<b>  public:</b></p><p>  technician();</p><p>  void SetworkHours(int wh);</p><p>  void pay();</p><p>  void promote(int);</p><p><b>

80、  };</b></p><p>  class salesman:virtual public employee1</p><p><b>  {</b></p><p>  protected:</p><p>  float CommRate;</p><p>  float s

81、ales;</p><p><b>  public:</b></p><p>  salesman();</p><p>  void Setsales(float s1);</p><p>  void pay();</p><p>  void promote(int);</p>

82、<p><b>  }; </b></p><p>  class manager:virtual public employee1</p><p><b>  {</b></p><p>  protected:</p><p>  float monthlyPay;</p&

83、gt;<p><b>  public:</b></p><p>  manager();</p><p>  void pay();</p><p>  void promote(int);</p><p><b>  };</b></p><p>  cla

84、ss salesmanager:public manager,public salesman</p><p><b>  {</b></p><p><b>  public:</b></p><p>  salesmanager();</p><p>  void pay();</p>

85、<p>  void promote(int);</p><p><b>  };</b></p><p>  class technicianmanager:public manager,public technician</p><p><b>  {</b></p><p>&l

86、t;b>  private:</b></p><p>  int dengji;</p><p><b>  public:</b></p><p>  technicianmanager();</p><p>  void Setlevel(int dj);</p><p> 

87、 void pay();</p><p>  void promote(int);</p><p><b>  };</b></p><p>  //employeeView.cpp(部分代碼)</p><p>  void CEmployeeView::OnInputData() </p><p&g

88、t;<b>  {</b></p><p>  // TODO: Add your command handler code here</p><p>  technicianmanager tm1;</p><p>  technician t1;</p><p>  salesman s1;</p>&

89、lt;p>  salesmanager sm1;</p><p>  secretary st1;</p><p>  vector <employee1 *> vchar;</p><p>  vchar.push_back(&tm1);</p><p>  vchar.push_back(&t1);<

90、;/p><p>  vchar.push_back(&s1);</p><p>  vchar.push_back(&sm1);</p><p>  vchar.push_back(&st1);</p><p><b>  emp ed;</b></p><p>  ed.Do

91、Modal();</p><p>  vector<CString> vread;</p><p>  vread.push_back(ed.m_str1);</p><p>  vread.push_back(ed.m_str2);</p><p>  vread.push_back(ed.m_str3);</p>

92、<p>  vread.push_back(ed.m_str4);</p><p>  vread.push_back(ed.m_str5);</p><p>  vread.push_back(ed.m_str6);</p><p>  vread.push_back(ed.m_str7);</p><p>  vread.pu

93、sh_back(ed.m_str8);</p><p>  vread.push_back(ed.m_str9);</p><p>  vread.push_back(ed.m_str10);</p><p><b>  int i;</b></p><p>  for(i=0;i<5;i++)</p>

94、<p><b>  {</b></p><p>  vchar[i]->SetName((char*)(LPCTSTR)vread[i]);</p><p>  vchar[i]->SetindividualEmpNo((char*)(LPCTSTR)vread[i+5]);</p><p>  vchar[i]-&g

95、t;promote(i);</p><p><b>  }</b></p><p>  t1.SetworkHours(ed.m_hours);</p><p>  tm1.Setlevel(ed.m_level);</p><p>  sm1.Setsales(ed.m_ss1);</p><p&g

96、t;  s1.Setsales(ed.m_ss2);</p><p>  st1.SetworkPay(ed.m_ss3);</p><p>  ofstream ofile("employee.txt",ios::out);</p><p>  for(i=0;i<5;i++)</p><p><b> 

97、 {</b></p><p>  vchar[i]->pay();</p><p>  ofile<<vchar[i]->GetName()<<"編號"<<vchar[i]->GetindividualEmpNo()<<"級別為"<<vchar[i]->G

98、etgrade()<<"級,本月工資"<<vchar[i]->GetaccumPay()<<endl;</p><p><b>  }</b></p><p>  ofile.close();</p><p><b>  }</b></p><

99、;p>  class FileException</p><p><b>  {</b></p><p><b>  public:</b></p><p>  FileException()</p><p>  :message("File is not created!"

100、;){}</p><p>  const char *what() const {return message;}</p><p><b>  private:</b></p><p>  const char *message;</p><p><b>  };</b></p>&l

101、t;p>  void CEmployeeView::OnOutputData() </p><p><b>  {</b></p><p>  // TODO: Add your command handler code here</p><p>  ifstream infile("employee.txt",ios

102、::in);</p><p><b>  try</b></p><p><b>  {</b></p><p>  if(! infile)</p><p>  throw FileException();</p><p><b>  }</b><

103、;/p><p>  catch(FileException fe){//exceptiom handler</p><p>  MessageBox(fe.what());//"<<fe.what()<<'\n';</p><p><b>  exit(0);</b></p><

104、p><b>  }</b></p><p>  CClientDC dc(this);</p><p>  char line[101];</p><p>  for(int i=0;i<5;i++)</p><p><b>  {</b></p><p>  i

105、nfile.getline(line,100);</p><p>  CString c_str;</p><p>  c_str.Format("%s",line);</p><p>  dc.TextOut(100,80,"職工信息管理系統:");</p><p>  dc.TextOut(100,

溫馨提示

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

評論

0/150

提交評論