类的继承
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科学生实验报告
C++课程设计
姓名杨先刚学号*******
专业软件工程班级105
实验项目类和类的继承
实验类别基础实验
指导教师严军勇
开课学期2011 至2012 学年第一学期
一、实验设计方案
1、实验内容与目的(简单介绍实验内容,说明实验目的)
实验目的:1)掌握类的继承和虚拟继承;2)掌握函数重载和常用运算符的重载实验内容:1)你的题目
2)你的题目
1. 定义Staff(员工)类,定义Staff(员工)类,由Staff分别派生出Saleman(销售员)类
和Manager(经理)类,再由Saleman(销售员)类和Manager(经理)类采用多重继承方式派生出新类SaleManager(销售经理)类。
要求:
(6)①在Staff类中包含的数据成员有编号(num)、姓名(name)、出勤率(rateOfAttend)、基本工资(basicSal)和奖金(prize)。在Saleman类中还包含数据成员销售员提成比例(deductRate)和个人销售额(personAmount),在Manager类中还包含数据成员经理提成比例(totalDeductRate)和总销售额(totalAmount)。在SaleManager类中不包含其他数据成员。
②各类人员的实发工资公式如下:
员工实发工资=基本工资+奖金*出勤率
销售员实发工资=基本工资+奖金*出勤率+个人销售额*销售员提成比例
经理实发工资=基本工资+奖金*出勤率+总销售额*经理提成比例
销售经理实发工资=基本工资+奖金*出勤率+总销售额*经理提成比例+个人销售额*销售员提成比例
③每个类都有构造函数、输出基本信息函数(Output)和输出实发工资函数(OutputWage)。
你的题目
2. (5)设计一个时间类Time,要求如下。
1.包含时(hour)、分(minute)、秒(second)私有数据成员。
2.包含构造函数,重载关于一时间加上另一时间的加法运算符(+)、重载关于一时
间减去另一时间的减加运算符(-)、重载输出运算符(<<)与输入运算符(>>)等。
——————————————————————————————————————2、实验准备工作(阐述解决问题所涉及的知识内容或算法思想等,若是算法思想,则至少要画一个算法流程图来说明)
1.对于实验1是先从课本上的实验题依次先看过来的,有利于回忆以前学过的关于继承的知识, virtual的应用作用。
2.实验2也基本上是先借助课本实验题慢慢做过来,对了重载函数的定义与其使用,还有运算符的重载的知识
——————————————————————————————————————
二、实验步骤、测试与结果分析
1、源程序的设计(在此附上源程序清单)
#include
#include
using namespace std;
class Staff//定义员工类
{
protected:
string num;
string name;
float rateofattend;
float basicsal;
float prize;
public:
Staff(string nu,string na,float rate,float basic,float pri) { num=nu;
name=na;
rateofattend=rate;
basicsal=basic;
prize=pri;
}//构造函数
void output() //员工基本信息输出函数
{
cout<<"编号:"< cout<<"姓名:"< cout<<"出勤率:"< cout<<"基本工资:"< cout<<"奖金:"< } void outputwage() { cout<<"员工实发工资:"< cout< };//员工实发工资输出函数 class saleman:virtual public Staff//销售人员公有继承 { protected: float deductrate ; float personamount; public: saleman(string nu,string na,float rate,float basic,float pri,float de,float pe) :Staff(nu,na,rate,basic,pri) { deductrate=de; personamount=pe; } void output() { Staff::output(); cout<<"销售员提成比例:"< cout<<"个人销售额:"< }; void outputwage() { Cout<<”销售员实发工资:"< cout< } }; class manager:virtual public Staff { protected: float totaldeductrate; float totalpersonamount; public: manager(string nu,string na,float rate,float basic,float pri,float totalde,float totalpe) :Staff(nu,na,rate,basic,pri) { totaldeductrate=totalde; totalpersonamount=totalpe; } void output() { Staff::output(); cout<<"经理提成比例:"< cout<<"经理总销售额:"< }; void outputwage() { cout<<"经理实发工资:"<