// Name: msglm // Date: Sep 29th, 2022 // Program Name: Structs // Description: Given an input file, output gross pay, taxes, net pay, and other financial information. #include #include #include using namespace std; //Structures struct Employee { string fname; string lname; string job; int employeeNum; float hrsWorked; float wage; int deductions; }; //Takes in the initalized file and turns it into a vector of arrays of strings Employee serializeIntoStruct(ifstream & fileVar) { Employee temp; getline(fileVar, temp.fname); getline(fileVar, temp.lname); getline(fileVar, temp.job); fileVar >> temp.employeeNum; fileVar >> temp.hrsWorked; fileVar >> temp.wage; fileVar >> temp.deductions; return temp; } //given hours work, return the amount of overtime. float overtime(Employee employee) { if (employee.hrsWorked > 40) { float oTHours = employee.hrsWorked - 40; if (oTHours > 0) { return oTHours; } } return 0; } //Given the deductions, return the taxrate float taxRate(Employee employee) { if (employee.deductions <= 0) { return 0.30; } else if (0.30-(employee.deductions*0.05) <= 0.10) { return 0.10; } else { return 0.30-(employee.deductions*0.05); } } //Intake the employee in question, his overtime, and then the tax rate he's subject to // void outputGrossTaxPay(Employee employee, float overtime, float taxRate) { float overtimePay = overtime*(employee.wage*1.5); float normalPay; if (overtime > 0) { normalPay = employee.wage*40; } else { normalPay = employee.wage*employee.hrsWorked; } float grossPay = overtimePay + normalPay; float withheld = taxRate*grossPay; cout << "Employee Name: " << employee.fname << " " << employee.lname << endl; cout << "Job Title: " << employee.job << endl; cout << "Employee Number: " << employee.employeeNum << endl; cout << "Hours Worked: " << employee.hrsWorked << endl; cout << "Hourly Wage: $" << employee.wage << endl; cout << "Deductions Claimed: " << employee.deductions << endl; if (overtime > 0) { cout << "Overtime Hours: " << overtime << endl; cout << "Overtime Pay: $" << overtimePay << endl; } cout << "Gross Pay: $" << grossPay << endl; cout << "Tax Withheld: $" << withheld << endl; cout << "Net Pay: $" << grossPay-withheld << endl; } int main() { //Variable declaration ifstream fileVar; fileVar.open("input.txt"); if (!fileVar) { cout << "ERROR! input.txt failed to open!"; exit(1); } Employee readValues = serializeIntoStruct(fileVar); outputGrossTaxPay(readValues, overtime(readValues), taxRate(readValues)); } /* This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License Version 3 ONLY as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */