//File :Long_program_assignment1.cpp //Author :Andre Long //Due :August 1, 2005 //Description:The purpose of this program is to demostrate a C program using Sequence Selection and Iteration // and to output the results to a report file using functions (modular design)and to use the // data structure 'arrays of structures' #include #include #include #include #include #define FEDTAXRATE 0.15; #define STATETAXRATE .07; #define SSITAXRATE .0775; using namespace std; struct employee { string fullname; double payrate; double TotalHours; double regularHrs; double overTimeHrs; double defered; //Defered Earnings double regularPay; double overtimePay; double grossPay; double FedTax; double StateTax; double SSITax; double netPay; }; struct averagesEmployees { double avgPayRate; double avgRegHrs; double avgOverHrs; double avgGross; double avgFed; double avgState; double avgSSI; double avgDef; double avgNet; }; string getFullName(); //Input functions double getPay(); double getTotalHours(); double findRegHrs(double TotalHours); double findOverHrs(double TotalHours); double getDeferedEarnings(); double processRegularPay(double TotalHours, double payrate); //Processing functions double processOvertimePay(double TotalHours, double payrate); double processGrossPay(double TotalHours, double payrate); double processFedTax(double grossPay, double defered); double processStateTax(double FedTax); double processSSITax(double grossPay, double defered); double processNetPay(double grossPay, double FedTax, double StateTax, double SSITax, double defered); void display(employee* empInfo, averagesEmployees empAVG, int numberOfEmployees, double totalPayRate, double totalRegHrs, double totalOverHrs, double totalGross, double totalFed, double totalState, double totalSSI, double totalDef, double totalNet); //Output functions void reportFile(fstream &, employee* empInfo, averagesEmployees empAVG, int numberOfEmployees, double totalPayRate, double totalRegHrs, double totalOverHrs, double totalGross, double totalFed, double totalState, double totalSSI, double totalDef, double totalNet); void sortedDisplay(fstream &reportOut, employee* empInfo, averagesEmployees empAVG, int numberOfEmployees, double totalPayRate, double totalRegHrs, double totalOverHrs, double totalGross, double totalFed, double totalState, double totalSSI, double totalDef, double totalNet ); void Averages(averagesEmployees* r, int numberOfEmployees, double totalPayRate, double totalRegHrs, double totalOverHrs, double totalGross, double totalFed, double totalState, double totalSSI, double totalDef, double totalNet); int main(void) { char userAnswer; int numberOfEmployees; double totalPayRate=0; double totalRegHrs=0; double totalOverHrs=0; double totalGross=0; double totalFed=0; double totalState=0; double totalSSI=0; double totalDef=0; double totalNet=0; fstream reportOut("Payroll Report.doc", ios::out | ios::app); if(!reportOut) { cout<<"Error with report"<<"\n"; exit(0); } cout<<"How many employees are there in this company? "; cin>>numberOfEmployees; employee* empInfo = new employee[numberOfEmployees]; averagesEmployees empAVG; do { for(int i=0; i>userAnswer; } while (userAnswer =='Y' || userAnswer =='y' ); reportOut.close(); return 0; } string getFullName() { string first; string last; string punctuation = ", "; string FullName; cout<<"\n"; cout<<"Enter employee's first name "; cin>>first; cout<<"\n"; cout<<"Enter employee's last name "; cin>>last; FullName = last + punctuation + first; return FullName; } double getPay() { double moneyValue; cout<<"\n"; cout<<"Enter the pay rate for this employee "; cin>>moneyValue; return moneyValue; } double getTotalHours() { double allHours; cout<<"Enter the total number of hours worked for this employee "; cin>>allHours; return allHours; } double findRegHrs(double TotalHours) { double regHrs; if (TotalHours <= 40) { regHrs=TotalHours; return regHrs; } else { regHrs = 40; return regHrs; } } double findOverHrs(double TotalHours) { double OverHrs; if(TotalHours > 40) { OverHrs = (TotalHours-40); return OverHrs; } else { OverHrs = 0; return OverHrs; } } double getDeferedEarnings() { double def; cout<<"Enter the amount of defered earnings (amount of gross pay not taxed) "; cin>>def; return def; } double processRegularPay(double TotalHours, double payrate) { double regular_pay; if(TotalHours<=40) { regular_pay = TotalHours *( payrate ); return regular_pay; } else { regular_pay = 40 *( payrate ); return regular_pay; } } double processOvertimePay(double TotalHours, double payrate) { double overtime_pay; overtime_pay = ( TotalHours - 40 ) * (1.5 * (payrate) ); return overtime_pay; } double processGrossPay(double TotalHours, double payrate) { double gross_pay; if(TotalHours > 40) { gross_pay = processRegularPay(TotalHours, payrate) + processOvertimePay(TotalHours, payrate); } else { gross_pay = processRegularPay(TotalHours, payrate) + 0; } return gross_pay; } double processFedTax(double grossPay, double defered) { double national; national = grossPay - defered; national = national * FEDTAXRATE; return national; } double processStateTax(double FedTax) { double state; state = FedTax * STATETAXRATE; return state; } double processSSITax(double grossPay, double defered) { double oldAge; oldAge = grossPay - defered; oldAge = oldAge * SSITAXRATE; return oldAge; } double processNetPay(double grossPay, double FedTax, double StateTax, double SSITax, double defered) { double net_pay; net_pay = grossPay-FedTax-StateTax-SSITax-defered; return net_pay; } void Averages(averagesEmployees* empAVG, int numberOfEmployees, double totalPayRate, double totalRegHrs, double totalOverHrs, double totalGross, double totalFed, double totalState, double totalSSI, double totalDef, double totalNet) { (*empAVG).avgPayRate = totalPayRate / numberOfEmployees; (*empAVG).avgRegHrs = totalRegHrs / numberOfEmployees; (*empAVG).avgOverHrs = totalOverHrs / numberOfEmployees; (*empAVG).avgGross = totalGross / numberOfEmployees; (*empAVG).avgFed = totalFed / numberOfEmployees; (*empAVG).avgState = totalState / numberOfEmployees; (*empAVG).avgSSI = totalSSI / numberOfEmployees; (*empAVG).avgDef = totalDef / numberOfEmployees; (*empAVG).avgNet = totalNet / numberOfEmployees; } void display(employee* empInfo, averagesEmployees empAVG, int numberOfEmployees, double totalPayRate, double totalRegHrs, double totalOverHrs, double totalGross, double totalFed, double totalState, double totalSSI, double totalDef, double totalNet) { cout<<"\n"; cout<