面向?qū)ο蟪绦蛟O(shè)計(C++)實(shí)驗(yàn)報告

上傳人:1777****777 文檔編號:38139081 上傳時間:2021-11-05 格式:DOC 頁數(shù):25 大?。?35KB
收藏 版權(quán)申訴 舉報 下載
面向?qū)ο蟪绦蛟O(shè)計(C++)實(shí)驗(yàn)報告_第1頁
第1頁 / 共25頁
面向?qū)ο蟪绦蛟O(shè)計(C++)實(shí)驗(yàn)報告_第2頁
第2頁 / 共25頁
面向?qū)ο蟪绦蛟O(shè)計(C++)實(shí)驗(yàn)報告_第3頁
第3頁 / 共25頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《面向?qū)ο蟪绦蛟O(shè)計(C++)實(shí)驗(yàn)報告》由會員分享,可在線閱讀,更多相關(guān)《面向?qū)ο蟪绦蛟O(shè)計(C++)實(shí)驗(yàn)報告(25頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、C++課程設(shè)計 面向?qū)ο蟪绦蛟O(shè)計 (C++) 實(shí)驗(yàn)報告 姓名:劉九州 學(xué)院:數(shù)學(xué)與計算機(jī)學(xué)院 班級:10級計算機(jī)大類三班 學(xué)號:100511314 實(shí)驗(yàn)5 單繼承 一、實(shí)驗(yàn)?zāi)康? 1.掌握派生的類別與方式; 2.了解派生類中如何使用基類的成員、基類成員在派生類中的訪問控制; 3. 掌握繼承中構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用過程。 二、實(shí)驗(yàn)內(nèi)容及步驟 1. 給出一個Document類,從Document派生出Book類,增加PageCount變

2、量。在主函數(shù)中進(jìn)行測試,創(chuàng)建Book類對象并進(jìn)行初始化,輸出書名和頁數(shù)。 2. 設(shè)計一個單基繼承的類層次程序,利用Person類派生出Student類,增加屬性xh(學(xué)號),Person類中至少有姓名、年齡等數(shù)據(jù)成員,成員函數(shù)中構(gòu)造函數(shù)對其初始化,析構(gòu)函數(shù)釋放相應(yīng)存儲單元,輸出函數(shù)輸出其數(shù)據(jù)成員的值,其它成員函數(shù)根據(jù)需要添加,在主函數(shù)中進(jìn)行測試。 3. 設(shè)計一個人員類person和一個日期類date,由人員類派生出學(xué)生類student和教師類professor,學(xué)生類和教師類的數(shù)據(jù)成員birthday為日期類。在主函數(shù)中進(jìn)行測試。 三、實(shí)驗(yàn)源程序和運(yùn)行結(jié)果 實(shí)驗(yàn)(一

3、)源程序: #include #include using namespace std; class Document { public: Document(){}; ~Document(); Document(char*name); char *Name; void PrintNameOf(); }; Document::Document(char*name) { Name=new char[strlen(name+1)]; strcpy(Name,name); } Document::~Doc

4、ument(){ delete []Name; } void Document::PrintNameOf() { cout<>BookName;

5、 cout<<"請輸入書的頁數(shù):"<>n; Book b(BookName,n); cout<<"書名為:"< #include using namespace std; class person{ public: person(){ name="張三"; age=0; } person(string c,int a){

6、name=c; age=a; } ~person(){} void setname(string c){ name=c; } string getname(){ return name; } void setage(int a){ age=a; } int getage(){ return age; } private: string name; int age; }; class student:public person { public: student(){ xh=0; } stu

7、dent(int d){ xh=d; } student(string c,int a,int d):person(c,a){ xh=d; } ~student(){} void setxh(int d){ xh=d; } int getxh(){ return xh; } private: int xh; }; void main(){ string c; cout<<"請輸入學(xué)生的姓名:\n"; cin>>c; cout<<"請輸入學(xué)生的年齡:\n"; int a; cin>>a; cout<<"

8、請輸入學(xué)生的學(xué)號:\n"; int d; cin>>d; student n(c,a,d); cout<<"請輸入學(xué)生的姓名為: "< using namespace std; class person{ public: person(){ name="張三"

9、; age=0; } person(string c,int a){ name=c; age=a; } ~person(){} void setname(string c){ name=c; } string getname(){ return name; } void setage(int a){ age=a; } int getage(){ return age; } private: string name; int age; }; class date{ public: dat

10、e(){ year=2011; month=12; day=17; } ~date(){} date(int y,int m,int d){ year=y; month=m; day=d; } int getyear(){ return year; } int getmonth(){ return month; } int getday(){ return day; } private: int year; int month; int day; }; class student:p

