In: Computer Science
C++
Task: Compute the weekly pay for each employee at the Wahoo Widget Company. For each employee, you will calculate the base pay according to the appropriate salary category, and then subtract taxes and deductions. Write the program in C++ only.
Input: For each employee, read an employee ID (a 4-digit integer) and a salary category code (see below). Then read whatever other information might be needed to compute a net salary for that person. Because of occasional employee turn-over, you do not know the exact number of employees in advance. Determine how you will know when all employees have been processed for this week. (You will use a loop to process the employees, but not a counting loop.)
Processing: The Company has established 4 salary categories:
Code 1: Managers. They receive a fixed annual salary of $50,000.
Code 2: Factory workers. They receive a fixed wage of $14.85 per hour for the first 40 hours worked each week, then they receive time-and-a-half (1.5 the regular salary) for any overtime.
Code 3: Sales staff. They receive $250 each week, plus a commission that is 5.7% of their gross weekly sales of widgets.
Code 4: Pieceworkers. The part-time staff receives a fixed fee of $11.30 for each widget they produce. They do not pay health insurance or union dues.
Code 5: Owner, that’s me. I get $350,00.
Additional factors that apply to the employees:
The combined federal, state, and local taxes are computed as 19% of the gross salary.
After taxes are subtracted, $27.85 is deducted from the owner, managers, factory workers, and sales staff to cover health insurance and union dues.
Within the processing loop, use a switch statement to compute each employee’s weekly pay based on that employee’s pay code. Within the switch, prompt the user (i.e., the payroll clerk) to enter the appropriate facts that your program needs to calculate the gross salary for that pay code. Then subtract the taxes and deductions. The final result is the net salary (take-home pay).
Output: After each employee is processed, display the results on the screen: the employee ID, gross salary, taxes, deductions, and net salary. Format all money to two decimal places. Line up the decimal points in the display.
// C++ code
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
struct employee
{
int ID;
char employeeCategory;
float finalSalary;
float regularDeduction;
float grossalary;
}e[5];
int main()
{
struct employee e[5];
float employeeSalary, taxrate = 0.19, sales;
int i,widgets,overtime;
for(i=0;i<5;i++)
{
cout << "Please enter employee ID: ";
cin >>e[i].ID;
cout << "Please enter employee's salary employeeCategory code: ";
cin >>e[i].employeeCategory;
char S = e[i].employeeCategory;
switch(S)
{
case '1':
employeeSalary = 50000;
e[i].regularDeduction = 27.85;
e[i].grossalary = employeeSalary;
e[i].finalSalary = (e[i].grossalary - e[i].grossalary * 0.19 - e[i].regularDeduction);
break;
case '2':
cout << "Please enter the overtime working hour for
Factory Worker: ";
cin >> overtime;
e[i].grossalary = 14.85 * 40 + 14.85*1.5*overtime;
e[i].regularDeduction = 27.85;
e[i].finalSalary = e[i].grossalary - e[i].grossalary *0.19 -e[i].regularDeduction;
break;
case '3':
cin.ignore();
cout << "Please enter weekly sales of widgets: ";
cin >> sales;
e[i].grossalary = 250 + sales * 0.057;
e[i].regularDeduction = 27.85;
e[i].finalSalary = e[i].grossalary - e[i].grossalary*0.19 -e[i].regularDeduction;
break;
case '4':
cout << "Enter the number of widgets produce by
Pieceworkers: ";
cin >> widgets;
e[i].regularDeduction = 27.85;
e[i].grossalary = 11.30 * widgets;
e[i].finalSalary = e[i].grossalary - e[i].grossalary *0.19;
break;
case '5':
employeeSalary = 35000;
e[i].regularDeduction = 27.85;
e[i].finalSalary = (e[i].grossalary - e[i].grossalary * 0.19 -
e[i].regularDeduction);
break;
}
}
cout <<"==========weekly pay for each employee at the Wahoo
Widget Company are following=========="<<endl;
cout << setw(20) << left <<"Employee ID" << setw(20)<<left<<"gross salary$"<< setw(20)<<left<<"taxes%"<<setw(20)<<left<<"regularDeduction$"<<setw(20)<<left<<"net salary$"<<endl;
for(i=0;i<5;i++)
{
cout << setw(20) << left <<e[i].ID << setw(20)<<left<<e[i].grossalary<< setw(20)<<left<<taxrate<<setw(20)<<left<<e[i].regularDeduction<<setw(20)<<left<<e[i].finalSalary<<endl;
}
return 0;
}