面向对象程序设计实验册_第1页
面向对象程序设计实验册_第2页
面向对象程序设计实验册_第3页
面向对象程序设计实验册_第4页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

1、文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.学生实验报告册(理工类)课程名称: 面向对象程序设计专业班级:_ 13 计统 2 班 _学生学号: _38学生姓名:曹亚孟_ _1文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.所属院部:计算机工程学院指导教师:吴刚20152016学年第一学期金陵科技学院教务处制实验报告书写要求实验报告原则上要求学生手写, 要求书写工整。 若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。纸张一律采用 A4 的纸张。实验报告书写说明实验报告中一至四项内容为必填项, 包括实验目的和要求; 实验仪器和设备;实验内容

2、与过程;实验结果与分析。各院部可根据学科特点和实验具体要求增加项目。填写注意事项( 1)细致观察,及时、准确、如实记录。( 2)准确说明,层次清晰。( 3)尽量采用专用术语来说明事物。( 4)外文、符号、公式要准确,应使用统一规定的名词和符号。2文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.( 5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处 。实验报告批改说明实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。实验报告装订要求实验批改完毕后, 任课老师将每门课程的每个实验项目的实验报告以自然班

3、为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。3实验项目名称:C+ 基础程序设计实验学时:3同组学生姓名:无实验地点:A107实验日期:9.18实验成绩:批改教师:吴刚批改时间:4一、实验目的和要求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. 掌握 st

4、ring 类型的用法。5. 掌握 C+语言编程时输入和输出格式控制。6. 掌握多文件结构的使用。7. 掌握重载函数的使用。二、实验设备和环境1. 计算机每人一台。2. 安装 WindowsXP或者以上版本操作系统。3. 安装 Visual C+6.0 或者 Visual C+2005 以上版本。三、实验内容及步骤1. 给出 Visual C+调试一个简单应用程序的步骤, 要求程序输出字符串 “ Hello !Welcome to C+!”。程序:#include<iostream>using namespace std;int main()cout<<"Hel

5、lo!"<<endl;5cout<<"Welcome to C+!"<<endl;return 0;运行结果:2. 调试以下程序,观察运行结果。#include<iostream>using namespace std;void main()int a,b=10;int&ra=a;a=20;cout<<a<<endl;cout<<ra<<endl;cout<<&a<<endl;cout<<&ra<<

6、endl;ra=b;cout<<a<<endl;cout<<ra<<endl;cout<<b<<endl;6cout<<&a<<endl;cout<<&ra<<endl;cout<<&b<<endl;运行结果及结果分析:3. 编写一程序,实现九九乘法表的 2 中格式输出,格式如下:(1)1234567891123456789224681012141618336······

7、;·448·······5510·······6612·······7714·······8816·······79918·······(2)1234567891 12

8、2 43 3 6 944812165510152025661218243036771421283542498816243240485664991827364554637281注:要求每种输出格式均写成函数形式程序:#include <iostream>using namespace std;int main()int i,j;cout<<" 显示 1:"<<endl;for(i=1;i<10;i+)for(j=1;j<10;j+)8cout<<i*j<<"t"cout<<

9、endl;cout<<endl<<" 显示 2:"<<endl;for(i=1;i<10;i+)for(j=1;j<=i;j+)cout<<j*i<<"t"cout<<endl;return 0;运行结果:94将第 3 题改成多文件结构实现。 要求该工程中有3 个.cpp 文件和 1 个 .h 文件。程序:.h :#include <iostream>using namespace std;int cfb1(int x,int y);int cfb2(int

10、x,int y);.cpp :( 1)#include "3head.h"void main()int i,j;cout<<cfb1(i,j)<<endl;cout<<cfb2(i,j)<<endl;10( 2)#include "3head.h"int cfb1(int i,int j)cout<<" 显示 1:"<<endl;for(i=1;i<10;i+)for(j=1;j<10;j+)cout<<i*j<<"t

11、"cout<<endl;return 0;( 3)#include "3head.h"int cfb2(int i,int j)cout<<" 显示 2:"<<endl;for(i=1;i<10;i+)11for(j=1;j<=i;j+)cout<<j*i<<"t"cout<<endl;return 0;5. 编程实现比较两个数的大小,求较大值(要求使用重载函数实现)。程序:#include<iostream>using name