11、ublic person{ public: student(){ // birthday.date(); } student(int y,int m,int d):birthday(y,m,d) { } ~student(){} void getbirthday(){ cout<<"學(xué)生的生日為:\n"; cout<

12、; class teacher:public person{ public: teacher(){ // birthday.date(); } teacher(int y,int m,int d):birthday(y,m,d) { //birthday.date(y,m,d); } ~teacher(){} void getbirthday(){ cout<<"老師的生日為:\n"; cout<

13、<>y>>m>>d; student s(y,m,d); cout<<"請輸入老師的生日:"<>y>>m>>d; teacher t(y,m,d); s.getbirthday(); t.getbirthday(); } 運(yùn)行結(jié)果: 實(shí)驗(yàn)6 多繼承 一、實(shí)驗(yàn)?zāi)康? 1.掌握多基繼承的使用,訪問方法; 2.理解類層次中訪問規(guī)則;

14、 3.掌握虛基類的定義及使用。 二、實(shí)驗(yàn)內(nèi)容及步驟 1. 定義一個學(xué)生類Student和教師類Teacher,學(xué)生類有姓名、學(xué)號、私有數(shù)據(jù)成員,教師類有姓名、工作證號、職稱、課程、周學(xué)時數(shù)。再定義一個助教類TA,繼承學(xué)生類和教師類,該類可以使用學(xué)生類的全部數(shù)據(jù)成員,以及教師類的課程和周學(xué)時數(shù)的數(shù)據(jù)成員。要求:每個類提供自定義的構(gòu)造函數(shù)和析構(gòu)函數(shù),并通過同名函數(shù)ShowInfo來顯示全部數(shù)據(jù)成員的值。 2. 設(shè)計一個虛基類Person,包含姓名和年齡私有數(shù)據(jù)成員以及相關(guān)的成員函數(shù);由它派生出領(lǐng)導(dǎo)類Leader,包含職務(wù)和部門私有數(shù)據(jù)成員以及相關(guān)的成員函數(shù);再由Person派生出工程師

15、類Engineer,包含職務(wù)和專業(yè)私有數(shù)據(jù)成員以及相關(guān)的成員函數(shù);再由Leader和Engineer類派生出主任工程師類Chairman。并采用相關(guān)數(shù)據(jù)進(jìn)行測試。 三、實(shí)驗(yàn)源程序和運(yùn)行結(jié)果 實(shí)驗(yàn)(一)源程序: #include #include class Student{ protected: char s_name[20]; int id_s; public: Student(char *name,int id); void ShowInfo(); }; class Teacher{ protected:

16、 char t_name[20]; int id_t; char position[30]; char lesson[30]; int hour; public: Teacher(char *pos,int h); Teacher(char *name,int id,char *less,char *pos,int h); void ShowInfo(); }; class TA:public Student,public Teacher{ public: TA(char *name,char id,char *less,int h); voi

17、d ShowInfo(); }; Student::Student(char *name,int id){ strcpy(s_name,name); id_s=id; } void Student::ShowInfo(){ cout<<"姓名:"<

18、,int h){ strcpy(t_name,name); strcpy(lesson,less); strcpy(position,pos); id_t=id; hour=h; } void Teacher::ShowInfo(){ cout<<"姓名:"<

19、),Teacher(less,h){} void TA::ShowInfo(){ Student::ShowInfo(); cout<<"課程:"< #include class Person{ //虛基類person類 char

20、 name[30]; int age; public: Person(char *n,int a); void setname(char *n); void setage(int a); char *getname(); int getage(); }; class Leader:virtual public Person{ //領(lǐng)導(dǎo)類 char job[30]; //職務(wù) char dep[30]; //部門 public: Leader(char *jb,char *dp); void setjob(char *jb); void set

21、dep(char *dp); char *getjob(); char *getdep(); }; class Engineer:virtual public Person{ //工程師類 char major[30]; //專業(yè) char prof[30]; //職稱 public: Engineer(char *maj,char *pf); void setmajor(char *maj); void setprof(char *pf); char *getmajor(); char *getprof(); }; cla

22、ss Chairman:public Leader,public Engineer{ //主任工程師類 public: Chairman(char *n,int a,char *jb,char *dp,char *maj,char *pf); void disp(); }; Person::Person(char *n,int a){ strcpy(name,n); age=a; } void Person::setname(char *n){ strcpy(name,n); } void Person::setage(int a){ age=a;

23、} char *Person::getname(){ return name; } int Person::getage(){ return age; } Leader::Leader(char *jb,char *dp):Person("",30){ strcpy(job,jb); strcpy(dep,dp); } void Leader::setjob(char *jb){ strcpy(job,jb); } void Leader::setdep(char *dp){ strcpy(dep,dp); } char *Leader::ge

24、tjob(){ return job; } char *Leader::getdep(){ return dep; } Engineer::Engineer(char *maj,char *pf):Person("",30){ strcpy(major,maj); strcpy(prof,pf); } void Engineer::setmajor(char *maj){ strcpy(major,maj); } void Engineer::setprof(char *pf){ strcpy(prof,pf); } char *Engineer

25、::getmajor(){ return major; } char *Engineer::getprof(){ return prof; } Chairman::Chairman(char *n,int a,char *jb,char *dp,char *maj,char *pf):Person(n,a),Leader(jb,dp),Engineer(maj,pf){} void Chairman::disp(){ cout<<"姓名:"<

26、getdep()<<\t<<"專業(yè):"<

27、驗(yàn)內(nèi)容及步驟 1. 設(shè)計一個圖形類(Shape),由它派生出三角形類(Triangle)、正方形類(Square)、圓形類(Circle),利用虛函數(shù)計算圖形面積,并在主函數(shù)中進(jìn)行測試。 2. 定義一個教師類,由教師類派生出講師、副教授、教授類。教師的工資分別由基本工資、課時費(fèi)和津貼構(gòu)成。假設(shè)講師、副教授、教授的基本工資分別為800、900、1000元,課時費(fèi)分別為每小時40、45、50元,津貼分別為1300、1800、2300。定義虛函數(shù)來計算教師的工資,并通過主函數(shù)來進(jìn)行驗(yàn)證。 三、實(shí)驗(yàn)源程序和運(yùn)行結(jié)果 實(shí)驗(yàn)(一)源程序: #include using na

28、mespace std; class Shape { public: virtual float area() {return 0.0;} }; class Triangle:public Shape { public: Triangle() {bc=1.0;h=1.0;} Triangle(float bc,float h) { this->bc=bc;this->h=h;} bool setbc(float a) {if(a>0)bc=a;} float getbc() {return bc;} bool setg(float

29、 b) {if(b>0)h=b;} float getg() {return h;} float area() {return bc*h/2;} protected: float bc,h; }; class Square:public Shape { public: Square() {l=1.0;} Square(float m) {this->l=m;} bool setbc(float c) {if(c>0)l=c;} float getbc() {return l;} float area() {return

30、l*l;} protected: float l; }; class Circle:public Shape { public: Circle() {radius=1.0;} Circle(float R) { this->radius=R;} bool setRadius(float r) {if(r>0)radius=r;} float getRadius() {return radius;} float area() {return 3.14159*radius*radius;} protected: float radius;

31、 }; void displayShapeArea(Shape *p) { cout<<"圖形面積為:"<area()<

32、(二)源程序: #include using namespace std; class teacher { public: virtual float wage() {return 0.0;} }; class lecturer:public teacher { public: lecturer() {WorkHours=1.0;} lecturer(float WorkHours) { this->WorkHours=WorkHours; } bool setWorkHours(float h) { i

33、f(h>0)WorkHours=h;} float getWorkHours() {return WorkHours;} float wage() { return (800+40*WorkHours+1300); } protected: float WorkHours; }; class AssociateProfessor:public teacher { public: AssociateProfessor() {WorkHours=1.0;} AssociateProfessor(float WorkHours) { th

34、is->WorkHours=WorkHours; } bool setWorkHours(float h) { if(h>0)WorkHours=h;} float getWorkHours() {return WorkHours;} float wage() { return (900+45*WorkHours+1800); } protected: float WorkHours; }; class Professor:public teacher { public: Professor() {WorkHours=1.0;}

35、 Professor(float WorkHours) { this->WorkHours=WorkHours; } bool setWorkHours(float h) { if(h>0)WorkHours=h;} float getWorkHours() {return WorkHours;} float wage() { return (1000+50*WorkHours+2300); } protected: float WorkHours; }; void displayWage(teacher *s) { c

36、out<<"工資為:"<wage()<

37、. 編寫一個簡單復(fù)數(shù)類Scomplex,要求用友元函數(shù)重載“+”、“-”運(yùn)算符,用成員函數(shù)重載“=”運(yùn)算符,使之能夠?qū)崿F(xiàn)整數(shù)或浮點(diǎn)數(shù)和復(fù)數(shù)的加法和減法,并且進(jìn)行測試。 2. 空間一點(diǎn)p的坐標(biāo)為(x,y,z),其中x,y,z為整數(shù)。編寫點(diǎn)類Point3D,定義空間兩點(diǎn)之間的加”+”,減”-”運(yùn)算為相應(yīng)三個坐標(biāo)值分別進(jìn)行加、減運(yùn)算,要求實(shí)現(xiàn)空間兩點(diǎn)之間的加”+”減”-”賦值”=”運(yùn)算,空間兩點(diǎn)間的比較”= =”運(yùn)算。要求編寫Point3D類的聲明定義和測試程序。 3. 設(shè)計一個時間類Time,包括時、分、秒等私有數(shù)據(jù)成員。重載“+”和“-”運(yùn)算符以實(shí)現(xiàn)時間的加法和減法運(yùn)算,并進(jìn)行測試

38、。 三、實(shí)驗(yàn)源程序和運(yùn)行結(jié)果 實(shí)驗(yàn)(一)源程序: #include class Scomplex{ private: double real,imag; public: Scomplex(){ real=0; //實(shí)部 imag=0; //虛部 } Scomplex(double x,double y) { real=x; imag=y; } Scomplex& operator =(Scomplex s); double getreal()

39、 { return real; } double getimag() { return imag; } friend Scomplex operator+(int i,Scomplex s); friend Scomplex operator+(double d,Scomplex s); friend Scomplex operator-(int i,Scomplex s); friend Scomplex operator-(double d,Scomplex s); }; Scomplex& Scomplex::operato

40、r =(Scomplex s){ if(this==&s) return *this; real=s.real; imag=s.imag; return *this; } Scomplex operator+(int i,Scomplex s){ Scomplex t; t.real=i+s.real; t.imag=s.imag; return t; } Scomplex operator+(double d,Scomplex s){ Scomplex t; t.real=d+s.real; t.imag=s.imag; ret

41、urn t; } Scomplex operator-(int i,Scomplex s){ Scomplex t; t.real=i-s.real; t.imag=s.imag; return t; } Scomplex operator-(double d,Scomplex s){ Scomplex t; t.real=d-s.real; t.imag=s.imag; return t; } void main(){ Scomplex s1(3.4,5.2),s2; s2=1+s1; cout<<"復(fù)數(shù)s2是:("<

42、2.getreal()<<,<

43、am.h> class Point3D { public: Point3D() { x=1; y=1; z=1; } Point3D(int a,int b,int c) { x=a; y=b; z=c; } int getx() { return x; } int gety() { return y; } int getz() { return z; } Point3D& operator =(Point3D p); Point3D operator +(Poin

44、t3D p); Point3D operator -(Point3D p); bool operator ==(Point3D p); private: int x,y,z; }; Point3D& Point3D::operator =(Point3D p) { if(this==&p) return *this; x=p.x; y=p.y; z=p.z; return *this; } Point3D Point3D::operator +(Point3D p) { Point3D t; t.x=x+p.x; t.y=y+

45、p.y; t.z=z+p.z; return t; } Point3D Point3D::operator -(Point3D p) { Point3D t; t.x=x-p.x; t.y=y-p.y; t.z=z-p.z; return t; } bool Point3D::operator ==(Point3D p) { if(x==p.x&&y==p.y&&z==p.z) return true; else return false; } void main() { Point3D p1(1,2,3),p2(1,2,3

46、),p3,p4; p3=p1+p2; cout<<"兩點(diǎn)相加后為: ("<

47、 class Time { public: Time() {hour=0; minute=0; second=0; } Time(int h,int m,int s) { hour=h; minute=m; second=s; } void setHour(int h) {hour=h;} void setMinute(int m) {minute=m;} void setSecond(int s) {second=s;} int getHour() {return hour;} int getMinu

48、te() {return minute;} int getSecond() {return second;} void displayTime() { cout<

49、=second+t.getSecond(); if(ss>60){ ss-=60; carry=1; } else carry=0; mm=minute+t.getMinute()+carry; if(mm>60){ mm-=60; carry=1; } else carry=0; hh=hour+t.getHour()+carry; if(hh>24) hh-=24; Time tt(hh,mm,ss); return(tt); } Time Time::operator-(Time t){ int borro

50、w,hh,mm,ss; ss=second-t.getSecond(); if(ss<0){ ss+=60; borrow=1; } else borrow=0; mm=minute-t.getMinute()-borrow; if(mm<0){ mm+=60; borrow=1; } else borrow=0; hh=hour-t.getHour()-borrow; if(hh<0) hh+=24; Time tt(hh,mm,ss); return(tt); } void main(){ Time t1(13,2,40),t2(15,37,30),t3; t3=t1+t2; t3.displayTime(); t3=t1-t2; t3.displayTime(); } 運(yùn)行結(jié)果:

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!