C++程序设计实验四类的继承与派生.docx

上传人:b****5 文档编号:7691460 上传时间:2023-01-25 格式:DOCX 页数:14 大小:120.12KB
下载 相关 举报
C++程序设计实验四类的继承与派生.docx_第1页
第1页 / 共14页
C++程序设计实验四类的继承与派生.docx_第2页
第2页 / 共14页
C++程序设计实验四类的继承与派生.docx_第3页
第3页 / 共14页
C++程序设计实验四类的继承与派生.docx_第4页
第4页 / 共14页
C++程序设计实验四类的继承与派生.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

C++程序设计实验四类的继承与派生.docx

《C++程序设计实验四类的继承与派生.docx》由会员分享,可在线阅读,更多相关《C++程序设计实验四类的继承与派生.docx(14页珍藏版)》请在冰豆网上搜索。

C++程序设计实验四类的继承与派生.docx

C++程序设计实验四类的继承与派生

成绩

批阅

日期

台州学院

电子与信息工程学院实验报告

 

班级学号姓名吴前斌

同组

实验课程:

C++程序设计

实验项目:

类的继承与派生

 

实验日期:

2019年5月5日

7、定义形状类,其中基类为点类,圆类继承点类,圆柱体类继承圆类,计算面积、体积。

9、建立一个建筑物类的层次体系。

其中,基类building包括保护数据成员name(建筑物名称)、floors(层数)和areas(总面积),由building类派生住宅类house和办公楼类office;住宅类house包括私有数据成员rooms(房间数)和balcony(阳台数);办公楼类office包括私有数据成员offices(办公室数)和meetingrooms(会议室数)。

住宅类house和办公楼类office都含有构造函数和print函数,以分别用于对数据成员的初始化和输出。

在主函数中,实例化house类和office类对象并且将其数据输出。

10、某校每位学生都要学习英语、语文、数学三门公共课程以及不同的专业课程。

会计学专业要学习会计学和经济学两门课程,化学专业要学习有机化学和化学分析两门课程。

编程序管理学生成绩,计算公共课的总分和平均分,以及所有课程的总成绩。

 

数据记录:

1、#include

#include

usingnamespacestd;

classCDate{

public:

intx,n,e;

CDate();

CDate(intx,intn,inte):

x(x),n(n),e(e){}

};

classCPerson{

public:

stringname,sex;

intage;

CPerson();

CPerson(stringname,intage,stringsex):

name(name),age(age),sex(sex){}

voidPrint()

{

cout<

}

};

classCStudent:

virtualpublicCPerson{

public:

stringid;

CDateschool;

intgrade;

CStudent();

CStudent(stringname,intage,stringsex,stringid,CDateschool,intgrade):

CPerson(name,age,sex),id(id),school(school),grade(grade){}

voidPrint()

{

cout<

}

};

classCTeacher:

virtualpublicCPerson{

public:

stringduty,depart;

CDatework;

CTeacher();

CTeacher(stringname,intage,stringsex,CDatework,stringduty,stringdepart):

CPerson(name,age,sex),duty(duty),depart(depart),work(work){}

voidPrint()

{

cout<

}

};

classCGraduate:

publicCStudent{

public:

stringstudy,tutor;

CGraduate();

CGraduate(stringname,intage,stringsex,stringid,CDateschool,intgrade,stringstudy,stringtutor):

CStudent(name,age,sex,id,school,grade),CPerson(name,age,sex),study(study),tutor(tutor){}

voidPrint()

{

cout<

}

};

classCGradOnWork:

publicCGraduate,publicCTeacher{

public:

stringname,sex;

intage;

CGradOnWork();

CGradOnWork(stringname,intage,stringsex,stringduty,stringdepart,CDatework,stringid,CDateschool,intgrade,stringstudy,stringtutor):

CTeacher(name,age,sex,work,duty,depart),CGraduate(name,age,sex,id,school,grade,study,tutor),CPerson(name,age,sex),name(name),age(age),sex(sex){}

 

voidPrint()

{

cout<

}

};

intmain()

{

CGradonWorkgradonWork("tzcer","男",33,"15","2003",335,"computer","tangmin","jsj","sxxy","2002-8");

s1.Print();

s1.CTeacher:

:

Print();

s1.CGraduate:

:

Print();

s1.CStudent:

:

Print();

s1.CPerson:

:

Print();}

8、

#include

#include

usingnamespacestd;

classPoint

{

protected:

doublex,y;

public:

Point(){x=0;y=0;}

Point(doublex0,doubley0){x=x0;y=y0;}

doubleget_x(){returnx;}

doubleget_y(){returny;}

friendostream&operator<<(ostream&out,Point&d);

};

ostream&operator<<(ostream&out,Point&d)

