Code:
#include<iostream.h>
#include<fstream.h>
#include<iomanip.h>
int process_employee(int& empnum, float& emprate, float& emphours, ifstream& inData);
void process_payroll(ifstream& inData, ofstream& outData,
const float& FEDERAL_TAX,
const float& STATE_TAX,
const float& SOCSEC_TAX,
float& totalGP, float& totalNP, float& totalFT, float& totalST,
float& totalSS);
void print_summary(ofstream& outData, float& totalGP, float& totalNP,
float& totalFT, float& totalST, float& totalSS);
int main()
{
const float FEDERAL_TAX = .15;
const float STATE_TAX = .0524;
const float SOCSEC_TAX = .07;
float totalGP = 0, totalNP = 0, totalFT = 0, totalST = 0, totalSS = 0;
char flag = ' ';
int excesshours = 0;
ifstream inData;
ofstream outData;
inData.open("A:\indata.txt", ios::in);
outData.open("A:\outdata.txt", ios::out);
process_payroll(inData, outData, FEDERAL_TAX, STATE_TAX, SOCSEC_TAX, totalGP, totalNP,
totalFT, totalST, totalSS);
print_summary(outData, totalGP, totalNP, totalFT, totalST, totalSS);
}
int process_employee(int& empnum, float& emprate, float& emphours, ifstream& inData)
{
inData >> empnum;
if(inData.eof()) return 0;
inData >> emprate;
if(inData.eof()) return 0;
inData >> emphours;
if(inData.eof()) return 0;
return 1;
}
void process_payroll(ifstream& inData, ofstream& outData,
const float& FEDERAL_TAX,
const float& STATE_TAX,
const float& SOCSEC_TAX,
float& totalGP, float& totalNP, float& totalFT, float& totalST,
float& totalSS)
{
int flag = 0;
int empnum;
float emprate, emphours, gross, paynet = 0, fed = 0, state = 0, socSec = 0;
char rateType;
outData << "Employee Payroll\n" << endl;
outData << setw(10) << "Employee" << setw(10) << "Hours" << " "
<< setw(10) << "Rate" << setw(10) << "Gross" << setw(10) << "Net"
<< setw(10) << "Fed"<< setw(10) << "State" << setw(10) << "Soc. Sec" << endl;
flag = process_employee(empnum,emprate,emphours,inData);
while(flag == 1)
{
gross = (emprate * emphours);
rateType = ' ';
//$.15 bonus per hour for employees who work 35 hours or less
if(emphours <= 35)
{
gross += .15 * emphours;
rateType = '*';
}
if(emphours > 40)
{
//add overtime on top of regular wage
gross += (emprate * .5) * (emphours - 40);
rateType = '$';
}
fed = FEDERAL_TAX * gross;
state = STATE_TAX * gross;
socSec = SOCSEC_TAX * gross;
paynet = gross - fed - state - socSec;
//add up totals
totalGP += gross;
totalNP += paynet;
totalFT += fed;
totalST += state;
totalSS += socSec;
//print statements here for individual
outData << setw(10) << empnum << setw(10) << emphours << rateType
<< setw(10) << emprate << setw(10) << gross << setw(10) << paynet
<< setw(10) << fed << setw(10) << state << setw(10) << socSec << endl;
flag = process_employee(empnum,emprate,emphours,inData);
}
}
void print_summary(ofstream& outData, float& totalGP, float& totalNP,
float& totalFT, float& totalST, float& totalSS)
{
outData << "Summary-Totals for all employees\n" << endl;
outData << setw(13) << "Gross Pay" << setw(13) << "Net Pay" << setw(13)
<< "Fedral Tax" << setw(13) << "State Tax" << setw(13) << "Social Security"
<< endl;
outData << setw(13) << totalGP << setw(13) << totalNP << setw(13)
<< totalFT << setw(13) << totalST << setw(13) << totalSS
<< endl;
}
The input file looks like this: