Starting from:

$20

Assignment 7 WEEKLY PAY REPORT FOR PETE’S PETS solution

Concepts tested by this program:

Layouts with JavaFX

Reading from a file

Comparable Interface

New concepts tested by this program

ArrayList

For each loop

Inheritance

Polymorphism

Abstract classes

Overriding methods

super()

Sort ArrayList

Writing to a file



WEEKLY PAY REPORT FOR PETE’S PETS

The Pete’s Pets has four types of employees. Managers (who receive a fixed weekly salary), Clerks (who receive a fixed hourly wage for up to the first 40 hours they work and "time-and-a-half," i.e., 1.5 times their hourly wage, for overtime hours worked), Vets (who receive $800 plus $3.75 for each vaccine they administer), and Stylists (who receive a fixed amount of money per appointment).



Write a Java program to compute the weekly pay for each employee and the total payroll. You do not know the number of employees in advance. Each type of employee has its own pay code: Managers have paycode 1, Clerks have code 2, Vets have code 3 and Stylists have code 4. Initial input will come from a sequential file that has a line for each employee. The first item in the line will always be the paycode. The second and third item will be the first and last name. For a paycode of 1, the salary will be the next item. If the pay code is 2, hourly salary is the next item followed by hours worked. If the pay code is 3, the next item will be the number of vaccines administered. If the pay code is 4, the next item will be the payrate per appointment followed by the number of appointments. The last item on the line will be the worker's ID number. Additional input can come from the keyboard. The user will select the type of employee, then fill in the fields for that employee and then select the Add Employee button.



When the weekly pay is calculated, a report can be generated and sent to the screen and written to a text file. Each employee weekly wage should be printed before the summary items. The summary should consist of the total payroll and the number of workers in each category. Use the FileChooser dialog box to select the input and output file names at run time. Print all dollar amounts with currency formatting. At any time the user can select the “Read from File” button and choose a file to read in employees.

You can assume that the input files are in the correct format.



The user can add new employees by selecting the correct radio button. The appropriate labels and text boxes should appear.







When the screen displays text fields for the correct employee type, user can enter the information, and can then select the “Add Employee” button.



When the user selects the “Display Summary Pay Report”, a JOptionPane should display information in the following format:



“Write Summary Pay Report” uses FileChooser to find or name a file to which to write. This will write the same summary as above to a file. Be sure to select a different file name than the input file, or you will overwrite it with output.

Specifications
Data Element classes – Employee, Manager, Clerk, Vet, Sylist

· Create an abstract class called Employee with one abstract method called calculateWeeklyPay which returns a double. This class will have instance variables for the first name, last name and employee id, a toString method and a constructor. This class will implement the Comparable interface and will provide a compareTo method that compares the employee id. Employee ids will be compared based on their numeric value.

· Create the following inherited classes for the 4 types of employees: Manager, Clerk, Vet, and Stylist. They will contain instance variables appropriate for the type of employee. They will extend from Employee and define the calculateWeeklyPay method. There should also be getter and setters, and any other methods that are needed for your design. The toString method and constructors for these classes will use the super reference to take advantage of the Employee constructor and toString methods. Use finals to represent any constants.

Data Manager class - Employees

· Create an Employees class that implements EmployeesInterface. It will contain an Arraylist which holds Employee/Comparable objects (Manager, Clerk, Vet, Stylist all extending Employee). It will have methods required by the EmployeesInterface, e.g., addEmployee, calculateWeeklyTotal, generateWeeklyReport, sort, retrieve number of managers, clerks, etc., and any other methods needed for your design. The toString method for Employees will return a String with the employee number and weekly pay for all employees. Use a for each loop anytime you need to process all the objects in the Arraylist.

Gui Driver class

· Create Stage/Pane classes which implement the GUI. They will have methods to read from the file, print the report to the screen, print the report to the file, and any other methods needed for your design. Use the FileChooser dialog box to select the input and output file names at run time. You can assume all information in the input file is correct. Use Radio buttons to select the type of employee. The fields change as the type of employee changes.

Utility class - SortingArrayList

