面向?qū)ο蟮某绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告_第1頁
已閱讀1頁,還剩44頁未讀, 繼續(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>  面向?qū)ο蟮某绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告</p><p>  姓 名: </p><p>  學(xué) 號(hào): </p><p>  班 級(jí): </p><p>  院

2、 系: </p><p>  日 期: </p><p><b>  一.設(shè)計(jì)目的</b></p><p>  課程設(shè)計(jì)是課程教學(xué)中的一項(xiàng)重要內(nèi)容,是完成教學(xué)計(jì)劃達(dá)到教學(xué)目標(biāo)的重要環(huán)節(jié),是教學(xué)計(jì)劃中綜合性較強(qiáng)的實(shí)踐教學(xué)

3、環(huán)節(jié),它對(duì)幫助學(xué)生全面牢固地掌握課堂教學(xué)內(nèi)容、培養(yǎng)學(xué)生的實(shí)踐和實(shí)際動(dòng)手能力、提高學(xué)生全面素質(zhì)具有很重要的意義。</p><p>  本次課程設(shè)計(jì)通過設(shè)計(jì)和實(shí)現(xiàn)幾個(gè)應(yīng)用程序,達(dá)到以下目標(biāo):</p><p>  1.使學(xué)生能夠比較熟練地掌握C++語言的基本語法規(guī)則;</p><p>  2.熟練掌握基本的面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,如類的實(shí)現(xiàn)、創(chuàng)建類的實(shí)例—對(duì)象、實(shí)現(xiàn)類的繼

4、承等;</p><p>  3.掌握各種面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù),如繼承和派生,虛繼承、虛函數(shù)、抽象類、多態(tài)的實(shí)現(xiàn)、運(yùn)算符重載、使用C++標(biāo)準(zhǔn)庫等;</p><p>  4.掌握在VC++平臺(tái)上進(jìn)行程序設(shè)計(jì)和調(diào)試的方法。</p><p><b>  二.內(nèi)容及要求</b></p><p><b>  內(nèi)容與功能要

5、求</b></p><p>  題目一:通過組合和派生構(gòu)成新的類</p><p>  本設(shè)計(jì)題目的任務(wù)是使用Point類產(chǎn)生Line類。分別通過組合類及派生類兩種方法實(shí)現(xiàn),并要求分別給出使用類模板實(shí)現(xiàn)的程序。</p><p>  本設(shè)計(jì)題的目的是使學(xué)生掌握在不同的實(shí)現(xiàn)方法中,如何設(shè)計(jì)相應(yīng)的構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù),進(jìn)一步理解程序調(diào)用它們及析構(gòu)函數(shù)的執(zhí)行順序

6、,掌握組合類和派生類。另外本設(shè)計(jì)題目要讓學(xué)生進(jìn)一步掌握和理解類模板的技術(shù)及其實(shí)現(xiàn)方法。</p><p>  題目二:人員信息管理系統(tǒng)</p><p>  設(shè)計(jì)題目:本設(shè)計(jì)題目的任務(wù)是設(shè)計(jì)一個(gè)人員信息管理系統(tǒng),并使用虛函數(shù)實(shí)現(xiàn)多態(tài)性,完成顯示不同人員信息的任務(wù)。</p><p>  設(shè)計(jì)要求:設(shè)計(jì)employee類,用來存儲(chǔ)雇員的編號(hào),級(jí)別,月薪等信息,能夠?qū)ζ溥M(jìn)行操

7、作和顯示。</p><p>  以employee為基類派生出technician類,表示兼職技術(shù)人員,以及manager類,表示經(jīng)理,以及salesman類,表示兼職推銷員。利用manage類和salesman類派生出salesmanager類,表示銷售經(jīng)理。注意使用虛基類。</p><p>  題目三:學(xué)生考勤管理系統(tǒng)</p><p>  設(shè)計(jì)題目:在學(xué)生考勤管

