C++实验一类与简单对象.docx

上传人:b****6 文档编号:15803060 上传时间:2023-07-08 格式:DOCX 页数:16 大小:57.81KB
下载 相关 举报
C++实验一类与简单对象.docx_第1页
第1页 / 共16页
C++实验一类与简单对象.docx_第2页
第2页 / 共16页
C++实验一类与简单对象.docx_第3页
第3页 / 共16页
C++实验一类与简单对象.docx_第4页
第4页 / 共16页
C++实验一类与简单对象.docx_第5页
第5页 / 共16页
C++实验一类与简单对象.docx_第6页
第6页 / 共16页
C++实验一类与简单对象.docx_第7页
第7页 / 共16页
C++实验一类与简单对象.docx_第8页
第8页 / 共16页
C++实验一类与简单对象.docx_第9页
第9页 / 共16页
C++实验一类与简单对象.docx_第10页
第10页 / 共16页
C++实验一类与简单对象.docx_第11页
第11页 / 共16页
C++实验一类与简单对象.docx_第12页
第12页 / 共16页
C++实验一类与简单对象.docx_第13页
第13页 / 共16页
C++实验一类与简单对象.docx_第14页
第14页 / 共16页
C++实验一类与简单对象.docx_第15页
第15页 / 共16页
C++实验一类与简单对象.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++实验一类与简单对象.docx

《C++实验一类与简单对象.docx》由会员分享,可在线阅读,更多相关《C++实验一类与简单对象.docx(16页珍藏版)》请在冰点文库上搜索。

C++实验一类与简单对象.docx

C++实验一类与简单对象

天津理工大学实验报告

学院(系)名称:

计算机与通信工程学院

姓名

学号

专业

计算机科学与技术

班级

教学班

实验项目

实验一类与简单对象

课程名称

高级程序设计语言II

课程代码

实验时间

2016年9月6日第7、8节

实验地点

计算机软件实验室7-219

批改意见

成绩

 

教师签字:

实验目的:

(1)理解类和对象的概念;

(2)掌握类与对象的定义方法;

(3)理解类的成员的访问控制的含义,公有和私有成员的区别;

(4)掌握构造函数和析构函数的含义与作用、定义方式和实现;

(5)能够根据给定的要求定义类并实现类的成员函数;

(6)掌握string类的使用方法

(7)了解C++面向对象程序设计的基本思想、基本方法和基本步骤;

(8)掌握MSVisualC++6.0或DEVC++调试C++程序的基本方法、基本步骤。

实验内容:

一、实验名称:

类和简单对象。

二、实验目的:

(1)理解类和对象的概念;

(2)掌握类与对象的定义方法;

(3)理解类的成员的访问控制的含义,公有和私有成员的区别;

(4)掌握构造函数和析构函数的含义与作用、定义方式和实现;

(5)能够根据给定的要求定义类并实现类的成员函数;

(6)掌握string类的使用方法

(7)了解C++面向对象程序设计的基本思想、基本方法和基本步骤;

(8)掌握MSVisualC++6.0或DEVC++调试C++程序的基本方法、基本步骤。

三、练习项目

1.

输入下列程序,按要求进行实验,并记录实验的结果。

#include

usingnamespacestd;

classCoordinate

