《面向对象程序设计》实验指导书.docx

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

《面向对象程序设计》实验指导书.docx

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

《面向对象程序设计》实验指导书.docx

《面向对象程序设计》实验指导书

《面向对象程序设计》实验指导书

 

实验1熟悉VC开发环境,函数重载

实验目的:

熟悉VC开发环境,掌握函数重载

实验内容:

1建立如图界面

2编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型、单精度实型、双精度实型,用重载函数实现,数据定义如下

inta[]={1,3,2,5,6,9,0,6};//定义a

floatb[]={1.6,3.3,2.8,5.6,6.8,9.6,0.6,6.8};//定义b

doublec[]={1.2,3.1,2.6,5.8,6.8,9.8,0.8,6.2};//定义c

3.点击运行按钮排序,并用编辑框输出结果

参考程序

voidCFirstvcDlg:

:

OnRun()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CStringmessage;

CEdit*pEdit;

pEdit=(CEdit*)this->GetDlgItem(IDC_MES);//找到编辑框空间

pEdit->SetSel(0,-1);//先清屏

pEdit->Clear();

inti=0;

for(i=0;i<100;i++)

{

message.Format("第%d个数\r\n",i);//打印结果

pEdit->SetSel(-1,-1);//自动卷屏到底端

pEdit->ReplaceSel(message);

}

}

 

实验2类和对象

实验目的:

熟悉C++类的定义和对象生成,掌握函数重载,掌握类、类的成员函数、类的成员函数的定义方式。

理解类成员的访问控制方式。

掌握对象的定义和操作对象的方法。

理解构造函数和析构函数的定义与执行过程。

掌握重载构造函数的方法。

实验内容:

编写设计一个People(人)类。

该类的数据成员有姓名(name)、年龄(age)、身高(height)、体重(weight)和人数(num),其中人数为静态数据成员,成员函数有构造函数(People)、进食(Eatting)、运动(Sporting)、显示(Show)和显示人数(ShowNum)。

其中构造函数由已知参数姓名(nm)、年龄(a)、身高(h)和体重(w)构造对象,进食函数使体重加1,运动函数使身高加1,显示函数用于显示人的姓名、年龄、身高、体重,显示人数函数为静态成员函数,用于显示人数。

假设年龄的单位为岁,身高的单位为厘米,体重的单位为市斤,要求所有数据成员为private访问权限,所有成员函数为public访问权限,在主函数中定义若干个对象,通过对象直接访问类的所有非静态成员函数,通过类访问静态成员函数。

在如下界面中显示信息

参考程序:

#include//编译预处理命令

usingnamespacestd;//使用命名空间std

classPeople

