fork download
  1. //********************************************************
  2. //
  3. // Assignment 11 - Object Oriented Design
  4. //
  5. // Name: Thomas Scappaticci
  6. //
  7. // Class: C Programming, Spring 2024
  8. //
  9. // Date: April 19, 2024
  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. float getStateTax();
  180. float getFedTax();
  181. float getNetPay();
  182.  
  183.  
  184. // member function prototype to print an Employee object
  185. void printEmployee(Employee e); // passes an object
  186.  
  187. }; // class Employee
  188.  
  189. // constructor with arguments
  190. Employee::Employee (string myFirstName, string myLastName, string myTaxState,
  191. int myClockNumber, float myWageRate, float myHours)
  192. {
  193. // initialize all member data items
  194. firstName = myFirstName; // input
  195. lastName = myLastName; // input
  196.  
  197. // Convert myTaxState to uppercase if entered in lowercase
  198. if (std::islower(myTaxState[0]))
  199. myTaxState[0] = std::toupper(myTaxState[0]);
  200. if (std::islower(myTaxState[1]))
  201. myTaxState[1] = std::toupper(myTaxState[1]);
  202.  
  203. taxState = myTaxState; // input
  204. clockNumber = myClockNumber; // input
  205. wageRate = myWageRate; // input
  206. hours = myHours; // input
  207. overTimeHrs = calcOverTimeHrs(); // calculated overtime hours
  208. grossPay = calcGrossPay(); // calculated gross pay
  209. stateTax = calcStateTax(); // calculated gross pay
  210. fedTax = calcFedTax(); // calculated gross pay
  211. netPay = calcNetPay(); // calculated gross pay
  212.  
  213.  
  214. } // Employee constructor
  215.  
  216. // Employee's destructor
  217. Employee::~Employee()
  218. {
  219. // nothing to print here, but could ...
  220. }
  221.  
  222. // A "getter" function that will retrieve the First Name
  223. string Employee::getFirstName() {
  224. return firstName;
  225. }
  226.  
  227. // A "getter" function that will retrieve the employee Last Name
  228. string Employee::getLastName() {
  229. return lastName;
  230. }
  231.  
  232. // A "getter" function that will retrieve the employee Tax State
  233. string Employee::getTaxState() {
  234. return taxState;
  235. }
  236.  
  237. // A "getter" function that will retrieve the employee Clock Number
  238. int Employee::getClockNumber() {
  239. return clockNumber;
  240. }
  241.  
  242. // A "getter" function that will retrieve the employee Wage Rate
  243. float Employee::getWageRate() {
  244. return wageRate;
  245. }
  246.  
  247. // A "getter" function that will retrieve the employee Hours Worked
  248. float Employee::getHours() {
  249. return hours;
  250. }
  251.  
  252. // A "getter" function that will retrieve the employee Overtime Hours
  253. float Employee::getOverTimeHrs() {
  254. return overTimeHrs;
  255. }
  256.  
  257. // A "getter" function that will retrieve the employee Gross Pay
  258. float Employee::getGrossPay() {
  259. return grossPay;
  260. }
  261.  
  262. // A "getter" function that will retrieve the employee stateTax
  263. float Employee::getStateTax() {
  264. return stateTax;
  265. }
  266.  
  267. //A "getter" function that will retrieve the employee fedTax
  268. float Employee::getFedTax() {
  269. return fedTax;
  270. }
  271.  
  272. //A "getter" function that will retrieve the employee netPay
  273. float Employee::getNetPay() {
  274. return netPay;
  275. }
  276.  
  277.  
  278. // a member function to print out the info in a given Employee object
  279. void Employee::printEmployee(Employee e) {
  280.  
  281. // Display the entered input on the Employee
  282. cout<<"\n\n *** Entered Details are *** \n";
  283. cout<<"\n First Name: "<< e.getFirstName();
  284. cout<<"\n Last Name: "<< e.getLastName();
  285. cout<<"\n Tax State: "<< e.getTaxState();
  286. cout <<"\n Clock Number: "<< e.getClockNumber();
  287. cout <<"\n Wage Rate: "<< e.getWageRate ();
  288. cout <<"\n Hours: "<< e.getHours ();
  289.  
  290. // Display the calculated values of the Employee
  291. cout<<"\n\n *** Calculated Values are *** \n";
  292.  
  293. // print out overtime hours based on the employee information entered
  294. cout <<"\n Overtime Hours : " << e.getOverTimeHrs();
  295.  
  296. // print out gross pay based on the employee information entered
  297. cout <<"\n Gross Pay : $" << e.getGrossPay();
  298.  
  299. // print out state tax based on the employee information entered
  300. cout <<"\n State Tax : $" << e.getStateTax();
  301.  
  302. // print out fed tax based on the employee information entered
  303. cout <<"\n Fed Tax : $" << e.getFedTax();
  304.  
  305. // print out net pay based on the employee information entered
  306. cout <<"\n Net Pay : $" << e.getNetPay();
  307.  
  308. // add a new line to separate the next employee
  309. cout <<"\n";
  310.  
  311. } // printEmployee
  312.  
  313. // main function to start the processing
  314. int main ()
  315. {
  316. // local variables to collect user input
  317.  
  318. string myFirstName; // First Name to input
  319. string myLastName; // Last Name to input
  320. string myTaxState; // Tax State to input
  321. int myClockNumber; // Clock Number to input
  322. float myWageRate; // Wage Rate to input
  323. float myHours; // Hours to input
  324.  
  325. cout << fixed // fix the number of decimal digits
  326. << setprecision(2); // to 2
  327.  
  328. // Array of Objects to store each of our employees
  329. Employee e[EMP_SIZE];
  330.  
  331. // prompt for information to read in employee information
  332. for (int i = 0; i < EMP_SIZE; ++i)
  333. {
  334. // Enter Employee Information
  335. cout <<"\n\n Enter Employee First Name: ";
  336. cin>>myFirstName ;
  337. cout <<"\n Enter Employee Last Name: ";
  338. cin>>myLastName ;
  339. cout <<"\n Enter Employee Tax State: ";
  340. cin>>myTaxState ;
  341. cout<<"\n Enter Employee Clock Number: ";
  342. cin>>myClockNumber;
  343. cout <<"\n Enter Employee Hourly Wage Rate: ";
  344. cin>>myWageRate;
  345. cout <<"\n Enter Employee Hours Worked for the Week: ";
  346. cin>>myHours;
  347.  
  348. // Call our constructor to create an employee object
  349. // using the input entered above. The constructor
  350. // will also put into motion the execution of the
  351. // various private member functions which will
  352. // calculate the overtime, gross pay, state tax, federal
  353. // tax, and net pay for the current employee.
  354.  
  355. // The updated object will be returned and placed in the
  356. // the element of our array of objects named "e", using the index
  357. // of the current value of our loop index "i" ... thus: e[i]
  358. e[i] = {myFirstName, myLastName, myTaxState,
  359. myClockNumber, myWageRate, myHours};
  360.  
  361. // Call the printEmployee public member function to display all
  362. // the inputted and calculated values for the current employee
  363. e[i].printEmployee(e[i]);
  364.  
  365. } // for
  366.  
  367. return 0;
  368.  
  369. } // main
