Code:
/* Program: Assign2c
Course: CISP360
Author: Arturo
Purpose: Payroll Program
Date: 03/20/13
Software Change Record
Date Who What
03/20 Arturo Second Program
*/
/* Decomposition
3.0 Payroll
3.1 PrintReportHeadings
3.2 InitializeAccumulators
3.3 InputEmployeeData
3.4 CalculateGross
3.5 CalculateTaxes
3.5.1 CalcFedtax
3.5.2 CalcStatetax
3.5.3 CalcSSItax
3.6 AddDetailToAccumulator
3.7 PrintSummaryReport
*/
extern void calculatetaxes(float gross,float deferred, float *ft, float *st, float ........i);
void ovtHrs(float *hrs_wrk, float *ovt_hrs, float hrs, float *gross, float payrate);
void netPay(float gross, float deferred, float ft, float st, float ssi, float *net);
void calcAccumulator(float *tot_payrate, float payrate, float *tot_hrs_wrk, float hrs_wrk, float *tot_ovt, float ovt_hrs,
float *tot_gross, float gross, float *tot_ft, float ft, float *tot_st, float st, float *tot_ssi, float ssi,
float *tot_deferred, float deferred, float *tot_net, float net);
void calcAverage(float tot_payrate, float *payrate_avg, float tot_hrs_wrk, float *hrs_wrk_avg, float tot_ovt, float *ovt_avg,
float tot_gross, float *gross_avg, float tot_ft, float *ft_avg, float tot_st, float *st_avg, float tot_ssi,
float ........i_avg, float tot_deferred, float *deferred_avg, float tot_net, float *net_avg);
void initializeAccumulators(float *tot_payrate, float * tot_hrs_wrk, float *tot_ovt, float *tot_gross, float *tot_ft,
float *tot_st, float *tot_ssi, float *tot_deferred, float *tot_net);
void inputEmpData(char *lastname, char *firstname, float *payrate, float *hrs, float *deferred);
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define BLANKLINES " \n\n"
#define REPORTHEADER " Employee Pay Reg Hrs Gross Fed SSI Net\n"
#define REPORTHEADER1 " Name Rate Ovt Hrs Pay State Defr Pay\n"
#define REPORTHEADER2 " ========= ====== ========= ======= ======= ====== =====\n"
#define REPORTFORMAT "%18s %10.2f %15.2f %17.2f %18.2f%15.2f%11.2f\n"
#define REPORTFORMAT1 " %35.2f %36.2f %12.2f\n"
#define REPORTFORMAT2 " Totals%28.2f%16.2f%18.2f%19.2f%15.2f%11.2f\n"
#define REPORTFORMAT3 " %50.2f%37.2f%15.2f\n"
#define REPORTFORMAT4 " Averages%26.2f%16.2f%18.2f%19.2f%15.2f%11.2f\n"
#define REPORTFORMAT5 " %49.2f%37.2f%15.2f\n"
#define ARRAYSIZE 5
int main(void)
{
char lastname[ARRAYSIZE][12], firstname[ARRAYSIZE][10];
char S_name[12+10];
float payrate[ARRAYSIZE], hrs_wrk[ARRAYSIZE], ovt_hrs[ARRAYSIZE], gross[ARRAYSIZE], ft[ARRAYSIZE], st[ARRAYSIZE], ssi[ARRAYSIZE], deferred[ARRAYSIZE], net[ARRAYSIZE], hrs[ARRAYSIZE];
float tot_payrate, tot_hrs_wrk, tot_ovt, tot_gross, tot_ft, tot_st, tot_ssi, tot_deferred, tot_net;
float payrate_avg, hrs_wrk_avg, ovt_avg, gross_avg, ft_avg, st_avg, ssi_avg, deferred_avg, net_avg;
int i;
FILE * reportFILE;
reportFILE=fopen("./report.txt","wt");
if (reportFILE==NULL)
{
printf("Report File open failed...\n");
exit(-80); //terminate app-reqs <stdlib.h>
}
for(i=0; i<ARRAYSIZE; i++)
{
inputEmpData(&lastname, &firstname, &payrate, &hrs, &deferred); //here goes function of inputEmpData
printf(BLANKLINES);
}
printf(BLANKLINES);
fprintf(reportFILE, REPORTHEADER);
fprintf(reportFILE, REPORTHEADER1);
fprintf(reportFILE, REPORTHEADER2);
initializeAccumulators(&tot_payrate, &tot_hrs_wrk, &tot_ovt, &tot_gross, &tot_ft, &tot_st, &tot_ssi, &tot_deferred, &tot_net);
for(i=0; i<ARRAYSIZE; i++)
{
strcpy(S_name, lastname[i]);
strcat(S_name, ", ");
strcat(S_name, firstname[i]);
ovtHrs(&hrs_wrk[i], &ovt_hrs[i], hrs[i], &gross[i], payrate[i]);
calculatetaxes(gross[i], deferred[i], &ft[i], &st[i], &ssi[i]);
netPay(gross[i], deferred[i], ft[i], st[i], ssi[i], &net[i]);
calcAccumulator(&tot_payrate, payrate[i], &tot_hrs_wrk, hrs_wrk[i], &tot_ovt, ovt_hrs[i], &tot_gross, gross[i], &tot_ft, ft[i], &tot_st, st[i], &tot_ssi, ssi[i], &tot_deferred, deferred[i], &tot_net, net[i]);
calcAverage(tot_payrate, &payrate_avg, tot_hrs_wrk, &hrs_wrk_avg, tot_ovt, &ovt_avg, tot_gross, &gross_avg, tot_ft, &ft_avg, tot_st, &st_avg, tot_ssi, &ssi_avg, tot_deferred, &deferred_avg, tot_net, &net_avg);
printf(BLANKLINES);
fprintf(reportFILE, REPORTFORMAT, S_name, payrate[i], hrs_wrk[i], gross[i], ft[i], ssi[i], net[i]);
fprintf(reportFILE, REPORTFORMAT1, ovt_hrs[i],st[i], deferred[i]);
}
printf(BLANKLINES);
fprintf(reportFILE, REPORTFORMAT2, tot_payrate, tot_hrs_wrk, tot_gross, tot_ft, tot_ssi, tot_net);
fprintf(reportFILE, REPORTFORMAT3, tot_ovt, tot_st, tot_deferred);
fprintf(reportFILE, REPORTFORMAT4, payrate_avg, hrs_wrk_avg, gross_avg, ft_avg, ssi_avg, net_avg);
fprintf(reportFILE, REPORTFORMAT5, ovt_avg, st_avg,deferred_avg);
fclose(reportFILE);
while(getchar()!= '\n');
getchar;
return 0;
}
void inputEmpData(char *lastname, char *firstname, float *payrate, float *hrs, float *deferred)
{
printf("Enter the last name of the employee\n");
scanf("%s", lastname);
printf("Enter the first name of the employee\n");
scanf("%s", firstname);
printf("Enter the the pay of the employee\n");
scanf("%f", payrate);
printf("Enter the amount of hours worked\n");
scanf("%f", hrs);
printf("Enter the deferred amount\n");
scanf("%f", deferred);
}
void ovtHrs(float *hrs_wrk, float *ovt_hrs, float hrs, float *gross, float payrate)
{
if(hrs<=40)
{
*ovt_hrs=0;
*hrs_wrk=hrs;
*gross=hrs*payrate;
}
else
{
*hrs_wrk=40;
*ovt_hrs=hrs-40;
*gross=payrate*40+(hrs-40)*1.5*payrate;
}
}
void netPay(float gross, float deferred, float ft, float st, float ssi, float *net)
{
*net=gross-deferred-ft-st-ssi;
}
void initializeAccumulators(float *tot_payrate, float * tot_hrs_wrk, float *tot_ovt, float *tot_gross, float *tot_ft, float *tot_st, float *tot_ssi, float *tot_deferred, float *tot_net)
{
*tot_payrate=0;
*tot_hrs_wrk=0;
*tot_ovt=0;
*tot_gross=0;
*tot_ft=0;
*tot_st=0;
*tot_ssi=0;
*tot_deferred=0;
*tot_net=0;
}
void calcAccumulator(float *tot_payrate, float payrate, float *tot_hrs_wrk, float hrs_wrk, float *tot_ovt, float ovt_hrs, float *tot_gross, float gross, float *tot_ft, float ft, float *tot_st, float st, float *tot_ssi, float ssi,float *tot_deferred, float deferred, float *tot_net, float net)
{
*tot_payrate+=payrate;
*tot_hrs_wrk+=hrs_wrk;
*tot_ovt+=ovt_hrs;
*tot_gross+=gross;
*tot_ft+=ft;
*tot_st+=st;
*tot_ssi+=ssi;
*tot_deferred+=deferred;
*tot_net+=net;
}
void calcAverage(float tot_payrate, float *payrate_avg, float tot_hrs_wrk, float *hrs_wrk_avg, float tot_ovt, float *ovt_avg, float tot_gross, float *gross_avg, float tot_ft, float *ft_avg, float tot_st, float *st_avg, float tot_ssi, float ........i_avg, float tot_deferred, float *deferred_avg, float tot_net, float *net_avg)
{
*payrate_avg=(tot_payrate/5);
*hrs_wrk_avg=(tot_hrs_wrk/5);
*ovt_avg=(tot_ovt/5);
*gross_avg=(tot_gross/5);
*ft_avg=(tot_ft/5);
*st_avg=(tot_st/5);
........i_avg=(tot_ssi/5);
*deferred_avg=(tot_deferred/5);
*net_avg=(tot_net/5);
}