/******************************************************************************
Name: Maria Logan
File Name: main.cpp
*******************************************************************************/
#include <iostream>
using namespace std;
#include "hourlyEmployee.h"
#include "salariedEmployee.h"
#include "employee.h"
//Test program with six employees hard coded to work with program to compute salary of employees.
int main()
{
employee* emp[6];
emp[0] = new salariedEmployee("Alyssa Flint ", "Managment", "Owner", 150000);
emp[1] = new salariedEmployee("Hayley Gandey", "Managment", "Vice President", 100000);
emp[2] = new salariedEmployee("Dustin Short", "Managment", "Regional Supervisor", 82000.50);
emp[3] = new hourlyEmployee("Brandon Dempsey", "Sales", "Salesman", 55, 22.35);
emp[4] = new hourlyEmployee("Marsha Greene", "Support", "Receptionist", 42, 12.27);
emp[5] = new hourlyEmployee("Erik Testerman", "Support", "Janitor", 90, 7.25);
for (int i = 0; i < 6; i++)
{
emp[i]->print();
}
getchar();
return 0;
}
/******************************************************************************
Name: Maria Logan
File Name: employee.h
*******************************************************************************/
#pragma once
#include <iostream>
#include <string>
using namespace std;
#ifndef EMP_H
#define EMP_H
const double TAX_RATE = 30;
class employee {
public:
employee()
{
name = "";
department = "";
title = "";
}
employee(string _name, string _department, string _title)
{
name = _name;
department = _department;
title = _title;
}
string getName()
{
return name;
}
string getDepartment()
{
return department;
}
string getTitle()
{
return title;
}
void setName(string _name)
{
name = _name;
}
void setDepartment(string dept)
{
department = dept;
}
void setTitle(string _title)
{
title = _title;
}
virtual void print()
{
cout << "Employee Name: " << name << endl;
cout << "Department: " << department << endl;
cout << "Title: " << title << endl;
}
private:
string name;
string department;
string title;
};
#endif
/******************************************************************************
Name: Maria Logan
File Name: hourlyEmployee.h
*******************************************************************************/
#pragma once
#include "employee.h"
#include <iostream>
#include <string>
using namespace std;
#ifndef hourlyEmployee_H
#define hourlyEmployee_H
class hourlyEmployee : public employee {
//Determines pay before and after tax, hours worked at regular pay and hours worked at overtime of hourly employee.
private:
int hoursWorked;
double hourlyRate;
double taxAmount;
double netPay;
double paycheck;
void CalculateSalary();
public:
hourlyEmployee();
hourlyEmployee(string _name, string _department, string _title, int _hours_worked, double _hourly_rate);
double getHourlyRate();
double getOvertimePay();
double getRegularPay();
double getTaxAmount();
double getNetPay();
int getHoursWorked();
void setHoursWorked(int hours);
void setHourlyRate(double rate);
void print();
};
#endif
hourlyEmployee::hourlyEmployee() :employee() {
hoursWorked = 0;
hourlyRate = 0;
}
hourlyEmployee::hourlyEmployee(string _name, string _department, string _title, int hours_worked, double hourly_rate) :employee(_name, _department, _title) {
hoursWorked = hours_worked;
hourlyRate = hourly_rate;
}
double hourlyEmployee::getHourlyRate() {
return hourlyRate;
}
double hourlyEmployee::getOvertimePay() {
int overtimeHours;
double overtime_Pay;
if (getHoursWorked() > 40) {
overtimeHours = getHoursWorked() - 40;
overtime_Pay = overtimeHours * (getHourlyRate() * 1.5);
return overtime_Pay;
}
else {
return 0;
}
}
double hourlyEmployee::getRegularPay() {
double regularPay;
if (getHoursWorked() > 40) {
regularPay = getHourlyRate() * 40;
}
else {
regularPay = getHourlyRate() * getHoursWorked();
}
return regularPay;
}
double hourlyEmployee::getTaxAmount() {
taxAmount = (getRegularPay() + getOvertimePay() * TAX_RATE) / 100;
return taxAmount;
}
double hourlyEmployee::getNetPay() {
netPay = getRegularPay() + getOvertimePay() - getTaxAmount();
return netPay;
}
int hourlyEmployee::getHoursWorked() {
return hoursWorked;
}
void hourlyEmployee::setHoursWorked(int hours_worked) {
hoursWorked = hours_worked;
}
void hourlyEmployee::setHourlyRate(double hourly_rate) {
hourlyRate = hourly_rate;
}
void hourlyEmployee::print() {
this->employee::print();
cout << " Hours Worked: " << getHoursWorked() << endl;
cout << "Hourly Rate: " << getHourlyRate() << endl;
cout << "Overtime Pay: " << getOvertimePay() << endl;
cout << " Net Pay: " << getNetPay() << "\n" << endl;
}
/******************************************************************************
Name: Maria Logan
File Name: salariedEmployee.h
*******************************************************************************/
#pragma once
#include "employee.h"
#include <iostream>
#include <string>
using namespace std;
#ifndef salariedEmployee_H
#define salariedEmployee_H
class salariedEmployee : public employee //Determines pay before and after tax of salaried employee.
{
private:
double annual_salary;
public:
salariedEmployee();
salariedEmployee(string _name, string _department, string _title, double _annual_salary);
double getWeeklyGrossPay();
double getWeeklyTaxAmount();
double getWeeklyNetPay();
void setAnnaulSalary(double salary);
void print();
};
#endif
salariedEmployee::salariedEmployee(){
annual_salary = 0;
}
salariedEmployee::salariedEmployee(string _name, string _department, string _title, double _annual_salary) :employee(_name, _department, _title){
annual_salary = _annual_salary;
}
double salariedEmployee::getWeeklyGrossPay(){
double weeklyGrossPay = 0;
weeklyGrossPay = annual_salary / 52;
return weeklyGrossPay;
}
double salariedEmployee::getWeeklyTaxAmount(){
double weeklyTaxAmount;
weeklyTaxAmount = (getWeeklyGrossPay() * TAX_RATE) / 100;
return weeklyTaxAmount;
}
double salariedEmployee::getWeeklyNetPay(){
double weeklyNetPay;
weeklyNetPay = getWeeklyGrossPay() - getWeeklyTaxAmount();
return weeklyNetPay;
}
void salariedEmployee::setAnnaulSalary(double salary){
annual_salary = annual_salary;
}
void salariedEmployee::print(){
// name, grosspay, taxmount, and net pay
this->employee::print();
cout << "Gross Pay: " << getWeeklyGrossPay() << endl;
cout << "Tax Amount: " << getWeeklyTaxAmount() << endl;
cout << "Net Pay: " << getWeeklyNetPay() << "\n" <<endl;
}