#include #include // For the files!!!! #include // For manipulators & formatting options using std::cin; using std::cout; using std::endl; using std::setw; using std::ios; using std::resetiosflags; using std::setiosflags; using std::ifstream; using std::ofstream; const int EMPLOYEES = 20; const int MAX = 21; int ReadData ( ifstream &inFile, char name[][MAX], char lname [][MAX], char social[][MAX], float wage[], float hours[], char status[]); void PrintTotalsAndSummary (char name[][MAX], char lname [][MAX], char social[][MAX], float wage[], float hours[], char status[], float pay[], float Opay[], float NetPay[], int record_counter); int main ( ) { char name[EMPLOYEES][MAX]; char lname[EMPLOYEES][MAX]; char social[EMPLOYEES][MAX]; float wage[EMPLOYEES]; float hours[EMPLOYEES]; float pay[EMPLOYEES]; float Opay[EMPLOYEES]; float NetPay[EMPLOYEES]; char status[EMPLOYEES]; int record_counter ( 0 ); ifstream inFile; // Notice how this automatically opens the file inFile.open ( "bus.txt"); if ( inFile.is_open ( ) ) { record_counter = ReadData (inFile, name, lname, social, wage, hours, status); inFile.close ( ); } else { cout << "Trouble Opening File: inFile"; cout << "\n\n\t\t ** About to EXIT NOW! ** "; } PrintTotalsAndSummary (name, lname, social, wage, hours, status, pay, Opay, NetPay, record_counter); return 0; } int ReadData ( ifstream & inFile, char name[][MAX], char lname [][MAX], char social[][MAX], float wage[], float hours[], char status[]) { int counter = 0; inFile >> name[counter] >> lname[counter] >> social[counter] >> wage[counter] >> hours[counter] >> status[counter] ; // Priming Read while ( !inFile.eof ( ) ) { ; counter++; inFile >> name[counter] >> lname[counter] >> social[counter] >> wage[counter] >> hours[counter] >> status[counter] ; } return counter; } void PrintTotalsAndSummary (char name[][MAX], char lname [][MAX], char social[][MAX], float wage[], float hours[], char status[], float pay[], float Opay[], float NetPay[], int record_counter) { int i; int reg_hours; int o_hours; float o_wage; for (i = 0; i < record_counter; i++) { // overtime hours and pay if (hours[i] > 40) { o_hours = hours[i] - 40; o_wage = (wage[i] / 2) + wage[i]; Opay[i] = o_hours * o_wage; pay[i] = wage[i] * 40; NetPay[i] = pay[i] + Opay[i]; if (status[i] == 'F') NetPay[i] -= 5.00; } // normal hours and pay else { pay[i] = wage[i] * hours[i]; NetPay[i] = pay[i]; Opay[i] = 0; if (status[i] == 'F') NetPay[i] -= 5.00; } } cout << setiosflags ( ios::left ) << setw (10) << "Name" << resetiosflags ( ios::left ) << setw(20) << "Last Name" << resetiosflags (ios::left) << setw(20) << "Social" << resetiosflags (ios::left) << setw(20) << "Wage" << resetiosflags (ios::left) << setw(20) << "Hours" << resetiosflags (ios::left) << setw(20) << "Regular Pay" << resetiosflags (ios::left) << setw(20) << "Overtime Pay" << resetiosflags (ios::left) << setw(20) << "Status" << resetiosflags (ios::left) << setw(20) << "Net Pay" << resetiosflags (ios::left) << endl; cout << "===========================================================================================================================================================================" << endl; for (int j = 0; j < record_counter; j++) { cout << setiosflags ( ios::left ) << setw (10) << name[j] << resetiosflags ( ios::left ) << setw(20) << lname[j] << resetiosflags (ios::left) << setw(20) << social[j] << resetiosflags (ios::left) << setw(20) << wage[j] << resetiosflags (ios::left) << setw(20) << hours[j] << resetiosflags (ios::left) << setw(20) << pay[j] << resetiosflags (ios::left) << setw(20) << Opay[j] << resetiosflags (ios::left) << setw(20) << status[j] << resetiosflags (ios::left) << setw(20) << NetPay[j] << resetiosflags (ios::left) << endl; } }