12、space std;int max(int a,int b)return a>b?a:b;int main()int m,n;cout<<"Enter two integer:"cin>>m>>n;cout<<"The bigger is:"<<max(m,n)<<endl;return 0;12运行结果:6. 编写一个程序,判断一个字符串是否为另一个字符串的子串,若是,返回字串在主串中的位置。 要求不适用 strstr 函数,自己编写一个子函数实现。 (建议使用 string

13、 类型,而非字符数组。)程序:#include <iostream>#include "string.h"using namespace std;void main()char a="how are you?"char b="are"int i=0,j,na,nb,flag;na=strlen(a);nb=strlen(b);flag=1;for(i=0;i!='0'i+)if(ai=bj) j+;运行结果:13四、实验体会熟悉了 C+开发环境的使用,对C+编程有了初步的了解,能够编写一些简单的和 C类似的

14、程序。实验项目名称:类与对象实验学时:3同组学生姓名:无实验地点:A107实验日期:9.25实验成绩:批改教师:吴刚批改时间:14一、实验目的和要求1. 掌握类和对象的概念、定义方法以及类与对象的简单用法。2. 掌握成员函数的实现与调用方法。3. 深刻领会类与对象的区别。4. 理解类实现数据隐藏和封装的原理。5. 掌握构造函数、 拷贝构造函数、分析构造函数的定义和使用,尤其注意组合类中它们的调用顺序。二、实验设备和环境1. 计算机每人一台。2. 安装 WindowsXP或者以上版本操作系统。3. 安装 Visual C+6.0 或者 Visual C+2005 以上版本。三、实验内容及步骤1.

15、 用面向对象的程序设计方法实现栈的操作。 栈又叫堆栈, 是一个常用的数据结构,它是一种运算受限的线性表, 仅允许在表的一端进行插入和删除运算, 是一种后进先出表。提示:栈用一维整型数组来表示, 栈的大小定义为10;栈定义为一个类stack ;实现栈的创建、进栈和出栈、栈的消亡。进栈函数:void push(intn) ;出栈函数: int pop(void);程序:#include<iostream>using namespace std;const int maxsize=10;class stack15public:void init()top=-1;void push(int

16、 n);int pop();void dead();private:int top;int datamaxsize;void stack:push(int n)if(top=maxsize)cout<<" 栈已满! "<<endl;elsetop+;datatop=n;int stack:pop()16if(top<0)cout<<" 栈下溢! "<<endl;return 0;elsetop-;return datatop+1;void stack:dead()if(top<0)cout<

17、;<" 栈下溢! "<<endl;elsetop-;cout<<" 栈中还剩 "<<(top+1)<<" 个元素 "<<endl;int main()17stack seqstack;int i,x,m;seqstack.init();cout<<" 请输入 10 个数字: "for(i=0;i<maxsize;i+)cin>>x;seqstack.push(x);cout<<" 请输入你所需要的操

18、作:"<<endl;cout<<1<<""<<" 元素出栈! "<<endl;cout<<2<<""<<" 栈的消亡! "<<endl;cin>>m;switch(m)case 1:for(i=0;i<maxsize;i+)cout<<""<<seqstack.pop();break;case 2:for(i=0;i<maxsize

19、;i+)18seqstack.dead();break;return 0;运行结果:2. 将第 1 题中的实验内容改为多文件结构实现。程序:#include <iostream>using namespace std;#define N 10class stackstatic int top;int aN;public:void push(int n);void pop();void die();19;#include <head.h>int stack:top=0;void stack:push(int n)if(top<N)atop+=n;cout<&l

20、t;" 进栈数据: "<<n<<endl;elsecout<<" 堆栈已经满了,不能再加数进去了!"<<endl;void stack:pop()if(top<=0)cout<<" 堆栈已经空了,没有数据了!"<<endl;elsecout<<" 出栈数据: "cout<<a-top<<endl;void stack:die()20int i;for(i=0;i<N;i+)ai=0;cout<

21、;<" 消亡堆栈! "<<endl;#include "head.h"void main()int n,m;cout<<" 输入两个你要输入的数据N 和 M: "cin>>n>>m;stack s;s.push(n);s.push(m);s.pop();s.pop();s.pop();s.die();3. 设计一个用于人事管理的 People (人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性: number(编号)、sex(性别)、birthday (出生日期)、id

