// Project 4 : Employee Database Part 4 // Programmer : Sean Smith // Class : CSC215 // Professor : Phill Miller // Employee.cpp #include "Employee.h" #include namespace Human { // [CONSTRUCTORS] ============================================================================== // Default Constructor Employee::Employee() { e_name = new char[strlen("no name") + 1]; strcpy(e_name, "no name"); e_job = new char[strlen("no job") + 1]; strcpy(e_job, "no job"); e_wage = 0; e_hours = 0; e_pay = 0; } // Overloaded Constructor Employee::Employee(const char* initName, const char* initJob, float initWage, float initHours, float initPay) { // Dynamic Memory Allocation e_name = new char[strlen(initName) + 1]; strcpy(e_name, initName); e_job = new char[strlen(initJob) + 1]; strcpy(e_job, initJob); if (initWage >= 0) e_wage = initWage; else e_wage = 0; if (initHours >= 0) e_hours = initHours; else e_hours = 0; if (initPay >= 0) e_pay = initPay; else e_pay = 0; } // [ACCESSORS] ==================================================================================== const char* Employee::GetName() const { return e_name; } const char* Employee::GetJob() const { return e_job; } float Employee::GetWage() const { return e_wage; } float Employee::GetHours() const { return e_hours; } float Employee::GetPay() const { return e_pay; } // [MUTATORS] ==================================================================================== void Employee::SetName(const char* employeeName) { delete [] e_name; e_name = new char[strlen(employeeName) + 1]; strcpy(e_name, employeeName); } void Employee::SetJob(const char* employeeJob) { delete [] e_job; e_job = new char[strlen(employeeJob) + 1]; strcpy(e_job, employeeJob); } void Employee::SetWage(float employeeWage) { if (employeeWage >= 0) e_wage = employeeWage; else throw "Invalid Wage!"; } void Employee::SetHours(float employeeHours) { if (employeeHours >= 0) e_hours = employeeHours; else throw "Invalid Hours!"; } void Employee::SetPay(float employeePay) { if (employeePay >= 0) e_pay = employeePay; else throw "Invalid Pay!"; } // [METHODS] =================================================================================== float Employee::CalculatePay(float employeeWage, float employeeHours) { float employeePay = 0; if (employeeWage >= 0 && employeeHours >= 0) { employeePay = employeeWage*employeeHours; return employeePay; } else { employeePay = 0; return employeePay; } } bool Employee::IsHighlyPaid(float employeeWage, float employeePay) { if (employeeWage >= 20 || employeePay >= 800) return true; else return false; } // DESTRUCTORS ================================================================================= Employee::~Employee() { // release dynamicly allocated memory delete [] e_name; delete [] e_job; } }