8、理系統(tǒng)中,考勤信息記錄了學(xué)生的缺課情況,它包括:缺課日期、第幾節(jié)課、課程名稱、學(xué)生姓名、缺課類型(遲到、早退、請(qǐng)假及曠課)。系統(tǒng)功能包括信息錄入、修改、查詢、統(tǒng)計(jì)等。</p><p>  設(shè)計(jì)要求:錄入學(xué)生的缺課記錄; 修改某個(gè)學(xué)生的缺課記錄;查詢某個(gè)學(xué)生的缺課情況;統(tǒng)計(jì)某段時(shí)間內(nèi),曠課學(xué)生姓名及曠課次數(shù),按曠課次數(shù)由多到少排序; 統(tǒng)計(jì)某段時(shí)間內(nèi),有學(xué)生曠課的課程及曠課人次,按曠課人次由多到少排序;</p&

9、gt;<p><b>  軟件開發(fā)環(huán)境</b></p><p>  Windows 7,Visual C++6.0</p><p>  第一題 通過組合和派生構(gòu)成新的類</p><p><b>  設(shè)計(jì)思路</b></p><p>  本題目的任務(wù)是使用Point類產(chǎn)生Line類。分別

10、通過組合類及派生類兩種方法實(shí)現(xiàn),并要求分別給出使用類模板實(shí)現(xiàn)的程序。</p><p>  本題目的目的是使學(xué)生掌握在不同的實(shí)現(xiàn)方法中,如何設(shè)計(jì)相應(yīng)的構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù),進(jìn)一步理解程序調(diào)用它們及析構(gòu)函數(shù)的執(zhí)行順序,掌握組合類和派生類。另外本設(shè)計(jì)題目要讓學(xué)生進(jìn)一步掌握和理解類模板的技術(shù)及其實(shí)現(xiàn)方法。</p><p>  2.程序詳細(xì)代碼及描述</p><p> ?。?/p>

11、1)//cpp1.h頭文件</p><p>  #if !defined(CPP1_H)</p><p>  #define CPP1_H</p><p>  #include <iostream.h></p><p>  #include <math.h></p><p>  class Po

12、int{</p><p>  double X,Y;</p><p><b>  public:</b></p><p>  Point(double=0,double=0);</p><p>  Point(Point&);</p><p>  void Display()</p&

13、gt;<p>  {cout<<"X="<<X<<",Y="<<Y<<endl;}</p><p>  double Distance(Point&);</p><p>  double Getx(){return X;}</p><p>  d

14、ouble Gety(){return Y;}</p><p><b>  ~Point();</b></p><p><b>  };</b></p><p>  struct Cow{</p><p>  int Color;</p><p>  int Width;&l

15、t;/p><p><b>  };</b></p><p>  class Line{</p><p>  Point a,b;</p><p><b>  Cow cw;</b></p><p><b>  public:</b></p>&

16、lt;p>  Line(Point&,Point&,Cow&);</p><p>  double Display(Line&);</p><p>  Line(Line&);</p><p><b>  ~Line();</b></p><p><b>  #en

17、dif</b></p><p> ?。?)//cpp1.cpp文件</p><p>  #include "cpp1.h"</p><p>  Point::Point(double a,double b):X(a),Y(b)</p><p>  {cout<<"調(diào)用Point的構(gòu)造函數(shù)&

18、quot;<<endl;}</p><p>  Point::Point(Point&a)</p><p>  {X=a.X;Y=a.Y;cout<<"調(diào)用Point復(fù)制函數(shù)"<<endl;}</p><p>  Point::~Point()</p><p>  {cout&l

19、t;<"Delete Point"<<X<<" "<<Y<<endl;}</p><p>  double Point::Distance(Point&a)</p><p><b>  {</b></p><p>  return sqrt((

20、X-a.X)*(X-a.X)+(Y-a.Y)*(Y-a.Y));</p><p><b>  }</b></p><p>  Line::Line(Point&a1,Point&a2,Cow&a3):a(a1),b(a2),cw(a3)</p><p>  {cout<<"調(diào)用Line的構(gòu)造函數(shù)&q

21、uot;<<endl;}</p><p>  Line::Line(Line&s):a(s.a),b(s.b),cw(s.cw)</p><p>  {cout<<"調(diào)用Line的復(fù)制構(gòu)造函數(shù)"<<endl;}</p><p>  Line::~Line()</p><p>  

