版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 面向?qū)ο蟮某绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 【課程設(shè)計(jì)】面向?qū)ο蟪绦蛟O(shè)計(jì)
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)
- 《面向?qū)ο蟮某绦蛟O(shè)計(jì)》課程設(shè)計(jì)
- c++面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 面向?qū)ο蟪绦蛟O(shè)計(jì)學(xué)生選課系統(tǒng)課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)--java面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)
- 《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程設(shè)計(jì)---java日歷
- 《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程設(shè)計(jì)java日歷
- 面向?qū)ο蟪绦蛘n程設(shè)計(jì)報(bào)告
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)——計(jì)算器
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)--火車訂票系統(tǒng)
- 面向?qū)ο蟪绦蛟O(shè)計(jì)報(bào)告
- 《vb面向?qū)ο蟮某绦蛟O(shè)計(jì)》校本課程設(shè)計(jì)
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程實(shí)驗(yàn)報(bào)告
- c++面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告---學(xué)籍管理系統(tǒng)
- 《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程設(shè)計(jì)報(bào)告---書店圖書管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論