实验六答案
更新时间:2023-10-10 23:31:01 阅读量: 综合文库 文档下载
实验六答案
1、 创建一个表示雇员信息的employee类,其中包含数据成员name、empNo和salary,分 别表示雇员的姓名、编号和月薪。再从employee类派生出3个类worker、technician 和 salesman,分别代表普通工人、科研人员、销售人员。三个类中分别包含数据成员 productNum、workHours和monthlysales,分别代表工人每月生产产品的数量、科研人 员每月工作的时数和销售人员每月的销售额。要求在employee类中声明虚成员函数 pay,并在各个派生类中覆盖pay函数,用来计算雇员的月薪,并假定: 普通工人的月薪=每月生产的产品数×每件产品的赢利×20% 科研人员的月薪=每月的工作时数×每小时工作的酬金 销售人员的月薪=月销售额×销售额提成。
创建一个通用函数CalculateSalary,用来计算并返回各种不同类型雇员的月薪。函数 CalculateSalary的原型如下:
float CalculateSalary(employee *emptr) ;
在main函数中分别声明worker类、technician类和salesman类的对象代表各种类型的
雇员,并调用函数CalculateSalary计算他们的月薪。 解:程序代码如下: #include
protected: char name[20]; int empNo; float salary; public: employee(char *cp=\ employee(employee&); void setname(char *cp); void setempNo(int no); void setsalary(float sa); char*getname(); int getempNo(); float getsalary(); virtual float pay(){ return 0;} };
employee::employee(char *cp,int no) { int i=0; while(*cp) { name[i]=*cp; i++; cp++;
} name[i]='\\0'; empNo=no; }
employee::employee(employee &em) { int i=0; while(em.name[i]) { name[i]=em.name[i]; i++; } name[i]='\\0'; empNo=em.empNo; salary=em.salary; }
void employee::setname(char *cp) { int i=0; while(*cp) { name[i]=*cp; i++; cp++; } name[i]='\\0'; }
void employee::setempNo(int no) { empNo=no; }
void employee::setsalary(float sa) { salary=sa; }
char*employee::getname() { return name; }
int employee::getempNo() { return empNo; }
float employee::getsalary()
{ return salary; }
class worker : public employee {
public: worker(char*,int,int); void setproductNum(int n) { productNum=n;} int getproductNum() { return productNum;} float pay(); private: int productNum; static float proper; //每件产品的利润 };
float worker::proper=20; //假设每件产品的利润为20元 worker::worker(char *name,int no,int pronum) :employee(name,no) { productNum=pronum; }
float worker::pay() { salary=productNum*proper*0.2; return salary; }
class technician : public employee {
public:
technician(char*,int,float); void sethours(float h) { workHours=h;} float gethours() { return workHours;} float pay(); private: float workHours; static float payperhour; //科研人员每小时工作的酬金 };
float technician::payperhour=40; //假设科研人员每小时工作的酬金为40元 technician::technician(char *name,int no,float hours) :employee(name,no)
{ workHours=hours; }
float technician::pay() { salary=workHours*payperhour; return salary; }
class salesman : public employee {
public: salesman(char*,int,float); void setmonthlysales(int num) { monthlysales=num;} int getmonthlysales() { return monthlysales;} float pay(); private: float monthlysales; static float percent; //销售人员的销售提成 };
float salesman::percent=0.5; //假设销售人员的销售提成为50% salesman::salesman(char *name,int n,float sn) :employee(name,n) { monthlysales=sn; }
float salesman::pay() { salary=monthlysales*percent; return salary; }
float CalculateSalary(employee *emptr) { float salary=emptr->pay(); return salary; }
void main() { worker w1(\张三\ technician t1(\李四\ salesman s1(\王五\
}
cout<<\工人\的月薪为\元\\n\cout<<\科研人员\的月薪为\元\\n\cout<<\销售人员\的月薪为\元\\n\
正在阅读:
实验六答案10-10
列王的纷争技能怎么加点?技能加点分析攻略05-18
证券从业资格考试证券基础知识教材05-21
Java - IO知识测试103-19
难忘的五一作文700字07-01
电影《无双》观后感12-11
美女爱上手工巧克力 不畏艰辛走上创业路05-16
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 答案
- 实验
- 初三物理讲学案第2讲 - 比热容和热机 3
- 阅读考级《火鞋和风鞋》
- 2018年手机显示屏现状研究及发展前景趋势(目录)
- 工程地质与土力学试卷试题下载-样卷doc
- 班级管理复习资料
- 三年级下册健康教育教学设计
- 小学学校工作总结及展望
- 家常小菜样样全 - 图文
- 水土保持试卷
- 大象版小学六年级科学下册综合复习题(带答案)-全册资料
- 2015全套济宁专业技术人员继续教育潜力激活与创造力开发(非标准答案)1-11 - 13-15 - 18 - 19(1)
- 莱布尼兹的生平及对微积分的影响
- 内科护理学题库-单选
- 农业环保概论试卷B及答案
- 初中物理实验教材
- 2017年11月浙江省技术选考试题信息初稿(1)
- 山东广播电视大学学前教育(专科)专业综合实践环节教学大纲 - 图文
- 阅读与写作2形成性考核
- Word 的域简介
- 中国塑料改性材料行业市场前景分析预测年度报告(目录) - 图文