22、{cout<<"Delete Line"<<endl;}</p><p>  double Line::Display(Line&a)</p><p><b>  {</b></p><p>  a.a.Display();</p><p>  a.b.Display(

23、);</p><p>  cout<<"Color="<<a.cw.Color<<","<<"Width="<<a.cw.Width<<endl;</p><p>  double x=a.a.Getx()-a.b.Getx();</p><

24、;p>  double y=a.a.Gety()-a.b.Gety();</p><p>  return sqrt(x*x+y*y);</p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p

25、><b>  Point a;</b></p><p>  Point b(5.2,11.8),c(38.9,85.6)</p><p><b>  a=c;</b></p><p>  cout<<"兩點(diǎn)之距為:"<<a.Distance(b)<<endl;&

26、lt;/p><p>  Cow cw={3,5};</p><p>  Line s(a,b,cw);</p><p>  Line s1(s);</p><p>  cout<<s1.Display(s1)<<endl;</p><p><b>  }</b></p&g

27、t;<p><b>  使用模板的方法</b></p><p> ?。?)//cpp11.h文件</p><p>  #if !defined(cpp11_H)</p><p>  #define cpp11_H</p><p>  #include <iostream.h></p>

28、<p>  #include <math.h></p><p>  //聲明Point類</p><p>  template <class T></p><p>  class Point{</p><p><b>  T X,Y;</b></p><p>

29、<b>  public:</b></p><p>  Point(T=0,T=0);</p><p>  Point(Point&);</p><p>  void Display()</p><p>  {cout<<"X="<<X<<",Y=

30、"<<Y<<endl;}</p><p>  T Distance(Point&);</p><p><b>  ~Point();</b></p><p>  T Getx(){return X;}</p><p>  T Gety(){return Y;}</p>

31、<p><b>  };</b></p><p><b>  //聲明結(jié)構(gòu)</b></p><p>  struct Cow{</p><p>  int Color;</p><p>  int Width;</p><p><b>  };<

32、/b></p><p>  //實(shí)現(xiàn)Point類</p><p>  template <class T></p><p>  Point<T>::Point(T a,T b):X(a),Y(b){cout<<"調(diào)用Point的構(gòu)造函數(shù)"<<endl;}</p><p>

33、;  template <class T></p><p>  Point<T>::Point(Point&a)</p><p>  {X=a.X;Y=a.Y;cout<<"調(diào)用Point的復(fù)制構(gòu)造函數(shù)"<<endl;}</p><p>  template <class T>&

34、lt;/p><p>  T Point<T>::Distance(Point&a)</p><p><b>  {</b></p><p>  return sqrt((X-a.X)*(X-a.X)+(Y-a.Y)*(Y-a.Y));</p><p><b>  }</b></

35、p><p>  template <class T></p><p>  Point<T>::~Point()</p><p><b>  {</b></p><p>  cout<<"Delete Point"<<X<<" "

36、;<<Y<<endl;</p><p><b>  }</b></p><p><b>  //聲明Line類</b></p><p>  template <class T></p><p>  class Line</p><p>&l

37、t;b>  {</b></p><p>  Point<T> a,b;</p><p><b>  Cow cw;</b></p><p><b>  public:</b></p><p>  Line(Point<T>&,Point<T&g

38、t;&,Cow&);</p><p>  Line(Line&);</p><p>  T Display(Line&);</p><p><b>  ~Line();</b></p><p>  };//實(shí)現(xiàn)Line類</p><p>  template <

39、;class T></p><p>  Line<T>::Line(Point<T>&a1,Point<T>&a2,Cow&a3):a(a1),b(a2),cw(a3)</p><p>  {cout<<"調(diào)用Line的構(gòu)造函數(shù)"<<endl;}</p><p&

