面向对象程序的设计实验册

上传人:沈*** 文档编号:101847792 上传时间:2022-06-05 格式:DOC 页数:63 大小:354KB
收藏 版权申诉 举报 下载
面向对象程序的设计实验册_第1页
第1页 / 共63页
面向对象程序的设计实验册_第2页
第2页 / 共63页
面向对象程序的设计实验册_第3页
第3页 / 共63页
资源描述:

《面向对象程序的设计实验册》由会员分享,可在线阅读,更多相关《面向对象程序的设计实验册(63页珍藏版)》请在装配图网上搜索。

1、 . . . 学 生 实 验 报 告 册理工类课程名称:面向对象程序设计 专业_ _13计统2班_ 学生_1305103038 学生: 亚孟 _ _ 所属院部: 计算机工程学院 指导 吴刚 20 15 20 16 学年 第 一 学期 金陵科技学院教务处制实验报告书写要求实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。纸一律采用A4的纸。实验报告书写说明实验报告中一至四项容为必填项,包括实验目的和要求;实验仪器和设备;实验容与过程;实验结果与分析。各院部可根据学科特点和实验具体要求增加项目。填写注意事项1细致观察,及时、准确、如实记录。2准

2、确说明,层次清晰。3尽量采用专用术语来说明事物。4外文、符号、公式要准确,应使用统一规定的名词和符号。5应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。实验报告批改说明实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。实验报告装订要求实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。63 / 63实验项目名称: C+基础程序设计 实验学时: 3 同组学生: 无 实验地点: A107 实验日期: 9.18 实验成绩:批改教师: 吴刚 批改时

3、间:一、实验目的和要求1.了解Visual C+6.0或者Visual C+2005以上版本的特点。2.学会Visual C+6.0或者Visual C+2005以上版本的开发环境,来创建和调试标准的C+控制后台应用程序。3.学会使用Visual C+6.0或者Visual C+2005以上版本的开发环境中的程序调试功能,例如单步执行、设置断点、观察变量值等。4.掌握string类型的用法。5.掌握C+语言编程时输入和输出格式控制。6.掌握多文件结构的使用。7.掌握重载函数的使用。二、实验设备和环境1.计算机每人一台。2.安装WindowsXP或者以上版本操作系统。3.安装Visual C+6

4、.0或者Visual C+2005以上版本。三、实验容及步骤1.给出Visual C+调试一个简单应用程序的步骤,要求程序输出字符串Hello!Welcome to C+!。程序:#includeusing namespace std;int main coutHello!endl; coutWelcome to C+!endl; return 0;运行结果:2.调试以下程序,观察运行结果。#includeusing namespace std;void mainint a,b=10;int&ra=a;a=20;coutaendl;coutraendl;cout&aendl;cout&raen

5、dl;ra=b;coutaendl;coutraendl;coutbendl;cout&aendl;cout&raendl;cout&bendl;运行结果及结果分析:3.编写一程序,实现九九乘法表的2中格式输出,格式如下:1 1 2 3 4 5 6 7 8 9 1 1 2 3 4 5 6 7 8 9 2 2 4 6 8 10 12 14 16 18 3 3 6 4 4 8 5 5 10 6 6 12 7 7 14 8 8 16 9 9 18 2 1 2 3 4 5 6 7 8 9 1 1 2 2 4 3 3 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 2

6、4 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 81注:要求每种输出格式均写成函数形式程序:#include using namespace std;int mainint i,j; cout显示1:endl;fori=1;iforj=1;jcouti*jt;coutendl;coutendl显示2:endl;fori=1;i forj=1;j coutj*it; coutendl; return 0;运行结果:4将第3题改成多文件结构实现。要求该工程中有3个.cpp文件和1个.h文

7、件。程序:.h:#include using namespace std;int cfb1;int cfb2;.cpp:1#include 3head.hvoid mainint i,j;coutcfb1endl;coutcfb2endl;2#include 3head.hint cfb1cout显示1:endl;fori=1;iforj=1;jcouti*jt;coutendl;return 0;3#include 3head.hint cfb2cout显示2:endl;fori=1;i forj=1;j coutj*it; coutendl; return 0;5.编程实现比较两个数的大小

