您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 理论文章 > 刘超七班2015205243--C++(第四次)
1LIAOCHENGUNIVERSITY计算机学院实验报告【2015~2016学年第2学期】【一、基本信息】【实验课程】C++语言程序设计【设课形式】独立□非独立☑【课程学分】3【实验项目】多态、友元、虚函数、模板【项目类型】基础☑综合□设计□研究创新□其它[]【项目学时】4【学生姓名】刘超【学号】2015205243【系别专业】软件测试【实验班组】2015级7班组台【同组学生】【实验室名】综合实验楼【实验日期】2016.5.10【报告日期】2016.5.17【二、实验教师对报告的最终评价及处理意见】实验成绩:(涂改无效)指导教师签名:李寰2016年5月20日注:要将实验项目、实验课程的成绩评定及课程考核办法明确告知学生,并报实验管理中心备案2【三、实验预习】实验目的和要求:1.理解多态性的概念,掌握虚函数的作用及使用方法。2.理解纯虚函数和抽象类的概念和用法。3.掌握友元的概念、友元函数的定义与使用方法。4.掌握静态数据成员与静态成员函数的定义与使用方法。实验内容和原理或涉及的知识点(综合性实验):1.先建立一个职工类Employee,包含数据成员name(职工姓名),ID(职工编号)。以它为基类,派生出经理类Manager和技术人员类Technician,在经理类中增加数据成员salary(代表经理的月工资),在技术人员类中增加数据成员wage(代表每小时的工资数)和hours(月工作时数)。在定义类时,所有类中必须包含有构造函数、析构函数、修改和获取所有数据成员的函数,以及计算职工工资的虚函数,输出职工信息的虚函数。在主程序中通过Employee指针分别访问经理对象和技术人员对象,调用验证相应方法。2.shape类是一个表示形状的抽象类,area()为求图形面积的成员函数,total()则是一个通用的用以求不同形状的图形面积总和的公共函数。请从shape类派生三角形类(triangle)、矩形类(rectangle),并在主程序中调用total()函数计算给出shape数组中所有形状的面积之和。【提示:total函数的原型可以为doubletotal(shape*s[],intcnt);其中,s为shape指针的数组,cnt为数组中元素个数。】3.设计并测试点类Point,其数据成员是直角坐标系的点横坐标和纵坐标,友元函数distance用来计算两点间的距离。4.定义函数模板,实现数组的冒泡排序。实验条件(实验设备、软件、材料等):1、装有Windows操作系统的微型计算机;2、C++集成开发环境软件。实验设计方案(实验方法、步骤、操作过程、设计型实验、实验数据记录表格):1、完成实验内容部分题目程序代码的编写。2、调试运行程序,直到程序符合题目要求。3、将程序的源代码和执行结果的截图贴在实验报告的【四】部分。4、对实验进行总结,认真填写【五、实验结果分析】部分。实验预习成绩(涂改无效)合格□不合格□3【四、实验过程、数据和实验结果记录】①实验方法、步骤、操作过程的记录描述或程序代码。②实验过程中输入/输出数据、程序运行结果的记录。(可加附页)1.////1.先建立一个职工类Employee,包含数据成员name(职工姓名),ID(职工编号)。//以它为基类,派生出经理类Manager和技术人员类Technician,在经理类中增加数据成//员salary(代表经理的月工资),在技术人员类中增加数据成员wage(代表每小时的//工资数)和hours(月工作时数)。在定义类时,所有类中必须包含有构造函数、析构函数、//修改和获取所有数据成员的函数,以及计算职工工资的虚函数,输出职工信息的虚函数。//在主程序中通过Employee指针分别访问经理对象和技术人员对象,调用验证相应方法。#includeiostream#includestringusingnamespacestd;classEmployee{protected:stringname,Id;public:Employee():name(无),Id(无){}~Employee(){}virtualvoidsetinformation(){cout请输入职员的姓名与编号:endl;}virtualintgongzi(){}virtualvoiddisplay(){}};classManager:publicEmployee{private:intsalary;public:Manager():salary(0){};~Manager(){}intgongzi(){returnsalary;}voiddisplay(){4cout该经理的姓名为:name,员工编号为:Id,月工资为:gongzi()endl;}voidmodify(){cout请输入经理的姓名、ID以及月工资!endl;cinnameIdsalary;cout信息修改成功endl;}};classTechnicina:publicEmployee{private:intwage,hours;public:Technicina():wage(0),hours(0){}~Technicina(){}intgongzi(){return(wage*hours);}voiddisplay(){cout该技术人员的姓名为:name,技术人员的员工编号为:Id,月工资为:gongzi()endl;}voidmodify(){cout请输入技术人员的姓名、ID、工作时间以及每小时的工资数!endl;cinnameIdhourswage;cout信息修改成功endl;}};intmain(){Employee*p;Employee*q;Technicinaa;Managerb;a.modify();b.modify();p=&a;q=&b;p-display();q-display();return0;}52.////2.shape类是一个表示形状的抽象类,area()为求图形面积的成员函数,total()//则是一个通用的用以求不同形状的图形面积总和的公共函数。请从shape类派生三角//形类(triangle)、矩形类(rectangle),并在主程序中调用total()函数计算给//出shape数组中所有形状的面积之和。//【提示:total函数的原型可以为doubletotal(shape*s[],intcnt);//其中,s为shape指针的数组,cnt为数组中元素个数。】#includeiostream#includestring#includemath.husingnamespacestd;classshape{public:virtualdoublearea(){}};classtriangle:publicshape{public:triangle(doublex,doubley,doublez):a(x),b(y),c(z){}triangle():a(0),b(0),c(0){}voidsetbianchang(){cout请输入三角形的三边长!endl;cinabc;}doublearea(){doublep=0.5*(a+b+c);returnsqrt(p*(p-a)*(p-b)*(p-c));}private:doublea,b,c;};classrectangle:publicshape6{private:doublea,b;public:rectangle():a(0),b(0){}rectangle(doublex,doubley):a(x),b(y){}doublearea(){return(a*b);}voidsetbianchang(){cout请输入矩形的长与宽!endl;cinab;}};doubletotal(shape*s[],intcnt){inti=0;doublemianji=0;for(i=0;icnt;i++){mianji+=s[i]-area();}cout所有图形的面积之和为:mianjiendl;}intmain(){shape*p[3];triangles1(6.0,8.0,10.0),s2(6.0,8.0,10.0);rectanglea(2.0,4.0);p[2]=&a;p[0]=&s1;p[1]=&s2;total(p,3);}73.#includeiostream#includestring#includemath.husingnamespacestd;classpoint{private:doubleh,z;public:point(doublea,doubleb):h(a),z(b){}~point(){}friendvoidd(point&z1,point&z2);};voidd(point&z1,point&z2){doubled;d=sqrt((z1.h-z2.h)*(z1.h-z2.h)+(z1.z-z2.z)*(z1.z-z2.z));cout两点之间的距离为:dendl;}intmain(){pointz1(1,2),z2(2,3);d(z1,z2);return0;}4.//4.定义函数模板,实现数组的冒泡排序。#includeiostreamusingnamespacestd;templatetypenameTvoidmaopao(Ta[],intcont){inti=0;8Tb;for(i=0;icont-1;i++){for(intn=0;n5-1-i;n++){if(a[n]a[n+1]){b=a[n];a[n]=a[n+1];a[n+1]=b;}}}for(i=0;icont;i++){couta[i];}}intmain(){inta[3]={1,2,3};maopaoint(a,3);return0;}记录成绩(涂改无效)合格□不合格□【五、实验结果分析】①根据理论知识对所得到的实验数据或结果进行解释、分析。②对实验结果所作的一般性的判断、归纳、概括,实验的心得体会、建议等。经过此次作业我认识到,打程序需要注意细节,如果不注意细节打完一个程序会有许多的小问题,而发现这些问题往往会浪费很多的时间。在一点就是多练习,看书可能看的很明白,但真正的实践起来就不是那么回事了。9
本文标题:刘超七班2015205243--C++(第四次)
链接地址:https://www.777doc.com/doc-5328538 .html