40、gt;  template <class T></p><p>  Line<T>::Line(Line<T>&s):a(s.a),b(s.b),cw(s.cw)</p><p>  {cout<<"調(diào)用Line的復(fù)制構(gòu)造函數(shù)"<<endl;}</p><p>  templat

41、e <class T></p><p>  Line<T>::~Line()</p><p>  {cout<<"Delete Line"<<endl;}</p><p>  template <class T></p><p>  T Line<T>

42、::Display(Line&a)</p><p><b>  {</b></p><p>  a.a.Display();</p><p>  a.b.Display();</p><p>  T x=a.a.Getx()-a.b.Getx();</p><p>  T y=a.a.Ge

43、ty()-a.b.Gety();</p><p>  return sqrt(x*x+y*y);</p><p><b>  }</b></p><p><b>  #endif</b></p><p> ?。?)//cpp11.cpp文件</p><p>  #includ

44、e "cpp13.h"</p><p>  void main()</p><p><b>  {</b></p><p>  Point<double> a;</p><p>  Point<double> b(5.2,11.8),c(38.9,85.6)</p>

45、<p><b>  a=c;</b></p><p>  cout<<"兩點(diǎn)之距為:"<<a.Distance(b)<<endl;</p><p>  Cow cw={3,5};</p><p>  Line<double>s(a,b,cw);</p>

46、<p>  Line<double> s1(s);</p><p>  cout<<s1.Display(s1)<<endl;</p><p><b>  }</b></p><p><b>  使用繼承的方法</b></p><p>  (1)cp

47、p13.h文件</p><p>  #if !defined(PP13_H)</p><p>  #define CPP13_H</p><p>  #include <iostream.h></p><p>  #include <math.h></p><p>  //using names

48、pace std;</p><p>  class Point{</p><p>  double X,Y;</p><p><b>  public:</b></p><p>  Point(double=0,double=0);</p><p>  Point(Point&);<

49、/p><p>  void Display(){cout<<"X="<<X<<",Y="<<Y<<endl;}</p><p>  double Distance(Point&);</p><p>  ~Point(){cout<<"Dele

50、te Point"<<X<<" "<<Y<<endl;}</p><p>  double Getx(){return X;}</p><p>  double Gety(){return Y;}</p><p><b>  };</b></p>&l

51、t;p>  struct Cow{</p><p>  int Color;</p><p>  int Width;</p><p><b>  };</b></p><p>  class Line:public Point</p><p><b>  {</b>&

52、lt;/p><p>  double X2,Y2;</p><p><b>  Cow cw;</b></p><p><b>  public:</b></p><p>  Line(double,double,double,double,Cow&);</p><p>

53、  Line(Line&);</p><p>  double Display(Line&);</p><p>  ~Line(){cout<<"Delete Line"<<endl;}</p><p><b>  };</b></p><p><b>

54、;  #endif</b></p><p>  (2)cpp13.cpp文件</p><p>  #include"cpp13.h"</p><p>  Point::Point(double a,double b):X(a),Y(b)</p><p>  {cout<<"調(diào)用Point的

55、構(gòu)造函數(shù)"<<endl;}</p><p>  Point::Point(Point&a)</p><p>  {X=a.X;Y=a.Y;cout<<"調(diào)用Point的復(fù)制構(gòu)造函數(shù)"<<endl;}</p><p>  inline double Point::Distance(Point&a

56、mp;a)</p><p><b>  {</b></p><p>  return sqrt((X-a.X)*(X-a.X)+(Y-a.Y)*(Y-a.Y));</p><p><b>  }</b></p><p>  Line::Line(double a1,double a2,double

57、a3,double a4,Cow&c):Point(a1,a2),X2(a3),</p><p>  Y2(a4),cw(c)</p><p><b>  {</b></p><p>  cout<<"調(diào)用Line的構(gòu)造函數(shù)"<<endl;</p><p><b&

58、gt;  }</b></p><p>  Line::Line(Line&s):Point(s),X2(s.X2),Y2(s.Y2),cw(s.cw)</p><p><b>  {</b></p><p>  cout<<"調(diào)用Line的復(fù)制構(gòu)造函數(shù)"<<endl;</p&

59、gt;<p><b>  }</b></p><p>  double Line::Display(Line&a)</p><p><b>  {</b></p><p>  Point::Display();</p><p>  cout<<"X2=&q

60、uot;<<X2<<","<<"Y2="<<Y2<<endl;</p><p>  cout<<"Color="<<a.cw.Color<<","<<"Width="<<a.cw.Width<

61、;<endl;</p><p>  double x=X2-Getx();</p><p>  double y=Y2-Gety();</p><p>  return sqrt(x*x+y*y);</p><p><b>  }</b></p><p>  void main()<

62、/p><p><b>  {</b></p><p><b>  Point a;</b></p><p>  Point b(5.2,11.8),c(38.9,85.6);</p><p><b>  a=c;</b></p><p>  cout<

63、<"兩點(diǎn)之距為:"<<a.Distance(b)<<endl;</p><p>  Cow cw={3,5};</p><p>  Line s(5.2,11.8,38.9,85.6),cw);</p><p>  Line s1(s);</p><p>  cout<<s1.Di

64、splay(s1)<<endl;</p><p>  cout<<"基類對(duì)象的屬性"<<endl;</p><p>  a.Display();</p><p><b>  a=s;</b></p><p>  cout<<"派生類的對(duì)象賦給基

65、類對(duì)象"<<endl;</p><p>  a.Display();</p><p>  cout<<"派生類的對(duì)象賦給基類的指針:"<<endl;</p><p>  Point &d=s1;</p><p>  d.Display();</p><

66、;p><b>  }</b></p><p><b>  使用模板繼承的方法</b></p><p> ?。?)cpp14.h文件</p><p>  #if !defined(CPP14_H)</p><p>  #define CPP14_H</p><p>  #

