c++程序设计_ (2)_第1页
c++程序设计_ (2)_第2页
c++程序设计_ (2)_第3页
c++程序设计_ (2)_第4页
c++程序设计_ (2)_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、西安交通大学实验报告课程_计算机程序与设计_实验名称_继承_ 第 页 共 页系 别_材料科学与工程_ 实 验 日 期 2014 年 12 月 5日专业班级_组别_ 实 验 报 告 日 期 年 月 日姓 名_学号_ 报 告 退 发 ( 订正 、 重做 )同 组 人_ 教 师 审 批 签 字 一. 实验目的1.掌握不同继承方式下对基类的成员的访问的控制;2.掌握继承派生函数中构造函数的使用。二. 实验内容()实验题目一:设计一个person类和其派生类教师teacher,新增的属性有专业,职称和主讲课程,并为这些属性定义相应的方法。 1 程序源代码#include<iostream>u

2、sing namespace std;class Personchar *name;int age;char *sex;public:void set(char *n, int a, char *b)name = n; age = a; sex = b;void Showme()cout << "姓名:" << name << 'n'cout << "年龄:" << age << 'n'cout << "性别:" <

3、;< sex << 'n'Person() delete name; delete sex; ;class teacher :public Personchar *major;char *title;char *course;public:void set(char *n, int a, char *b, char *m, char *t, char *co)Person:set(n, a, b);major = m; title = t; course = co;void Showme()Person:Showme();cout << "

4、;专业:" << major << 'n'cout << "职称:" <<title << 'n'cout << "主讲课程:" << course << 'n'teacher() delete major; delete title; delete course; ;int main()char *n, *b, *m, *ca, *co;int a;cout << "请输入姓名:

5、"n = new char20;cin >> n;cout << "请输入性别:"b = new char30;cin >> b;cout << "请输入年龄:"cin >> a;Person one;one.set(n, a, b);one.Showme();cout << "请分别输入教师的专业,职称和主讲课程:"m = new char20; ca = new char20; co = new char20;cin >> m >&

6、gt; ca >> co;teacher some;some.set(n, a, b, m, ca, co);some.Showme();return 0;1 实验结果(二)实验题目二:设计一个汽车类vehicle,包含的数据成员有车轮个数wheels和车重weight。小车类car是它的私有子类其中包含载人数passenger_load.卡车类truck是vehicle的私有子类其中包含载人数passenger_load和载重量payload,每个类都有相关数据的输出方法。 1 程序源代码#include<iostream>using namespace std;cl

7、ass vehicleprivate:int wheels;int weight;public:void set(int w, int we)wheels = w; weight = we;void showMe()cout << "汽车车轮的个数为:" << wheels << 'n'cout << "车重:" << weight << 'n'class car :public vehicleprivate:int passenger_load;pu

8、blic:void set(int w, int we, int pass)vehicle:set(w, we); passenger_load = pass;void showMe()vehicle:showMe();cout << "小汽车的最大载客量:" << passenger_load << 'n'class truck :public vehicleprivate:int passenger;int payload;public:void set(int w, int we, int pass, int pay

9、)vehicle:set(w, we); payload = pay; passenger = pass;void showMe()vehicle:showMe();cout << "载人数:" << passenger << 'n'cout << "载重量:" << payload << 'n'int main()int w, we, pass, pay;cout << "请输入汽车的车轮个数和车重:"cin >

10、> w >> we;vehicle one;one.set(w, we);one.showMe();cout << "请输入小汽车的载客量:"cin >> pass;car some;some.set(w, we, pass);some.showMe();cout << "请输入卡车的载客量和载重量:"truck someone;cin >> pass >> pay;someone.set(w, we, pass, pay);someone.showMe();return 0;

11、2 实验结果(三)实验题目三:研究生类既有学生类的特征,又有教师类的特征,试通过多重继承说明一个研究生类,包括设置学生和教师的相关属性以及显示学生和教师的相关属性等功能。 1 程序源代码#include<iostream>#include<cstring>using namespace std;class studentprivate:char name20;char num20;int mark;public:void set(char na, char nu, int m)strcpy_s(name, na); strcpy_s(num, nu); mark = m

12、;void Showme()cout << "姓名为:" << name << 'n'cout << "学号为:" << num << 'n'cout << "成绩为:" << mark << 'n'class teacherprivate:char major20;int salary;char worktime30;public:void set(char ma, int s,

13、 char work)strcpy_s(major, ma); salary = s; strcpy_s(worktime, work);void Showme()cout << "他的专业为:" << major << 'n'cout << "他的工资为:" << salary << 'n'cout << "他的工作时间为:" << worktime << 'n'class gr

