版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、天津理工大学实验报告学院(系)名称:计算机与通信工程学院姓名 学号 专业 计算机科学与技术班级教学 班实验项目实验一 类与简单对象课程名称高级程序设计语言II课程代码0667026实验时间2016年9月6日 第7、8节实验地点计算机软件实验室7-219批改意见成绩教师签字: 实验目的:(1)理解类和对象的概念;(2)掌握类与对象的定义方法;(3)理解类的成员的访问控制的含义,公有和私有成员的区别;(4)掌握构造函数和析构函数的含义与作用、定义方式和实现;(5)能够根据给定的要求定义类并实现类的成员函数;(6)掌握string类的使用方法(7)了解C+面向对象程序设计的基本思想、基本方法和基本步
2、骤;(8)掌握MS Visual C+6.0或DEV C+调试C+程序的基本方法、基本步骤。实验内容:一、 实验名称:类和简单对象。二、 实验目的:(1)理解类和对象的概念;(2)掌握类与对象的定义方法;(3)理解类的成员的访问控制的含义,公有和私有成员的区别;(4)掌握构造函数和析构函数的含义与作用、定义方式和实现;(5)能够根据给定的要求定义类并实现类的成员函数;(6)掌握string类的使用方法(7)了解C+面向对象程序设计的基本思想、基本方法和基本步骤;(8)掌握MS Visual C+6.0或DEV C+调试C+程序的基本方法、基本步骤。三、 练习项目1.输入下列程序,按要求进行实验
3、,并记录实验的结果。#include <iostream>using namespace std;class Coordinatepublic:Coordinate(int x1, int y1)x=x1; y=y1;Coordinate(Coordinate &p);Coordinate()cout<<"Destructor is called."<<endl;int getx()return x;int gety()return y;private:int x, y;Coordinate:Coordinate(Coordina
4、te &p)x=p.x; y=p.y;cout<<"Copy initianization constructor is called."<<endl;int main()Coordinate p1(3,4);Coordinate p2(p1);Coordinate p3=p2;cout<<"p3=("<<p3.getx()<<","<<p3.gety()<<")"<<endl;return 0;(1) 记录程序
5、的运行结果(2) 将Coordinate类中带有两个参数的构造函数进行修改,在函数体内增加如下语句:cout<<”Constructor is called.”<<endl;重新记录程序的运行结果,并解释输出结果。(3) 按下列要求进行测试。在主函数体内,添加如下语句:Coordinate p4;Coordinate p5(2);测试程序会出现什么错误?为什么?如何对已有的构造函数进行适当的修改?(4) 结合第(2)和第(3)步的修改和运行结果:分析创建不同的对象时如何调用适当的构造函数?1. .2.调用一次构造函数。3.Coordinate p4;Coordinate
6、 p5(2);错误,因为类没有默认的构造函数,也没有无参数的构造函数和一个参数的构造函数;改正可为: 将Coordinate(int x1, int y1)x=x1; y=y1; 改为Coordinate(int x1=0, int y1=0)x=x1; y=y1;4.系统会自动根据参数的类型和参数的个数,调用合适的函数。2.根据注释语句的提示实现类Date的成员函数,并将完整的程序编译、连接成功以保证程序能够正确运行。#include <iostream.h>class Datepublic:void printDate();/显示日期void setDay(int);/设置日的
7、值void setMonth(int); /设置月的值void setYear(int); /设置年的值private:int day, month, year;int main()Date testDay;testDay.setDay(5);testDay.setMonth(10);testDay.setYear(2010);testDay.printDate();return 0;完整如下:#include <iostream.h>class Datepublic:void printDate();/显示日期void setDay(int);/设置日的值void setMont
8、h(int); /设置月的值void setYear(int); /设置年的值private:int day, month, year;void Date:setDay (int a)day=a;void Date:setMonth (int b)month=b;void Date:setYear (int c)year=c;void Date:printDate()cout<<year<<"."<<month<<"."<<day<<endl;int main()Date testD
9、ay;testDay.setDay(5);testDay.setMonth(10);testDay.setYear(2010);testDay.printDate();return 0;运行结果:3.下面是一个计算器类的定义,请完成该类的成员函数的实现,并设计一个主函数使用该类和相关成员函数以测试该类设计的正确性。#include <iostream>using namespace std;class coutnerpublic:counter(int number);/构造函数void increment();/给value原值加1void decrement();/给value
10、原值减1int getvalue();/计数器值void print();/显示计数privat取得e:int value;/数据成员;int main()./定义counter类的几个对象并调用有关成员函数return 0;程序如下:#include <iostream>using namespace std;class coutnerpublic:coutner(int number):value(number) /构造函数void increment(); /给value原值加1void decrement();/给value原值减1 int getvalue(); /取得计
11、数器值 void print(); /显示计数 private:int value; /数据成员;void coutner:increment() /给value原值加1value=value+1; void coutner:decrement()/给value原值减1value=value-1;int coutner:getvalue() /取得计数器值return value; void coutner:print() /显示计数cout<<value<<endl;int main()int s;cin>>s;coutner o1(s);/定义count
12、er类的几个对象并调用有关成员函数o1.increment();o1.print();coutner o2(s);/定义counter类的几个对象并调用有关成员函数o2.decrement();o2.print();return 0;4.定义一个类ClsName,要求该类设计如下:(1)该类有两个整型数据成员x和y;(2)为该类重载三个不同的构造函数:分别为无参数、带一个参数和带两个参数的构造函数,要求在构造函数中输出必要的信息以示区别;(3)设计2个成员函数用来读取数据成员x和y;(4)设计2个成员函数用来设置数据成员x和y;(5)设计1个成员函数用来在屏幕上打印输出数据成员x和y;(6)在
13、main()函数中用三个不同的构造函数创建3个对象,并使用所有的成员函数对这些对象进行必要的操作。程序如下:#include <iostream>using namespace std;class ClsName private:int x,y;public:ClsName(int a,int b)x=a;y=b;ClsName(int c)x=c;y=0;ClsName()x=1;y=1;int getx()return x;int gety()return y;void print();void ClsName:print()cout<<x<<"
14、; "<<y<<endl;int main()ClsName o1,o2(3),o3(4,5); o1.print(); o2.print(); o3.print(); return 0;运行结果:5.建立类cylinder,包括两个数据成员radius和height,分别表示圆柱体的半径和高度, cylinder类的构造函数被传递了两个double值来初始化这两个成员;定义成员函数area()和volume用来求圆柱体的表面积和体积,定义成员函数print()打印cylinder类的相关信息。最后,在主函数中对cylinder类的设计进行测试。程序如下:#i
15、nclude <iostream>using namespace std;class cylinderprivate:double radius,height,a,v;public:cylinder(double a,double b)radius=a;height=b;double area();double volume();void print(cylinder & t);double cylinder:volume() double v;v=height*radius*radius*3.14;return v;double cylinder:area()double
16、 a;a=2*radius*3.14*height;return a;void cylinder:print(cylinder & t)cout<<"area="<<t.area()<<" "<<"volume="<<t.volume()<<endl;int main()cylinder o1(3,3);o1.print(o1);return 0;运行结果:6.定义一个学生类CStudent实现简单的学籍管理功能,要求该类至少实现以下功能:(1) 录入学生
17、的基本信息(包括姓名,学号,性别,年龄,专业,入学时间,各门功课成绩)(2) 输出学生的基本信息(3) 选课(输入时间和所选的课程)(4) 统计每门课的学分绩点(5) 统计每学期的平均学分绩点(6) 统计重考科目(7) 统计重修科目程序如下:#include <iostream>#include <string>using namespace std;class CStudentpublic:CStudent(string n,string nu ,string s,int a,string z,int y,int m,int d,int ma,int e,int cy
18、y) /构造函数 name=n;number=nu;sex=s;age=a;zy=z;year=y;month=m;day=d;math=ma;english=e;c=cyy;void print() /打印出学生信息cout<<"姓名:"<<name<<'n'<<"学号:"<<number<<'n'<<"性别:"<<sex<<'n'<<"年龄:"&
19、lt;<age<<'n'<<"专业:"<<zy<<'n'<<"入学年月日:"<<year<<"."<<month<<"."<<day<<'n'<<"数学成绩:"<<math<<" "<<"英语成绩:"<<engli
20、sh<<" "<<"c成绩:"<<c<<'n'<<endl; void xuanke(); /声明选课日期,课程函数 float jsjidian(float fenshu) /由分数算绩点函数 float jd; if(fenshu<60) jd=0;else if(60<=fenshu&&fenshu<65) jd=1;else if(65<=fenshu&&fenshu<70) jd=1.5;else if(70
21、<=fenshu&&fenshu<75) jd=2;else if(75<=fenshu&&fenshu<80) jd=2.5;else if(80<=fenshu&&fenshu<85) jd=3;else if(85<=fenshu&&fenshu<90) jd=3.5;else if(90<=fenshu&&fenshu<96) jd=4;else jd=4.5;return jd;void jidian(CStudent & t); /声明
22、分别计算每科的绩点函数private: string name,sex,zy,number;int age,year,month,day,math,english,c;float mj,ej,cj;void CStudent:xuanke() /定义选课日期,课程函数int nian,yue,ri;cout<<"输入选课年月日"<<endl;cin>>nian>>yue>>ri;cout<<'n'<<endl;string kecheng;cin>>kecheng
23、;cout<<"选课日期为:"<<nian<<"."<<yue<<"."<<ri<<" "<<kecheng<<endl;void CStudent:jidian(CStudent & t) /分别计算每科的绩点函数,平均绩点,并打印出来,若绩点为0,则为重考科目,并打印出来 float mjd,ejd,cjd,avejd;mjd=t.jsjidian(math);ejd=t.jsjidian(english);cjd=t.jsjidian(c);cout<<"数学绩点:"<<mjd<<" "<<"英语绩点:"<<ejd<<" "<<"c绩点:"&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石河子大学《药理学实验》2022-2023学年第一学期期末试卷
- 前台客服上半年工作总结四篇
- 石河子大学《现代交换技术》2022-2023学年第一学期期末试卷
- 石河子大学《食品安全检测与仪器分析实验》2022-2023学年第一学期期末试卷
- 石河子大学《俄语语言与文化》2021-2022学年第一学期期末试卷
- 沈阳理工大学《专业创新课程-自动化控制系统设计实例》2022-2023学年期末试卷
- 沈阳理工大学《信息光学》2023-2024学年第一学期期末试卷
- 沈阳理工大学《软件工程》2022-2023学年期末试卷
- 沈阳理工大学《建筑节能》2022-2023学年第一学期期末试卷
- 沈阳理工大学《过程控制系统》2021-2022学年期末试卷
- 2024年公路标识安装合同
- (正式版)HGT 22820-2024 化工安全仪表系统工程设计规范
- 综合实践活动课《早餐与健康》优质课件
- 《中华民族共同体概论》考试复习题库(含答案)
- 2022-2023学年武汉市江岸区七年级英语上学期期中质量检测卷附答案
- 新能源汽车技术职业生涯人物访谈报告
- 办公室办文工作流程图
- 工程钻机产品合格证
- 六壬高级教程
- 员工奖惩制度 公司员工奖惩制度范本
- 【原创】水平三花样跳绳教学设计和教案
评论
0/150
提交评论