设计某IT教育研发中心的工资管理系统,该中心主要有3类人员:经理、销售员和销售经理。要求

9 查阅

阅读以下说明和C++程序,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

设计某IT教育研发中心的工资管理系统,该中心主要有3类人员:经理、销售员和销售经理。要求存储这些人员的编号、姓名和月工资,计算月工资并显示全部信息。月工资计算办法是:经理拿固定月薪8000元;销售员拿固定工资1000元,然后再按当月销售额的4%提成;销售经理既拿固定月工资也领取销售提成,固定月工资为5000元,销售提成为所管辖部门当月销售总额的5‰。

按要求设计一个基类employee,销售员类salesman,经理类manager,销售经理类salesmanager.

程序5-1是类employee的模块内容,程序5-2是类salesman的类模块内容,程序5-3是类manager的模块内容,程序5-4是类salesmanager的模块内容。在主测试程序中,输入张三所管部门月销售量10000后的输出结果如下:

【程序5-1】

#include

#include

classemployee

{

protected:

intno;

char*name;

floatsalary;

public:

employee(intnum,char*ch)

{no=num;

name=ch;

salary=0;}

virtualvoidpay()=0;

virtualvoiddisplay()

{cout《"编号:"《no《endl;

cout《"本月工资:"《salary《endl;}

};

【程序5-2】

classsalesman:(1)

{

protected:

floatcommrate,sales;

public:

salesman(intnum,char*ch):employee(num,ch)

{commrate=0.04;}

voidpay()

{cout《name《"本月销售额:";

cin》sales;

salary=sales*commrate+1000;}

voiddisplay()

{cout《"销售员:"《name《endl;

employee::display();}

};

【程序5-3】

classmanager:(1)

{

protected:

floatmonthpay;

public:

manager(intnum,char*ch):employee(num,ch)

{monthpay=8000;}

voidpay()

{salary=monthpay;}

voiddisplay()

{cout《"经理:"《name《endl;

employee::display();}

};

【程序5-4】

classsalesmanager:(2)

{

public:

salesmanager(intnum,char*ch):(3)

{monthpay=5000;

commrate=0.005;}

voidpay()

{cout《name《"所管部门月销售量:";

cin》sales;

(4)}

voiddisplay()

{cout《"销售经理:"《name《endl;

(5)}

};

voidmain()//主测试函数

{salesmanagerp1(1001,"张三");

p1.pay();

p1.display();

}

参考答案:

(1)virtualpublicemployee(2)publicmanager,publicsalesman(3)employee(num,ch),manager(num,ch),salesman(num,ch)(4)salary=monthpay+commrate*sales;(5)employee::display();解析:本题考查类的定义、继承及虚基类与虚函数的应用。首先我们来看一下基类employee的程序代码,在基类中构造了一个构造函数和两个虚函数,其中虚函数display()可以输出

软考初级