您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > C--第7次实验报告讲解
《C语言程序设计》课程实验报告(第7次)学院:数学与计算机学院姓名:张元杰学号:201510804033专业:软件工程班级:1班同组人:实验地点:6A-2实验时间:指导教师:实验名称:继承与派生(二)所使用的开发工具及环境:硬件PC实验目的:1.理解继承和派生的概念;2.理解继承在面向对象程序设计中的重要作用;3.掌握通过继承派生出一个新类的方法;4.进一步学习简单面向对象程序的编写;实验内容:1.教师干部类//50分设计一个基类Person类,再派生出教师类(Teacher)、干部类(Cadre),再采用多重继承派生出新类:Teacher_Cadre要求如下:1)Person类包含:姓名、年龄、性别、地址、电话等;在Teacher类中新增加:title(职称),在Cadre类中新增加:post(职务),在Teacher_Cadre中新增加:wages(工资)成员;2)Person类,Teacher类,Cadre类都包含:display()函数,分别输出本类中的成员信息;3)在Teacher类,Cadre类中的姓名、年龄、性别、地址、电话等数据成员使用相同名字,在派生类中引用这些数据成员时,采用指定作用域的方式;4)在派生类Teacher_Cadre的成员函数Show()中调用Teacher类中的display()函数,输出姓名、年龄、性别、地址、电话,职称;另外同时再输出其他成员变量。5)使用对象数组保存输入的对象;2.小型公司人员管理某小型公司有四类人员:总经理、技术人员、销售经理、推销员。设计一个基类employee派生出manager(总经理)、technician(技术人员)、salesmanager(销售经理)、saleman(推销员)。销售经理既是经理又是销售人员,兼具两类人员的特点,因此同时继承manager和salesman两个类。//50分1)类定义①employee类:基本信息:编号、姓名、性别、出生日期、职位、薪水等;出生日期使用自定义的Date(日期)类;其中:基本信息为private属性,成员函数为public属性;多个构造函数:缺省构造函数、带参数的构造函数、带默认参数的构造函数;可以从外部访问类成员函数;②Date类:成员变量:年、月、日成员函数:SetYear(intyear)、SetMonth(intmonth)、SetDay(intday)、GetYear()、GetMonth()、GetDay()③派生类technician:新增属性:工作时间派生类saleman:新增属性:销售额、所属部门2)实现人员信息的录入与显示;3)计算并显示个人月薪:月薪计算办法:总经理拿固定月薪8000元,技术人员按每小时25元领取月薪;推销员的月薪按当月销售额的4%提成;销售经理固定月薪5000元加所管辖部门当月销售总额的5‰。[实验提示]①在基类中,除了定义构造函数和析构函数,还应统一定义对各类人员信息应有的操作,规范类族中各派生类的基本行为,但是各类人员的月薪计算方法不同,不能在基类employee中统一确定计算方法。各类人员信息的显示内容不同,同样不能在基类employee中统一确定显示方法。在基类中实现上述功能的函数体应为空,在派生类中根据同名覆盖原则定义各自的同名函数实现具体功能。②将基类employee分成两个独立文档:employee.h(类声明头文件)和employy.cpp(类实现文件)③“职位”的类型设定为int;结果与分析:Sy7-1:#includeiostream#includestringusingnamespacestd;classPerson{public:Person(){}Person(stringna,intag,stringse,stringad,stringte):name(na),age(ag),sex(se),addr(ad),tel(te){}voiddisplay();private:stringname;intage;stringsex;stringaddr;stringtel;};classTeacher:publicPerson{public:Teacher(stringna,intag,stringse,stringad,stringte,stringti):Person(na,ag,se,ad,te),title(ti){}voiddisplay();private:stringtitle;//职称};classCadre:publicPerson{public:Cadre(stringna,intag,stringse,stringad,stringte,stringpo):Person(na,ag,se,ad,te),post(po){}voiddisplay();stringPost(){returnpost;}private:stringpost;//职务};classTeacher_Cadre:publicTeacher,Cadre{public:Teacher_Cadre(stringna,intag,stringse,stringad,stringte,stringti,stringpo,doublewa):Teacher(na,ag,se,ad,te,ti),Cadre(na,ag,se,ad,te,po),wages(wa){}voidshow();private:doublewages;};voidPerson::display(){coutName:nameendl;coutAge:ageendl;coutSex:sexendl;coutAddress:addrendl;coutTel:telendl;}voidTeacher::display(){Person::display();coutTitle:titleendl;}voidCadre::display(){Person::display();coutPost:postendl;}voidTeacher_Cadre::show(){Teacher::display();coutPost:Post()endl;coutWages:wagesendlendl;}intmain(){Teacher_Cadretc[3]={Teacher_Cadre(张三,33,男,成都,1304233899,教授,教务处主任,7999),Teacher_Cadre(李思,25,女,重庆,18966774444,讲师,助理,5677),Teacher_Cadre(王武,27,男,广州,15877883333,副教授,讲师,6299)};for(inti=0;i3;i++)tc[i].show();system(pause);return0;}Sy7-2:#includeiostream#includestringusingnamespacestd;classDate//时间类{public:Date(intye=0,intmo=0,intda=0):year(ye),month(mo),day(da){}voidSetYear(intyear){year=year;}voidSetMonth(intmonth){month=month;}voidSetDay(intday){day=day;}intGetYear(){returnyear;}intGetMonth(){returnmonth;}intGetDay(){returnday;}private:intyear;intmonth;intday;};classEmployee//雇员类{public:Employee(){}Employee(intnu,stringna,stringse,intye,intmo,intda,stringti):num(nu),name(na),sex(se),birthday(ye,mo,da),title(ti){}voidSetwages(doublewa){wages=wa;}voiddisplay();Datebirthday;private:doublewages;intnum;stringname;stringsex;stringtitle;};classManager:virtualpublicEmployee//经理类{public:Manager(){}Manager(intnu,stringna,stringse,intye,intmo,intda,stringti):Employee(nu,na,se,ye,mo,da,ti){Setwages(8000);}voiddisplay();};classTechnician:publicEmployee//技术人员类{public:Technician(intnu,stringna,stringse,intye,intmo,intda,stringti,doublewo):Employee(nu,na,se,ye,mo,da,ti),WorkTime(wo){Setwages(WorkTime*25);}voiddisplay();private:doubleWorkTime;};classSaleman:virtualpublicEmployee//销售员类{public:Saleman(intnu,stringna,stringse,intye,intmo,intda,stringti,doublesa,stringde):Employee(nu,na,se,ye,mo,da,ti),department(de),sale(sa){Setwages(sale*0.04);}doubleGetsale(){returnsale;}voiddisplay();private:doublesale;stringdepartment;};classSalesmanager:publicSaleman,Manager//销售经理类{public:Salesmanager(intnu,stringna,stringse,intye,intmo,intda,stringti,doublesa,stringde):Saleman(nu,na,se,ye,mo,da,ti,sa,de),Manager(nu,na,se,ye,mo,da,ti),Employee(nu,na,se,ye,mo,da,ti){Setwages(5000+Getsale()*0.005);}voiddisplay();};intmain(){Managerm1(101,张三,男,1987,4,3,经理);m1.display();coutendl;Techniciante1(301,李嗣,男,1988,4,23,技术人员,200);te1.display();coutendl;Salemansm1(201,王武,男,1990,6,3,销售员,20000,副食部);sm1.display();coutendl;Salemansm2(202,陈琪,女,1992,12,17,销售员,40000,副食部);sm2.display();coutendl;Salesmanagersma1(210,赵柳,女,1986,4,29,销售经理,60000,副食部);sma1.display();system(pause);return0;}voidEmployee::display()//基本信息:编号、姓名、性别、出生日期、职位、薪水等;{cout编号:numendl;cout姓名:nameendl;cout性别:sexendl;cout出生日期:birthday.GetYear(
本文标题:C--第7次实验报告讲解
链接地址:https://www.777doc.com/doc-7926411 .html