《面向对象程序设计》实验册.docx

上传人:b****2 文档编号:24312353 上传时间:2023-05-26 格式:DOCX 页数:52 大小:283.21KB
下载 相关 举报
《面向对象程序设计》实验册.docx_第1页
第1页 / 共52页
《面向对象程序设计》实验册.docx_第2页
第2页 / 共52页
《面向对象程序设计》实验册.docx_第3页
第3页 / 共52页
《面向对象程序设计》实验册.docx_第4页
第4页 / 共52页
《面向对象程序设计》实验册.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

《面向对象程序设计》实验册.docx

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

《面向对象程序设计》实验册.docx

《面向对象程序设计》实验册

《面向对象程序设计》实验册

 

学生实验报告册

(理工类)

 

课程名称:

面向对象程序设计专业班级:

_13计统2班_

(4)外文、符号、公式要准确,应使用统一规定的名词和符号。

(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。

实验报告批改说明

实验报告的批改要及时、认真、仔细,一律用红色笔批改。

实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。

实验报告装订要求

实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。

 

实验项目名称:

C++基础程序设计实验学时:

3

同组学生姓名:

无实验地点:

A107

实验日期:

9.18实验成绩:

批改教师:

吴刚批改时间:

一、实验目的和要求

1.了解VisualC++6.0或者VisualC++2005以上版本的特点。

2.学会VisualC++6.0或者VisualC++2005以上版本的开发环境,来创建和调试标准的C++控制后台应用程序。

3.学会使用VisualC++6.0或者VisualC++2005以上版本的开发环境中的程序调试功能,例如单步执行、设置断点、观察变量值等。

4.掌握string类型的用法。

5.掌握C++语言编程时输入和输出格式控制。

6.掌握多文件结构的使用。

7.掌握重载函数的使用。

二、实验设备和环境

1.计算机每人一台。

2.安装WindowsXP或者以上版本操作系统。

3.安装VisualC++6.0或者VisualC++2005以上版本。

三、实验内容及步骤

1.给出VisualC++调试一个简单应用程序的步骤,要求程序输出字符串“Hello!

WelcometoC++!

”。

程序:

#include

usingnamespacestd;

intmain()

{

cout<<"Hello!

"<

cout<<"WelcometoC++!

"<

return0;

}

运行结果:

 

2.调试以下程序,观察运行结果。

#include

usingnamespacestd;

voidmain()

{

inta,b=10;

int&ra=a;

a=20;

cout<

cout<

cout<<&a<

cout<<&ra<

ra=b;

cout<

cout<

cout<

cout<<&a<

cout<<&ra<

cout<<&b<

}

运行结果及结果分析:

 

3.编写一程序,实现九九乘法表的2中格式输出,格式如下:

(1)123456789

1123456789

224681012141618

336·······

448·······

5510·······

6612·······

7714·······

8816·······

9918·······

(2)123456789

11

224

3369

4481216

5510152025

661218243036

77142128354249

8816243240485664

991827364554637281

注:

要求每种输出格式均写成函数形式

程序:

#include

usingnamespacestd;

intmain()

{

inti,j;

cout<<"显示1:

"<

for(i=1;i<10;i++)

{

for(j=1;j<10;j++)

{

cout<

}

cout<

}

cout<

"<

for(i=1;i<10;i++)

{

for(j=1;j<=i;j++)

{

cout<

}

cout<

}

return0;

}

运行结果:

4.将第3题改成多文件结构实现。

要求该工程中有3个.cpp文件和1个.h文件。

程序:

.h:

#include

usingnamespacestd;

intcfb1(intx,inty);

intcfb2(intx,inty);

.cpp:

(1)

#include"3head.h"

voidmain()

{

inti,j;

cout<

cout<

}

(2)

#include"3head.h"

intcfb1(inti,intj)

{

cout<<"显示1:

"<

for(i=1;i<10;i++)

{

for(j=1;j<10;j++)

{

cout<

}

cout<

}

return0;

}

(3)

#include"3head.h"

intcfb2(inti,intj)

{

cout<<"显示2:

"<

for(i=1;i<10;i++)

{

for(j=1;j<=i;j++)

{

cout<

}

cout<

}

return0;

}

5.编程实现比较两个数的大小,求较大值(要求使用重载函数实现)。

程序:

#include

usingnamespacestd;

intmax(inta,intb)

{

returna>b?

a:

b;

}

intmain()

{

intm,n;

cout<<"Entertwointeger:

";

cin>>m>>n;

cout<<"Thebiggeris:

"<

return0;

}

运行结果:

6.编写一个程序,判断一个字符串是否为另一个字符串的子串,若是,返回字串在主串中的位置。

要求不适用strstr函数,自己编写一个子函数实现。

(建议使用string类型,而非字符数组。

程序:

#include

#include"string.h"

usingnamespacestd;

voidmain()

{

chara[]="howareyou?

";

charb[]="are";

inti=0,j,na,nb,flag;

na=strlen(a);

nb=strlen(b);

flag=1;

for(i=0;i!

='\0';i++)

{

if(a[i]==b[j])j++;

}

}

运行结果:

四、实验体会

熟悉了C++开发环境的使用,对C++编程有了初步的了解,能够编写一些简单的和C类似的程序。

 

实验项目名称:

类与对象实验学时:

3

同组学生姓名:

无实验地点:

A107

实验日期:

9.25实验成绩:

批改教师:

吴刚批改时间:

一、实验目的和要求

1.掌握类和对象的概念、定义方法以及类与对象的简单用法。

2.掌握成员函数的实现与调用方法。

3.深刻领会类与对象的区别。

4.理解类实现数据隐藏和封装的原理。

5.掌握构造函数、拷贝构造函数、分析构造函数的定义和使用,尤其注意组合类中它们的调用顺序。

二、实验设备和环境

1.计算机每人一台。

2.安装WindowsXP或者以上版本操作系统。

3.安装VisualC++6.0或者VisualC++2005以上版本。

三、实验内容及步骤

1.用面向对象的程序设计方法实现栈的操作。

栈又叫堆栈,是一个常用的数据结构,它是一种运算受限的线性表,仅允许在表的一端进行插入和删除运算,是一种后进先出表。

提示:

栈用一维整型数组来表示,栈的大小定义为10;栈定义为一个类stack;实现栈的创建、进栈和出栈、栈的消亡。

进栈函数:

voidpush(intn);出栈函数:

intpop(void);

程序:

#include

usingnamespacestd;

constintmaxsize=10;

classstack

{

public:

voidinit()

{

top=-1;

}

voidpush(intn);

intpop();

voiddead();

private:

inttop;

intdata[maxsize];

};

voidstack:

:

push(intn)

{

if(top==maxsize)

{

cout<<"栈已满!

"<

}

else

{

top++;

data[top]=n;

}

}

intstack:

:

pop()

{

if(top<0)

{

cout<<"栈下溢!

"<

return0;

}

else

{

top--;

returndata[top+1];

}

}

voidstack:

:

dead()

{

if(top<0)

{

cout<<"栈下溢!

"<

}

else

{

top--;

cout<<"栈中还剩"<<(top+1)<<"个元素"<

}

}

intmain()

{

stackseqstack;

inti,x,m;

seqstack.init();

cout<<"请输入10个数字:

";

for(i=0;i

{

cin>>x;

seqstack.push(x);

}

cout<<"请输入你所需要的操作:

"<

cout<<1<<""<<"元素出栈!

"<

cout<<2<<""<<"栈的消亡!

"<

cin>>m;

switch(m)

{

case1:

{

for(i=0;i

cout<<""<

break;

}

case2:

{

for(i=0;i

seqstack.dead();

break;

}

return0;

}

}

运行结果:

 

2.将第1题中的实验内容改为多文件结构实现。

程序:

#include

usingnamespacestd;

#defineN10

classstack

{

staticinttop;

inta[N];

public:

voidpush(intn);

voidpop();

voiddie();

};

#include

intstack:

:

top=0;

voidstack:

:

push(intn)

{

if(top

{

a[top++]=n;

cout<<"进栈数据:

"<

}

else

cout<<"堆栈已经满了,不能再加数进去了!

"<

}

voidstack:

:

pop()

{

if(top<=0)

cout<<"堆栈已经空了,没有数据了!

"<

else

{

cout<<"出栈数据:

";

cout<

}

}

voidstack:

:

die()

{

inti;

for(i=0;i

a[i]=0;

cout<<"消亡堆栈!

"<

}

#include"head.h"

voidmain()

{

intn,m;

cout<<"输入两个你要输入的数据N和M:

";

cin>>n>>m;

stacks;

s.push(n);

s.push(m);

s.pop();

s.pop();

s.pop();

s.die();

}

3.设计一个用于人事管理的People(人员)类。

考虑到通用性,这里只抽象出所有类型人员都具有的属性:

number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等。

其中“出生日期”声明为一个“日期”类内嵌子对象。

用成员函数实现对人员信息的录入和显示。

要求包括:

构造函数和折构函数、拷贝构造函数、内联成员函数、组合类等。

程序:

#include

#include

usingnamespacestd;

classDate

{

private:

intyear;

intmonth;

intday;

public:

Date(){}

Date(inty,intm,intd)

{

year=y;month=m;day=d;

}

voidset()

{

cin>>year>>month>>day;

}

voiddisplay()

{

cout<

}

};

classPerson

{

private:

intnum;

charsex;

Datebirthday;

charID[18];

public:

Person(){}

Person(intn,inty,intm,intd,charid[18],chars='m'):

birthday(y,m,d)

{

num=n;sex=s;strcpy(ID,id);

}

Person(Person&p)

{

num=p.num;

sex=p.sex;

birthday=p.birthday;

strcpy(ID,p.ID);

}

voidinput()

{

cout<<"录入数据:

"<

cout<<"编号:

";cin>>num;

cout<<"性别(m/f):

";

cin>>sex;

cout<<"生日:

";

birthday.set();

cout<<"身份证号:

";

cin>>ID;ID[18]='\0';

cout<

}

voidoutput()

{

cout<<"编号:

"<

cout<<"性别:

"<

cout<<"生日:

";

birthday.display();

cout<

cout<<"身份证号:

"<

}

~Person()

{

cout<<""<

}

};

intmain()

{

Personp1;

p1.input();

p1.output();

return0;

}

运行结果:

 

4.设计一个计算薪水的类Payroll,它的数据成员包括:

单位小时的工资、已经工作的小时数、本周应付工资数。

在主函数定义一个具有10个元素的对象数组(代表10个雇员)(可以定义普通对象数组,也可以定义堆对象数组)。

程序询问每个雇员本周已经工作的小时数,然后显示应得的工资。

要求:

输入有效性检验:

每个雇员每周工作的小时数不能大于60,同时也不能为负数。

程序:

#include

#include

classPayroll

{

private:

doublemoney;

doubletotal;

public:

inttime;

intGetTime()

{

do

{

printf("inputtime:

");

scanf("%d",&time);

}

while(time<0&&time>60);

money=100;

return0;

}

intGetTotalMoney()

{

return(total=time*money);

}

voidPrint()

{

printf("total:

%lf\n",total);

}

};

main()

{

Payrollp[10];

p[0].GetTime();

p[0].GetTotalMoney();

p[0].Print();

}

运行结果:

四、实验体会

对多文件有了更深了解,能够熟练的掌握多文件的使用方法。

学习了C++的构造函数,以及拷贝构造函数,接触友元组合类等新知识,需要课后多加练习。

实验项目名称:

静态成员与友元实验学时:

3

同组学生姓名:

无实验地点:

A107

实验日期:

10.09实验成绩:

批改教师:

吴刚批改时间:

一、实验目的和要求

1.掌握类中静态成员的定义的方法。

2.掌握静态数据成员初始化的方法。

3.掌握静态数据成员和数据函数成员的访问和使用方法。

4.掌握友元函数的定义和使用方法。

5.了解友元类的使用方法。

二、实验设备和环境

1.计算机每人一台。

2.安装WindowsXP或者以上版本操作系统。

3.安装VisualC++6.0或者VisualC++2005以上版本。

三、实验内容及步骤

1.任意输入10个数,计算器总和及平均值。

设计程序测试该功能(要求用类、静态友员实现)。

程序:

#include

#include

usingnamespacestd;

classnumber

{

intNo;

intfigure;

staticdoublesum;

staticintsumpeople;

public:

number(intn,intifigure)

{

No=n;

figure=ifigure;

sum+=figure;

sumpeople++;

}

staticintSum()

{

returnsum;

}

staticdoubleAverage()

{

returnsum/sumpeople;

}

};

intnumber:

:

sumpeople=0;

doublenumber:

:

sum=0;

voidmain()

{

inti,j;

cout<<"Thetennumberis:

"<

for(i=1;i<=10;i++)

{

cin>>j;

number(i,j);

}

cout<<"Thesumis:

"<

:

Sum()<

cout<<"Theaverageis:

"<

:

Average()<

}

运行结果:

 

2.求两点之间的距离(要求定义点Point类,并用友员函数实现)。

程序:

#include

#include

usingnamespacestd;

classPoint

{

doublex,y;

public:

Point(doublem,doublen):

x(m),y(n){}

frienddoubleDistance(Point&px,Point&py);

};

doubleDistance(Point&px,Point&py)

{

doubled;

d=sqrt((px.x-py.x)*(px.x-py.x)+(px.y-py.y)*(px.y-py.y));

returnd;

}

voidmain()

{

Pointp1,p2;

inta1,b1,a2,b2;

cin>>a1>>b1>>a2>>b2;

p1=Point(a1,b1);

p2=Point(a2,b2);

cout<<"thedistanceis"<

}

运行结果:

3.定义一个经理类Manager,其成员数据包括编号id,姓名name和年龄age,均声明为private访问属性。

再定义一个员工类Employee,其成员数据及访问属性与经理类相同。

将Manager类声明为Employee类的友员函数,并在Manager类中定义一个函数访问Employee类的私有数据成员并进行输出。

程序:

#include

#include

usingnamespacestd;

classEmployee

{

friendclassManager;

private:

intid;

char*n;

intage;

public:

Employee()

{

id=1;

n="abc";

age=20;

}

};

classManager

{

private:

intid;

charname[10];

intage;

public:

Manager()

{

Employeee;

}

voidPrint(Employee&e)

{

cout<

cout<

cout<

}

};

voidmain()

{

Employeee;

Managerm;

m.Print(e);

syste

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

当前位置:首页 > 高中教育 > 小学教育

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

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