14、aduated :public student, public teacherprivate:char experience20;char his_professor29;public:void set(char na, char nu, int m, char ma, int sa, char work, char ex, char his)student:set(na, nu, m); teacher:set(ma, sa, work); strcpy_s(experience,ex); strcpy_s(his_professor, his);void Show()student:Sho

15、wme(); teacher:Showme();cout << "该研究成果:" << experience << 'n'cout << "导师:" << his_professor << 'n'int main()char na20, nu20, ma20, work20, his29,ex20;int m, sa;cout << "请输入学生的姓名,学号和成绩:"cin >> na >> nu

16、 >> m;student one;one.set(na, nu, m);one.Showme();cout << "请输入老师的专业,工资与上班时间:"cin >> ma >> sa >> work;teacher some;some.set(ma, sa, work);some.Showme();cout << "请输入研究生的研究成果和导师:"cin >> ex >> his;graduated someone;someone.set(na, nu, m

17、, ma, sa, work, ex, his);someone.Show();return 0;2 实验结果 (四)实验题目四:用继承的方法描述下列类:商品类、家电类、电视类,自己设计其属性和方法,编写主函数对各类事物的特征和功能进行模拟。1 程序源代码#include <iostream>#include<string>using namespace std;class goodsprivate:char name20;int price;public:goods(char *n, int p)strcpy_s(name, n);price = p;void sho

18、w()cout << "商品名称:" << name << endl;cout << "价格:" << price << endl;class Ele :public goodsprivate:double haod;public:Ele(char *n, int p, double h) :goods(n, p)haod = h;void show()goods:show();cout << "每小时耗电量" << haod <&l

19、t; "度" << endl;class T :public Eleprivate:char leix10;public:T(char *n, int p, double h, char *l) :Ele(n, p, h)strcpy_s(leix, l);void show()Ele:show();cout << "类型:" << leix << endl;int main()cout << "商品:" << endl;goods A("自行车&quo

20、t;, 600);A.show();cout << "家电:" << endl;Ele B("电冰箱", 2000, 1.3);B.show();cout << "电视机:" << endl;T y("JY", 5000, 0.6, "液晶");y.show();return 0;2 实验结果(五)实验题目五:定义一个一元三次方程类,类中至少包含构造函数、求根函数、输出方程根的函数,相加函数,输出方程函数等5个函数,并编写主函数测试各成员函数。提示

21、:两个一元三次方程对应相加仍然是一个一元三次方程。求根方法采用迭代方法,迭代公式为: Xn+1=XnF(Xn)/F(Xn) ,结束迭代的条件|F(Xn+1)|<10-7与 |Xn+1-Xn|<10-7 。 一元三次方程的一般形式如下: dX3+cX2+bX+a=0 。将一元三次方程类作为基类,派生出一元四次方程类,派生类的成员函数与基类相同,大致也有5个函数,编写主函数加以测试。1 程序源代码#include<iostream> #include<cmath>using namespace std;class fxprivate:double a;doubl