8、,求较大值要求使用重载函数实现。程序:#includeusing namespace std;int maxreturn ab?a:b;int mainint m,n;coutmn;coutThe bigger is:maxendl;return 0;运行结果:6.编写一个程序,判断一个字符串是否为另一个字符串的子串,若是,返回字串在主串中的位置。要求不适用strstr函数,自己编写一个子函数实现。建议使用string类型,而非字符数组。程序:#include #include string.husing namespace std;void mainchar a=how are you?;c

9、har b=are;int i=0,j,na,nb,flag;na=strlen;nb=strlen;flag=1;forif j+;运行结果:四、实验体会熟悉了C+开发环境的使用,对C+编程有了初步的了解,能够编写一些简单的和C类似的程序。实验项目名称: 类与对象 实验学时: 3 同组学生: 无 实验地点: A107 实验日期:9.25 实验成绩:批改教师: 吴刚 批改时间:一、实验目的和要求1.掌握类和对象的概念、定义方法以及类与对象的简单用法。2.掌握成员函数的实现与调用方法。3.深刻领会类与对象的区别。4.理解类实现数据隐藏和封装的原理。5.掌握构造函数、拷贝构造函数、分析构造函数的定

10、义和使用,尤其注意组合类中它们的调用顺序。二、实验设备和环境1.计算机每人一台。2.安装WindowsXP或者以上版本操作系统。3.安装Visual C+6.0或者Visual C+2005以上版本。三、实验容及步骤1.用面向对象的程序设计方法实现栈的操作。栈又叫堆栈,是一个常用的数据结构,它是一种运算受限的线性表,仅允许在表的一端进行插入和删除运算,是一种后进先出表。提示:栈用一维整型数组来表示,栈的大小定义为10;栈定义为一个类stack;实现栈的创建、进栈和出栈、栈的消亡。进栈函数:void push;出栈函数:int pop;程序:#includeusing namespace std

11、;const int maxsize=10;class stackpublic:void inittop=-1;void push;int pop;void dead;private:int top;int datamaxsize;void stack:pushifcout栈已满!endl;elsetop+;datatop=n;int stack:popiftopcout栈下溢!endl;return 0;elsetop-;return datatop+1;void stack:deadiftopcout栈下溢!endl;elsetop-;cout栈中还剩个元素endl;int mainsta

12、ck seqstack;int i,x,m;seqstack.init;cout请输入10个数字:;fori=0;icinx;seqstack.push;cout请输入你所需要的操作:endl;cout1元素出栈!endl;cout2栈的消亡!m;switch case 1: fori=0;i coutseqstack.pop; break; case 2: fori=0;i seqstack.dead; break; return 0;运行结果:2.将第1题中的实验容改为多文件结构实现。程序:#include using namespace std;#define N 10class sta

13、ckstatic int top;int aN;public:void push;void pop;void die;#include int stack:top=0;void stack:pushiftopatop+=n;cout进栈数据:nendl;elsecout堆栈已经满了,不能再加数进去了!endl;void stack:popiftopcout堆栈已经空了,没有数据了!endl;elsecout出栈数据:;couta-topendl;void stack:dieint i;fori=0;iai=0;cout消亡堆栈!endl;#include head.hvoid mainint

14、n,m;coutnm;stack s;s.push;s.push;s.pop;s.pop;s.pop;s.die;3.设计一个用于人事管理的People人员类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number编号、sex性别、birthday出生日期、id号等。其中出生日期声明为一个日期类嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和折构函数、拷贝构造函数、联成员函数、组合类等。程序:#include #include using namespace std;class Dateprivate: int year;int month; int day; p

15、ublic: DateDateyear=y; month=m; day=d; void set cinyearmonthday; void display coutyear年month月day日; ; class Personprivate: int num; char sex; Date birthday; char ID18;public:PersonPerson:birthday num=n; sex=s; strcpy;Personnum=p.num;sex=p.sex;birthday=p.birthday;strcpy; void inputcout录入数据:endl;coutnu

16、m;cout性别:;cinsex;cout生日:;birthday.set;coutID; ID18=0;coutendl;void outputcout编号:numendl;cout性别:sexendl;cout生日:;birthday.display;coutendl;cout号:IDendl; Personcout num号人员已经录入endl;int mainPerson p1;p1.input;p1.output;return 0;运行结果:4.设计一个计算薪水的类Payroll,它的数据成员包括:单位小时的工资、已经工作的小时数、本周应付工资数。在主函数定义一个具有10个元素的对象

