m0_56707387 2021-06-12 12:50 采纳率: 66.7%
浏览 51
已采纳

能不能帮忙做一个人员信息管理系统

作业不会做,能不能用c++帮忙做一个人员信息管理系统

某公司有四种类型的员工:经理、兼职技术人员、推销员和销售经理。各员工的月薪计算如下:经理拿固定月薪8000元;兼职技术人员按100/每小时领取月薪;推销员的月薪按固定月薪2000元和当月推销额的4%提成;销售经理拿固定月薪和销售提成,固定月薪为5000元,销售提成为所管辖部门当月销售额总额的5‰。要求:

1.设计一个基类Employee,派生出其他的类,每个类有构造函数和析构函数;

2.每个类的成员变量至少包括:姓名、员工编号和月薪总额;

3.在主函数中,使用各派生类分别定义一个对象,需要从键盘输入:

1)这四类员工的姓名;

2)兼职技术人员本月的工作小时数;

3)推销员本月的销售额;

4)销售经理所管辖部门本月的销售总额。

4.分别输出这四类员工本月工资;

5.至少使用虚基类、抽象类和虚函数中的两种技术。

 

  • 写回答

3条回答 默认 最新

  • qfl_sdu 2021-06-12 14:15
    关注

    代码如下,如有帮助,请采纳一下,谢谢。

    #include <iostream>
    #include <string>
    using namespace std;
    //虚基类
    class People
    {
    public:
    	People(){}
    };
    //抽象类类
    class Employee : virtual public People
    {
    protected:
    	string name;
    public:
    	Employee(string s):People(){name = s;};
    	virtual double getSolary() = 0;
    	virtual void display() = 0;
    };
    //经理
    class Manager:public Employee
    {
    public:
    	Manager(string s):Employee(s){}
    	double getSolary()
    	{
    		return 8000;
    	}
    	void display()
    	{
    		cout  << name << "'s  solary:" << getSolary() << endl;
    	}
    };
    //兼职技术员
    class Jianzhi :public Employee
    {
    private:
    	int hour;
    public:
    	Jianzhi(string s,int h):Employee(s){hour = h;}
    	double getSolary()
    	{
    		return 100*hour;
    	}
    	void display()
    	{
    		cout  << name << "'s  solary:" << getSolary() << endl;
    	}
    };
    //推销员
    class tuixiaoyuan :public Employee
    {
    private:
    	double xse; //销售额
    public:
    	tuixiaoyuan(string s,double x):Employee(s)
    	{
    		xse = x;
    	}
    	double getSolary()
    	{
    		return  xse * 0.4 + 2000;
    	}
    	void display()
    	{
    		cout  << name << "'s  solary:" << getSolary() << endl;
    	}
    };
    
    class Xiaoshoujingli :public Employee
    {
    private:
    	double xsze;
    public:
    	Xiaoshoujingli(string n,double x):Employee(n)
    	{
    		xsze = x;
    	}
    	double getSolary()
    	{
    		return xsze * 0.04 + 5000;
    	}
    	void display()
    	{
    		cout  << name << "'s  solary:" << getSolary() << endl;
    	}
    };
    
    
    int main()
    {
    	string name;
    	cout << "请输入经理的姓名:";
    	cin >> name;
    	Manager mag(name);
    
    	cout << "请输入兼职技术人员的姓名:";
    	cin >> name;
    	cout << "请输入兼职时长:";
    	int hour;
    	cin >> hour;
    	Jianzhi jz(name,hour);
    
    	cout << "请输入推销员姓名:";
    	cin >> name;
    	cout << "请输入推销额:";
    	double ed;
    	cin >> ed;
    	tuixiaoyuan txy(name,ed);
    
    	cout << "请输入销售经理姓名:";
    	cin >> name;
    	cout << "请输入部门的销售总额:";
    	double zed;
    	cin >> zed;
    	Xiaoshoujingli xsjl(name,zed);
    
    	mag.display();
    	jz.display();
    	txy.display();
    	xsjl.display();
    	return 0;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分