85.3k views
0 votes
In this assignment, you are to create a class named Payroll. In the class, you are to have the following data members: name: String id: String hours: int rate: double private members . You are to create no-arg and parameterized constructors and the appropriate setters(accessors) and getters (mutators). The class definition should also handle the following exceptions: An employee name should not be empty, otherwise an exception should be thrown. An employee id should have the form LNN. If that form is not received, an exception should be thrown. An employee's hours should neither be negative nor greater than 84. An exception should be thrown otherwise. An employee's pay rate should neither be negative nor greater than 25.00. An exception should be thrown otherwise. Demonstrate this class in a program (separate class or in the same class). The exception messages should be appropriate to the specific exception that has occurred. Create a package payroll for the project.

User Mhck
by
8.3k points

1 Answer

1 vote

Answer:

Here is the PayRoll class:

// PayRoll.java

package payroll; // creates payroll package for project

public class Payroll { //class definition

private String name; //private String type member variable to store name

private String id; //private String type member variable to store id

private int hours; //private int type member variable to store work hours

private double rate; //private double type member variable to store payrate of the employee

public Payroll() { //no argument constructor of PayRoll

name = ""; //initialize name field

id = ""; //initialize id field

hours = 0; //initialize hours field

rate = 0.0; } // initialize rate field

public Payroll(String NAME, String ID, int HOURS, double RATE) { //parameterized constructor

setName(NAME); //sets name value

setId(ID); //sets id value

setHours(HOURS); //sets hours value

setRate(RATE); } //sets rate value

public void setName(String NAME) { //mutator method to set name

if(NAME.equals("")) { //if name field is empty

throw new IllegalArgumentException("An employee name should not be empty."); } //throws exception

name = NAME; }

public void setId(String ID) { //mutator method to set id

if(ID.length() != 3 || !Character.isLetter(ID.charAt(0))|| !Character.isDigit(ID.charAt(1)) || !Character.isDigit(ID.charAt(2))) { //if statement checks if the length of the id is not 3, or first character of id is not a letter, or second or third character of id is not a digit

throw new IllegalArgumentException("An employee id should have the form LNN."); } //throws exception

id = ID; }

public void setHours(int HOURS) { //mutator method to set hours

if(HOURS < 0 || HOURS > 84) { //checks if working hours are less than 0 or greater than 84

throw new IllegalArgumentException("An employee's hours should neither be negative nor greater than 84"); } //throws exception

hours = HOURS; }

public void setRate(double RATE) { //mutator method to set rate

if(RATE < 0 || RATE > 25.00) { //checks if pay rate is less than 0 or greater than 25.00

throw new IllegalArgumentException("An employee's pay rate should neither be negative nor greater than 25.00"); } //throws exception

rate = RATE; }

public String getName() { //accessor method to get value of name

return name; } //returns the current value of name

public String getId() { //accessor method to get value of id

return id; } //returns the current value of id

public int getHours() { //accessor method to get value of hours

return hours; } //returns the current value of hours

public double getRate() { //accessor method to get value of rate

return rate; } } //returns the current value of rate

Step-by-step explanation:

Here is the Main() class:

import java.util.Scanner; //to accept input from user

public class Main { //Main class definition

public static void main(String[] args) {//start of main() function

Payroll pay = new Payroll(); //creates object i.e. pay of PayRoll class

Scanner sc = new Scanner(System.in); //creates Scanner class object

String name,id; //declare variables to hold name and id

int hour; //declare variable to store hour

double rate; //declare variable to store pay rate

System.out.print("Enter the employee's name: "); //prompts user to enter employee name

name = sc.nextLine(); //reads input value of name

pay.setName(name); //use pay object to access mutator method to set name to input name value

System.out.print("Enter employee's id (LNN form): "); //prompts user to enter employee id

id = sc.nextLine(); //reads input value of id

pay.setId(id); //use pay object to access mutator method to set id to input id

System.out.print("Enter the employee's working hours: "); //prompts user to enter employee hours

hour = sc.nextInt(); //reads input value of hour

pay.setHours(hour); // set input hours

System.out.print("Enter the employee's pay rate: "); //prompts user to enter employee pay rate

rate = sc.nextInt(); //reads input value of rate

pay.setRate(rate); // set pay rate

System.out.println("Employee Data: \\"); //displays the employee data

System.out.println("Employee's Name: " + pay.getName()); //calls getName accessor method to get current value of name field and display it

System.out.println("Employee's ID: " + pay.getId()); //calls getId accessor method to get current value of id field and displays it

System.out.println("Employee's Hours: " + pay.getHours()); //calls getHours accessor method to get current value of hours field and displays it

System.out.println("Employee's Pay Rate: " + pay.getRate()); //calls getRate accessor method to get current value of rate field and displays it

}

}

Here IllegalArgumentException is thrown which is used to show that a method is passed an illegal argument.

The screenshot of program and its output is attached.

In this assignment, you are to create a class named Payroll. In the class, you are-example-1
In this assignment, you are to create a class named Payroll. In the class, you are-example-2
In this assignment, you are to create a class named Payroll. In the class, you are-example-3
User Vignesh Murugesan
by
7.7k points