67、include <iostream.h></p><p>  #include <math.h></p><p>  template <class T></p><p>  class Point</p><p><b>  {</b></p><p><

68、;b>  T X,Y;</b></p><p><b>  public:</b></p><p>  Point(T=0,T=0);</p><p>  Point(Point&);</p><p>  void Display(){cout<<"X="<

69、<X<<",Y="<<Y<<endl;}</p><p>  double Distance(Point&);</p><p>  T Getx(){return X;}</p><p>  T Gety(){return Y;}</p><p>  ~Point(){co

70、ut<<"Delete Point"<<X<<" "<<Y<<endl;}</p><p><b>  };</b></p><p>  template <class T></p><p>  Point<T>::Poi

71、nt(T a,T b):X(a),Y(b)</p><p>  {cout<<"調(diào)用Point的構(gòu)造函數(shù)"<<endl;}</p><p>  template <class T></p><p>  Point<T>::Point(Point&a)</p><p>

72、  {X=a.X;Y=a.Y;cout<<"調(diào)用Point的復(fù)制構(gòu)造函數(shù)"<<endl;}</p><p>  template <class T></p><p>  double Point<T>::Distance(Point&a)</p><p><b>  {</b

73、></p><p>  return sqrt((X-a.X)*(X-a.X)+(Y-a.Y)*(Y-a.Y));</p><p><b>  }</b></p><p>  struct Cow{</p><p>  int Color;</p><p>  int Width;</

74、p><p><b>  };</b></p><p>  template <class T></p><p>  class Line:public Point<T>{</p><p><b>  T X2,Y2;</b></p><p><b&g

75、t;  Cow cw;</b></p><p><b>  public:</b></p><p>  Line(T,T,T,T,Cow&);</p><p>  Line(Line&);</p><p>  double Display(Line&);</p><

76、p>  ~Line(){cout<<"Delete Line"<<endl;}</p><p><b>  };</b></p><p>  template <class T></p><p>  Line<T>::Line(T a1,T a2,T a3,T a4,Co

77、w&c):Point<T>(a1,a2),X2(a2),Y2(a4),cw(c)</p><p><b>  {</b></p><p>  cout<<"調(diào)用Line的構(gòu)造函數(shù)"<<endl;</p><p><b>  }</b></p>&