Success #stdin #stdout 0s 5304KB
stdin
Standard input is empty
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: 
 Last Name: 
 Tax State: 
 Clock Number: 5433
 Wage Rate: 0.00
 Hours: 0.00

 *** Calculated Values are *** 

 Overtime Hours : 0.00
 Gross Pay : $0.00
 State Tax : $0.00
 Fed Tax : $0.00
 Net Pay : $0.00


 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: 
 Last Name: 
 Tax State: 
 Clock Number: 5433
 Wage Rate: 0.00
 Hours: 0.00

 *** Calculated Values are *** 

 Overtime Hours : 0.00
 Gross Pay : $0.00
 State Tax : $0.00
 Fed Tax : $0.00
 Net Pay : $0.00


 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: 
 Last Name: 
 Tax State: 
 Clock Number: 5433
 Wage Rate: 0.00
 Hours: 0.00

 *** Calculated Values are *** 

 Overtime Hours : 0.00
 Gross Pay : $0.00
 State Tax : $0.00
 Fed Tax : $0.00
 Net Pay : $0.00


 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: 
 Last Name: 
 Tax State: 
 Clock Number: 5433
 Wage Rate: 0.00
 Hours: 0.00

 *** Calculated Values are *** 

 Overtime Hours : 0.00
 Gross Pay : $0.00
 State Tax : $0.00
 Fed Tax : $0.00
 Net Pay : $0.00


 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: 
 Last Name: 
 Tax State: 
 Clock Number: 5433
 Wage Rate: 0.00
 Hours: 0.00

 *** Calculated Values are *** 

 Overtime Hours : 0.00
 Gross Pay : $0.00
 State Tax : $0.00
 Fed Tax : $0.00
 Net Pay : $0.00