Lab exercise

   

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 text if you have attempted any of the bonus points .

   

An example file:

The IT Department
Bill 8 7 8 9 7 F1
Bob 205103 0.08 F3
Betty 8 8 7 8 8 F2
Brandon 10 10 9 6 9 F2
Brad 9 8 10 9 9 4 1 F4

The Sales Department
Kyle 88840 0.105 F3
Tyler 105203 0.085 F3
Konner 8 6 7 6 9 F2
Sam 309011 0.045 F3
Kent 9 8 9 9 9 0 0 F4
EOF

An additional example file:

The Sales Department
Mike 5 6 1 3 5 F1
Mark 98103 0.115 F3
Jill 8 8 8 8 8 F2

Frank 106101 0.095 F3

Mark 76881 0.091 F3

Department of Records
Konner 8 6 7 6 9 F2
Tammy 7 3 7 2 8 F1

Anika 8 8 8 8 8 F2

Marta 1 0 0 5 2 F1
Kent 9 8 9 9 9 0 0 F4
EOF

   

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 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 * 11.25
F2 = (The total number of hours 35) * 18.95 + 400
F3 = The total sales amount * the commission rate
F4 = The first 5 hourly totals * 22.55 + Any weekend hourly totals (the last 2) * 48.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% order the employees in the roster according to their F status, F1s first, then F2s and so on.
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