实验6动态多态

  • 格式:doc
  • 大小:457.50 KB
  • 文档页数:17

第1页,共17页 北京电子科技学院(BESTI) 实验报告

课程: 面向对象程序设计 班级: 1243 姓名: 孟愫愫 学号: 124308

成绩: 指导教师: 徐日 实验日期: 2013.12.10 实验密级: 预习程度: 实验时间: 下午3:30~6:00 仪器组次: B23 必修/选修: 选修 实验序号: 6 实验名称: 动态多态 实验目的与要求: 1. 使学生掌握C++语言动态多态的基础编程; 2. 培养学生具有运用C++语言编程解决问题的能力,提高学生的计算机编程能力; 3. 引导和培养学生具有认真严谨的实验态度和勇于实践的学习精神。

实验仪器: 名称 型号 数量

微机 TOSHIBA L800 1 第2页,共17页

一. 实验内容 1. 类Emp、Manager、Seller、Piecer和Hourer 题目: 编写一个工资管理系统,以雇员类为基类公有派生出经理类、销售员类、计件工类和小时工类。经理享有固定的底薪和业绩奖励;销售员的收入是一小部分的基础工资加上销售额的提成;计件工的收入完全取决于其生产的工件数量;小时工的收入以小时计算,加上按时计算的加班费。运用积累指针显示输出各类对象的薪水值。 具体描述: 雇员类Emp作为基类,有数据成员salary(double型表示薪水),成员函数set()为成员salary赋值(参看值为600),成员函数count()为salary赋值,成员韩式get()获取成员salary的值,成员函数show()用于显示输出成员salary的值。 经理类Manager,新增成员函数count(),用于计算经理的薪水并对salary赋值,底薪8000,业绩奖励金额有用户输入(参考值为12000);新增成员函数show()用于显示输出函数salary的值。 销售员类Seller,新增成员函数count(),用于计算销售员的薪水并对salary赋值,进本工资800,销售提成比例为6%,有哟过户输出销售额(参考值为120000);新增成员函数show()用于显示成员salary的值。 计件工类Piecer,新增成员函数count(),用于计算计件工的薪水并对salary赋值,计件系数为40,生产产品件数由用户输入(参考值为80),新增成员函数shouw(),用于显示输出成员salary的值。 小时工类Hourer,新增成员函数count(),用于计算小时工的薪水并对salary第3页,共17页

赋值,150小时内计时系数为10,150小时为的加班计时系数为20,工作时数由用户输入(参考值为170),新增成员函数show()用于显示输出成员salary的值。 要求  所有类定义时,数据成员为private,成员函数为public属性,各成员函数的参数请按需要自行设定。  所有类都要求编写构造函数和析构函数,构造函数都为有参函数且具有默认参数值,构造函数完成数据成员的初始化。  所有函数都要有明确的执行信息输出,例如类Emp的构造函数中应明确输出“执行类Emp的构造函数”。  编写主函数main(),在其中编写程序,定义各类的对象,用基类指针指向它们分别操作,对各类对象的成员salary执行count()计算并赋值、执行show()对各类对象的成员salary的值输出显示。 【编程设计思想】 掌握好虚函数,根据题目要求,一点一点的编写代码即可。(因为类的这部分格式很固定) 【源代码】 #include class Emp { private: double salary; public: Emp(double s); void set(double s); virtual double count(); double get(); virtual void show(); ~Emp(); 第4页,共17页

}; Emp::Emp(double s=600) { salary=s; cout<<"执行类Emp的构造函数"<} void Emp::set(double s) { salary=s; cout<<"执行类Emp的set()函数,薪水赋值为:<"<"<} double Emp::get() { cout<<"执行类Emp的get()函数,返回薪水值<"<"

{ cout<<"执行类Manager的show()函数,输出经理薪水:"<} double Manager::count() { cout<<"执行类Manager的count()函数,经理业绩奖励数额:"; double s; cin>>s; salary=salary+s; return salary; } Manager::~Manager() { cout<<"执行类Manager的析构函数"<} class Seller:public Emp { private: double salary; public: Seller(double s=800); double count(); void show(); ~Seller(); }; Seller::Seller(double s):Emp(s) { salary=s; cout<<"执行类Seller的构造函数"<} void Seller::show() { cout<<"执行类Seller的show()函数,输出销售员销售额:"<} double Seller::count() { cout<<"执行类Seller的count()函数,销售员销售额:"; double s; cin>>s; salary=salary+s*0.06; return salary; } Seller::~Seller() { cout<<"执行类Seller的析构函数"<} 第6页,共17页

class Piecer:public Emp { private: double salary; public: Piecer(double s=600); double count(); void show(); ~Piecer(); }; Piecer::Piecer(double s):Emp(s) { salary=s; cout<<"执行类Piecer的构造函数"<

} void Piecer::show() { cout<<"执行类Piecer的show()函数,输出计件工薪水:"<} double Piecer::count() { cout<<"执行类Piecer的count()函数,计件工生产产品件数:"; double s; cin>>s; salary=40*s; return salary; } Piecer::~Piecer() { cout<<"执行类Piecer的析构函数"<} class Hourer:public Emp { private: double salary; public: Hourer(double s=600); double count(); void show(); ~Hourer(); }; Hourer::Hourer(double s):Emp(s) { salary=s; cout<<"执行类Hourer的构造函数"<