17、数组代表10个雇员可以定义普通对象数组,也可以定义堆对象数组。程序询问每个雇员本周已经工作的小时数,然后显示应得的工资。要求:输入有效性检验:每个雇员每周工作的小时数不能大于60,同时也不能为负数。程序:#include#includeclass Payrollprivate:double money;double total;public:int time;int GetTimedoprintf;scanf; whiletime60 ; money = 100; return 0;int GetTotalMoneyreturn ; void Printprintf; ;mainPayroll

18、 p10;p0.GetTime;p0.GetTotalMoney;p0.Print;运行结果:四、实验体会对多文件有了更深了解,能够熟练的掌握多文件的使用方法。学习了C+的构造函数,以及拷贝构造函数,接触友元组合类等新知识,需要课后多加练习。实验项目名称: 静态成员与友元 实验学时: 3 同组学生: 无 实验地点: A107 实验日期: 10.09 实验成绩:批改教师: 吴刚 批改时间:一、实验目的和要求1.掌握类中静态成员的定义的方法。2.掌握静态数据成员初始化的方法。3.掌握静态数据成员和数据函数成员的访问和使用方法。4.掌握友元函数的定义和使用方法。5.了解友元类的使用方法。二、实验设备

19、和环境1.计算机每人一台。2.安装WindowsXP或者以上版本操作系统。3.安装Visual C+6.0或者Visual C+2005以上版本。三、实验容及步骤1.任意输入10个数,计算器总和及平均值。设计程序测试该功能要求用类、静态友员实现。程序:#include#includeusing namespace std;class numberint No;int figure;static double sum; static int sumpeople;public:numberNo=n;figure=ifigure;sum+=figure;sumpeople+;static int S

20、umreturn sum;static double Averagereturn sum/sumpeople;int number:sumpeople=0;double number:sum=0;void mainint i,j;coutThe ten number is:endl;fori=1;icinj;number;coutThe sum is:number:Sumendl;coutThe average is:number:Averageendl;运行结果:2.求两点之间的距离要求定义点Point类,并用友员函数实现。程序:#include #include using namespa

21、ce std;class Pointdouble x,y;public:Point:x,yfriend double Distance;double Distancedouble d;d=sqrt*+*;return d;void mainPoint p1,p2;int a1,b1,a2,b2;cina1b1a2b2;p1=Point;p2=Point;coutthe distance isDistanceendl;运行结果:3.定义一个经理类Manager,其成员数据包括编号id,name和年龄age,均声明为private访问属性。再定义一个员工类Employee,其成员数据及访问属性与经

22、理类相同。将Manager类声明为Employee类的友员函数,并在Manager类中定义一个函数访问Employee类的私有数据成员并进行输出。程序:#include#includeusing namespace std;class Employeefriend class Manager; private: int id; char *n; int age;public:Employeeid = 1;n = abc;age = 20;class Managerprivate:int id;char name10;int age;public:ManagerEmployee e; void

23、Print coute.idendl;coute.nendl;coute.ageendl; ;void mainEmployee e;Manager m;m.Print;system; 运行结果:四、实验体会懂得了静态成员的使用、静态成员的作用域和使用方法。理解并掌握友元的使用。实验项目名称: 继承与派生 实验学时: 3 同组学生: 无 实验地点: A107 实验日期: 10.16 实验成绩:批改教师: 吴刚 批改时间:一、实验目的和要求1.掌握利用单继承和多重继承的方式定义派生类的方法。2.理解在各种继承方式下构造函数和析构函数的执行顺序。3.理解和掌握public、protected、pr

24、ivate对基类成员的访问机制。4.理解虚基类的概念,引入虚基类的目的和作用。5. 理解在虚基类时的构造函数和析构函数的执行顺序。二、实验设备和环境1.计算机每人一台。2.安装WindowsXP或者以上版本操作系统。3.安装Visual C+6.0或者Visual C+2005以上版本。三、实验容及步骤1.分析以下程序,写出运行结果。#includeusing namespace std;class Basepublic:Base cout执行基类构造函数endl;Base cout执行基类折构函数endl;class Derive:public Basepublic:Derive cout执

25、行派生类构造函数endl;Derive cout执行派生类折构函数endl;void mainDerive d;运行结果:2. 分析以下程序,写出运行结果。#includecalss Basepublic: Basecout基类构造函数endl;Basecout基类析构函数endl;class Derive:public Base public:Derivecout派生类构造函数endl;Derivecout派生类析构函数endl;;void mainDerive *p=new Derive;Delete p;运行结果:3.求一个三角形物体的面积,同时求一个圆形物体的面积要求使用继承。#inc

26、lude #include using namespace std;class Objectpublic:void getDatacoutxyz;protected:int x,y,z;class Triangle:public Objectpublic:void getDatacouttriangle:;Object:getData;double Areadouble d=/2;double s=sqrtd*;return s;class Circle:public Objectpublic:void getDatacoutcircle:endl;Object:getData;double

27、Areadouble s=x*x*3.1415;return s;void mainTriangle t;t.getData;coutThe results:t.Areaendl;Circle c;c.getData;coutThe results:c.Areaendl;运行结果:4.一个三口之家,大家知道父亲会开车,母亲会唱歌。但其父亲还会修电视机,只有家里人知道。小孩既会开车又会唱歌,甚至也会修电视机。母亲瞒着任何人在外面做小工以补贴家用。此外小孩还会打乒乓球。编写程序输出者三口之家一天从事的活动:先是父亲出去开车,然后母亲出去工作唱歌,母亲下班后去做两个小时的小工。小孩在俱乐部打球,在父

28、亲回家后,开车玩,后又高兴地唱歌。晚上,小孩和父亲一起修电视机。程序:#includeusing namespace std;class father protected:void repairTVcoutRepairing TV.endl; public: void drive coutFather is driving.endl; friend main;class mother void dootherJobcoutMother is doing other job!;public: virtual void singcoutMother is singing songs.endl; f

29、riend main;class child:public father,public motherpublic: void drive coutChild is driving .endl; void singcoutChild is singing.endl; void repaircoutChild is repairing tv.endl; void playingPingPangcoutChild is playing pingpang.;int main coutmain: endl; father f; mother m; child c; f.drive; m.sing; m.

30、dootherJob; c.playingPingPang; c.drive; c.sing; f.repairTV; c.repair; return 0;运行结果:5.设计定义一个哺乳动物类Mammal,再由此派生出狗类Dog和猪类Pig,从狗类Dog和猪类Pig又派生出PigDog类。定义一个PigDog类的对象,观察基类与各派生类的构造函数和析构函数的调用顺序。程序:#include using namespace std;class Mammalpublic:Mammalcout调用mammal构造函数endl;Mammalcout调用mammal析构函数endl;class Dog

31、:public Mammalpublic:Dogcout调用dog构造函数endl;Dogcout调用dog析构函数endl;class Pig:public Mammalpublic:Pigcout调用pig构造函数endl;Pigcout调用pig析构函数endl;class PigDog:public Dog,public Pigpublic:PigDogcout调用pigdog构造函数endl;PigDogcout调用pigdog析构函数endl;void main/* Mammal m;*/Dog d;Pig p;PigDog pd;运行结果:四、实验体会本次实验学习了继承和派生,对

32、于其使用以及理解有点困难。实验项目名称: 多态性 实验学时: 3 同组学生: 无 实验地点: A107 实验日期: 10.23 实验成绩:批改教师: 吴刚 批改时间:一、实验目的和要求1.加深理解继承和多继承的概念、应用等。2.掌握虚函数的定义方法,以及在实现多态性中的作用;理解掌握实现动态多态性的前提条件,理解静态多态性和动态多态性的区别。3.理解运算符重载的概念和实质;掌握预案算重载函数的定义方法;掌握运算符重载为类的成员函数和友元函数的方法;掌握几种常用运算符的重载,用来解决函数。二、实验设备和环境1.计算机每人一台。2.安装WindowsXP或者以上版本操作系统。3.安装Visual

33、C+6.0或者Visual C+2005以上版本。三、实验容及步骤1.利用虚函数实现的多态性来求四种几何图形的面积。这四种几何图形是:三角形、矩形、正方形和圆。程序:#include #define PI 3.1415926using namespace std;class Areadouble x,y;public:Area:x,yifcout三角形的面积为:x*y/2endl;else ifcout矩形面积为:x*yendl;Area:xifcout正方形的面积为:x*xendl;else ifcout圆的面积为:PI*x*xendl;void mainArea a;Area b;Area