78、lt;p>  template <class T></p><p>  Line<T>::Line(Line&s):Point<T>(s),X2(s.X2),Y2(s.Y2),cw(s.cw)</p><p><b>  {</b></p><p>  cout<<"調(diào)用L

79、ine的復(fù)制構(gòu)造函數(shù)"<<endl;</p><p><b>  }</b></p><p>  template <class T></p><p>  double Line<T>::Display(Line&a)</p><p><b>  {<

80、/b></p><p>  Point<T>::Display();</p><p>  cout<<"X2="<<X2<<","<<"Y2="<<Y2<<endl;</p><p>  cout<<&qu

81、ot;Color="<<a.cw.Color<<","<<"Width="<<a.cw.Width<<endl;</p><p>  double x=X2-Getx();</p><p>  double y=Y2-Gety();</p><p>  re

82、turn sqrt(x*x+y*y);</p><p><b>  }</b></p><p><b>  #endif</b></p><p>  (2)cpp14.cpp文件</p><p>  #include "cpp14.h"</p><p> 

83、 void main()</p><p><b>  {</b></p><p>  Point<double>a;</p><p>  Point<double> b(7.8,9.8),c(34.5,67.8);</p><p><b>  a=c;</b></p&g

84、t;<p>  cout<<"兩點(diǎn)之距為:"<<a.Distance(b)<<endl;</p><p>  Cow cw={3,5};</p><p>  Line<double>s(7.8,9.8,34.5,67.8,cw);</p><p>  Line<double>

85、;s1(s);</p><p>  cout<<s1.Display(s1)<<endl;</p><p>  cout<<"基類的對(duì)象屬性:"<<endl;</p><p>  a.Display();</p><p><b>  a=s;</b>&l

86、t;/p><p>  cout<<"派生類對(duì)象賦給基類對(duì)象:"<<endl;</p><p>  a.Display();</p><p>  cout<<"派生類指針賦給基類指針:"<<endl;</p><p>  Point<double>*

87、p=&s1;</p><p>  p->Display();</p><p>  cout<<"基類對(duì)象引用派生類對(duì)象:"<<endl;</p><p>  Point<double> &d=s1;</p><p>  d.Display();</p>

88、<p><b>  }</b></p><p><b>  4.運(yùn)行結(jié)果及分析</b></p><p>  (1)用包含的方法構(gòu)成的新類</p><p> ?。?)使用模板的方法構(gòu)成的新類</p><p>  通過繼承的方法構(gòu)成的新類</p><p>  通過模板

89、繼承的方法構(gòu)成的新類</p><p>  程序完成了實(shí)驗(yàn)要求。</p><p>  第二題 人員信息管理系統(tǒng)</p><p><b>  設(shè)計(jì)思路</b></p><p>  本題目的任務(wù)是設(shè)計(jì)一個(gè)人員信息管理系統(tǒng),并使用虛函數(shù)實(shí)現(xiàn)多態(tài)性,完成顯示不同人員信息的任務(wù)。</p><p>  設(shè)計(jì)em

90、ployee類,用來存儲(chǔ)雇員的編號(hào),級(jí)別,月薪等信息,能夠?qū)ζ溥M(jìn)行操作和顯示。</p><p>  以employee為基類派生出technician類,表示兼職技術(shù)人員,以及manager類,表示經(jīng)理,以及salesman類,表示兼職推銷員。利用manage類和salesman類派生出salesmanager類,表示銷售經(jīng)理。注意使用虛基類。</p><p>  2.程序詳細(xì)代碼及描述&

91、lt;/p><p>  #include <iostream.h></p><p>  #include <fstream.h></p><p>  #include <ctype.h></p><p>  #include <string.h></p><p><b&

