#include #include /*Number of employees*/ #define NUMBER 5 /*Structure for each employee*/ struct employee { char name[21]; double rate; double hours; }; typedef struct employee employee; /*Function prototypes*/ void userInput(employee *emp); double calcPay(employee emp); double taxes(double pay); void printOut(employee emp); void LoadEmployee(FILE *input, employee *emp); void SaveEmployee(FILE *output, employee emp); char inputMode(); void EntryPoint(); /*Function main begins program execution*/ int main (void) { EntryPoint(); return 0; }//end of main function /*Function to prompt user for name, rate, and hours worked*/ void userInput(employee *emp) { printf("Enter name: "); scanf("%s\n", emp->name); printf("Hourly rate: "); scanf("%lf\n", &emp->rate); printf("Hours worked: "); scanf("%lf\n", &emp->hours); }//end of userInput /*Function to calculate the gross, base, and overtime pay*/ double calcPay(employee emp) { double totalPay = 0.0, basePay = 0.0, overtimePay = 0.0; if(emp.hours <= 40) //if less than 40 hours worked, pay is the normal base pay { totalPay = emp.rate * emp.hours; basePay = totalPay; } else if (emp.hours > 40) //if over 40 hours worked, pay includes overtime { basePay = 40*emp.rate; overtimePay = 1.5*emp.rate*(emp.hours - 40); totalPay = basePay + overtimePay; } printf("Gross pay: $%7.2f\n", totalPay); printf("Base pay: $%7.2f\n", basePay); printf("Overtime pay: $%7.2f\n", overtimePay); return totalPay; }//end of calcPay /*Function to calculate taxes owed*/ double taxes(double pay) { return 0.20*pay; }//end of taxes /*Function to print out paycheck details*/ void printOut(employee emp) { double amount = 0.0; printf("Name: %.21s\n", emp.name); printf("Hours: %.2f\n", emp.hours); printf("Rate: $%7.2f\n", emp.rate); amount = calcPay(emp); printf("Taxes paid: $%7.2f\n", taxes(amount)); printf("Net pay: $%7.2f\n", amount-taxes(amount)); printf("\n"); }//end of printOut /*Function to load one employee from file*/ void LoadEmployee(FILE *input, employee *emp) { if (input != NULL) fread(emp, sizeof(struct employee), 1, input); } /*Function to save one employee to file*/ void SaveEmployee(FILE *output, employee emp) { if(output !=NULL) fwrite(&emp, sizeof(emp), 1, output); } /*Function to print list of employees int empList(FILE *empFile, employee *emp) { int empNum = 0; //char name[21] = { }; printf("Employee List:\n"); for(i=0;iname, "%s", name); printf("%d) %s\n", i, name); emp++; } printf("\n"); printf("Enter Number: "); scanf("%d\n", &empNum); return empNum; char name[21] = { }; printf("Employee List: \n"); while(!feof(empFile)) { fread(emp, sizeof(struct employee), 1, empFile); sscanf(emp->name, "%s", name); for(int i=0; i NUMBER) num = NUMBER; for(int i=0; i