#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; }; 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, int number_employees ); extern void PrintReportFooters ( FILE * reportfile, employee *employee_totals, int number_employees ); int main( ) { struct employee employees[MAX_EMPLOYEES] = {"", "", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; struct employee employee_totals = {"", "", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 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, &employee_totals, number_employees ); fclose(reportfile); return 0; }