· I have provided a SortingArray class that will need to be modified to work with an ArrayList.

Other specifications

· Create Javadoc for your Employee, Manager, Clerk, Vet, Stylist and Employees classes.

· I have provided a JUnit Test class that tests the methods of the Employees class to add an employee, calculate weekly total, generate the weekly pay report, retrieve number of managers, clerks, etc.

· Create a Junit test for your Vet class.

· Insure that your solution passes the JUnit tests, implements the interface, and operates the GUI as described above. Turn in your all the java code needed to run your program, including the EmployeeInterface.java, EmployeesTest.java, and SortingArrayList.java.





Deliverables:

Java files - The src folder with your driver (javafx application), utility class, data elements, data manager and Junit Test (.java) files

Javadoc files - The doc folder with your javadoc for student generated files

UML Class Diagram (an image, not the proprietary format, must be a .jpg)

Deliverable format: The above deliverables will be packaged as follows. Two compressed files in the following formats:

LastNameFirstName_AssignmentX_Complete.zip [a compressed file containing the following]

UML.jpg

Assignment 7 Checklist (filled in with YES or NO or ?)

doc [a directory] please include the entire doc folder with the javadoc for student

generated files

file1.html (example)

file2.html (example)

src [a directory] contains your driver (javafx application), utility class, data

elements, data manager and Junit Test (.java) files

File1.java (example)

File2.java (example)

File_Test.java (example)

LastNameFirstName_AssignmentX_Moss.zip [a compressed file containing only the following]

contains .java file which includes the driver (javafx application), utility

class, data elements, data manager and Junit Test (.java) files – NO FOLDERS!!

File1.java (example)

File2.java (example)




Input file for test case:







When you create your own test files, make sure there are not any empty lines at the end of your data





Output file from the test case:







If your output file doesn’t display correctly, try opening it in WordPad instead of NotePad.














Program Grade Sheet

Assignment #7

Name _____________________________



DOCUMENTATION (30 pts)

CheckList for Assignment 7 is included and completed 1 pt ______
Javadoc for the following classes: 10 pts _____

Employee, Manager, Clerk, Vet, Stylist

Employees, GUI classes

Test Cases 10 pts _____

JUnit Test Class

Implement STUDENT Tests for methods of Employees

Create a Junit test for your Vet class

UML Diagram 4 pts _____

Lessons Learned 5 pts ______

In 3+ paragraphs, highlight your lessons learned and learning experience from working on this project. How did you do? What have you learned? What did you struggle with? How will you approach your next project differently?



PROGRAMMING (70 pts)

Internal class documentation (within source code) using Javadoc 6 pts _____

Description of what class does

Author’s Name, @author

Methods commented properly using Javadoc

Description

@param, @return

Compiles and Runs without runtime errors or warnings 10 pts _____



Accuracy

Public tests - JUnit tests given you 6 pts _____

Your Junit Tests – STUDENT test for Employees 4 pts _____

Private tests 10 pts _____

Program Details

Employee Class 4 pts _____

1. Create an abstract Employee class with abstract method

calculateWeeklyPay

2. Implements Comparable

3. Contains a compareTo method

4. Instance variables common to all Employee classes

5. Getters and setters for those instance variables

Inherited Classes 10 pts _____

1. Create Manager, Clerk, Vet and Stylist classes that inherit

from Employee

2. Define the calculateWeeklyPay method

3. Additional instance variables if needed

4. Includes getters and setters for instance variables

5. Uses finals for constant numbers

6. Uses super within the constructor and toString methods

Employees Class 10 pts _____

1. Implements EmployeesInterface

2. Contains an arraylist of Employee objects

3. Uses for each loops

4. Contains methods for adding, calculating total weekly pay,

generating a weekly pay report, toString, getters and setters

GUI Classes 10 pts _____

1. Gets the file names and paths from a FileChooser dialog box

2. Prints a the report to the screen

3. Prints the report to a file

4. Prints a program title on the screen and output file

5. Weekly pay formatted to two decimal places

6. Uses an Employees object

7. Program user interface

Clear to user how data is to be entered

Output is easy to understand



Total







100 pts _____

More products