编写一个程序实现小型公司的工资管理。该公司主要有4类人员:经理,兼职技术人员,销售员和销售经理。要求存储这些人员的编号、姓名和月工资,计算月工资并显示全部信息。月工资的计算办法是:经理拿固定月薪8000元;兼职技术人员按每小时100元领取月薪;销售员按当月销售额的4%提成;销售经理既拿固定工资也领取销售提成,固定月工资5000元,提成为所管辖部门当月销售总额的5%。
不是写代码了么,不采纳也不重复。而且题目有错误,部门月销售额200万,5%提成的话,是10万,不是1万,所以销售经理收入怎么只有15000呢?应该是千分之五
按照你的样例写的
typedef struct _emp
{
int id;
string name;
}emp;
#include <iostream>
using namespace std;
#include <string>
class employee
{
protected:
int id;
string name;
public:
employee(int id,string name) : id(id),name(name) {}
string getName() {return name;}
virtual double getSalary() = 0;
};
class manager : virtual public employee
{
protected:
double salary;
public:
manager(int id,string name) : employee(id,name) {salary = 8000;}
double getSalary() {return salary;}
};
class technician : public employee
{
private:
double workHours;
public:
technician(int id,string name,double workhours) : employee(id,name),workHours(workhours) {}
double getSalary() {return 100*workHours;}
};
class salesman : virtual public employee
{
protected:
double sales;
public:
salesman(int id,string name,double sales) : employee(id,name),sales(sales) {}
double getSalary() {return sales * 0.04;}
};
class salesmanager: public salesman,manager
{
public:
salesmanager(int id,string name,double sales) : salesman(id,name,sales),manager(id,name),employee(id,name){salary = 5000;}
double getSalary() {return sales * 0.005 + manager::getSalary();}
};
int main()
{
emp e[4];
for(int i=0;i<4;i++)
{
cout<<"职工编号:";
cin>>e[i].id;
cout<<"职工姓名:";
cin>>e[i].name;
}
manager *man = new manager(e[0].id,e[0].name);
cout<<man->getName()<<"的月薪是:"<<man->getSalary()<<endl;
double workhours;
cout<<e[1].name<<"本月工作时数:";
cin>>workhours;
technician *tech = new technician(e[1].id,e[1].name,workhours);
cout<<tech->getName()<<"的月薪是:"<<tech->getSalary()<<endl;
double sales;
cout<<e[2].name<<"本月销售额:";
cin>>sales;
salesman *sale = new salesman(e[2].id,e[2].name,sales);
cout<<sale->getName()<<"的月薪是:"<<sale->getSalary()<<endl;
cout<<e[3].name<<"所管部门月销售额:";
cin>>sales;
salesmanager *sm = new salesmanager(e[3].id,e[3].name,sales);
cout<<sm->getName()<<"的月薪是:"<<sm->getSalary()<<endl;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!