92、gt;  //全局?jǐn)?shù)據(jù),對(duì)象</b></p><p>  double ManagerSalary; //經(jīng)理固定月薪</p><p>  double SalesManagerSalary; //銷售經(jīng)理固定月薪</p&g

93、t;<p>  double SalesManagerPercent; //銷售經(jīng)理提成%</p><p>  double SalesPercent; //兼職推銷員提成%</p><p>  double WagePerHou

94、r; //兼職技術(shù)人員小時(shí)工資</p><p>  int ID; //員工標(biāo)識(shí)</p><p>  class Employee

95、 //員工類</p><p><b>  {</b></p><p>  protected:</p><p>  int No; //編號(hào)</p><p>  char Name[20];

96、 //姓名</p><p>  int Birthday; //生日</p><p>  char Specialty[20]; //特長(zhǎng)</p&

97、gt;<p>  char Bloodtype; //血型</p><p>  int Attend; //加入公司時(shí)間</p><p>  int Duty;

98、 //崗位</p><p>  double Earning; //收入</p><p>  Employee *next;</p><p><b>  public:</b></p>

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

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

101、;</b></p><p>  class Manager:public Employee //經(jīng)理類</p><p><b>  {</b></p><p><b>  public:</b></p><p>  

102、Manager(char ID,char *Name,int Duty):Employee(ID,Name,Duty){}</p><p>  void CalcSalary(){Earning=ManagerSalary;}</p><p>  void Output()</p><p><b>  {</b></p><

103、p>  CalcSalary();</p><p>  cout<<No<<"\t"<<Name<<"\t經(jīng)理\t"<<Earning<<endl;</p><p><b>  }</b></p><p><b>  

104、};</b></p><p>  class SalesManager:public Employee //銷售經(jīng)理類</p><p><b>  {</b></p><p><b>  private:</b></p><p&g

105、t;  double Amount;</p><p><b>  public:</b></p><p>  SalesManager(char ID,char *Name,int Duty):Employee(ID,Name,Duty){}</p><p>  void SetAmount(double s)</p><p

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

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

108、);</p><p>  cout<<No<<"\t"<<Name<<"\t銷售經(jīng)理\t"<<Earning<<endl;</p><p><b>  }</b></p><p><b>  };</b><

109、/p><p>  class Technician:public Employee //兼職技術(shù)人員類</p><p><b>  {</b></p><p><b>  private:</b></p><p><b>  doubl

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

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

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

113、/p><p><b>  {</b></p><p>  Earning=WagePerHour*t;</p><p><b>  }</b></p><p>  void Output()</p><p><b>  {</b></p>&l

114、t;p>  CalcSalary();</p><p>  cout<<No<<"\t"<<Name<<"\t兼職技術(shù)人員\t"<<t<<"\t"<<Earning<<endl;</p><p><b>  }</

115、b></p><p><b>  };</b></p><p>  class Salesman:public Employee //兼職推銷員類</p><p><b>  {</b></p><p><b> 

116、 private:</b></p><p>  double Amount;</p><p><b>  public:</b></p><p>  Salesman(char ID,char *Name,int Duty,double Amount):Employee(ID,Name,Duty)</p><p&

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

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

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

120、>  void Output()</p><p><b>  {</b></p><p>  CalcSalary();</p><p>  cout<<No<<"\t"<<Name<<"\t兼職推銷員\t"<<Amount<<

121、"\t"<<Earning<<endl;</p><p><b>  }</b></p><p><b>  };</b></p><p>  class Company //

122、公司類</p><p><b>  {</b></p><p><b>  private:</b></p><p>  Employee *Worker; //員工表</p><p>  void Clea

123、r(); //清除內(nèi)存中數(shù)據(jù)</p><p><b>  public:</b></p><p><b>  Company()</b></p><p><b>  {</b></p><p

124、>  Worker=0; </p><p><b>  Load();</b></p><p><b>  }</b></p><p>  ~Company()</p><p><b>  {</b></p><p>  Employee

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

126、;</p><p><b>  Worker=p;</b></p><p><b>  }</b></p><p><b>  Worker=0;</b></p><p><b>  }</b></p><p>  void Add

