Question 165 Marks Write a complete C++ program. The program uses various types of structured data developed to calculate the salary of each employee and the total salary to be paid for each department. The program should perform the following tasks: Task 1: Declare a structure named Employee, with the following members: 3 marks) a) Name b) Department c) Basic salary d) Number of overtime hours worked in one month e) Overtime pay 1) Total salary including overtime pay Task 2: Write a function named readinput. (14 marks) a) It receives an array of Employee of type struct. b) The function should read data from the given input file named input.txt. The file contains employees' department, basic salary, number of overtime hours worked in one month, and name. Figure 1 shows an example of data that can be used to test the program. c) Assuming you do not know, the number of employees. Calculate the number of employees available in the company based on the number of employee records found in the input file. d) The function should return the number of employees calculated in (c). Production 2500 27 Salman All Quality 1800 45 Hanif Haikal Production 2000 53 Rashid Abu Production 1800 58 Halim Hashim Quality 2400 35 Hani Imran Engineering 2300 27 Arina Hakim Accounting 2500 36 Anuar Omar Quality 1900 33 Zarith Zaid Engineering 2350 52 Rania Hassan Engineering 2250 44 Buhari Burhan Quality 2250 38 Citra Shari Accounting 2250 36 Amir Arshad Accounting 2180 41 Daud Kasim Engineering 2500 35 Sofian Saad Accounting 2450 29 Alisa Azman Figure 1: Sample data in the input file "input.txt" Task 3: Write a function named determineRate. (6 marks) a) It takes the department name as an input parameter. b) The function should return an overtime rate based on the information given in Table 1 Table 1 Department Overtime Rate (RM per hour) Quality 11.5 Production 10.0 Accounting 12.5 Engineering 15.0 Task 4: Write a function named displayOutput (11 marks) a) This is a non-returning function b) It takes an array of Employee of type struct and the number of employees calculated in Task 2 as input parameters. c) The function should display employees' names, department, basic salary, number of overtime (OT) hours worked in one month, monthly overtime (OT) pay, and monthly salary. The formula for calculating monthly overtime (OT) pay and monthly salary is as follows: Monthly overtime (OT) pay Overtime rate * Number of overtime hours worked Monthly salary Monthly overtime pay + Basie salary d) Figure 2 shows an example of the output that will be displayed on the screen based on the data in the input file "input.txt" shown in Figure 1. NAME BASIC OT (BUR) OF PAY FM SALARY () 45 53 58 35 Salman Ali Hanif Haikal Rashid Abu Halim Hashim Hani Intan Arina Hakim Anuar Omar anith Zaid Rania Hassan Bubari Burhan Citra Shat Ani Arshad Daud Kasim Sorian Sand Alisa Anna DEPARTMENT Production Quality Production Production Quality Engineering Accounting Quality Engineering Engineering Quality Accounting Accounting Engineering Accounting 2500.00 2800.00 2000.00 1800.00 2400.00 2300.00 2500.00 1900.00 2350.00 2250.00 2250.00 2250.00 7180.00 2500.00 2450.00 270.00 517.50 530.00 560.00 402.50 405.00 450.00 379.50 780.00 560.00 2770.00 231750 2530.00 2380.00 2802.50 2705.00 2950.00 2279.50 3130.00 2910.00 2687.00 2700.00 2692.50 3025.00 2812.50 41 450.00 512.50 525.00 362.50 Figure 2: Expected output for Task 4 Task 5: Write a function named displayAnalysis. (17 marks) a) This is a non-returning function. b) It takes an array of Employee of type struct and the number of employees calculated in Task 2 as input parameters. c) The function should display departments' names, total monthly overtime (OT) pays, and total monthly salary. d) Figure 3 shows an example of the output that will be displayed on the screen based on the data in the input file "input.txt" shown in Figure 1. 3 DEPARTMENT Production Quality Engineering Accounting TOT. OT PAY (RM) 1380.00 1736.50 2370.00 1775.00 TOT. SALARY (RM) 7680.00 10086.50 11770.00 11155.00 Figure 3: Expected output for Task 5 Task 6: Write a main function to perform the following tasks: (5 marks) a) Declare one-dimensional array variable with 50 elements for a structure type Employee b) The function may need to call the functions that are defined in the previous task to produce the output as shown in Figure 4. Note: Please use proper output formatting c) Figure 4 shows the complete output that will be displayed on the screen based on the data in the input file "input.txt" shown in Figure 1. NAME BASIC CRM) SALARY (RM) Salman Ali Hanit Haikal Rashid Abu Halim Hashim Hans Imran Arina Hakim Anuar Omar Zarith Zaid Rania Hassan Buhari Burhan Citra Shari Amir Arshad Daud Kasim Sofian Saad Alisa Azman DEPARTMENT Production Quality Production Production Quality Engineering Accounting Quality Engineering Engineering Quality Accounting Accounting Engineering Accounting 2500.00 1800.00 2000.00 1800.00 2400.00 2300.00 2500.00 1900.00 2350.00 2250.00 2250.00 2250.00 2180.00 2500.00 2450.00 OT (HOUR) OF PAY CRO 22 270.00 45 517.50 53 530.00 58 580.00 35 402.50 27 405.00 36 450.00 379.50 52 780.00 660.00 3B 437.00 36 450.00 41 512.50 35 525.00 29 362.50 2770.00 2317.50 2530.00 2380.00 2802.50 2705.00 2950.00 2279.50 3130.00 2910.00 2687.00 2700.00 2692.50 3025.00 2812.50 DEPARTMENT Production Quality Engineering Accounting ZOT. OT PAY (RM) 1380.00 1736.50 2370.00 1775.00 TOT. SALARY (RM) 7680.00 10086.50 11770.00 11155.00 Figure 4: Complete output for the data from the input file "input.txt" Task 7: List all function prototypes. (4 marks) (5 marks) Task 8: You must ensure your program fulfill the following criteria: a) The program is able to run. b) All required header files are included