{

public:

Coordinate(intx1,inty1){x=x1;y=y1;}

Coordinate(Coordinate&p);

~Coordinate(){cout<<"Destructoriscalled."<

intgetx(){returnx;}

intgety(){returny;}

private:

intx,y;

};

Coordinate:

:

Coordinate(Coordinate&p){

x=p.x;y=p.y;

cout<<"Copyinitianizationconstructoriscalled."<

}

intmain(){

Coordinatep1(3,4);

Coordinatep2(p1);

Coordinatep3=p2;

cout<<"p3=("<

return0;

}

(1)记录程序的运行结果

(2)将Coordinate类中带有两个参数的构造函数进行修改,在函数体内增加如下语句:

cout<<”Constructoriscalled.”<

重新记录程序的运行结果,并解释输出结果。

(3)按下列要求进行测试。

在主函数体内,添加如下语句:

Coordinatep4;

Coordinatep5

(2);

测试程序会出现什么错误?

为什么?

如何对已有的构造函数进行适当的修改?

(4)结合第

(2)和第(3)步的修改和运行结果:

分析创建不同的对象时如何调用适当的构造函数?

1.

.

2.

调用一次构造函数。

3.

Coordinatep4;

Coordinatep5

(2);错误,因为类没有默认的构造函数,也没有无参数的构造函数和一个参数的构造函数;

改正可为:

将Coordinate(intx1,inty1){x=x1;y=y1;}改为Coordinate(intx1=0,inty1=0){x=x1;y=y1;}

4.系统会自动根据参数的类型和参数的个数,调用合适的函数。

 

2.

根据注释语句的提示实现类Date的成员函数,并将完整的程序编译、连接成功以保证程序能够正确运行。

#include

classDate{

public:

voidprintDate();//显示日期

voidsetDay(int);//设置日的值

voidsetMonth(int);//设置月的值

voidsetYear(int);//设置年的值

private:

intday,month,year;

};

intmain(){

DatetestDay;

testDay.setDay(5);

testDay.setMonth(10);

testDay.setYear(2010);

testDay.printDate();

return0;

};

完整如下:

#include

classDate{

public:

voidprintDate();//显示日期

voidsetDay(int);//设置日的值

voidsetMonth(int);//设置月的值

voidsetYear(int);//设置年的值

private:

intday,month,year;

};

voidDate:

:

setDay(inta)

{day=a;}

voidDate:

:

setMonth(intb)

{month=b;}

voidDate:

:

setYear(intc)

{year=c;}

voidDate:

:

printDate()

{cout<

intmain(){

DatetestDay;

testDay.setDay(5);

testDay.setMonth(10);

testDay.setYear(2010);

testDay.printDate();

return0;

};

运行结果:

3.

下面是一个计算器类的定义,请完成该类的成员函数的实现,并设计一个主函数使用该类和相关成员函数以测试

该类设计的正确性。

#include

usingnamespacestd;

classcoutner

{

public:

counter(intnumber);//构造函数

voidincrement();//给value原值加1

voiddecrement();//给value原值减1

intgetvalue();//计数器值

voidprint();//显示计数

privat取得e:

intvalue;//数据成员

};

intmain(){

...//定义counter类的几个对象并调用有关成员函数

return0;

}

程序如下:

#include

usingnamespacestd;

classcoutner{

public:

coutner(intnumber):

value(number)//构造函数

{}

voidincrement();//给value原值加1

voiddecrement();//给value原值减1

intgetvalue();//取得计数器值

voidprint();//显示计数

private:

intvalue;//数据成员

};

voidcoutner:

:

increment()//给value原值加1

{value=value+1;}

voidcoutner:

:

decrement()//给value原值减1

{value=value-1;}

intcoutner:

:

getvalue()//取得计数器值

{returnvalue;}

voidcoutner:

:

print()//显示计数

{cout<

intmain(){

ints;

cin>>s;

coutnero1(s);//定义counter类的几个对象并调用有关成员函数

o1.increment();

o1.print();

coutnero2(s);//定义counter类的几个对象并调用有关成员函数

o2.decrement();

o2.print();

return0;

}

4.

定义一个类ClsName,要求该类设计如下:

(1)该类有两个整型数据成员x和y;

(2)为该类重载三个不同的构造函数:

分别为无参数、带一个参数和带两个参数的构造函数,要求在构造函数中输出必要的信息以示区别;

(3)设计2个成员函数用来读取数据成员x和y;

(4)设计2个成员函数用来设置数据成员x和y;

(5)设计1个成员函数用来在屏幕上打印输出数据成员x和y;

(6)在main()函数中用三个不同的构造函数创建3个对象,并使用所有的成员函数对这些对象进行必要的操作。

程序如下:

#include

usingnamespacestd;

classClsName{

private:

intx,y;

public:

ClsName(inta,intb)

{x=a;y=b;}

ClsName(intc)

{x=c;y=0;}

ClsName()

{x=1;y=1;}

intgetx()

{returnx;}

intgety()

{returny;}

voidprint();

};

voidClsName:

:

print()

{

cout<

}

intmain()

{

ClsNameo1,o2(3),o3(4,5);

o1.print();

o2.print();

o3.print();

return0;

}

 

运行结果:

 

5.

建立类cylinder,包括两个数据成员radius和height,分别表示圆柱体的半径和高度,cylinder类的构造函数被传递了两个double值来初始化这两个成员;定义成员函数area()和volume用来求圆柱体的表面积和体积,定义成员函数print()打印cylinder类的相关信息。

最后,在主函数中对cylinder类的设计进行测试。

程序如下:

#include

usingnamespacestd;

classcylinder{

private:

doubleradius,height,a,v;

public:

cylinder(doublea,doubleb)

{radius=a;height=b;}

doublearea();

doublevolume();

voidprint(cylinder&t);

};

doublecylinder:

:

volume()

{

doublev;

v=height*radius*radius*3.14;

returnv;

}

doublecylinder:

:

area()

{

doublea;

a=2*radius*3.14*height;

returna;

}

voidcylinder:

:

print(cylinder&t)

{

cout<<"area="<

}

intmain()

{

cylindero1(3,3);

o1.print(o1);

return0;

}

运行结果:

6.

定义一个学生类CStudent实现简单的学籍管理功能,要求该类至少实现以下功能:

(1)录入学生的基本信息(包括姓名,学号,性别,年龄,专业,入学时间,各门功课成绩)

(2)输出学生的基本信息

(3)选课(输入时间和所选的课程)

(4)统计每门课的学分绩点

(5)统计每学期的平均学分绩点

(6)统计重考科目

(7)统计重修科目

程序如下:

#include

#include

usingnamespacestd;

classCStudent{

public:

CStudent(stringn,stringnu,strings,inta,stringz,inty,intm,intd,intma,inte,intcyy)//构造函数

{

name=n;number=nu;sex=s;age=a;zy=z;year=y;month=m;day=d;math=ma;english=e;c=cyy;

}

voidprint()//打印出学生信息

{cout<<"姓名:

"<

"<

"<

"<

"<

"<

"<

"<

"<

voidxuanke();//声明选课日期,课程函数

floatjsjidian(floatfenshu)//由分数算绩点函数

{

floatjd;

if(fenshu<60)jd=0;

elseif(60<=fenshu&&fenshu<65)jd=1;

elseif(65<=fenshu&&fenshu<70)jd=1.5;

elseif(70<=fenshu&&fenshu<75)jd=2;

elseif(75<=fenshu&&fenshu<80)jd=2.5;

elseif(80<=fenshu&&fenshu<85)jd=3;

elseif(85<=fenshu&&fenshu<90)jd=3.5;

elseif(90<=fenshu&&fenshu<96)jd=4;

elsejd=4.5;

returnjd;

}

voidjidian(CStudent&t);//声明分别计算每科的绩点函数

 

private:

stringname,sex,zy,number;

intage,year,month,day,math,english,c;

floatmj,ej,cj;

};

voidCStudent:

:

xuanke()//定义选课日期,课程函数

{

intnian,yue,ri;

cout<<"输入选课年月日"<

cin>>nian>>yue>>ri;

cout<<'\n'<

stringkecheng;

cin>>kecheng;

cout<<"选课日期为:

"<

}

voidCStudent:

:

jidian(CStudent&t)//分别计算每科的绩点函数,平均绩点,并打印出来,若绩点为0,则为重考科目,并打印出来

{

floatmjd,ejd,cjd,avejd;

mjd=t.jsjidian(math);

ejd=t.jsjidian(english);

cjd=t.jsjidian(c);

cout<<"数学绩点:

"<

"<

"<

avejd=(mjd*6+ejd*4+cjd*4)/(6+4+4);

cout<<"平均绩点为:

"<

if(mjd==0)cout<<"数学为重考科目"<

if(ejd==0)cout<<"英语为重考科目"<

if(cjd==0)cout<<"c为重考科目"<

}

intmain()

{

CStudento1("raven","20091945","男",21,"计算机科学与技术",2009,9,12,94,76,91);

o1.print();

o1.xuanke();

o1.jidian(o1);

CStudento2("calar","20091999","男",21,"计算机科学与技术",2009,9,12,34,36,91);

o2.print();

o2.xuanke();

o2.jidian(o1);

return0;

}

运行结果:

注意:

(1)新设计的类中所需要的数据成员需要根据所要实现的功能自行设计;

(2)用一个演示程序完成对所设计的新类的功能测试,并给出测试数据和实验结果;

(3)为增加程序可读性,请在程序中对类成员进行适当注释说明;

实验要求:

(1)实验前做好预习,并写出预习报告。

(2)实验期间禁止做与实验无关的项目、以及浏览网页、打游戏等。

(3)认真完成并按时提交实验报告。

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2