{

returnout<<"Point:

("<

}

 

 

classCircle:

publicPoint

{

protected:

doubler;

public:

Circle(){r=0;}

Circle(doubler0):

r(r0){}

voidset_r(doubler1){r=r1;}

doubleget_r(){returnr;}

doublearea(){return3.14159*r*r;}

friendostream&operator<<(ostream&out,Circle&r);

};

ostream&operator<<(ostream&out,Circle&r)

{

returnout<<"r:

"<

"<

}

classCylinder:

publicCircle

{

private:

doubleh;

public:

Cylinder(){h=0;}

Cylinder(doubler0,doubleh0):

Circle(r0),h(h0){}

voidset_h(doubleh1){h=h1;}

doubleget_h(){returnh;}

doublearea(){return2*3.14159*r*h+2*3.14159*r*r;}

doublevolume(){returnCircle:

:

area()*h;}

friendostream&operator<<(ostream&out,Cylinder&h);

};

ostream&operator<<(ostream&out,Cylinder&h)

{

returnout<<"h:

"<

"<

"<

}

intmain()

{

Pointps(-2,5);

cout<

Circleo

(2);

cout<

Cylinderh(2,4);

cout<

system("pause");

return0;

}

 

运行的效果如下:

9、#include

#include

usingnamespacestd;

classbuilding

{

protected:

stringname;

intfloors;

floatareas;

public:

building(string,int,float);

voidprint();

};

building:

:

building(stringq,intm,floats)

{

name=q;

floors=m;

areas=s;

}

voidbuilding:

:

print()

{

cout<<"name:

"<

"<

"<

}

classhouse:

publicbuilding

{

public:

house(stringq,intm,floats,inti,intj):

building(q,m,s)

{

rooms=i;

balcony=j;

}

voidprint();

private:

introoms;

intbalcony;

};

 

voidhouse:

:

print()

{

cout<<"name:

"<

"<

"<

"<

"<

}

classoffice:

publicbuilding

{

public:

office(stringq,intm,floats,inta,intb):

building(q,m,s)

{

offices=a;

meetingrooms=b;

}

voidprint();

private:

intoffices;

intmeetingrooms;

};

voidoffice:

:

print()

{

cout<<"name:

"<

"<

"<

"<

"<

}

intmain()

{

houseq1("住宅",8,520,20,17);

officeq2("办公室",26,530,5,6);

q1.print();

q2.print();

return0;

}

运行的效果如下:

 

10、#include

#include

usingnamespacestd;

classcomFinal{

protected:

charname[20];

intEnglish,Chinese,Math,Total;

floataverage;

public:

comFinal(char*n,intEng,intChi,intMat);

comFinal(){};

~comFinal(){};

char*getName(){returnname;}

intgetEng(){returnEnglish;}

intgetChi(){returnChinese;}

intgetMat(){returnMath;}

voidsetEng(intx){English=x;}

voidsetChi(intx){Chinese=x;}

voidsetMat(intx){Math=x;}

intgetTotal(){returnEnglish+Chinese+Math;}

floatgetAverage(){return(float)((English+Chinese+Math)/3);}

voidshow();

};

comFinal:

:

comFinal(char*n,intEng,intChi,intMat){

English=Eng;Chinese=Chi;Math=Mat;

strcpy(name,n);

}

voidcomFinal:

:

show(){

cout<<"学生姓名:

"<

cout<<"英语成绩:

"<

cout<<"语文成绩:

"<

cout<<"数学成绩:

"<

cout<<"基础分总评:

"<

cout<<"基础课平均成绩:

"<

}

classaccount:

publiccomFinal{

protected:

intaccoun;

intecon;

intmajtotal;

floatmajave;

public:

 

account(char*n,intEng,intChi,intMat,intacc,inteco);

account(){};

intgetmajtotal(){returnecon+accoun;}

floatgetmajave(){returnfloat((accoun+econ)/2);}

intgetaccount(){returnaccoun;};

intgetecon(){returnaccoun;}

voidsetaccount(intx){accoun=x;}

voidsetecon(intx){econ=x;}

voidshow();

};

account:

:

account(char*n,intEng,intChi,intMat,intacc,inteco):

comFinal(n,Eng,Chi,Mat){

econ=eco;accoun=acc;

}

voidaccount:

:

show(){

comFinal:

:

show();

cout<<"会计学成绩:

"<

cout<<"经济学成绩:

"<

cout<<"总分:

"<

}

classchemistry:

publiccomFinal{

protected:

intchemistr;

intanaly;

intmajtatal;

floatmajave;

public:

chemistry(char*n,intEng,intChi,intMat,intchem,intanal);

chemistry(){};

intgetmajtotal(){returnanaly+chemistr;}

floatgetmajave(){returnfloat((chemistr+analy)/2);}

intgetche(){returnchemistr;}

intgetanl(){returnanaly;}

voidsetche(intx){chemistr=x;}

voidsetanl(intx){analy=x;}

voidshow();

};

chemistry:

:

chemistry(char*n,intEng,intChi,intMat,intchem,intanal):

comFinal(n,Eng,Chi,Mat){chemistr=chem;analy=anal;}

voidchemistry:

:

show(){

comFinal:

:

show();

cout<<"有机化学成绩:

"<

cout<<"化学分析成绩:

"<

cout<<"总分:

"<

}

intmain()

{

accounta1("cz",90,80,90,80,90);

chemistryc1("zc",80,90,80,90,80);

a1.show();

cout<<"---------------------------"<

c1.setanl(100);

c1.show();

}

运行的效果如下图所示:

实验心得:

本次实验用了C++函数定义函数和函数重载,以及相关类的知识点,同时得掌握使用debug进行对函数的调试。

相比之前学的C语言来说这个和之前还是有些区别的,接下来应该多花些时间学好该门课程。

 

教师签名:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1