//CommisionEmployee.h
//佣金雇员类,薪水完全是销售提成
/*
#ifndef x //先测试x是否被宏定义过
#define x
程序段 1 //如果x没有被宏定义过,定义x,并编译程序段 1
#endif
程序段 2 //如果x已经定义过了则编译程序段2的语句,“忽视”程序段 1。
*/
#ifndef COMMISION_H
#define COMMISION_H
#include <string>
using namespace std;
class CommisionEmployee
{
public:
//构造函数,参数分别为firstname,lastname,社会保障编号socialSecurityNumber,
// 销售额grossSales,销售提成commisionRate。
CommisionEmployee(const string &,const string &,const string &,
double = 0.0,double = 0.0);
~CommisionEmployee();//析构函数
void setFirstName(const string &);
string getFirstName();
void setLastName(const string &);
string getLastName();
void setSocialSecurityNumber(const string &);
string getSocialSecurityNumber();
void setGrossSales(double);
double getGrossSales();
void setCommisionRate(double);
double getCommisionRate();
double earnings();
void print();
private:
string firstName;
string lastName;
string socialSecurityNumber;
double grossSales;
double commisionRate;
};
#endif
//CommisionEmployee.cpp
#include "CommisionEmployee.h"
#include <iostream>
CommisionEmployee::CommisionEmployee( const string &first,const string &last,
const string &ssn,double sales,double rate)
{
setFirstName(first);
setLastName(last);
setSocialSecurityNumber(ssn);
setGrossSales(sales);
setCommisionRate(rate);
cout << "CommisionEmployee constructor: " << endl;
print();
cout << "\n\n";
}
CommisionEmployee::~CommisionEmployee()
{
cout << "CommisionEmployee destructor: " << endl;
print();
cout << "\n\n";
}
void CommisionEmployee::setFirstName(const string &first)
{
firstName = first;
}
string CommisionEmployee::getFirstName()
{
return firstName;
}
void CommisionEmployee::setLastName(const string &last)
{
lastName = last;
}
string CommisionEmployee::getLastName()
{
return lastName;
}
void CommisionEmployee::setSocialSecurityNumber(const string &ssn)
{
socialSecurityNumber = ssn;
}
string CommisionEmployee::getSocialSecurityNumber()
{
return socialSecurityNumber;
}
void CommisionEmployee::setGrossSales(double sales)
{
grossSales = (sales < 0.0)? 0.0:sales;
}
double CommisionEmployee::getGrossSales()
{
return grossSales;
}
void CommisionEmployee::setCommisionRate(double rate)
{
commisionRate = (rate > 0.0)? rate:0.0 ;
}
double CommisionEmployee::getCommisionRate()
{
return commisionRate;
}
double CommisionEmployee::earnings()
{
return getCommisionRate()*getGrossSales();
}
void CommisionEmployee::print()
{
cout << "commision employee :" << getFirstName() << " "
<< getLastName() << endl;
cout << "social security number :" << getSocialSecurityNumber()
<< "\ngross sales :" << getGrossSales()
<< "\ncommision rate :" << getCommisionRate() << endl;
}
//BasePlusCommisionEmployee.h
//带底薪佣金雇员类,薪水由底薪和提成构成
#ifndef BASEPLUSCOMMISIONEMPLOYEE_H
#define BASEPLUSCOMMISIONEMPLOYEE_H
#include "CommisionEmployee.h"
#include <string>
using namespace std;
class BasePlusCommisionEmployee :public CommisionEmployee
{
public:
BasePlusCommisionEmployee(const string &,const string &,const string &,
double = 0.0,double = 0.0,double = 0.0);
~BasePlusCommisionEmployee();
void setBaseSalary(double);
double getBaseSalary();
double earnings();
void print();
private:
double baseSalary;
};
#endif
//BasePlusCommisionEmployee.cpp
#include "BasePlusCommisionEmployee.h"
#include <iostream>
using namespace std;
BasePlusCommisionEmployee::BasePlusCommisionEmployee(const string &first,
const string &last,const string &ssn,double sales,double rate,double salary)
:CommisionEmployee(first,last,ssn,sales,rate)
{
setBaseSalary(salary);
cout << "BasePlusCommisionEmployee constructor: " << endl;
print();
cout << "\n\n";
}
BasePlusCommisionEmployee::~BasePlusCommisionEmployee()
{
cout << "BasePlusCommisionEmployee destructor: " << endl;
print();
cout << "\n\n";
}
void BasePlusCommisionEmployee::setBaseSalary(double salary)
{
baseSalary = salary;
}
double BasePlusCommisionEmployee::getBaseSalary()
{
return baseSalary;
}
double BasePlusCommisionEmployee::earnings()
{
return getBaseSalary() + CommisionEmployee::earnings();
}
void BasePlusCommisionEmployee::print()
{
cout << "base-salaried " ;
CommisionEmployee::print();
cout << "base salary :" << getBaseSalary() << endl;
}
//mian.cpp
#include "BasePlusCommisionEmployee.h"
#include "CommisionEmployee.h"
#include <iostream>
#include <iomanip>
using namespace std;
//这个实例旨在明晰继承关系中的析构函数与构造函数调用顺序!!!
int main()
{
cout << fixed << setprecision(2);
{
CommisionEmployee cemployee("Bob","Swift","0123-7890-32",5000,0.04);
cemployee.print();
cout << "employee's earning is " << cemployee.earnings();
cemployee.setCommisionRate(0.05);
cout << "\n\nUpdate employee information output by print function:" << endl;
cemployee.print();
cout << "employee's earning is " << cemployee.earnings();
cout << endl << endl;
}
{
BasePlusCommisionEmployee bpcemployee("Jax","Lanester","0341-8907-82",8000,0.04,800);
bpcemployee.print();
cout << "employee's earning is " << bpcemployee.earnings() << endl;
bpcemployee.setCommisionRate(0.06);
cout << "\nUpdate employee information output by print function:" << endl;
bpcemployee.print();
cout << "employee's earning is " << bpcemployee.earnings();
cout << "\n\n";
}
system("pause >> cout");
return 0;
}
C++大学基础教程_12_面向对象编程:继承
最新推荐文章于 2022-07-06 15:36:56 发布