Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

PLEASE ANSWER ALL THREE PARTS, DO NOT SKIP ANY OF THEM! Refer to the StaffMember

ID: 3788040 • Letter: P

Question

PLEASE ANSWER ALL THREE PARTS, DO NOT SKIP ANY OF THEM!

Refer to the StaffMember class hierarchy Diagram, write a main program to perform following specifications by using java.util.ArrayList. -

Use Staff.java, StaffMember.java, Volunteer.java, Employee.java, Executive.java and Hourly.java found below.

(i) Initialize an ArrayList object that reads all employee records from Staff.java.

(ii) Allow user to enter employee name to - Display employee record;including employee type and pay rate - Delete employee record - Modify employee record

(iii) Display error if the user attempts to remove name that is not on the list.

Staff.Java:

//********************************************************************
// Staff.java
//
// Represents the personnel staff of a particular business.
//********************************************************************

public class Staff
{
private StaffMember[] staffList;

//-----------------------------------------------------------------
// Constructor: Sets up the list of staff members.
//-----------------------------------------------------------------
public Staff ()
{
staffList = new StaffMember[6];

staffList[0] = new Executive ("Sam", "123 Main Line",
"555-0469", "123-45-6789", 2423.07);

staffList[1] = new Employee ("Carla", "456 Off Line",
"555-0101", "987-65-4321", 1246.15);
staffList[2] = new Employee ("Woody", "789 Off Rocker",
"555-0000", "010-20-3040", 1169.23);

staffList[3] = new Hourly ("Diane", "678 Fifth Ave.",
"555-0690", "958-47-3625", 10.55);

staffList[4] = new Hourly ("Norm", "987 Suds Blvd.",
"555-8374","456-78-9000", 11.2);

staffList[5] = new Volunteer ("Cliff", "321 Duds Lane",
"555-7282");

((Executive)staffList[0]).awardBonus (500.00);

((Hourly)staffList[3]).addHours (40);
((Hourly)staffList[4]).addHours (30);
}

//-----------------------------------------------------------------
// Pays all staff members.
//-----------------------------------------------------------------
public void payday ()
{
double amount;

for (int count=0; count < staffList.length; count++)
{
System.out.println (staffList[count]);

amount = staffList[count].pay(); // polymorphic

if (amount == 0.0)
System.out.println ("Thanks!");
else
System.out.println ("Paid: " + amount);

System.out.println ("-----------------------------------");
}
}

public StaffMember getStaff(int i)
{
   StaffMember st = staffList[i];
   return st;
}

public int getSize()
{
   int sz = staffList.length;
   return sz;

}
  
}

StaffMember.java:

//********************************************************************
// StaffMember.java   
//
// Represents a generic staff member.
//********************************************************************

abstract public class StaffMember
{
protected String name;
protected String address;
protected String phone;

//-----------------------------------------------------------------
// Constructor: Sets up this staff member using the specified
// information.
//-----------------------------------------------------------------
public StaffMember (String eName, String eAddress, String ePhone)
{
name = eName;
address = eAddress;
phone = ePhone;
}

//-----------------------------------------------------------------
// Returns a string including the basic employee information.
//-----------------------------------------------------------------
public String toString()
{
String result = "Name: " + name + " ";

result += "Address: " + address + " ";
result += "Phone: " + phone;

return result;
}

//-----------------------------------------------------------------
// Derived classes must define the pay method for each type of
// employee.
//-----------------------------------------------------------------
public abstract double pay();
}

Volunteer.java:

//********************************************************************
// Volunteer.java
//
// Represents a staff member that works as a volunteer.
//********************************************************************

public class Volunteer extends StaffMember
{
//-----------------------------------------------------------------
// Constructor: Sets up this volunteer using the specified
// information.
//-----------------------------------------------------------------
public Volunteer (String eName, String eAddress, String ePhone)
{
super (eName, eAddress, ePhone);
}

//-----------------------------------------------------------------
// Returns a zero pay value for this volunteer.
//-----------------------------------------------------------------
public double pay()
{
return 0.0;
}
}

Employee.java:

//********************************************************************
// Employee.java   
//
// Represents a general paid employee.
//********************************************************************

