fork(1) download
  1. //********************************************************
  2. //
  3. // Assignment 11 - Object Oriented Design
  4. //
  5. // Name: Seth Hin
  6. //
  7. // Class: C Programming, Spring 2026
  8. //
  9. // Date: April 24, 2026
  10. //
  11. // Description: An object oriented program design using
  12. // C++ that will process our existing set of employees.
  13. // It utilizes a class called Employee and generates an
  14. // array of objects that are used to store, calculate,
  15. // and print out a simple report of inputted and calculated
  16. // values.
  17. //
  18. //
  19. // Object Oriented Design (using C++)
  20. //
  21. //********************************************************
  22.  
  23. #include <iomanip> // std::setprecision, std::setw
  24. #include <iostream> // std::cout, std::fixed
  25. #include <string> // string functions
  26.  
  27. // define constants
  28. #define EMP_SIZE 5
  29. #define STD_HOURS 40.0
  30. #define OT_RATE 1.5
  31. #define MA_TAX_RATE 0.05
  32. #define NH_TAX_RATE 0.0
  33. #define VT_TAX_RATE 0.06
  34. #define CA_TAX_RATE 0.07
  35. #define DEFAULT_TAX_RATE 0.08
  36. #define NAME_SIZE 20
  37. #define TAX_STATE_SIZE 3
  38. #define FED_TAX_RATE 0.25
  39. #define FIRST_NAME_SIZE 10
  40. #define LAST_NAME_SIZE 10
  41.  
  42. using namespace std;
  43.  
  44. // Employee class definition
  45. class Employee
  46. {
  47. private:
  48. // Employee data members
  49. string firstName;
  50. string lastName;
  51. string taxState;
  52. int clockNumber;
  53. float wageRate;
  54. float hours;
  55. float overTimeHrs;
  56. float grossPay;
  57. float stateTax;
  58. float fedTax;
  59. float netPay;
  60.  
  61. // Calculate overtime hours
  62. float calcOverTimeHrs()
  63. {
  64. if (hours > STD_HOURS)
  65. overTimeHrs = hours - STD_HOURS;
  66. else
  67. overTimeHrs = 0;
  68.  
  69. return overTimeHrs;
  70. }
  71.  
  72. // Calculate gross pay including overtime
  73. float calcGrossPay()
  74. {
  75. if (overTimeHrs > 0)
  76. {
  77. grossPay = (STD_HOURS * wageRate) +
  78. (overTimeHrs * (wageRate * OT_RATE));
  79. }
  80. else
  81. {
  82. grossPay = wageRate * hours;
  83. }
  84.  
  85. return grossPay;
  86. }
  87.  
  88. // Calculate state tax based on state
  89. float calcStateTax()
  90. {
  91. float theStateTax = grossPay;
  92.  
  93. if (taxState == "MA")
  94. theStateTax *= MA_TAX_RATE;
  95. else if (taxState == "VT")
  96. theStateTax *= VT_TAX_RATE;
  97. else if (taxState == "NH")
  98. theStateTax *= NH_TAX_RATE;
  99. else if (taxState == "CA")
  100. theStateTax *= CA_TAX_RATE;
  101. else
  102. theStateTax *= DEFAULT_TAX_RATE;
  103.  
  104. return theStateTax;
  105. }
  106.  
  107. // Calculate federal tax
  108. float calcFedTax()
  109. {
  110. return grossPay * FED_TAX_RATE;
  111. }
  112.  
  113. // Calculate net pay
  114. float calcNetPay()
  115. {
  116. float totalTaxes = stateTax + fedTax;
  117. return grossPay - totalTaxes;
  118. }
  119.  
  120. public:
  121. // Default constructor
  122. Employee()
  123. {
  124. firstName = "";
  125. lastName = "";
  126. taxState = "";
  127. clockNumber = 0;
  128. wageRate = 0;
  129. hours = 0;
  130. }
  131.  
  132. // Parameterized constructor
  133. Employee(string myFirstName, string myLastName, string myTaxState,
  134. int myClockNumber, float myWageRate, float myHours)
  135. {
  136. firstName = myFirstName;
  137. lastName = myLastName;
  138.  
  139. // Convert tax state to uppercase
  140. if (islower(myTaxState[0])) myTaxState[0] = toupper(myTaxState[0]);
  141. if (islower(myTaxState[1])) myTaxState[1] = toupper(myTaxState[1]);
  142.  
  143. taxState = myTaxState;
  144. clockNumber = myClockNumber;
  145. wageRate = myWageRate;
  146. hours = myHours;
  147.  
  148. // Perform calculations
  149. overTimeHrs = calcOverTimeHrs();
  150. grossPay = calcGrossPay();
  151. stateTax = calcStateTax(); // FIXED
  152. fedTax = calcFedTax(); // FIXED
  153. netPay = calcNetPay(); // FIXED
  154. }
  155.  
  156. // Getter functions
  157. string getFirstName() { return firstName; }
  158. string getLastName() { return lastName; }
  159. string getTaxState() { return taxState; }
  160. int getClockNumber() { return clockNumber; }
  161. float getWageRate() { return wageRate; }
  162. float getHours() { return hours; }
  163. float getOverTimeHrs() { return overTimeHrs; }
  164. float getGrossPay() { return grossPay; }
  165.  
  166. float getStateTax() { return stateTax; } // FIXED
  167. float getFedTax() { return fedTax; } // FIXED
  168. float getNetPay() { return netPay; } // FIXED
  169.  
  170. // Print employee details
  171. void printEmployee(Employee e)
  172. {
  173. cout << "\n\n *** Entered Details are *** \n";
  174. cout << "\n First Name: " << e.getFirstName();
  175. cout << "\n Last Name: " << e.getLastName();
  176. cout << "\n Tax State: " << e.getTaxState();
  177. cout << "\n Clock Number: " << e.getClockNumber();
  178. cout << "\n Wage Rate: " << e.getWageRate();
  179. cout << "\n Hours: " << e.getHours();
  180.  
  181. cout << "\n\n *** Calculated Values are *** \n";
  182. cout << "\n Overtime Hours : " << e.getOverTimeHrs();
  183. cout << "\n Gross Pay : $" << e.getGrossPay();
  184. cout << "\n State Tax : $" << e.getStateTax(); // FIXED
  185. cout << "\n Federal Tax : $" << e.getFedTax(); // FIXED
  186. cout << "\n Net Pay : $" << e.getNetPay(); // FIXED
  187. cout << "\n";
  188. }
  189. };
  190.  
  191. // Main function
  192. int main()
  193. {
  194. string myFirstName, myLastName, myTaxState;
  195. int myClockNumber;
  196. float myWageRate, myHours;
  197.  
  198. cout << fixed << setprecision(2);
  199.  
  200. // Create array of Employee objects
  201. Employee e[EMP_SIZE];
  202.  
  203. for (int i = 0; i < EMP_SIZE; ++i)
  204. {
  205. // Input employee data
  206. cout << "\n\n Enter Employee First Name: ";
  207. cin >> myFirstName;
  208.  
  209. cout << "\n Enter Employee Last Name: ";
  210. cin >> myLastName;
  211.  
  212. cout << "\n Enter Employee Tax State: ";
  213. cin >> myTaxState;
  214.  
  215. cout << "\n Enter Employee Clock Number: ";
  216. cin >> myClockNumber;
  217.  
  218. cout << "\n Enter Employee Hourly Wage Rate: ";
  219. cin >> myWageRate;
  220.  
  221. cout << "\n Enter Employee Hours Worked for the Week: ";
  222. cin >> myHours;
  223.  
  224. // Create object
  225. e[i] = Employee(myFirstName, myLastName, myTaxState,
  226. myClockNumber, myWageRate, myHours);
  227.  
  228. // Print object data
  229. e[i].printEmployee(e[i]);
  230. }
  231.  
  232. return 0;
  233. }