22、 (身份证号)等。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和折构函数、 拷贝构造函数、内联成员函数、组合类等。21程序:#include <iostream>#include <string>using namespace std;class Dateprivate:int year;int month;int day;public:Date()Date(int y,int m,int d)year=y; month=m; day=d;void set()cin>>year>>mon

23、th>>day;void display()cout<<year<<" 年 "<<month<<"月"<<day<<" 日"22class Personprivate:int num;char sex;Date birthday;char ID18;public:Person()Person(int n,int y,int m,int d,char id18,char s='m'):birthday(y,m,d)num=n; sex=s

24、; strcpy(ID,id);Person(Person& p)num=p.num;sex=p.sex;birthday=p.birthday;strcpy(ID,p.ID);void input()cout<<" 录入数据: "<<endl;cout<<" 编号: " cin>>num;23cout<<" 性别 (m/f) : "cin>>sex;cout<<" 生日: "birthday.set();cout<&

25、lt;" 身份证号: "cin>>ID; ID18='0'cout<<endl;void output()cout<<" 编号: "<<num<<endl;cout<<" 性别: "<<sex<<endl;cout<<" 生日: "birthday.display();cout<<endl;cout<<" 身份证号: "<<ID<&

26、lt;endl;Person()cout<<" "<<num<<" 号人员已经录入 "<<endl;int main()Person p1;24p1.input();p1.output();return 0;运行结果:4. 设计一个计算薪水的类 Payroll ,它的数据成员包括:单位小时的工资、已经工作的小时数、本周应付工资数。在主函数定义一个具有10 个元素的对象数组(代表 10 个雇员)(可以定义普通对象数组,也可以定义堆对象数组) 。程序询问每个雇员本周已经工作的小时数,然后显示应得的工资。要求:

27、输入有效性检验:每个雇员每周工作的小时数不能大于 60,同时也不能为负数。程序:#include<string.h>#include<stdio.h>class Payroll25private:double money;double total;public:int time;int GetTime()doprintf("input time:");scanf("%d",&time);while(time< 0 && time >60 );money = 100;return 0;int Ge

28、tTotalMoney()return (total =time * money);void Print()printf("total:%lfn",total);26main()Payroll p10;p0.GetTime();p0.GetTotalMoney();p0.Print();运行结果:四、实验体会对多文件有了更深了解,能够熟练的掌握多文件的使用方法。学习了C+的构造函数,以及拷贝构造函数,接触友元组合类等新知识,需要课后多加练习。27实验项目名称:静态成员与友元实验学时:3同组学生姓名:无实验地点:A107实验日期:10.09实验成绩:批改教师:吴刚批改时间:2

29、8一、实验目的和要求1. 掌握类中静态成员的定义的方法。2. 掌握静态数据成员初始化的方法。3. 掌握静态数据成员和数据函数成员的访问和使用方法。4. 掌握友元函数的定义和使用方法。5. 了解友元类的使用方法。二、实验设备和环境1. 计算机每人一台。2. 安装 WindowsXP或者以上版本操作系统。3. 安装 Visual C+6.0 或者 Visual C+2005 以上版本。三、实验内容及步骤1. 任意输入 10 个数,计算器总和及平均值。设计程序测试该功能(要求用类、静态友员实现)。程序:#include<iostream>#include<string>usi

30、ng namespace std;class numberint No;int figure;static double sum;static int sumpeople;29public:number(int n,int ifigure)No=n;figure=ifigure;sum+=figure;sumpeople+;static int Sum()return sum;static double Average()return sum/sumpeople;int number:sumpeople=0;double number:sum=0;void main()int i,j;cout

31、<<"The ten number is:"<<endl;for(i=1;i<=10;i+)30cin>>j;number(i,j);cout<<"The sum is:"<<number:Sum()<<endl; cout<<"The average is:"<<number:Average()<<endl;运行结果:2. 求两点之间的距离(要求定义点 Point 类,并用友员函数实现) 。程序:#include <

32、;iostream>#include <cmath>using namespace std;class Pointdouble x,y;public:Point(double m,double n):x(m),y(n)friend double Distance(Point& px,Point& py);double Distance(Point& px,Point& py)31double d;d=sqrt(px.x-py.x)*(px.x-py.x)+(px.y-py.y)*(px.y-py.y);return d;void main()P

