您的当前位置:首页正文

实验报告四

来源:一二三四网


LIAOCHENG UNIVERSITY

计算机学院实验报告

【一、基本信息】 【20 15 ~20 16 学年第 2 学期】

【实验课程】 C++语言程序设计 【设课形式】 独立□ 非独立☑ 【课程学分】 3 【实验项目】 多态、友元、 虚函数、模板 【项目类型】 基础☑ 综合□ 设计□ 研究创新□ 其它[ ] 【项目学时】 【学生姓名】 苏睿 【系别专业】 【实验班组】 2015级 11班 组 台 【同组学生】 【实验室名】 综合实验楼 【实验日期】 2016.5.10 4 【学 号】 2015205398 【报告日期】 2016.5.17 【二、实验教师对报告的最终评价及处理意见】 实验成绩: (涂改无效) 指导教师签名: 李寰 2016年 5 月 20 日 注:要将实验项目、实验课程的成绩评定及课程考核办法明确告知学生,并报实验管理中心备案 1

【三、实验预习】 实验目的和要求: 1.理解多态性的概念,掌握虚函数的作用及使用方法。 2.理解纯虚函数和抽象类的概念和用法。 3.掌握友元的概念、友元函数的定义与使用方法。 4.掌握静态数据成员与静态成员函数的定义与使用方法。 实验内容和原理或涉及的知识点(综合性实验): 1. 先建立一个职工类Employee,包含数据成员name(职工姓名),ID(职工编号)。以它为基类,派生出经理类Manager和技术人员类Technician,在经理类中增加数据成员salary(代表经理的月工资),在技术人员类中增加数据成员wage(代表每小时的工资数)和hours(月工作时数)。在定义类时,所有类中必须包含有构造函数、析构函数、修改和获取所有数据成员的函数,以及计算职工工资的虚函数,输出职工信息的虚函数。在主程序中通过Employee指针分别访问经理对象和技术人员对象,调用验证相应方法。 2.shape类是一个表示形状的抽象类,area( )为求图形面积的成员函数,total( )则是一个通用的用以求不同形状的图形面积总和的公共函数。请从shape类派生三角形类(triangle)、矩形类(rectangle),并在主程序中调用total()函数计算给出shape数组中所有形状的面积之和。 【提示:total函数的原型可以为double total(shape* s[], int cnt);其中,s为shape指针的数组,cnt为数组中元素个数。】 3.设计并测试点类Point,其数据成员是直角坐标系的点横坐标和纵坐标,友元函数distance用来计算两点间的距离。 4. 定义函数模板,实现数组的冒泡排序。 实验条件(实验设备、软件、材料等): 1、装有Windows 操作系统的微型计算机; 2、C++集成开发环境软件。 实验设计方案(实验方法、步骤、操作过程、设计型实验、实验数据记录表格): 1、 完成实验内容部分题目程序代码的编写。 2、 调试运行程序,直到程序符合题目要求。 3、 将程序的源代码和执行结果的截图贴在实验报告的【四】部分。 4、 对实验进行总结,认真填写【五、实验结果分析】部分。 实验预习成绩(涂改无效) 合格□ 不合格□ 2

【四、实验过程、数据和实验结果记录】 ①实验方法、步骤、操作过程的记录描述或程序代码。②实验过程中输入/输出数据、程序运行结果的记录。(可加附页) 1. #include using namespace std; class Employee { protected: string name,ID; public: Employee(){} Employee(string name,string ID):name(name),ID(ID){} ~Employee(){} virtual void inputInfo(); virtual void outputInfo(); }; void Employee::inputInfo() { cout <>name>>ID; } void Employee::outputInfo() { cout <3

Employee::inputInfo(); cin >>salary; } void Manager::outputInfo() { cout <>wage>>hours; } void Technician::outputInfo() { cout <outputInfo(); p->inputInfo(); p->outputInfo(); Technician T1(\"SuperMan\ p = &T1;

4

p->outputInfo(); p->inputInfo(); p->outputInfo(); return 0; }

5

2. class shape { public: virtual double area() = 0; }; class triangle:public shape { private: double a,b,c; public: triangle():a(3),b(4),c(5){} triangle(double a,double b,double c):a(a),b(b),c(c) { if((a+b<=c)||(abs(a-b)>=c)) { cout <<\"Error:the data can not construct a triangle.\"<area(); }

6

return total; } int main() { triangle T1(6,8,10); cout < #include using namespace std; class Point { private: double x,y; public: Point():x(0),y(0){} Point(double a,double b):x(a),y(b){} friend double Distance(const Point &a,const Point &b); }; double Distance(const Point &a,const Point &b) { return sqrt((b.x-a.x)*(b.x-a.x)+(b.y-a.y)*(b.y-a.y)); } int main() { Point a(3,7),b(3,9); cout <<\"distance:\"<7

} 4. #include #include using namespace std; template void BubbleSort(T a[],int n) { int i,j; T temp; for(i=0; ia[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } } int main() { int a[5] = {1,4,2,3,5}; BubbleSort(a,5); for(int i=0;i<5;i++) { cout <8

记录成绩(涂改无效) 合格□ 不合格□ 【五、实验结果分析】 ①根据理论知识对所得到的实验数据或结果进行解释、分析。②对实验结果所作的一般性的判断、归纳、概括,实验的心得体会、建议等。 这次实验,我又一次的体会到了继承,和多态的含义和用法,也学会了使用函数模版,知道了向上转型,再一次复习了冒泡排序的算法,真的是一开始着手写算法都记不起来了,一点思路都没了,另外,还写了个友元函数用来求两点之间的距离。 9

因篇幅问题不能全部显示,请点此查看更多更全内容

Top