Success #stdin #stdout 0s 5316KB
stdin
Connie
Cobol
MA
98401
10.60
51.0
Mary
Apl
NH
526488
9.75
42.5
Frank
Fortran
VT
765349
10.50
37.0
Jeff
Ada
NY
34645
12.25
45
Anton
Pascal
CA
127615
8.35
40.0
stdout

 Enter Employee First Name: 
 Enter Employee Last Name: 
 Enter Employee Tax State: 
 Enter Employee Clock Number: 
 Enter Employee Hourly Wage Rate: 
 Enter Employee Hours Worked for the Week: 

 *** Entered Details are *** 

 First Name: Connie
 Last Name: Cobol
 Tax State: MA
 Clock Number: 98401
 Wage Rate: 10.60
 Hours: 51.00

 *** Calculated Values are *** 

 Overtime Hours : 11.00
 Gross Pay : $598.90
 State Tax : $29.95
 Federal Tax : $149.73
 Net Pay : $419.23


 Enter Employee First Name: 
 Enter Employee Last Name: 
 Enter Employee Tax State: 
 Enter Employee Clock Number: 
 Enter Employee Hourly Wage Rate: 
 Enter Employee Hours Worked for the Week: 

 *** Entered Details are *** 

 First Name: Mary
 Last Name: Apl
 Tax State: NH
 Clock Number: 526488
 Wage Rate: 9.75
 Hours: 42.50

 *** Calculated Values are *** 

 Overtime Hours : 2.50
 Gross Pay : $426.56
 State Tax : $0.00
 Federal Tax : $106.64
 Net Pay : $319.92


 Enter Employee First Name: 
 Enter Employee Last Name: 
 Enter Employee Tax State: 
 Enter Employee Clock Number: 
 Enter Employee Hourly Wage Rate: 
 Enter Employee Hours Worked for the Week: 

 *** Entered Details are *** 

 First Name: Frank
 Last Name: Fortran
 Tax State: VT
 Clock Number: 765349
 Wage Rate: 10.50
 Hours: 37.00

 *** Calculated Values are *** 

 Overtime Hours : 0.00
 Gross Pay : $388.50
 State Tax : $23.31
 Federal Tax : $97.12
 Net Pay : $268.07


 Enter Employee First Name: 
 Enter Employee Last Name: 
 Enter Employee Tax State: 
 Enter Employee Clock Number: 
 Enter Employee Hourly Wage Rate: 
 Enter Employee Hours Worked for the Week: 

 *** Entered Details are *** 

 First Name: Jeff
 Last Name: Ada
 Tax State: NY
 Clock Number: 34645
 Wage Rate: 12.25
 Hours: 45.00

 *** Calculated Values are *** 

 Overtime Hours : 5.00
 Gross Pay : $581.88
 State Tax : $46.55
 Federal Tax : $145.47
 Net Pay : $389.86


 Enter Employee First Name: 
 Enter Employee Last Name: 
 Enter Employee Tax State: 
 Enter Employee Clock Number: 
 Enter Employee Hourly Wage Rate: 
 Enter Employee Hours Worked for the Week: 

 *** Entered Details are *** 

 First Name: Anton
 Last Name: Pascal
 Tax State: CA
 Clock Number: 127615
 Wage Rate: 8.35
 Hours: 40.00

 *** Calculated Values are *** 

 Overtime Hours : 0.00
 Gross Pay : $334.00
 State Tax : $23.38
 Federal Tax : $83.50
 Net Pay : $227.12