33、oint p1,p2;int a1,b1,a2,b2;cin>>a1>>b1>>a2>>b2;p1=Point(a1,b1);p2=Point(a2,b2);cout<<"the distance is"<<Distance(p1,p2)<<endl;运行结果:3. 定义一个经理类 Manager,其成员数据包括编号 id, 姓名 name和年龄 age,均声明为 private 访问属性。再定义一个员工类 Employee,其成员数据及访问属性与经理类相同。将 Manager 类声明为 E

34、mployee 类的友员函数,并在 Manager类中定义一个函数访问Employee类的私有数据成员并进行输出。程序:#include<stdlib.h>#include<iostream>32using namespace std;class Employeefriend class Manager;private:int id;char *n;int age;public:Employee()id = 1;n = "abc"age = 20;class Managerprivate:int id;char name10;int age;publ

35、ic:Manager()33Employee e;void Print(Employee &e)cout<<e.id<<endl;cout<<e.n<<endl;cout<<e.age<<endl;void main()Employee e;Manager m;m.Print(e);system("pause");运行结果:四、实验体会懂得了静态成员的使用、 静态成员的作用域和使用方法。理解并掌握友元的34使用。35实验项目名称:继承与派生实验学时:3同组学生姓名:无实验地点:A107实验日期:

36、10.16实验成绩:批改教师:吴刚批改时间:36一、实验目的和要求1. 掌握利用单继承和多重继承的方式定义派生类的方法。2. 理解在各种继承方式下构造函数和析构函数的执行顺序。3. 理解和掌握 public 、 protected 、private 对基类成员的访问机制。4. 理解虚基类的概念,引入虚基类的目的和作用。5. 理解在虚基类时的构造函数和析构函数的执行顺序。二、实验设备和环境1. 计算机每人一台。2. 安装 WindowsXP或者以上版本操作系统。3. 安装 Visual C+6.0 或者 Visual C+2005 以上版本。三、实验内容及步骤1. 分析以下程序,写出运行结果。#

37、include<iostream>using namespace std;class Basepublic:Base() cout<<"执行基类构造函数 "<<endl;Base() cout<<"执行基类折构函数 "<<endl;class Derive:public Basepublic:37Derive() cout<<" 执行派生类构造函数 "<<endl; Derive() cout<<" 执行派生类折构函数 "

38、;<<endl;void main()Derive d;运行结果:2. 分析以下程序,写出运行结果。#include<iostream.h>calss Basepublic:Base()cout<<”基类构造函数” <<endl;Base()cout<< ”基类析构函数” <<endl;class Derive:public Basepublic:38Derive()cout<<”派生类构造函数” <<endl;Derive()cout<<”派生类析构函数” <<endl;

39、;void main()Derive *p=new Derive;Delete p;运行结果:3. 求一个三角形物体的面积,同时求一个圆形物体的面积(要求使用继承)。#include <iostream>#include <cmath>using namespace std;class Objectpublic:void getData()cout<<"Input x,y,z:"cin>>x>>y>>z;39protected:int x,y,z;class Triangle:public Object

40、public:void getData()cout<<"triangle:"Object:getData();double Area()double d=(x+y+z)/2;double s=sqrt(d*(d-x)*(d-y)*(d-z);return s;class Circle:public Objectpublic:void getData()cout<<"circle:(only radius=x)"<<endl;Object:getData();40double Area()double s=x*x*3.1

41、415;return s;void main()Triangle t;t.getData();cout<<"The results:"<<t.Area()<<endl;Circle c;c.getData();cout<<"The results:"<<c.Area()<<endl;运行结果:4. 一个三口之家,大家知道父亲会开车,母亲会唱歌。但其父亲还会修电视机,只有家里人知道。小孩既会开车又会唱歌, 甚至也会修电视机。 母亲瞒着任何人在外面做小工以补贴家用。此外小孩还会打乒乓球。

42、编写程序输出者三口之家一天从事的活动: 先是父亲出去开车, 然后母亲出去工作(唱歌),母亲下班后去做两个小时的小工。小孩在俱乐部打球,在父亲回家41后,开车玩,后又高兴地唱歌。晚上,小孩和父亲一起修电视机。程序:#include<iostream>using namespace std;class fatherprotected:void repairTV()cout<<"Repairing TV."<<endl;public:void drive ()cout<<"Father is driving."<<endl;friend main();class mothervoid dootherJob()cout<<"M

温馨提示

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

评论

0/150

提交评论