fork download
  1. //********************************************************
  2. //
  3. // Assignment 11 - Object Oriented Design
  4. //
  5. // Name: Megan Tetreault
  6. //
  7. // Class: C Programming, Spring 2025
  8. //
  9. // Date: April 21, 2025
  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. // class Employee
  45. class Employee
  46. {
  47. private:
  48.  
  49. // private data available only to member functions
  50.  
  51. string firstName; // Employee First Name
  52. string lastName; // Employee Last Name
  53. string taxState; // Employee Tax State
  54. int clockNumber; // Employee Clock Number
  55. float wageRate; // Hourly Wage Rate
  56. float hours; // Hours worked in a week
  57. float overTimeHrs; // Overtime Hours worked
  58. float grossPay; // Weekly Gross Pay
  59. float stateTax; // State Tax
  60. float fedTax; // Fed Tax
  61. float netPay; // Net Pay
  62.  
  63. // private member function to calculate Overtime Hours
  64. float calcOverTimeHrs ( )
  65. {
  66. // Calculate the overtime hours for the week
  67. if (hours > STD_HOURS)
  68. overTimeHrs = hours - STD_HOURS; // ot hours
  69. else
  70. overTimeHrs = 0; // no ot hours
  71.  
  72. // the calculated overtime hours
  73. return (overTimeHrs);
  74.  
  75. } // calcOverTimeHrs
  76.  
  77. // private member function to calculate Gross Pay
  78. float calcGrossPay ( )
  79. {
  80. // Process gross pay based on if there is overtime
  81. if (overTimeHrs > 0)
  82. {
  83. // overtime
  84. grossPay = (STD_HOURS * wageRate) // normal pay
  85. + (overTimeHrs * (wageRate * OT_RATE)); // ot pay
  86. }
  87. else // no overtime pay
  88. {
  89. grossPay = wageRate * hours; // normal pay
  90. }
  91.  
  92. // the calculated gross pay
  93. return (grossPay);
  94.  
  95. } // calcGrossPay
  96.  
  97. // private member function to calculate State Tax
  98. float calcStateTax ()
  99. {
  100.  
  101. float theStateTax; // calculated state tax
  102.  
  103. theStateTax = grossPay; // initialize to gross pay
  104.  
  105. // calculate state tax based on where employee resides
  106.  
  107. if (taxState.compare("MA") == 0)
  108. theStateTax *= MA_TAX_RATE;
  109. else if (taxState.compare("VT") == 0)
  110. theStateTax *= VT_TAX_RATE;
  111. else if (taxState.compare("NH") == 0)
  112. theStateTax *= NH_TAX_RATE;
  113. else if (taxState.compare("CA") == 0)
  114. theStateTax *= CA_TAX_RATE;
  115. else
  116. theStateTax *= DEFAULT_TAX_RATE; // any other state
  117.  
  118. // return the calculated state tax
  119. return (theStateTax);
  120.  
  121. } // calcStateTax
  122.  
  123. // private member function to calculate Federal Tax
  124. float calcFedTax ()
  125. {
  126.  
  127. float theFedTax; // The calculated Federal Tax
  128.  
  129. // Federal Tax is the same for all regardless of state
  130. theFedTax = grossPay * FED_TAX_RATE;
  131.  
  132. // return the calculated federal tax
  133. return (theFedTax);
  134.  
  135. } // calcFedTax
  136.  
  137. // private member function to calculate Net Pay
  138. float calcNetPay ()
  139. {
  140.  
  141. float theNetPay; // total take home pay (minus taxes)
  142. float theTotalTaxes; // total taxes owed
  143.  
  144. // calculate the total taxes owed
  145. theTotalTaxes = stateTax + fedTax;
  146.  
  147. // calculate the net pay
  148. theNetPay = grossPay - theTotalTaxes;
  149.  
  150. // return the calculated net pay
  151. return (theNetPay);
  152.  
  153. } // calcNetPay
  154.  
  155. public:
  156.  
  157. // public member functions that can be called
  158. // to access private data member items
  159.  
  160. // public no argument constructor with defaults
  161. Employee() {firstName=""; lastName=""; taxState="";
  162. clockNumber=0; wageRate=0; hours=0;}
  163.  
  164. // public constructor with arguments passed to it
  165. Employee (string myFirstName, string myLastName, string myTaxState,
  166. int myClockNumber, float myWageRate, float myHours);
  167.  
  168. ~Employee(); // destructor
  169.  
  170. // public getter function prototypes to retrieve private data
  171. string getFirstName();
  172. string getLastName();
  173. string getTaxState();
  174. int getClockNumber();
  175. float getWageRate();
  176. float getHours();
  177. float getOverTimeHrs();
  178. float getGrossPay();
  179.  
  180. // TODO - Add public getter function prototype to retrieve stateTax
  181.  
  182. // TODO - Add public getter function prototype to retrieve fedTax
  183.  
  184. // TODO - Add public getter function prototype to retrieve netPay
  185. float getStateTax(); // Retrieve State Tax
  186. float getFedTax(); // Retrieve Federal Tax
  187. float getNetPay(); // Retrieve Net Pay
  188.  
  189.  
  190. // member function prototype to print an Employee object
  191. void printEmployee(Employee e); // passes an object
  192.  
  193. }; // class Employee
  194.  
  195. // constructor with arguments
  196. Employee::Employee (string myFirstName, string myLastName, string myTaxState,
  197. int myClockNumber, float myWageRate, float myHours)
  198. {
  199. // initialize all member data items
  200. firstName = myFirstName; // input
  201. lastName = myLastName; // input
  202.  
  203. // Convert myTaxState to uppercase if entered in lowercase
  204. if (std::islower(myTaxState[0]))
  205. myTaxState[0] = std::toupper(myTaxState[0]);
  206. if (std::islower(myTaxState[1]))
  207. myTaxState[1] = std::toupper(myTaxState[1]);
  208.  
  209. taxState = myTaxState; // input
  210. clockNumber = myClockNumber; // input
  211. wageRate = myWageRate; // input
  212. hours = myHours; // input
  213. overTimeHrs = calcOverTimeHrs(); // calculated overtime hours
  214. grossPay = calcGrossPay(); // calculated gross pay
  215.  
  216. // TODO - set stateTax as the return from calcStateTax member function
  217.  
  218. // TODO - set fedTax as the return from calcFedTax member function
  219.  
  220. // TODO - set netPay as the return from calcNetPay member function
  221. stateTax = calcStateTax();
  222. fedTax = calcFedTax();
  223. netPay = calcNetPay();
  224.  
  225. } // Employee constructor
  226.  
  227. // Employee's destructor
  228. Employee::~Employee()
  229. {
  230. // nothing to print here, but could ...
  231. }
  232.  
  233. // A "getter" function that will retrieve the First Name
  234. string Employee::getFirstName() {
  235. return firstName;
  236. }
  237.  
  238. // A "getter" function that will retrieve the employee Last Name
  239. string Employee::getLastName() {
  240. return lastName;
  241. }
  242.  
  243. // A "getter" function that will retrieve the employee Tax State
  244. string Employee::getTaxState() {
  245. return taxState;
  246. }
  247.  
  248. // A "getter" function that will retrieve the employee Clock Number
  249. int Employee::getClockNumber() {
  250. return clockNumber;
  251. }
  252.  
  253. // A "getter" function that will retrieve the employee Wage Rate
  254. float Employee::getWageRate() {
  255. return wageRate;
  256. }
  257.  
  258. // A "getter" function that will retrieve the employee Hours Worked
  259. float Employee::getHours() {
  260. return hours;
  261. }
  262.  
  263. // A "getter" function that will retrieve the employee Overtime Hours
  264. float Employee::getOverTimeHrs() {
  265. return overTimeHrs;
  266. }
  267.  
  268. // A "getter" function that will retrieve the employee Gross Pay
  269. float Employee::getGrossPay() {
  270. return grossPay;
  271. }
  272.  
  273. // TODO - Add a "getter" function that will retrieve the employee stateTax
  274.  
  275. // TODO - Add a "getter" function that will retrieve the employee fedTax
  276.  
  277. // TODO - Add a "getter" function that will retrieve the employee netPay
  278.  
  279. // Retrieves the employee's State Tax
  280. float Employee::getStateTax() {
  281. return stateTax;
  282. }
  283.  
  284. // Retrieves the employee's Federal Tax
  285. float Employee::getFedTax() {
  286. return fedTax;
  287. }
  288.  
  289. // Retrieves the employee's Net Pay
  290. float Employee::getNetPay() {
  291. return netPay;
  292. }
  293.  
  294.  
  295. // a member function to print out the info in a given Employee object
  296. void Employee::printEmployee(Employee e) {
  297.  
  298. // Display the entered input on the Employee
  299. cout<<"\n\n *** Entered Details are *** \n";
  300. cout<<"\n First Name: "<< e.getFirstName();
  301. cout<<"\n Last Name: "<< e.getLastName();
  302. cout<<"\n Tax State: "<< e.getTaxState();
  303. cout <<"\n Clock Number: "<< e.getClockNumber();
  304. cout <<"\n Wage Rate: "<< e.getWageRate ();
  305. cout <<"\n Hours: "<< e.getHours ();
  306.  
  307. // Display the calculated values of the Employee
  308. cout<<"\n\n *** Calculated Values are *** \n";
  309.  
  310. // print out overtime hours based on the employee information entered
  311. cout <<"\n Overtime Hours : " << e.getOverTimeHrs();
  312.  
  313. // print out gross pay based on the employee information entered
  314. cout <<"\n Gross Pay : $" << e.getGrossPay();
  315.  
  316. // TODO - Add cout statement with call to stateTax getter function
  317.  
  318. // TODO - Add cout statement with call to fedTax getter function
  319.  
  320. // TODO - Add cout statement with call to netPay getter function
  321. // Use cout to display State Tax, Federal Tax, and Net Pay
  322. cout << "\n State Tax: $" << fixed << setprecision(2) << e.getStateTax();
  323. cout << "\n Federal Tax: $" << fixed << setprecision(2) << e.getFedTax();
  324. cout << "\n Net Pay: $" << fixed << setprecision(2) << e.getNetPay();
  325.  
  326.  
  327. // add a new line to separate the next employee
  328. cout <<"\n";
  329.  
  330. } // printEmployee
  331.  
  332. // main function to start the processing
  333. int main ()
  334. {
  335. // local variables to collect user input
  336.  
  337. string myFirstName; // First Name to input
  338. string myLastName; // Last Name to input
  339. string myTaxState; // Tax State to input
  340. int myClockNumber; // Clock Number to input
  341. float myWageRate; // Wage Rate to input
  342. float myHours; // Hours to input
  343.  
  344. cout << fixed // fix the number of decimal digits
  345. << setprecision(2); // to 2
  346.  
  347. // Array of Objects to store each of our employees
  348. Employee e[EMP_SIZE];
  349.  
  350. // prompt for information to read in employee information
  351. for (int i = 0; i < EMP_SIZE; ++i)
  352. {
  353. // Enter Employee Information
  354. cout <<"\n\n Enter Employee First Name: ";
  355. cin>>myFirstName ;
  356. cout <<"\n Enter Employee Last Name: ";
  357. cin>>myLastName ;
  358. cout <<"\n Enter Employee Tax State: ";
  359. cin>>myTaxState ;
  360. cout<<"\n Enter Employee Clock Number: ";
  361. cin>>myClockNumber;
  362. cout <<"\n Enter Employee Hourly Wage Rate: ";
  363. cin>>myWageRate;
  364. cout <<"\n Enter Employee Hours Worked for the Week: ";
  365. cin>>myHours;
  366.  
  367. // Call our constructor to create an employee object
  368. // using the input entered above. The constructor
  369. // will also put into motion the execution of the
  370. // various private member functions which will
  371. // calculate the overtime, gross pay, state tax, federal
  372. // tax, and net pay for the current employee.
  373.  
  374. // The updated object will be returned and placed in the
  375. // the element of our array of objects named "e", using the index
  376. // of the current value of our loop index "i" ... thus: e[i]
  377. e[i] = {myFirstName, myLastName, myTaxState,
  378. myClockNumber, myWageRate, myHours};
  379.  
  380. // Call the printEmployee public member function to display all
  381. // the inputted and calculated values for the current employee
  382. e[i].printEmployee(e[i]);
  383.  
  384. } // for
  385.  
  386. return 0;
  387.  
  388. } // main
Success #stdin #stdout 0.01s 5288KB
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