#include #include #define MAX_EMPLOYEES 10 struct employee { char last_name[15]; char first_name[15]; float hourly_wage; float hours_worked; float regular_hours; float overtime_hours; float deferred; float gross_income; float federal_taxes; float state_taxes; float ssi_taxes; float net_income; employee() { hourly_wage = 0; hours_worked = 0; regular_hours = 0; overtime_hours = 0; deferred = 0; gross_income = 0; federal_taxes = 0; state_taxes = 0; ssi_taxes = 0; net_income = 0; } }; extern void PrintReportHeadings ( FILE * reportfile ); extern void InputEmployeeData( employee *current_employee ); extern void CalculateGross ( employee *current_employee ); extern void CalculateTaxes ( employee *current_employee ); extern void CalculateNet ( employee *current_employee ); extern void PrintSummaryReport ( FILE * reportfile, employee *current_employee ); extern void AddDetailToAccumulators ( employee *current_employee, employee *employee_totals, float *number_employees ); extern void PrintReportFooters ( FILE * reportfile, employee *employee_totals, float *number_employees ); int main( ) { employee employees[MAX_EMPLOYEES]; employee employee_totals; int number_employees; int current_employee; FILE *reportfile; char add_another; reportfile = fopen("./report.lst","wt"); if (!reportfile) { printf("Could not open report file. Ending program."); exit(10); } PrintReportHeadings( reportfile ); do { number_employees++; current_employee = number_employees - 1; InputEmployeeData( &employees[current_employee] ); CalculateGross( &employees[current_employee] ); CalculateTaxes( &employees[current_employee] ); CalculateNet ( &employees[current_employee] ); PrintSummaryReport ( reportfile, employees[current_employee] ); AddDetailToAccumulators ( employees[current_employee], &employee_totals ); printf("\nWould you like to add another employee? : (Y or N)\n>"); fflush(stdin); scanf("%c", &add_another); } while ( add_another == 'Y' || add_another == 'y' ); PrintReportFooters ( reportfile, &total_hourly_wage, &total_regular_hours, &total_overtime_hours, &total_deferred,\ &total_gross_income, &total_federal_taxes, &total_state_taxes, &total_ssi_taxes, &total_net_income, &number_employees ); fclose(reportfile); return 0; }