#ifndef HOURLY_H #define HOURLY_H #include "employee.h" class Hourly : public Employee{ private: float hours; float payrate; enum {hourly=1}; static float m_groupGross; public: Hourly(char * last="",char *first="",float pr=0,float hr=0,float deff=0): hours(hr>0?hr:0),payrate(pr>0?pr:0),Employee(last,first,deff){} Hourly(Hourly &h): hours(h.getHours()),payrate(h.getPayRate()),Employee(h.getLastName(),h.getFirstName(),h.getDeffered()){} void setHours(const float f){(f>0)?hours=f:hours=0;} float getHours(void)const{return hours;} void setPayRate(const float f){(f>0)?payrate=f:payrate=0;} float getPayRate(void)const{return payrate;} float getOvtHours(void)const{return (hours>40)? (hours-40) : 0;} void initGroupGross() { m_groupGross = 0; } float getGroupGross(){ return m_groupGross;} virtual void calcGross(); virtual int GetType() const { return hourly;} void printTitle(FILE* r) { fprintf(r,"\nHourly Employees\n"); } void printSubTotal(FILE* r) { fprintf(r,"\n-------------------------------"); fprintf(r,"\n Groups Gross :%6.2f",m_groupGross); } }; float Hourly::m_groupGross = 0; void Hourly::calcGross() { if(hours <= 40){ this->setGross(hours * payrate); m_groupGross += (hours * payrate); } else{ this->setGross( 40 * payrate + (hours-40)* 1.5 * payrate); m_groupGross +=( 40 * payrate + (hours-40)* 1.5 * payrate); } } #endif