127、(); //增加人員</p><p>  void Delete(); //刪除人員</p><p>  void Modify();

128、 //修改人員</p><p>  void Query(); //查詢?nèi)藛T</p><p>  void Set(); //基礎(chǔ)數(shù)據(jù)設(shè)置</p

129、><p>  void Save(); //數(shù)據(jù)存盤</p><p>  void Load(); //數(shù)據(jù)載入</p><p><b>  };</b

130、></p><p>  void Company::Clear() //清除內(nèi)存中人員數(shù)據(jù)</p><p><b>  {</b></p><p>  Employee *p=Worker;</p><p><b>  while(p

131、)</b></p><p><b>  {</b></p><p>  Worker=p->next;</p><p><b>  delete p;</b></p><p><b>  p=Worker;</b></p><p>&l

132、t;b>  }</b></p><p><b>  }</b></p><p>  void Company::Add()</p><p><b>  {</b></p><p>  Employee *p;

133、 //新結(jié)點(diǎn)指針</p><p>  int Duty; </p><p>  char Name[20];</p><p>  int Birthday;</p><p>  char Specialty[20];</p><p>  char Bloodtype;</p>

134、<p>  int Attend;</p><p>  double Amount,T;</p><p>  cout<<"\n## 新增員工 ##\n"; //輸入員工信息 </p><p><b>  ID++;</b&

135、gt;</p><p>  cout<<"輸入崗位(1-經(jīng)理2-銷售經(jīng)理3-兼職推銷員4-兼職技術(shù)人員):"; </p><p>  cin>>Duty;</p><p>  cout<<"輸入姓名:"; </p><p>  cin>>Name;&l

136、t;/p><p>  cout<<"輸入生日:";</p><p>  cin>>Birthday;</p><p>  cout<<"輸入特長(zhǎng):";</p><p>  cin>>Specialty;</p><p>  cout&l

137、t;<"輸入血型:";</p><p>  cin>>Bloodtype;</p><p>  cout<<"輸入加入公司時(shí)間:";</p><p>  cin>>Attend;</p><p>  if(Duty==3)</p><p>

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

139、gt;<b>  {</b></p><p>  cout<<"本月工作小時(shí)數(shù)(0-174):"; </p><p><b>  cin>>T;</b></p><p><b>  }</b></p><p><b>  

140、//創(chuàng)建新員工結(jié)點(diǎn)</b></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,D

141、uty); break;</p><p>  case 3:p=new Salesman(ID,Name,Duty,Amount); break;</p><p>  case 4:p=new Technician(ID,Name,Duty,T); break;</p><p><b>  }</b></p><p&

142、gt;  p->next=0;</p><p>  //員工結(jié)點(diǎn)加入鏈表</p><p>  if(Worker) //若已經(jīng)存在結(jié)點(diǎn)</p><p><b>  {</b></p><p>  Employee *p

143、2;</p><p>  p2=Worker;</p><p>  while(p2->next) //查找尾結(jié)點(diǎn)</p><p><b>  {</b></p><p>  p2=p2->next;</p>

144、;<p><b>  }</b></p><p>  p2->next=p; //連接</p><p><b>  }</b></p><p>  else

145、 //若不存在結(jié)點(diǎn)(表空)</p><p><b>  {</b></p><p>  Worker=p; //連接</p><p><b>  } </b><

146、;/p><p><b>  }</b></p><p>  void Company::Delete() //刪除人員</p><p><b>  {</b></p><p><b>  int No;<

147、;/b></p><p>  cout<<"\n## 刪除員工 ##\n";</p><p>  cout<<"ID:"; cin>>No;</p><p>  //查找要?jiǎng)h除的結(jié)點(diǎn)</p><p>  Employee *p1,*p2; p1=Worker

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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)論