多態(tài)薪酬計算

Employee.h

#pragma once
#include <iostream>
#include <string>
using namespace std;
//姓名 工號 等級
class Employee
{
public:
    Employee();
    virtual void getSalary()=0;
    virtual void show();
    virtual ~Employee();//虛析構(gòu)函數(shù)
protected:
    float m_salary;
    float m_baseSalary;//基本工資
    float m_attendanceRate;//出勤率
    string m_name;
    int m_no;
    int m_level;
};



Employee.cpp

#include "stdafx.h"
#include "Employee.h"
#include <iostream>
using namespace std;

Employee::Employee()
{
    m_name = "";
    m_no = 0;
    m_level = 0;
    m_attendanceRate = 0;
    m_baseSalary = 2500;
    m_salary = 0.0;//計算得到
}


Employee::~Employee()
{
}

void Employee::show(){
    cout << "姓名:" << m_name << "工號:" << m_no << "等級:" << m_level << "薪資:" << m_salary << endl;
}

OrdinaryEmployee.h

#pragma once
#include "Employee.h"
class OrdinaryEmployee : public Employee
{
public:
    OrdinaryEmployee();
    //不指明基類構(gòu)造就會調(diào)用默認(rèn)構(gòu)造
    OrdinaryEmployee(string name,int no,int level,float attendanceRate);
    virtual void getSalary();

    ~OrdinaryEmployee();
};

OrdinaryEmployee.cpp

#include "stdafx.h"
#include "OrdinaryEmployee.h"


OrdinaryEmployee::OrdinaryEmployee()
{
}

void OrdinaryEmployee::getSalary(){
    m_salary = m_attendanceRate * m_baseSalary;
}

OrdinaryEmployee::OrdinaryEmployee(string name, int no, int level, float attendanceRate){
    m_name = name;
    m_no = no;
    m_level = level;
    m_attendanceRate = attendanceRate;
}


OrdinaryEmployee::~OrdinaryEmployee()
{
}

SalesMan.h

#pragma once
#include "Employee.h"
#include "OrdinaryEmployee.h"
class SalesMan : public OrdinaryEmployee
{
public:
    SalesMan();
    SalesMan(string name, int no, int level, float commissionRate, float sales, float attendanceRate);
    ~SalesMan();
    void getSalary();
private:
    float m_commissionRate;//提成比例
    float m_sales;//銷售份額

};


SalesMan.cpp

#include "stdafx.h"
#include "SalesMan.h"
#include <iostream>
using namespace std;

SalesMan::SalesMan()
{
}

SalesMan::SalesMan(string name, int no, int level, float commissionRate, float sales, float attendanceRate) :OrdinaryEmployee(name, no, level, attendanceRate){
    m_sales = sales;
    m_commissionRate = commissionRate;
}

void SalesMan::getSalary(){
    m_salary = m_baseSalary * m_attendanceRate / 2 + m_sales * m_commissionRate;
}

SalesMan::~SalesMan()
{
}


OrdinaryEmployee.h

#pragma once
#include "Employee.h"
class OrdinaryEmployee : public Employee
{
public:
    OrdinaryEmployee();
    //不指明基類構(gòu)造就會調(diào)用默認(rèn)構(gòu)造
    OrdinaryEmployee(string name,int no,int level,float attendanceRate);
    virtual void getSalary();

    ~OrdinaryEmployee();
};


OrdinaryEmployee.cpp

#include "stdafx.h"
#include "OrdinaryEmployee.h"


OrdinaryEmployee::OrdinaryEmployee()
{
}

void OrdinaryEmployee::getSalary(){
    m_salary = m_attendanceRate * m_baseSalary;
}

OrdinaryEmployee::OrdinaryEmployee(string name, int no, int level, float attendanceRate){
    m_name = name;
    m_no = no;
    m_level = level;
    m_attendanceRate = attendanceRate;
}


OrdinaryEmployee::~OrdinaryEmployee()
{
}

main.cpp

// 多態(tài)工資計算-23期-92-子羽.cpp : 定義控制臺應(yīng)用程序的入口點。

//基本工資 = 2500 * 出勤率    
//
//提成 = 提成比例 * 銷售份額
//員工   姓名 工號 等級
//普通員工 基本工資
//經(jīng)理 獎金 + 基本工資(獎金)
//銷售   基本工資 / 2 + 提成(提成比例, 銷售份額)
//結(jié)合繼承,多態(tài)設(shè)計普通員工,經(jīng)理,銷售的薪酬計算

#include "stdafx.h"
#include "Manager.h"
#include "SalesMan.h"
#include "OrdinaryEmployee.h"

int _tmain(int argc, _TCHAR* argv[])
{
    OrdinaryEmployee oe1 = OrdinaryEmployee("jason", 1, 1, 0.98);
    oe1.getSalary();
    oe1.show();

    Manager m1 = Manager("rose", 3, 1, 1 , 3000);
    m1.getSalary();
    m1.show();

    SalesMan am1 = SalesMan("jack", 2, 1, 0.95, 300000, 0.04);
    am1.getSalary();
    am1.show(); 

    return 0;
}


結(jié)果:

薪資計算.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容