## Payroll Lab

You will be taking in a file (payroll.txt) which details a number of departments (at least 1) and in each department are a set of employees (each department will have at least 1 employee or it would not appear on the payroll sheet). Your job is to read the file in separate out each employee and calculate the total values (hours, salary, number of employees) for each department and in each category (F1, F2, F3, F4). In your final submission please include the .cpp file which should work for any kind of payroll file I supply (which will naturally match the format of the examples below). Be sure to indicate in your submission file if you have attempted any of the bonus points .

*An example file (note that your program needs to be able to handle any file formatted in a similar way):*

*The IT Department*

* Bill 8 hours 20 minutes 7hours 8hours 30 minutes 9hrs 10min 57 minutes F1*

* Betty 8hrs 8hrs 30min 7hrs 5min 8hrs 7hrs 10min F2*

* Brandon 10hours 10hours 5 minutes 9 hours 5 hours 55 minutes 9 hours 5 minutes F2*

* Brad 9hrs 8hrs 10hrs 12min 9hrs 4min 8hours 6min 3hrs 24min 1hr 6min F4*

*The Sales Department*

* Kyle $24,000 0.105 F3*

* Tyler $18,203 0.085 F3*

* Konner 8hrs 6hrs 5min 7hrs 6 hrs 9 hrs 8 min F2*

* Sam $30,011 0.045 F3*

* Kent 9hrs 8hrs 1min 9 hrs 7hrs 5 min 8 hrs 55min 6min 1hr F4*

*The Overseas Department*

* Jim $24,000 0.105 F3*

*Frank 7 hours 10 minutes 6hours 1 minute 1 hour 50 minutes 8hours 10min 1hour 34 minutes F1*

* Lester 8hrs 5min 8hrs 30min 7hrs 5min 8hrs 7hrs 10min F2*

* EOF*

First there is the name of the employee, followed by a list of times (for f1, f2 and f4). The times are reported by a number of different systems and the hours and minutes may be represented differently. Hours and hrs, or Minutes an mins. The final times should be rounded to the nearest half hour, where for example 2 hours and 15 minutes would be 2.5 hours. The times may specify the hours and minutes or just one or the other. And yes they could only work for a few minutes (maybe they only run into work to sign a paper or something). The last in the row after the hours comes the pay grade (F1, F2, F3, F4). The number of hours recorded is based on the pay grade of the employee. F1 and F2s will have 5 numbers for their hours. F3s a bit different since they are commission based where a sales amount and a commission percentage is given. F3s are also assumed to work 30 hours if their commission is 10% or below and 40 hours if their commission is above 10%. F4s will have 7 numbers (as they are on-call during the weekend). Each of the pay grades will also have different pay calculations which are as follows:

F1 = The total number of hours * 12.15

F2 = (The total number of hours – 35) * 18.95 + 500

F3 = The total sales amount * the commission rate

F4 = The first 5 hourly totals * 26.55 + Any weekend hourly totals (the last 2) * 39.75

Your output to the screen should start with the department name, followed by the total pay for all of the employees, then the total number of hours, and the total number of employees. After that you should have a breakdown of each category of employee: F1 total pay and total hours, F2 total pay and total hours…

Each department will have at least 1 employee and each department will contain the word “Department.”

*The IT Department*

* Total Salary: $##.##*

* Total Hours: ###*

* Total Number of Employees: ##*

* Roster: Bill, Bob, Betty, Brandon, Brad *

*F1:*

* Total Salary: $##.##*

* Total Hours: ###*

* Total Number of Employees: ##*

*F2:*

* Total Salary: $##.##*

* Total Hours: ###*

* Total Number of Employees: ##*

*F3:*

* Total Salary: $##.##*

* Total Hours: ###*

* Total Number of Employees: ##*

*F4:*

* Total Salary: $##.##*

* Total Hours: ###*

* Total Number of Employees: ##*

*The Sales Department*

* Total Salary: $##.##*

* Total Hours: ###*

* Total Number of Employees: ##*

* Roster: Kyle, Tyler, Konner, Sam, Kent*

*F1:*

* Total Salary: $##.##*

* Total Hours: ###*

* Total Number of Employees: ##*

*F2:*

* Total Salary: $##.##*

* Total Hours: ###*

* Total Number of Employees: ##*

*F3:*

* Total Salary: $##.##*

* Total Hours: ###*

* Total Number of Employees: ##*

*F4:*

* Total Salary: $##.##*

* Total Hours: ###*

* Total Number of Employees: ##*

Before coding your solution, take the time to design the program. What are the possible things that the file can have that you need to anticipate? What are the actions that you need to take (read the file, add up hours…)? Are those actions things that could be placed in separate functions? What about the function – can you guess some of the things that will happen? Such as, using substring to pull out part of a line in the file maybe using stoi to convert a string to an integer to add it to the total or creating variables to hold the employee type you find before passing it to another function. Finally, how are these functions called, what is the order and what information is passed to and from?

Scoring Breakdown

25% program compiles and runs

30% program reads in and calculates the figures for output

10% the program is appropriately commented

35% outputs the correct information in a clear format

5% bonus to those who can output the F# responses in a columned output like that shown above.

5% bonus to those who do a chart comparing the data at the end to show the relation between the pay grades and the amount of salary spent in each (they style of chart is up to you and more points may be given for more difficult charts (like a line chart):

B Department

F1 – 00000000

F2 – 000000

F3 – 00000

F4 – 000000000000

K Department

F1 – 0

F2 – 0000

F3 – 0000000000

F4 – 0000000

Or event something like this instead:

0

0 0

0 0 0

0 0 0 0

0 0 0 0

F1 F2 F3 F4