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.)

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:

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

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!