CommissionEmployee.h
#pragma once
#include<string>
class CommissionEmployee
{
public:
CommissionEmployee(const std::string &, const std::string &,
const std::string &, double = 0.0, double = 0.0);
void setFirstName(const std::string &);
std::string getFirstName() const;
void setLastName(const std::string &);
std::string getLastName() const;
void setSocialSecurityNumber(const std::string &);
std::string getSocialSecurityNumber() const;
void setGrossSales(double);
double getGrossSales() const;
void setCommissionRate(double);
double getCommissionRate() const;
double earnings() const;
void print() const;
protected:
std::string firstName;
std::string lastName;
std::string socialSecurityNumber;
double grossSales;
double commissionRate;
};
BasePlusCommissionExployee.h
#pragma once
#include<string>
#include"CommissionEmployee.h"
class BasePlusCommissionEmployee:public CommissionEmployee
{
public:
BasePlusCommissionEmployee(const std::string &, const std::string &,
const std::string &, double = 0.0, double = 0.0, double = 0.0);
void setBaseSalary(double);
double getBaseSalary() const;
double earnings() const;
void print() const;
private:
double baseSalary;
};
BasePlusCommissionEmployee.cpp
#include<iostream>
#include<stdexcept>
#include"BasePlusCommissionExployee.h"
using namespace std;
BasePlusCommissionEmployee::BasePlusCommissionEmployee(
const string &first, const string &last, const string &ssn,
double sales, double rate, double salary)
:CommissionEmployee(first, last, ssn, sales, rate)
{
setBaseSalary(salary);
}
void BasePlusCommissionEmployee::setBaseSalary(double salary)
{
if (salary >= 0.0)
baseSalary = salary;
else
throw invalid_argument("Salary must be >= 0.0");
}
double BasePlusCommissionEmployee::getBaseSalary() const
{
return baseSalary;
}
double BasePlusCommissionEmployee::earnings() const
{
return getBaseSalary() + CommissionEmployee::earnings();
}
void BasePlusCommissionEmployee::print() const
{
cout << "base-salaried ";
CommissionEmployee::print();
cout<< "\nbase salary: " << getBaseSalary();
}
CommissionEmployee.cpp
#include<iostream>
#include<stdexcept>
#include"CommissionEmployee.h"
using namespace std;
CommissionEmployee::CommissionEmployee(
const string &first, const string &last, const string &ssn,
double sales, double rate)
:firstName(first),lastName(last), socialSecurityNumber(ssn)
{
setGrossSales(sales);
setCommissionRate(rate );
}
void CommissionEmployee::setFirstName(const string &first)
{
firstName = first;
}
string CommissionEmployee::getFirstName() const
{
return firstName;
}
void CommissionEmployee::setLastName(const string &last)
{
lastName = last;
}
string CommissionEmployee::getLastName() const
{
return lastName;
}
void CommissionEmployee::setSocialSecurityNumber(const string &ssn)
{
socialSecurityNumber = ssn;
}
string CommissionEmployee::getSocialSecurityNumber() const
{
return socialSecurityNumber;
}
void CommissionEmployee::setGrossSales(double sales)
{
if (sales >= 0)
grossSales = sales;
else
throw invalid_argument("Gross salesmust be >= 0.0");
}
double CommissionEmployee::getGrossSales() const
{
return grossSales;
}
void CommissionEmployee::setCommissionRate(double rate)
{
if (rate > 0.0 && rate < 1.0)
commissionRate = rate;
else
throw invalid_argument("Commission rate must be > 0.0 and <1.0");
}
double CommissionEmployee::getCommissionRate() const
{
return commissionRate;
}
double CommissionEmployee::earnings() const
{
return getCommissionRate() * getGrossSales();
}
void CommissionEmployee::print() const
{
cout << "commission employee: "
<< getFirstName() << ' ' << getLastName()
<< "\nsocial security number: " << getSocialSecurityNumber()
<< "\ngross sales: " << getGrossSales()
<< "\ncommission rate: " << getCommissionRate();
}
fig11_06.cpp
#include<iostream>
#include<iomanip>
#include"CommissionEmployee.h"
using namespace std;
int main()
{
CommissionEmployee employee(
"Sue", "Jones", "222-22-2222", 10000, .06);
cout << fixed << setprecision(2);
cout << "Employee information obtained by get funtions: \n"
<< "\nFirst name is " << employee.getFirstName()
<< "\nLast name is " << employee.getLastName()
<< "\nSocial security number is "
<< employee.getSocialSecurityNumber()
<< "\nGross sales is " << employee.getGrossSales()
<< "\nCommission rate is " << employee.getCommissionRate() << endl;
employee.setGrossSales(8000);
employee.setCommissionRate(.1);
cout << "\mUpdate employee information output by print function: \n"
<< endl;
employee.print();
cout << "\n\nEmployee's earnings: $" << employee.earnings() << endl;
}