C++ 带有初始化数值的构造函数的使用——员工工资的计算

员工有三种:

普通员工:基本工资

销售员工:基本工资,销售额的提成

销售经理:基本工资,销售额的提成,职位工资

注意:

1,这三个类是继承关系,类的数据成员有一部分是一样的,所以将类的数据成员设置为保护类型

2,基本工资是固定的,即每一个员工除了工号与姓名不同之外,他的基本工资都是一定的。所以这里需要使用构造函数的初始化,将基本工资定义为2000。

3,销售额的提成部分。提成比例是不变的,所以设置为静态成员,要注意静态成员的初始化,在类内声明,类外定义。

 

#include<bits/stdc++.h>
using namespace std;
class Employee
{
protected:
    int number;
    string name;
    double basicSalary;
    double money;
public:
    Employee(int num=0,string na=" ",double basic=2000)
    {
        number=num;
        name=na;
        basicSalary=basic;
    }
   // Employee(){}
    int getNum(){return number;}
    string getNa(){return name;}
    double getBasic(){return basicSalary;}
    void input()
    {
        cout<<"请输入工号和姓名!"<<endl;
        cin>>number>>name;
    }
    void pay()
    {
        money=basicSalary;
    }
    void print()
    {
        pay();
        cout<<"一般员工的工资为:"<<money<<endl;
    }
    /*
    friend istream & operator>>(istream &is,Employee& em)
    {
        is>>em.number>>em.name;
    }
    */
};
class Salesman:public Employee
{
protected:
    int sales;//销售额
    static double commrate;
    double money1;
public:
    Salesman(int sal=0){sales=sal;}
    void input()
    {
        Employee::input();
        cout<<"本月个人销售额";
        cin>>sales;
    }
    void pay()
    {
        money1=basicSalary+sales*commrate;
    }
    void print()
    {
        pay();
        cout<<"销售员工的工资为:"<<money1<<endl;
    }
};
double Salesman::commrate=0.0005;
class SalesManger:public Salesman
{
protected:
    double jobSalary;
    double money2;
public:
    SalesManger(double jobs=3000)
    {
        jobSalary=jobs;
    }
    void input()
    {
        Employee::input();
        cout<<"本月部门销售额:"<<endl;
        cin>>sales;
    }
    void pay()
    {
        money2=basicSalary+jobSalary+sales*commrate;
    }
    void print()
    {
        pay();
        cout<<"销售经理的工资为:"<<money2<<endl;
    }
};
int main()
{
    Employee em;
    em.input();
    //em.pay();
    em.print();
    Salesman sm;
    sm.input();
    //sm.pay();
    sm.print();
    SalesManger smm;
    smm.input();
    smm.print();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值