{

private:

//数据成员

charname[9];//姓名

intage;//年龄

intheight;//身高

doubleweight;//体重

staticintnum;//人数

public:

//公有函数

People(charnm[]="路人甲",inta=16,inth=168,intw=118):

age(a),height(h),weight(w){strcpy(name,nm);num++;}voidEatting(){weight++;}//进食

voidSporting(){height++;}//运动

voidShow()const//显示信息

{

cout<<"个人信息:

"<

cout<<"姓名:

"<

cout<<"年龄:

"<

cout<<"身高:

"<

cout<<"体重:

"<

}

staticvoidShowNum()//显示人数

{cout<<"人数:

"<

};

intPeople:

:

num=0;//初始化静态数据成员num

intmain()//主函数main()

{

Peoplep1;//定义对象

p1.Show();//显示信息

Peoplep2("李敏",18,170,108);//定义对象

p2.Eatting();//进食

p2.Sporting();//运动

p2.Show();//显示信息

People:

:

ShowNum();//显示人数

system("PAUSE");//调用库函数system(),输出提示信息

return0;//返回值,返回操作系统

}

 

实验3模板

实验目的:

掌握类模板与函数模板掌握模板类和模板函数的定义。

实验内容:

编写一个使用数组类模板Array对数组求最大值和求元素和的程序,要求编写出测试程序。

参考程序:

#include//编译预处理命令

usingnamespacestd;//使用命名空间std

//声明数组类模板

template

classArray

{

private:

//数据成员

ElemType*elem;//存储数据元素值

intsize;//数组元素个数

public:

//公有函数

Array(intsz):

size(sz){elem=newElemType[size];}//构造函数

~Array(){deleteelem;}//析构函数

voidSetElem(ElemTypee,inti);//设置元素值

ElemTypeGetElem(inti)const;//求元素值

ElemTypeMax()const;//求最大值

ElemTypeSum()const;//求元素之和

};

template

voidArray:

:

SetElem(ElemTypee,inti)//设置元素值

{

if(i<0||i>=size)

{

cout<<"元素位置错!

"<

exit

(1);//退出程序的运行,返回到操作系统

}

elem[i]=e;//设置元素值为e

}

template

ElemTypeArray:

:

GetElem(inti)const//求元素值

{

if(i<0||i>=size)

{

cout<<"元素位置错!

"<

exit

(2);//退出程序的运行,返回到操作系统

}

returnelem[i];//返回元素值elem[i]

}

intmain()//主函数main()

{

inta[]={1,9,7,5,6,3};//定义数组a

intn=6;//数组元素个数

Arrayobj(n);//定义数组对象

inti;//定义变量

for(i=0;i

obj.SetElem(a[i],i);//设置数组元素值

for(i=0;i

cout<

cout<

cout<<"最大值为:

"<

cout<<"各元素和为:

"<

system("PAUSE");//调用库函数system(),输出系统提示信息

return0;//返回值,返回操作系统

}

 

实验4派生与继承

实验目的:

理解类的继承的概念,能够定义和使用类的继承关系。

掌握派生类的声明与定义方法。

熟悉公有派生类和私有派生类的访问特性。

学习虚基类在解决二义性问题中的作用。

实验内容:

编程实现:

有一个汽车类Vehicle,它具有一个需传递参数的构造函数,还拥有保护数据成员车轮个数wheels和车重weight。

小汽车类Car是Vehicle的私有派生类,其中包含载人数passengerLoad。

卡车类Truck是Vehicle的私有派生类,其中包含载人数passengerLoad和载重量payload。

每个类都有相关数据的输出函数Show()。

参考程序:

#include//编译预处理命令

usingnamespacestd;//使用命名空间std

//声明汽车类

classVehicle

{

protected:

//保护成员

intwheel;//车轮个数

doubleweight;//车重

public:

//公有函数

Vehicle(intwh=4,doublewt=1000):

wheel(wh),weight(wt){}

voidShow()const//输出相关信息

{

cout<<"车轮个数:

"<

cout<<"车重:

"<

}

};

//声明小汽车类

classCar:

privateVehicle

{

private:

//私有成员

intpassengerLoad;//载人数

public:

//公有函数

Car(intwh=4,doublewt=1000,intp=5):

Vehicle(wh,wt),passengerLoad(p){}//构造函数

voidShow()const//输出相关信息

{

Vehicle:

:

Show();//调用基类的Show()

cout<<"载人数:

"<

}

};

//声明卡车类

classTruck:

privateVehicle

{

private:

//私有成员

intpassengerLoad;//载人数

doublepayload;//载重量

public:

//公有函数

Truck(intwh=4,doublewt=1000,intp=5,doublepay=2000):

Vehicle(wh,wt),passengerLoad(p),payload(pay){}

voidShow()const//输出相关信息

{

Vehicle:

:

Show();//调用基类的Show()

cout<<"载人数:

"<

cout<<"载重量:

"<

}

};

intmain()//主函数main()

{

Vehiclev;//定义对象

cout<<"汽车信息:

"<

v.Show();//输出信息

Carc;//定义对象

cout<

"<

c.Show();//输出信息

Truckt;//定义对象

cout<

"<

t.Show();//输出信息

system("PAUSE");//调用库函数system(),输出系统提示信息

return0;//返回值,返回操作系统

}

 

实验5多态性

实验目的:

理解静态和动态多态性。

掌握运算符重载的基本方法。

掌握虚函数的定义与使用方法。

实验内容:

编写程序,定义抽象基类Shape(形状),由它派生出2个派生类:

Circle(圆形)和Square(正方形),用函数ShowArea()分别显示各种图形的面积,最后还要显示所有图形的总面积。

要求用基类指针数组,数组的每个元素指向一个派生类对象。

参考程序:

#include//编译预处理命令

usingnamespacestd;//使用命名空间std

constdoublePI=3.1415926;//常量PI

constintNUM=2;//常量NUM

//声明形状抽象类

classShape

{

public:

//公有成员:

virtual~Shape(){}//虚析构函数

virtualvoidShowArea()const=0;//纯虚函数,显示面积

};

//声明矩形类

classRectangle:

publicShape

{

private:

//数据成员:

doubleheight;//高

doublewidth;//宽

public:

//公有函数:

Rectangle(doubleh,doublew):

height(h),width(w){}//构造函数

voidShowArea()const//显示面积

{

cout<<"矩形面积:

"<

}

};

//声明圆形类

classCircle:

publicShape

{

private:

//数据成员:

doubleradius;//半径

public:

//公有函数:

Circle(doubler):

radius(r){}//构造函数

voidShowArea()const//显示面积

{

cout<<"圆面积:

"<

}

};

intmain()//主函数main()

{

Shape*a[NUM];//抽象基类Shape指针数组

inti,select;//定义整型变量

for(i=0;i

{//依次产生各个图形

cout<<"输入图形类型(1:

矩形,2:

圆形):

";//输入提示

cin>>select;//输入选择

while(select<1||select>2)

{

cout<<"重新输入图形类型(1:

矩形,2:

圆形):

";

cin>>select;//输入选择

}

if(select==1)

{

doubleh;//高

doublew;//宽

cout<<"高:

";//输入提示

cin>>h;//输入高

cout<<"宽:

";//输入提示

cin>>w;//输入宽

a[i]=newRectangle(h,w);//a[i]指向矩形对象

}

else

{

doubler;//半径

cout<<"半径:

";//输入提示

cin>>r;//输入半径

a[i]=newCircle(r);//a[i]指向圆对象

}

}

for(i=0;i

{//依次显示面积及释放临时对象

a[i]->ShowArea();//显示面积

deletea[i];//释放临时对象

}

system("PAUSE");//调用库函数system(),输出系统提示

return0;//返回值,返回操作系统

}

 

实验6文件操作

实验目的:

掌握文件操作的基本技巧,文件的建立,打开,定位,读写和关闭

实验内容:

有一个整型数组,含10个整数,将这些数据存入到一个二进制文件中,然后再从这个文件中读出这些数据并显示在屏幕上。

intmain(void)//主函数main()

{

inta[]={1,5,78,90,25,16,18,86,91,10},n=10,x;

fstreamf;//定义文件对象

f.open("my_file.dat",ios:

:

out|ios:

:

binary);//以输出方式打开文件

if(f.fail())

{//打开文件失败

cout<<"打开文件失败!

"<

exit

(1);//退出程序

}

for(inti=0;i

f.write((char*)&a[i],sizeof(int));//写数据到文件中

f.close();//关闭文件

f.open("my_file.dat",ios:

:

in|ios:

:

binary);//以输入方式打开文件

if(f.fail())

{//打开文件失败

cout<<"打开文件失败!

"<

exit

(2);//退出程序

}

f.read((char*)&x,sizeof(int));//从文件中读出数据到x

while(!

f.eof())

{

cout<

f.read((char*)&x,sizeof(int));//从文件中读出数据到x

}

cout<

f.close();//关闭文件

system("PAUSE");//输出系统提示并返回操作系统

return0;//返回值0,返回操作系统

}

 

实验7基于对话框程序设计

实验目的:

掌握基于MFC程序设计基本技巧,掌握基本控件的

实验内容:

设计一个加法器,主要要求如下

2要求输入密码:

3主程序界面如下:

 

实验8基于单文档程序设计

实验目的:

掌握单文档程序的基本架构,掌握菜单项的添加,成员函数的定义

实验内容:

建立单文档程序,要求如下,启动界面如下

1建立如下启动界面,保持2秒:

2建立菜单:

计算器,调用计算器程序

3建立如下界面,

点击添加人员信息,则弹出如下对话框

输入信息后,在编辑框中显示

 

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

当前位置:首页 > 工作范文 > 行政公文

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

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