public class Employee extends StaffMember
{
protected String socialSecurityNumber;
protected double payRate;

//-----------------------------------------------------------------
// Constructor: Sets up this employee with the specified
// information.
//-----------------------------------------------------------------
public Employee (String eName, String eAddress, String ePhone,
String socSecNumber, double rate)
{
super (eName, eAddress, ePhone);

socialSecurityNumber = socSecNumber;
payRate = rate;
}

//-----------------------------------------------------------------
// Returns information about an employee as a string.
//-----------------------------------------------------------------
public String toString()
{
String result = super.toString();

result += " Social Security Number: " + socialSecurityNumber;

return result;
}

//-----------------------------------------------------------------
// Returns the pay rate for this employee.
//-----------------------------------------------------------------
public double pay()
{
return payRate;
}
}

Excutive.java:

//********************************************************************
// Executive.java   
//
// Represents an executive staff member, who can earn a bonus.
//********************************************************************

public class Executive extends Employee
{
private double bonus;

//-----------------------------------------------------------------
// Constructor: Sets up this executive with the specified
// information.
//-----------------------------------------------------------------
public Executive (String eName, String eAddress, String ePhone,
String socSecNumber, double rate)
{
super (eName, eAddress, ePhone, socSecNumber, rate);

bonus = 0; // bonus has yet to be awarded
}

//-----------------------------------------------------------------
// Awards the specified bonus to this executive.
//-----------------------------------------------------------------
public void awardBonus (double execBonus)
{
bonus = execBonus;
}

//-----------------------------------------------------------------
// Computes and returns the pay for an executive, which is the
// regular employee payment plus a one-time bonus.
//-----------------------------------------------------------------
public double pay()
{
double payment = super.pay() + bonus;

bonus = 0;

return payment;
}
}

Hourly.java:

//********************************************************************
// Hourly.java   
//
// Represents an employee that gets paid by the hour.
//********************************************************************

public class Hourly extends Employee
{
private int hoursWorked;

//-----------------------------------------------------------------
// Constructor: Sets up this hourly employee using the specified
// information.
//-----------------------------------------------------------------
public Hourly (String eName, String eAddress, String ePhone,
String socSecNumber, double rate)
{
super (eName, eAddress, ePhone, socSecNumber, rate);

hoursWorked = 0;
}

//-----------------------------------------------------------------
// Adds the specified number of hours to this employee's
// accumulated hours.
//-----------------------------------------------------------------
public void addHours (int moreHours)
{
hoursWorked += moreHours;
}

//-----------------------------------------------------------------
// Computes and returns the pay for this hourly employee.
//-----------------------------------------------------------------
public double pay()
{
double payment = payRate * hoursWorked;

hoursWorked = 0;

return payment;
}

//-----------------------------------------------------------------
// Returns information about this hourly employee as a string.
//-----------------------------------------------------------------
public String toString()
{
String result = super.toString();

result += " Current hours: " + hoursWorked;

return result;
}
}

Explanation / Answer

package sample;
import java.util.*;
public class Test {
public static void main(String args[]){
   ArrayList<StaffMember> al=new ArrayList<StaffMember>();
   Staff s=new Staff();
   for(int i=0;i<6;i++)
   {
       al.add(s.getStaff(i));
   }
   Scanner s1=new Scanner(System.in);
   while(true)
   {
   System.out.println("Enter employee name : ");
   String name=s1.next();
   int ch;
   System.out.println(" 1) display details 2)delete employee 3) modify employee enter choice :");
   ch=s1.nextInt();
   if(ch==1)
   {
       boolean flag=false;
       for(int i=0;i<6;i++)
       {
           if(name.equalsIgnoreCase(s.getStaff(i).name))
           {
               flag=true;
               System.out.println(al.get(i).toString());
           }
       }  
       if(flag==false)
       {
           System.out.println("Record not found");
       }
   }
   else if(ch==2)
   {
       boolean flag=false;
       for(int i=0;i<6;i++)
       {
           if(name.equalsIgnoreCase(s.getStaff(i).name))
           {
               flag=true;
               System.out.println(al.remove(i));
           }
       }
       if(flag==false)
       {
           System.out.println("Record not found");
       }
   }
   else if(ch==3)
   {
       boolean flag=false;
       for(int i=0;i<6;i++)
       {
           if(name.equalsIgnoreCase(s.getStaff(i).name))
           {
               flag=true;
               System.out.println(" enter new name :");
               String x=s1.next();
               s.getStaff(i).name=x;
           }
       }
       if(flag==false)
       {
           System.out.println("Record not found");
       }
   }
   else break;
   }
}
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at drjack9650@gmail.com
Chat Now And Get Quote