Question
C++ Program Module 9 Question 2 (Payroll System Modification) Modify the payroll system discussed in the class. You are now required to include private instance
C++ Program
Module 9
Question 2
(Payroll System Modification) Modify the payroll system discussed in the class. You are now required to include private instance variable birthDate in class Employee. Use class Date we have discussed in previous modules, Assume that payroll is processed once per month. Create an array of Employee variables to store references to the various employee objects. In a loop, calculate the payroll for each Employee (polymorphically), and add a $100.00 bonus to the persons payroll amount if the current month is the month in which the Employees birthday occurs.
STUDENT TO DO : Change the Hourly rate of the Hourly Employee and give 10% increase in hourly rate
PROG32.cpp
#include
#include
#include
#include
#include "Employee.h"
#include "HourlyEmployee.h"
#include "SalariedEmployee.h"
#include "CommissionEmployee.h"
#include "BasePlusCommissionEmployee.h"
using namespace std;
int main()
{
vector < Employee * > employees( 4 );
// initialize vector with various kinds of Employees
employees[ 0 ] = new SalariedEmployee("John", "Smith", "111-11-1111", 800 );
employees[ 1 ] = new CommissionEmployee("Sue", "Jones","333-33-3333", 10000, .06 );
employees[ 2 ] = new HourlyEmployee("John", "Charles", "111-11-1111", 26, 80 );
employees[ 3 ] = new BasePlusCommissionEmployee("Bob", "Lewis", "444-44-4444", 5000, .04, 300 );
// polymorphically process each element in vector employees
for ( Employee *employeePtr : employees )
{
employeePtr->print(); // output employee information
cout << endl;
// get the basePlusCommission Employee to provide a raise
BasePlusCommissionEmployee *derivedPtr = dynamic_cast < BasePlusCommissionEmployee * >( employeePtr );
// determine whether element points to a BasePlusCommissionEmployee
if ( derivedPtr != nullptr ) // true for "is a" relationship
{
double oldBaseSalary = derivedPtr->getBaseSalary(); // get the old salary
cout << "old base salary: $" << oldBaseSalary << endl; //print old salary
derivedPtr->setBaseSalary( 1.10 * oldBaseSalary ); // provide a 10% raise
cout << "new base salary with 10% increase is: $" << derivedPtr->getBaseSalary() << endl; // get the new salary
} // end if
cout << "earned $" << employeePtr->earnings() << " ";
// downcast pointer
//@ STUDENT TO DO : Change the Hourly rate of the Hourly Employee and give 10% increase in hourly rate
}
}
********************************************************************************************************************************
HourlyEmployee.cpp
#include
using std::cout;
using std::endl;
#include "HourlyEmployee.h" // Employee class definition
HourlyEmployee::HourlyEmployee( const string &first,
const string &last, const string &socialSecurityNumber,
double hourlyWage, double hoursWorked )
: Employee( first, last, socialSecurityNumber )
{
setWage( hourlyWage );
setHours( hoursWorked );
} // end HourlyEmployee constructor
// set hourly worker's wage
void HourlyEmployee::setWage( double wageAmount )
{
wage = wageAmount < 0.0 ? 0.0 : wageAmount;
} // end function setWage
// set hourly worker's hours worked
void HourlyEmployee::setHours( double hoursWorked )
{
hours = ( hoursWorked >= 0.0 && hoursWorked <= 168.0 ) ?
hoursWorked : 0.0;
} // end function setHours
// return hours worked
double HourlyEmployee::getHours() const
{
return hours;
} // end function getHours
// return wage
double HourlyEmployee::getWage() const
{
return wage;
} // end function getWage
// get hourly worker's pay
double HourlyEmployee::earnings() const
{
if ( hours <= 40 ) // no overtime
return wage * hours;
else // overtime is paid at wage * 1.5
return 40 * wage + ( hours - 40 ) * wage * 1.5;
} // end function earnings
// print hourly worker's information
void HourlyEmployee::print() const
{
cout << " hourly employee: ";
Employee::print(); // code reuse
} // end function print
********************************************************************************************************************************
HourlyEmployee.h
// Fig. 10.27: hourly.h
// HourlyEmployee class definition.
#ifndef HOURLY_H
#define HOURLY_H
#include "employee.h" // Employee class definition
class HourlyEmployee : public Employee {
public:
HourlyEmployee( const string &, const string &, const string &, double = 0.0, double = 0.0);
void setWage( double );
double getWage() const;
void setHours( double );
double getHours() const;
virtual double earnings() const;
virtual void print() const;
private:
double wage; // wage per hour
double hours; // hours worked for week
}; // end class HourlyEmployee
#endif // HOURLY_H
*****************************************************************
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started