「已注销」 2022-09-14 09:12 采纳率: 80%
浏览 35
已结题

c++问题,上次少发了一些内容

编写一个程序实现小型公司的工资管理。该公司主要有4类人员:经理,兼职技术人员,销售员和销售经理。要求存储这些人员的编号、姓名和月工资,计算月工资并显示全部信息。月工资的计算办法是:经理拿固定月薪8000元;兼职技术人员按每小时100元领取月薪;销售员按当月销售额的4%提成;销售经理既拿固定工资也领取销售提成,固定月工资5000元,提成为所管辖部门当月销售总额的5%。

img

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2022-09-14 09:15
    关注

    不是写代码了么,不采纳也不重复。而且题目有错误,部门月销售额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;
            
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月22日
  • 已采纳回答 9月14日
  • 创建了问题 9月14日

悬赏问题

  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作