Question: Programming Il - Lab 6 ACME Payroll. (Java Program.) Trying to get Manager class fixed and see if there is a way to write this
Programming Il - Lab 6 ACME Payroll. (Java Program.)




Trying to get Manager class fixed and see if there is a way to write this all without using HashMaps and maybe ArrayLists instead. Heres some example code so far. Manager needs to inherit from the Employee class.
Main:
import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.*;
public class Main {
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("* * Welcome to ACME Payroll Setup * * *"); System.out.println("Please enter employee names, taxIDs and wage rates"); System.out.println("Enter a $ when you are done entering employees"); String line = null; int empCount = 0; Map employeeMap = new HashMap(); while (true) { line = scanner.nextLine(); if (line.startsWith("$")) { break; } String[] tokens = line.split(" "); Employee employee = new Employee(++empCount, tokens[0], tokens[1], tokens[2], Double.parseDouble(tokens[3])); employeeMap.put(employee.getId(), employee); } String format = "%13s %20s %12s %8s ";
if (employeeMap.size() > 0) { System.out.format(format, "Employee ID |", "Employee Name |", "Tax ID |", "Wage"); for (Employee employee : employeeMap.values()) { System.out.format(format, employee.getId() + " |", employee.getFirstName() + " " + employee.getLastName() + " |", employee.getTaxID() + " |", employee.getWage()); }
System.out.println(" Please enter employee hours worked (ID Week Hours)"); System.out.println("Enter a zero employee ID to end the input");
List payrollRecords = new ArrayList();
while (true) { line = scanner.nextLine(); if (line.startsWith("0")) { break; } String[] tokens = line.split(" "); PayrollRecord payrollRecord = new PayrollRecord(Integer.parseInt(tokens[0]), Integer.parseInt(tokens[1]), Double.parseDouble(tokens[2])); payrollRecords.add(payrollRecord); }
Map payrollMap = new HashMap(); Map hoursMap = new HashMap();
if (payrollRecords.size() > 0) { for (PayrollRecord payrollRecord : payrollRecords) { double wage = employeeMap.get(payrollRecord.getEmployeeID()).getWage(); double paycheck = wage * payrollRecord.getHoursWorked(); if (payrollRecord.getHoursWorked() > 40.0) { double temp = ((payrollRecord.getHoursWorked() - 40.0) * wage) / 2.0; paycheck += temp; }
if (payrollMap.containsKey(payrollRecord.getEmployeeID())) { payrollMap.put(payrollRecord.getEmployeeID(), payrollMap.get(payrollRecord.getEmployeeID()) + paycheck); } else { payrollMap.put(payrollRecord.getEmployeeID(), paycheck); }
if (hoursMap.containsKey(payrollRecord.getEmployeeID())) { hoursMap.put(payrollRecord.getEmployeeID(), hoursMap.get(payrollRecord.getEmployeeID()) + payrollRecord.getHoursWorked()); } else { hoursMap.put(payrollRecord.getEmployeeID(), payrollRecord.getHoursWorked()); } } }
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); System.out.println("ACME Payroll run on " + dateTimeFormatter.format(LocalDate.now())); format = "%10s %20s %10s %8s "; System.out.format(format, "Employee |", "Employee |", "Hours |", "Total"); System.out.format(format, "Number |", "Name |", "Worked |", "Pay"); for (Employee employee : employeeMap.values()) { System.out.format(format, employee.getId() + " |", employee.getFirstName() + " " + employee.getLastName() + " |", hoursMap.containsKey(employee.getId()) ? hoursMap.get(employee.getId()) + " |" : "0.00 |", payrollMap.containsKey(employee.getId()) ? payrollMap.get(employee.getId()) : "0.00"); } }
} }
Employee:
public class Employee { private int id; private String firstName; private String lastName; private String taxID; private double wage;
public Employee(int id, String firstName, String lastName, String taxID, double wage) { this.id = id; this.firstName = firstName; this.lastName = lastName; this.taxID = taxID; this.wage = wage; }
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getFirstName() { return firstName; }
public void setFirstName(String firstName) { this.firstName = firstName; }
public String getLastName() { return lastName; }
public void setLastName(String lastName) { this.lastName = lastName; }
public String getTaxID() { return taxID; }
public void setTaxID(String taxID) { this.taxID = taxID; }
public double getWage() { return wage; }
public void setWage(double wage) { this.wage = wage; } }
Payroll:
public class PayrollRecord { private int employeeID; private int weekNumber; private double hoursWorked;
public PayrollRecord(int employeeID, int weekNumber, double hoursWorked) { this.employeeID = employeeID; this.weekNumber = weekNumber; this.hoursWorked = hoursWorked; }
public int getEmployeeID() { return employeeID; }
public void setEmployeeID(int employeeID) { this.employeeID = employeeID; }
public int getWeekNumber() { return weekNumber; }
public void setWeekNumber(int weekNumber) { this.weekNumber = weekNumber; }
public double getHoursWorked() { return hoursWorked; }
public void setHoursWorked(double hoursWorked) { this.hoursWorked = hoursWorked; } }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
