Question: C++ Need help with this code. Can't use using namespace std; Control break report Objectives Read data from a text file Write data to a
C++ Need help with this code. Can't use "using namespace std;"
Control break report
Objectives
- Read data from a text file
- Write data to a text file
- Correctly end a file input loop when end of file is reached
- Process control breaks correctly
- Calculate sums for grouping of input data
- Implement an algorithm
- Format output data on a report neatly
- Test and debug a program
Overview
This assignment involves the creation of a level break report. The data file provided has already been put into the proper sorted order. The format of each record is as follows:
- department: String
- employee id: String
- month: int
- day: int
- year: int
- hours: double
Requirements
Your task is to read the records in from the data file (cb1data.txt) and produce a report to a file named cbreport.txt.
Although the following technique is "brittle", you may read the data from the input file using the standard input extraction operator. For example, if you wanted to read one whole record in one statement and had the appropriate variables declared, you could write: infile >> dept >> empID >> month >> day >> year >> hours;
A "priming read" is well-suited for this type of algorithm. A priming read makes a read from input just before a while loop starts, and then has the same read just before the end of the loop body. That type of read works very well when reading from a text file and checking for end-of-file. Instead of trying to read all of the fields from a single record though, it is better to just use the first field for the priming read, and read the remainder of the fields for that record as the first line within the loop. Example:
infile >> dept; while (infile) { infile >> empID >> month >> day >> year >> hours; ... other processing code ... infile >> dept; }
You have been given an algorithm to implement. There are some ambiguities to simulate a real life situation - but no errors that the instructor is aware of. You are required to use ostream manipulators (left, right, setw, setprecision, fixed, showpoint, etc.) to get the correct output formatting for this project.
Pseudocode
open input file for sequential access open output (report) file print headings to report file
totHours = empHours = deptHours = 0 prevID = prevDept = "$$$" recno = 0
while there are still more records in the input file get the next record from the input file recno = recno + 1 if record's dept is different than prevDept and recno > 1 // employee level break print employee's total hours to output file add empHours to deptHours empHours = 0 // department level break print department's total hours to output file add deptHours to totHours deptHours = 0 otherwise if record's employee id is different than prevID and recno > 1 // employee level break print employee's total hours to output file add empHours to deptHours empHours = 0 print formatted record detail to output file add record's hours to empHours prevID = record's employee id prevDept = record's department
close input file
// employee level break print employee's total hours to output file add empHours to deptHours empHours = 0
// department level break print department's total hours to output file add deptHours to totHours deptHours = 0
print grand totals to output file print footers to output file close output file end
Sample output:
Daily hours worked by Department by Employee
Dept EmpID Date Hours
IT D4772 1/02/2011 8.25 IT D4772 1/03/2011 7.00 IT D4772 1/05/2011 9.25 IT D4772 1/06/2011 9.00 IT D4772 1/08/2011 7.25 Employee total 40.75
IT F9642 1/04/2011 8.25 IT F9642 1/06/2011 7.25 IT F9642 1/07/2011 5.25 IT F9642 1/08/2011 8.00 Employee total 28.75
IT V1001 1/03/2011 5.25 IT V1001 1/04/2011 8.50 IT V1001 1/05/2011 6.75 IT V1001 1/06/2011 6.75 IT V1001 1/07/2011 8.00 IT V1001 1/08/2011 6.00 Employee total 41.25
Department total 110.75
MGT A0010 1/02/2011 6.50 MGT A0010 1/03/2011 8.25 MGT A0010 1/04/2011 9.25 MGT A0010 1/05/2011 9.75 MGT A0010 1/06/2011 5.50 MGT A0010 1/07/2011 8.75 MGT A0010 1/08/2011 8.75 Employee total 56.75
MGT S0812 1/04/2011 5.25 MGT S0812 1/05/2011 7.75 MGT S0812 1/06/2011 7.25 MGT S0812 1/07/2011 6.00 MGT S0812 1/08/2011 9.50 Employee total 35.75
Department total 92.50
MKT H6554 1/02/2011 9.25 MKT H6554 1/03/2011 8.00 MKT H6554 1/04/2011 5.75 MKT H6554 1/05/2011 8.75 MKT H6554 1/06/2011 8.50 MKT H6554 1/08/2011 6.00 Employee total 46.25
Department total 46.25
MNT E5109 1/02/2011 8.75 MNT E5109 1/03/2011 5.50 MNT E5109 1/04/2011 6.00 MNT E5109 1/06/2011 5.00 MNT E5109 1/08/2011 6.50 Employee total 31.75
Department total 31.75
MSC E4100 1/03/2011 5.75 MSC E4100 1/04/2011 8.75 MSC E4100 1/05/2011 7.25 MSC E4100 1/07/2011 6.50 MSC E4100 1/08/2011 8.75 Employee total 37.00
Department total 37.00
PRD A0132 1/04/2011 9.00 PRD A0132 1/05/2011 8.00 PRD A0132 1/06/2011 8.75 PRD A0132 1/07/2011 9.00 PRD A0132 1/08/2011 5.00 Employee total 39.75
PRD E1231 1/02/2011 6.75 PRD E1231 1/03/2011 8.25 PRD E1231 1/04/2011 6.75 PRD E1231 1/06/2011 8.00 PRD E1231 1/07/2011 5.50 PRD E1231 1/08/2011 7.25 Employee total 42.50
PRD E1250 1/02/2011 9.75 PRD E1250 1/03/2011 7.75 PRD E1250 1/04/2011 7.75 PRD E1250 1/05/2011 7.50 Employee total 32.75
Department total 115.00
SLS L1776 1/02/2011 9.00 SLS L1776 1/03/2011 7.75 SLS L1776 1/04/2011 6.75 SLS L1776 1/06/2011 5.50 SLS L1776 1/08/2011 8.75 Employee total 37.75
SLS M5205 1/02/2011 7.00 SLS M5205 1/03/2011 5.00 SLS M5205 1/04/2011 7.75 SLS M5205 1/05/2011 6.00 SLS M5205 1/06/2011 7.75 SLS M5205 1/07/2011 5.25 SLS M5205 1/08/2011 8.25 Employee total 47.00
Department total 84.75
Total hours worked 518.00
70 records processed
cb1data.txt (below)
IT D4772 1 2 2011 8.25 IT D4772 1 3 2011 7 IT D4772 1 5 2011 9.25 IT D4772 1 6 2011 9 IT D4772 1 8 2011 7.25 IT F9642 1 4 2011 8.25 IT F9642 1 6 2011 7.25 IT F9642 1 7 2011 5.25 IT F9642 1 8 2011 8 IT V1001 1 3 2011 5.25 IT V1001 1 4 2011 8.5 IT V1001 1 5 2011 6.75 IT V1001 1 6 2011 6.75 IT V1001 1 7 2011 8 IT V1001 1 8 2011 6 MGT A0010 1 2 2011 6.5 MGT A0010 1 3 2011 8.25 MGT A0010 1 4 2011 9.25 MGT A0010 1 5 2011 9.75 MGT A0010 1 6 2011 5.5 MGT A0010 1 7 2011 8.75 MGT A0010 1 8 2011 8.75 MGT S0812 1 4 2011 5.25 MGT S0812 1 5 2011 7.75 MGT S0812 1 6 2011 7.25 MGT S0812 1 7 2011 6 MGT S0812 1 8 2011 9.5 MKT H6554 1 2 2011 9.25 MKT H6554 1 3 2011 8 MKT H6554 1 4 2011 5.75 MKT H6554 1 5 2011 8.75 MKT H6554 1 6 2011 8.5 MKT H6554 1 8 2011 6 MNT E5109 1 2 2011 8.75 MNT E5109 1 3 2011 5.5 MNT E5109 1 4 2011 6 MNT E5109 1 6 2011 5 MNT E5109 1 8 2011 6.5 MSC E4100 1 3 2011 5.75 MSC E4100 1 4 2011 8.75 MSC E4100 1 5 2011 7.25 MSC E4100 1 7 2011 6.5 MSC E4100 1 8 2011 8.75 PRD A0132 1 4 2011 9 PRD A0132 1 5 2011 8 PRD A0132 1 6 2011 8.75 PRD A0132 1 7 2011 9 PRD A0132 1 8 2011 5 PRD E1231 1 2 2011 6.75 PRD E1231 1 3 2011 8.25 PRD E1231 1 4 2011 6.75 PRD E1231 1 6 2011 8 PRD E1231 1 7 2011 5.5 PRD E1231 1 8 2011 7.25 PRD E1250 1 2 2011 9.75 PRD E1250 1 3 2011 7.75 PRD E1250 1 4 2011 7.75 PRD E1250 1 5 2011 7.5 SLS L1776 1 2 2011 9 SLS L1776 1 3 2011 7.75 SLS L1776 1 4 2011 6.75 SLS L1776 1 6 2011 5.5 SLS L1776 1 8 2011 8.75 SLS M5205 1 2 2011 7 SLS M5205 1 3 2011 5 SLS M5205 1 4 2011 7.75 SLS M5205 1 5 2011 6 SLS M5205 1 6 2011 7.75 SLS M5205 1 7 2011 5.25 SLS M5205 1 8 2011 8.25
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