22、e b;double c;double d;public:fx()a = 0; b = 0; c = 0; d = 0;fx(double a1, double b1, double c1, double d1)a = a1; b = b1; c = c1; d = d1;void Register(double a1, double b1, double c1, double d1)a = a1; b = b1; c = c1; d = d1;double gen();double fx1(double x);double fx2(double x);void showgen(double

23、x);void display(fx f);fx add(fx f1);double geta() return a; ;double getb() return b; ;double getc() return c; ;double getd() return d; ;double fx:gen()double x = 1; double eps = 1.0e-7;while (fabs(fx1(x)>eps)x -= fx1(x) / fx2(x);return x;void fx:showgen(double x)cout << "函数y=" <

24、;< a << "*x*x*x+" << b << "*x*x+" << c << "*x+" << d << "的解为:" << x << endl; double fx:fx1(double x) x = a*x*x*x + b*x*x + c*x + d;return x;double fx:fx2(double x) x = 3 * a*x*x + 2 * b*x + c;return x;vo

25、id fx:display(fx f)cout << "方程为:" << endl;cout << f.a << "*x*x*x+" << f.b << "*x*x+" << f.c << "*x+" << f.d << "=0" << endl;fx fx:add(fx f1)double a2, b2, c2, d2;a2 = a + f1.a; b2 = b

26、+ f1.b;c2 = c + f1.c; d2 = d + f1.d;fx f3(a2, b2, c2, d2);return f3;/一元四次class FX :public fxdouble e;public:FX() :fx()e = 0;FX(double e1, double a1, double b1, double c1, double d1)fx:Register(a1, b1, c1, d1);e = e1;double FXgen()double x = 1; double eps = 1.0e-7;while (fabs(FX1(x)>eps)x -= FX1(x

27、) / FX2(x);return x;void FXshowgen(double x)cout << e << "*x*x*x*x+"fx:showgen(FXgen();double FX1(double x) x = fx:fx1(x) + e*x*x*x*x;return x;double FX2(double x) x = fx:fx2(x) + e * 4 * x*x*x;return x;void FXdisplay(FX F)cout << "方程为:" << endl;cout <&

28、lt; F.e << "*x*x*x*x+" << F.geta() << "*x*x*x+" << F.getb() << "*x*x+" << F.getc() << "*x+" << F.getd() << "=0" << endl;FX add(FX F1)double a2, b2, c2, d2, e2;a2 = fx:geta() + F1.geta(); b2

29、= fx:getb() + F1.getb();c2 = fx:getc() + F1.getc(); d2 = fx:getd() + F1.getd();e2 = e + F1.e;FX F3(e2, a2, b2, c2, d2);return F3;int main()cout << "*测试一元三次函数类*" << endl;double a1, b1, c1, d1, a2, b2, c2, d2;cout << "请输入四个系数:"cin >> a1 >> b1 >>

30、c1 >> d1;fx f(a1, b1, c1, d1);f.display(f);f.showgen(f.gen();cout << "请输入方程二的四个系数:"cin >> a2 >> b2 >> c2 >> d2;fx f3(a2, b2, c2, d2);cout << "相加后"f.display(f.add(f3);cout << "*测试一元四次函数类*" << endl;double a3, b3, c3, d

31、3, e3, a4, b4, c4, d4, e4;cout << "请输入五个系数:"cin >> a3 >> b3 >> c3 >> d3 >> e3;FX F(a3, b3, c3, d3, e3);F.FXdisplay(F);F.FXshowgen(F.FXgen();cout << "请输入方程二的四个系数:"cin >> a4 >> b4 >> c4 >> d4 >> e4;FX F3(a4, b4

32、, c4, d4, e4);cout << "相加后"F.display(F.add(F3);2 实验结果(六)实验题目六:采用继承方式定义一个三层生日蛋糕类,不论基类还是派生类都至少包含5个函数:构造函数、设置数据成员函数、求蛋糕体积、运算符>重载函数、输出生日祝词与蛋糕形状函数。并编写主函数测试各成员函数。继承方式如下:首先定义圆柱体形状蛋糕类,只有3个数据成员,半径、高、生日祝词。然后派生出圆柱体_方柱体蛋糕类,即在圆柱体形状上增加方柱体形状。假定方柱体的正方形面积小于圆柱体的圆形面积,注意方柱体的高与正方形的边长不一定相等。再用圆柱体_方柱体蛋糕类

33、派生出圆柱体_方柱体_菱形体蛋糕类,即在方柱体形状上增加菱形柱体形状。假定菱形柱体的菱形面积小于方柱体的正方形面积。提示:运算符>重载指两个蛋糕对象的体积大小。基类和派生类数据成员不能定义为public。设置数据成员函数、求蛋糕体积、求蛋糕表面积函数、输出生日祝词与蛋糕形状函数均为同名重载函数,例如分别采用函数名为init()、volume()、area()、output()。红颜色的函数功能下一章实验完成。 具体程序运行结果参考下图: 1 程序源代码#include<iostream>#include<cmath>const double pi = 3.1415

34、926;using namespace std;class cake1private:double r, h;char *wish;public:cake1(double a, double b, char *p)set(a, b, p);void set(double a, double b, char *p)r = a; h = b; wish = p;double V();void show();double cake1:V()double v = pi*r*r*h;return v;void cake1:show()cout << "蛋糕祝词:" <

35、;< wish << endl;cout << "蛋糕圆柱部分信息:" << endl;cout << "半径:" << r << " " << "高:" << h << " " << "体积:" << V();cout << endl;class cake2 :public cake1private:double l, h2;

36、public:cake2(double a, double b, char *p, double c, double d) :cake1(a, b, p)l = c; h2 = d;void set(double a, double b, char *p, double c, double d)cake1:set(a, b, p);l = c; h2 = d;double V()double v = l*l*h2;return v;void show()cake1:show();cout << "方柱型部分信息:" << endl;cout <

37、< "边长:" << l << " " << "高:" << h2 << " " << "体积:" << V();cout << endl;class cake3 :public cake2private:double x1, x2, h3;public:cake3(double a, double b, char *p, double c, double d, double e, double

38、 f, double g) :cake2(a, b, p, c, d)x1 = e; x2 = f; h3 = g;void set(double a, double b, char *p, double c, double d, double e, double f, double g)cake2:set(a, b, p, c, d);x1 = e; x2 = f; h3 = g;double V()double v = (x1*x2 / 2)*h3;return v;void show()cake2:show();cout << "菱柱型部分信息:" << endl;cout << &qu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论