34、 c;Area d;运行结果:2.声明Point类,有坐标-x,-y两个成员变量;对Point类重载+自增、自减运算符,实现对坐标值的改变。程序:#include using namespace std;class Pointdouble _x,_y;public:Point_x=point._x;_y=point._y;Point:_x,_yvoid operator +cout原来的值为:_xendl;_x=_x+2;cout改过后的值为:_xendl;double getxreturn _x;double getyreturn _y;void maindouble x,y;Point p

35、;p.operator +;运行结果:3.定义一个复数类,通过重载运算符:*,/,直接实现两个复数之间的乘除运算。编写一个完整的程序,测试重载运算符的正确性。要求乘法*用友元函数实现重载,除法/用成员函数实现重载。程序:#include using namespace std;class Complexdouble r,v;public:Complexr=c.r;v=c.v;Complex:r,vvoid operator =;void showcoutr=0?+:-viendl;friend Complex operator +;friend Complex operator *;Compl

36、ex operator /;double getrreturn r;double fetvreturn v;void Complex:operator =r=c.r;v=c.v;Complex operator *double ar=a.getr;double av=a.fetv;double br=b.getr;double bv=b.fetv;Complex c;return c;Complex operator *double ar=a.getr;double av=a.fetv;Complex c;cout*的结果为:;return c;Complex Complex:operator

37、 /Complexca.r*r-a.v*/a.r*a.r+a.v*,/a.r*a.r+a.v*;cout/的结果为:;return c;void mainComplex a,b,test;test=a*b;test.show;test=a/b;test.show;运行结果:4.在第3题基础上,增加重载函数的加法和减法运算符的功能,实现两个复数的加法,一个复数和一个实数的加法;两个复数的减法,一个复数与一个实数的减法。用成员函数实现加法运算符的重载,用友元函数实现减法运算符的重载。 要求:自己设计主函数,完成程序的调试工作。 程序:#include using namespace std;cla

38、ss Complexdouble r,v;public:Complexr=c.r;v=c.v;Complex:r,vvoid operator =;void showcoutr=0?+:viendl;friend Complex operator *;friend Complex operator -;friend Complex operator -;Complex operator/;Complex operator+;Complex operator+;double getrreturn r;double fetvreturn v;void Complex:operator =r=c.r

39、;v=c.v;Complex operator *double ar=a.getr;double av=a.fetv;double br=b.getr;double bv=b.fetv;Complex c;cout友元函数实现与复数的乘法:;return c;Complex Complex:operator /Complex ca.r*r-a.v*/a.r*a.r+a.v*,/a.r*a.r+a.v*;cout成员函数实现与复数的除法:;return c;Complex Complex:operator +Complex c;cout成员函数实现与复数的加法:;return c;Complex

40、 Complex:operator +Complex c;cout成员函数实现与实数的加法:;return c;Complex operator -Complex c;cout友元函数实现与复数的减法:;return c;Complex operator -Complex c;cout友元函数实现与实数的减法:;return c;void mainComplex a,b,test;test=a*b;test.show;test=a/b;test.show;test=a + b;test.show;test=a + 5;test.show;test=a-b;test.show;test=a-5;

41、test.show;运行结果:四、实验体会本次学习了多态性,增加了函数的复用性,很大程度的减少了代码的重复性。实验项目名称: 异常处理 实验学时: 3 同组学生: 无 实验地点: A107 实验日期: 11.20 实验成绩:批改教师: 吴刚 批改时间:一、实验目的和要求1.正确理解C+的异常处理机制。2.学习异常处理的声明和执行过程二、实验设备和环境1.计算机每人一台。2.安装WindowsXP或者以上版本操作系统。3.安装Visual C+6.0或者Visual C+2005以上版本。三、实验容及步骤1.声明一个异常类Cexception,有成员函数Reason,用来显示异常的类型,在子函数中触发异常,在主程序中处理异常,观察程序的执行流程。 程序:#include using namespace std;int Div;void mainTrycout5/2=Divendl;cout8/0=Divendl;cout7/1=Divendl;catchcoutexcept of deviding zero.n;coutthis is ok.n;int Divifthrow y;return x/y; 运行结果:2.设计一个异常抽象类Exception,在此基础上派生一个OutOfMemory类响应存不足,一个RangeError类响应输入的数不

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!