Problem1825--发工资

1825: 发工资

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 128 MB

Description

现在公司要开发一个系统,管理各职位的工资,给出下面的一个基类框架:
class employee
{
    protected:
    string eid; // 员工编号
    string name; // 员工姓名
    public:
    virtual void display() = 0;
}
请完成下列要求:
1)以 employee 为基类,派生出 salesman 、 manager 、 chief 三个类。
2) salesman 含有两个额外的 protected 变量,第一个 int 类型变量 time 表示工作时间,第二个
int 类型变量 num 表示销售数, salesman 不含默认构造函数,但含有两个带参数的构造函数,参数
为 (int _time, int _num) ,作用是将 time 的初值设置为 _time , num 的初值设为 _num , 默认
初值均为 0。
3) salesman 只含有一个公有的成员函数 display() ,用于输出员工的当月工资,计算公式为:10
* 工作时间 + 6 * 销售数
4) manager 含有一个额外的 protected 的 int 类型变量 time 表示工作时间, manager 不含默
认构造函数,但含有一个带参数的构造函数,参数为 (int _time) ,作用是将 time 的初值设置为
_time ,默认初值均为 0。
5) manager 只含有一个公有的成员函数 display() ,用于输出员工的当月工资,计算公式为:20 *
工作时间
6) chief 含有一个额外的 protected 的 int 类型变量 achievement 表示业绩, chief 不含默认
构造函数,但含有一个带参数的构造函数,参数为 (int _achievement) ,作用是将 achievement 的
初值设置为 _achievement ,默认初值均为 0。
7) chief 只含有一个公有的成员函数 display() ,用于输出员工的当月工资,计算公式为:30% *
业绩
8)生成上述类并编写主函数,要求主函数中有一个基类employee指针数组,数组元素不超过10个。
主函数根据输入的信息,相应建立 salesman, manager, chief 类对象,对于 salesman 给出工作时间
和销售数, manager 给出工作时间, chief 给出业绩,保证数据合法。
注意:请保证按照上述要求运用面向对象的思想实现,否则你可能会
被判为0分。


Input

第一行一个t(1≤t≤10)表示数据组数


第t+1行一个op(1≤op≤3),表示员工类型,1代表salesman,2代表manager,3代表chief
如果op=1:
第t+2行跟着eid,name,time,num,表示员工编号,姓名,工作时长和销售数
如果op=2:
第t+2行跟着eid,name,time,num,表示员工编号,姓名,工作时长
如果op=3:
第t+2行跟着eid,name,time,num,表示员工编号,姓名,业绩



Output

对每组数据,输出该员工最终工资并换行。
程序结尾需要delete掉 employee 指针数组,并实现相应析构函数输出。

Sample Input Copy

4
1
114514 litiansuo 100 20
3
1919810 lihaoer 500000
2
666666 jiaran 233
1
010 haizijie 200 17

Sample Output Copy

1120
150000
4660
2102

Source/Category