This program will read from a file and calculate the gross pay of each of the employees. The program reads the EMPLOYEE ID#. After the employee ID, there are 7 numbers, each representing the number of hours the employee worked for each day of the week. For some employees, specific pay rates are given. (See input file details on next page). The program will display the gross pay of each of the employees.
Declare the following global constants:
Write a program that defines following functions (only the function name is given. You have to determine the return type and parameter list based on the description. Define and test each function with minimal statements in main()
before you begin writing another function. **W
rite a comment above each function, describing what it does **
This is going to be a function that calls another function: In the body of this function, there is a call worked_overtime() which returns true or false. Call this function to determine if the worker has worked overtime.
The setup of the rest of this algorithm may vary. You might want to declare some other local variables in this function to help with calculations:
In general, the gross pay is (hours worked (not including overtime) multiplied by pay_rate) plus (overtime hours multiplied by overtime rate). Use the functions calc_overtime_hours() and calc_overtime_rate().
Or you can break it down to two situations:
If the worker has no overtime, the gross pay is hours worked multiplied by pay_rate. Otherwise, there is overtime and program will multiply the REGULAR_HOURS by the pay rate. Add this to the product of calculate_overtime_hours() multiplied by calc_overtime_rate().
The function returns the gross pay.
Return the gross pay.
You should use your main() function to test calls to each function before finalizing main(). Also test one employee before putting the code in a loop.
About the input file and the 3 types of employees:
week1.txt |
|
900001 |
10.5 0 7 6 7.5 7 0 |
900005 |
7 7 7 0 0 7 6.5 |
900003 |
0 8.75 8.5 8 8 7.5 0 |
900004 |
0 0 7.5 7.5 7 7 7.5 |
800001 |
0 8.75 8.5 8.5 8 7.5 0 |
800002 |
10 9 8 7.5 6.5 0 0 |
500001 |
10.5 9.5 0 6.25 6.5 0 10.5 50.15 |
500002 |
9 9.5 9 6.5 8.5 0 0 55.76 |
500003 |
10 10 0 6.5 6.5 6.5 10.5 50.29 |
400001 |
7.5 9 8 0 6.5 7 10.5 40.13 |
400002 |
0 9 8 6.5 6.5 0 10.5 45.76 |
300001 |
10.5 9 8 6.5 6.5 0 10.5 39.88 |
300002 |
10 9 10 9 0 0 0 30.01 |
200001 |
0 10.5 11 11 0 0 0 26.53 |
200002 |
0 0 12 12 0 0 12 25.78 |
100000 |
12 12 0 0 0 0 12 122.22 200.00 |
100002 |
13 14 6 0 0 0 12 122.22 200.00 |
Each line of the input file represents an employee’s work hours for the week, some have more info about their rates. The first integer is their employee ID#. The next 7 numbers are their hours -- one for every day of the pay period (a week).
All employee IDs have 6 digits, first digit is not zero.
Employee IDs that start with a 8 or 9 earn minimum wage, their overtime rate is 1.5x their regular rate. In the file, these lines only have the ID # and the 7 hours.
Employee IDs that start with 2, 3, 4, 5, 6 or 7 have a specified pay rate. In the file, these lines have ID #, 7 hours, and the pay rate.
Employee IDs that start with a 1 have specified pay rate and a specified overtime rate. In the file, these lines have ID #, 7 hours, the pay rate, and the overtime rate.
Sample output:
Employee |
900001 |
earned |
$513.00 for this pay period. |
Employee |
900005 |
earned |
$465.75 for this pay period. |
Employee |
900003 |
earned |
$555.19 for this pay period. |
Employee |
900004 |
earned |
$492.75 for this pay period. |
Employee |
800001 |
earned |
$565.31 for this pay period. |
Employee |
800002 |
earned |
$560.25 for this pay period. |
Employee |
500001 |
earned |
$2250.48 for this pay period. |
Employee |
500002 |
earned |
$2439.50 for this pay period. |
Employee |
500003 |
earned |
$2765.95 for this pay period. |
Employee |
400001 |
earned |
$2116.86 for this pay period. |
Employee |
400002 |
earned |
$1864.72 for this pay period. |
Employee |
300001 |
earned |
$2253.22 for this pay period. |
Employee |
300002 |
earned |
$1335.45 for this pay period. |
Employee |
200001 |
earned |
$862.23 for this pay period. |
Employee |
200002 |
earned |
$928.08 for this pay period. |
Employee |
100000 |
earned |
$4399.92 for this pay period. |
Employee |
100002 |
earned |
$5888.80 for this pay period. |
Finish your functions and test them first. Hints for main() method on next page.
Checklist for your program (including pseudocode hints for main() method and reading from file)
Comment including your name and a description of the program.
Preprocessor directives using namespace std;
Declare and initialize global constants Declare function prototypes
Pseudocode/ algorithm for main() {
Declare your variables for the filestream, the variables for data that will be read by the file, an accumulator for the total hours.
Setup your filestream with the file name Test that the file opens without error.
If there is an error,
print a error message.
Otherwise:
While there is an employee id number to read from the file:
Print beginning of sentence: “Employee _(ID# here)_ made ”
Reset your accumulator (total hours) to 0 before summing for each employee Loop to read the next 7 numbers (the hours for each day)
Accumulate the sum of the hours
If the employee id starts with 8 or 9 (since all ID #s have 6 digits, one approach is id# >= 800000) Call calculate_pay() passing only the total hours, allowing for the rate to be the default
Otherwise, if the employee id starts with 2,3,4,5,6 or 7 (id# > 200000 and id# < 800000) Read the next number (pay rate) from the file
Call the calculate_pay() function by passing the total hours and the pay rate.
Otherwise, the employee id starts with a 1
Read the next two numbers: pay rate and over time rate from the file
Call the calculate_pay() function by passing the total hours, pay rate, overtime rate Print the gross pay using your show_money() function.
Print the end of the sentence “ for this pay period.” End of while loop
Close input file stream. return 0;
}
/*Function definitions go here. Don’t forget to write a comment for each function. Typically, describe the parameter, the return value (if it has a return value), and a short description about what the function does*/
Sample style for function comments. You can adopt any style you like but remember that code and comments are provided for clarity.
//***************************************************************
// show_money() *
// parameter(s): double money - represents a monetary value *
// This function prints money formatted as USD: a '$' precedes *
// the amount and two digits after the decimal place are shown *
//***************************************************************
DescriptionIn this final assignment, the students will demonstrate their ability to apply two ma
Path finding involves finding a path from A to B. Typically we want the path to have certain properties,such as being the shortest or to avoid going t
Develop a program to emulate a purchase transaction at a retail store. Thisprogram will have two classes, a LineItem class and a Transaction class. Th
1 Project 1 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of
1 Project 2 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of