当前位置:舍宁秘书网 > 专题范文 > 公文范文 > 类继承

类继承

时间:2022-07-12 14:25:03 来源:网友投稿

下面是小编为大家整理的类继承,供大家参考。

类继承

 

 本科学生实验报告

  C++ 课程设计

 姓

 名

 杨先刚

 学号 0104028

  专

 业 软件工程

  班级

  105

  实验项目

  类和类的继承

 实验类别

  基础实验

 指导教师

 严军勇

 开课学期

 2011 至 2012 学年 第一 学期

 一、

 实验设计方案 实验名称:类和类的继承 实验时间:2011-9-13——2011-9-14

 实验场地:H123 软件环境:VC6.0/Windows XP 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<iostream> #include<string> 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<<"编号:"<<num<<endl;

  cout<<"姓名:"<<name<<endl;

  cout<<"出勤率:"<<rateofattend<<endl;

  cout<<"基本工资:"<<basicsal<<endl;

  cout<<"奖金:"<<prize<<endl; } void outputwage() {

 cout<<"员工实发工资:"<<basicsal+prize*rateofattend<<endl;

  cout<<endl; }

 };//员工实发工资输出函数 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<<"销售员提成比例:"<<deductrate<<endl;

 cout<<"个人销售额:"<<personamount<<endl;

 };

 void outputwage()

 {

 Cout<<” 销 售 员 实 发 工资:"<<basicsal+prize*rateofattend+deductrate*personamount<<endl;

  cout<<endl;

 } }; 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<<"经理提成比例:"<<totaldeductrate<<endl;

  cout<<"经理总销售额:"<<totalpersonamount<<endl;

  };

 void outputwage()

 {

 cout<<" 经 理 实 发 工资:"<<basicsal+prize*rateofattend+totaldeductrate*totalpersonamount<<endl;

  cout<<endl;

 } }; class salemanager:public saleman,public manager {

  public:

 salemanager(string nu,string na,float rate,float basic,float pri,float de,float pe,float totalde,float totalpe)

  :Staff(nu,na,rate,basic,pri),saleman(nu,na,rate,basic,pri,de,pe),manager(nu,na,rate,basic,pri,totalde,totalpe){}

  void output()

 {

 Staff::output();

 cout<<"销售员提成比例:"<<deductrate<<endl;

 cout<<"个人销售额:"<<personamount<<endl;

 cout<<"经理提成比例:"<<totaldeductrate<<endl;

 cout<<"经理总销售额:"<<totalpersonamount<<endl;

 } void outputwage() { cout<<" 销 售 总 经 理 实 发 工资:"<<basicsal+prize*rateofattend+deductrate*personamount+totaldeductrate*totalpersonamount<<endl;

 cout<<endl; } }; int main() { int n;

  for(int i=0;i<3;i++) {cout<<"注意!销售员工信息按 1,经理请按 2,经理销售按 3!请输入数字:";

 cin>>n;

 {if(n==2)

 {manager C("0104027","黄坚坚",0.95,14000,2800,0.40,40000);

 C.output();

  C.outputwage();

 } if(n==1) {saleman B("0104029","陈庭",0.80,12000.0,3000.0,0.20,10000.0); B.output(); B.outputwage(); } if(n==3) {

  salemanager

 A("0104028",” 杨 先 刚",0.90,20000.0,3600.0,0.44,30000.0,0.25,20000.0);

  A.output();

 A.outputwage();

  }

 } }

 return 0; }

 实验 2 源代码

 #include <iostream.h>

 class Time//定义时间类 { private:

 int hour;

 int minute;

 int second; public:

 Time(inth=0,intm=0,ints=0):hour(h),minute(m),second(s){} //构造带有参数的构造函数

 friend istream& operator>>(istream&,Time&t);//重载输入运算符友元函数

 friend ostream& operator<<(ostream&,Time&t);//重载输出运算符友元函数

  Time operator +(Time &t1);//重载时间加函数

  Time operator -(Time &t1);//重载时间减函数 }; Time Time::operator +(Time &t1)// {

 Time T;

 int total;

 total=hour*3600+minute*60+second+t1.hour*3600+t1.minute*60+t1.second;//把标准时间的时分秒全部化为时分秒

 T.second= total - total /60*60;

 T.minute= total /60- total /60/60*60;

 total/3600>24?T.hour=total/3600-24:T.hour=total/3600; // total /360>24 是用于判断是否过了 24 小时,如果过了就要减掉 24

  return T; } Time Time::operator -(Time &t1)//

 {

 Time T;

 int total;

 total=hour*3600+minute*60+second-(t1.hour*3600+t1.minute*60+t1.second);

 if(total <0) total =- total;//因为两时间相减可能会使秒数为负数,所以 total =- total 目的就是当出现负数时,把它变成正数

  T.hour= total /3600;

  T.minute=( total -T.hour*3600)/60;

  T.second= total %60;

  return T; } istream& operator >> (istream &input,Time &t)// {

 cout<<"请输入时间,分,秒:";

 input>>t.hour>>t.minute>>t.second;

 return input; } ostream& operator <<(ostream& output,Time &t)// {

 output<<t.hour<<":"<<t.minute<<":"<<t.second<<endl;

 return output; } int main() {

 Time t1,t2,t3,t4;//定义四个对象

 cin>>t1>>t2;

 cout<<endl;

 cout<<"第一次输入的时间:"<<t1<<endl;//输出第一次输入的时间

 cout<<"第二次输入的时间:"<<t2<<endl;//输出第二次输入的时间

 t3=t1+t2;

 t4=t1-t2;

  cout<<"两时间之和:"<<t3<<endl;//两时间之和

  cout<<"两时间之差:"<<t4<<endl;//两时间之差

 return 0; } —————————————————————————————————————— 2、 实验现象及结论(应用文字和程序运行的截图说明程序测试现象,并解释结果)

 运行开始时会跳出一段说明操作性文字,注意按照操作就可以查询你需要找的信息了

  实验 2 截图

 —————————————————————————————————————— 3、 实验总结(是否成功解决问题,总结实验中最有价值的内容,程序能够在哪些方面进一步改善,自我评价成败得失)

 在实验中,第一题还是做得比较轻松,但是也有一个不可饶恕的错误,就是关于最后的 Salemanager 居然没有初始化!缺少{},当时查了我起码半个小时啊,可悲啊!后面还是同学厉害,一个{}就解决了!我表示不能淡定!第二题就有点小小困难了,不过困难不要紧,有信心解决,前面都有相应的例题了,所以我得把它解决掉!要不能对不起党,对不起人民了。

  指导老师评语

 :

  得分:

 签名:严军勇

  年

  月

  日

推荐访问:类继承 继承

猜你喜欢