Starting from:

$30

Assignment 6 WEEKLY PAY REPORT



Assignment 6

CMSC203



Concepts tested by this program:

            Reading from a file

            ArrayList<

New concepts tested by this program

            Inheritance

            Interface

            Polymorphism

                        Abstract classes

                        Overriding methods

                        super()

 

WEEKLY PAY REPORT FOR THE Wacky Widgets COMPANY

The Wacky Widgets Company has four types of employees: Managers (who receive a fixed weekly salary), Design workers (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), Sales workers (who receive a $250 plus 5.7% of their gross weekly sales), and  Manufacturing (who receive a fixed amount of money per item for each of the items they produce -- each manufacturer in this company works on only one type of item). 

 

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.  The first item in the report will be the first name, the second item in the line will be the last name, the third item will always be the employee type (Manager, Design, Manufacturing, Sales).  For a Manager, the salary will be the fourth item.  If the type is Design, hourly salary is the fourth item and hours worked is the fifth item.  If the type is Sales, the fourth item will be the gross weekly sales.  If the type is Manufacturing, the fourth item will be the price per piece and the fifth item will be the number of pieces.  The last item on the line will be the worker's ID number. 

An employee can also be added through the GUI.

 

A Summary Pay Report is displayed on the screen in a JOptionPane window.  Each employee number and weekly wage is printed before the summary items.  The summary should consist of the total payroll and the number of employees in each category.  Use the FileChooser dialog box to select the input file name at run time.   Print all dollar amounts with currency formatting.   You can assume all information in the input file is correct.

 

Allow the user the read in an employee text file (provided), add an employee in the GUI, or remove an employee.

 

Specifications
Data Element - Employee

·         Create an abstract class called Employee with one abstract method called calculateWeeklyPay which returns a double.  This class will have an instance variables (one of them is an object of type Position, from Assignment 5),  a toString method, getters and setters and at least 2 constructors, one of the constructors must be the default (no-arg) constructor.

Data Element – subclasses of Employee

·         Create the following classes for the 4 types of employees: Manager, Design, Sales, and Manufacturing.  They will contain instance variables appropriate for the type of employee.  They will extend from Employee and define the calculateWeeklyPay method.  There should be getters 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 constants.

Enumerated Type – Position

·         Create an enumerated type called Position.  The valid values will be MANAGER, SALES, DESIGN, MANUFACTURING.  Add any additional methods or instance variables as required by your design.

Data Structure

·         You will be using an Arraylist within your Data Manager to hold the employee objects.

Data Manager - Company

·         Create a Company class that implements the CompanyInterface.  It will contain an arraylist which holds references to Employee objects (Manager, Design, Sales, Manufacturing all inherit from Employee).  It will have methods to addEmployee, removeEmployee, printEmployees, calculateTotalWeeklyPay, retrieve number of Design employees, Sales employees, etc., and any other methods needed for your design.  Your toString method will print out the employee number and weekly pay for all employees.  There is a generateWeeklyPayReport method that returns a string with the entire report.

GUI Driver

·         Create a GUI Driver class/classes. The preferred submission will be using JavaFX, although Swing submissions are also acceptable. The GUI will be able to read from a file, add or remove an employee, print a summary of employees, or print a pay report by employee.  Use the FileChooser dialog box to select the input file name at run time.  The number of fields in the file for one employee will change depending on the type of employee that is selected.  The fields in the file are separated by colons (:). You can assume all information in the file is correct.  The GUI will use an instance of the Company class.

·         The user will have the ability to add additional employees through the keyboard.  The labels and textfields will change depending on the type of employee that is selected to be added.

·         The user will have the ability to remove an employee.  If there are not employees yet added, use a JOptionPane to tell the user to add employees first.  If the user does not type the first and last name of the employee to be removed, use a JOptionPane to display the current employees and tell the user to type in a name.

·         Display a report of all employees, and a weekly pay report for all the employees

·         Note: your GUI need not display an icon.

External Documentation

·         Provide a UML diagram with all classes and their relationships.

·         Create Javadoc for all classes that you have created.  Upload your entire doc folder.

Testing

·         Ensure that the JUnit tests in CompanyTest.java succeed.

·         Implement the STUDENT test methods in CompanyTest.java.

·         Include CompanyTest.java with the rest of your submission.

 

 
 
Labels and TextFields change depending on type of employee:

 

 

 
 

Input file for test case:                                                          Print Company Employees:

 


    

 

 

Display summary pay report:                                              Add a Design Employee:

 

    

 

 

 

 


 

Resulting Pay Report:                                      Remove Employee if no name has been entered:

 

      

 

 

 

Remove an employee (correctly):                                                          Result:

 

    


Deliverables / Submissions:

 

Week 1: Design – a UML class diagram.

Week 2: Submit two compressed files containing the follow (see below):    

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

LastNameFirstName_Assignment6.zip (a compressed file containing the following)

o   Javadoc (a directory) a compressed file of the Javadoc doc directory

o   Source Code (a directory) contains your .java files from the src directory

§  File1.java (example)

§  File2.java (example)

§  File_Test.java (example)

LastNameFirstName_Assignment6_Moss.zip (a compressed file containing only .java files)

NO FOLDERS!!

                        File1.java (example)

                        File2.java (example)

 

 


 

Grading Rubric

CMSC 203 Project #6

 

Name _____________________________      

 
Overview:

 

There are two parts to the rubric.   First, the project is graded on whether it compiles, whether it runs without errors, and whether it satisfies the specifications. These points add up to 100.  Second, the score is decremented if various requirements are not met, e.g., no Javadoc, no UML diagram, uses constructs that are not allowed, etc.

 

 

PROGRAMMING   (100 pts)                                                                                 

     Compiles                                                                                                                            40 pts _____

     Accuracy                                                                                                   

            Passes JUnit tests (provided)                                                                                      10 pts _____

            Passes JUnit student tests                                                                                             5 pts _____

Passes private instructor tests                                                                                     10 pts _____

     Design

            Initial design was submitted                                                                                         7 pts _____

            Final design and Design Reflection                                                                            13 pts _____

     Execution: runs without errors (either run-time or logic errors)                                         15 pts _____

Possible Sub-total                                                                                                       100 pts _____

 

REQUIREMENTS  (Subtracts from Programming total)

Documentation:

     Javadoc is not submitted                                                                                                   - 4 pts _____

     Documentation within source code is missing or incorrect                                                - 4 pts _____

            Description of what class does is missing                                                                     

            Author’s Name, @author, is missing                                                   

            Methods not commented properly using Javadoc @param, @return

Programming Style:

     Incorrect use of indentation, statements, structures                                                           - 3 pts _____ 

     User interface

            Not clear to user how data is to be entered; UI does not follow requirements           - 4 pts _____ 

            Output is easy to understand                                                                                       - 4 pts _____

Design:

            Final Design does not match implementation                                                             - 5 pts _____

            Data Element Abstract Class – Employee is not used                                                  -10 pts _____

1.      Abstract method calculateWeeklyPay not used

2.      Common instance variable/variables not used

3.      Constructor and toString methods not used

Data Element Concrete Classes – do not inherit from Employee                                 -8 pts _____

1.      calculateWeeklyPay not defined for all classes

2.      Constructors, getters, setters, toString methods not used

3.      Does not use super() in definition of constructor

Data Manager – Company                                                                                            -10 pts _____

1.      Does not implement CompanyInterface

2.      Does not define interface’s abstract methods

3.      Does not use ArrayList to hold Employee objects

GUI Driver                                                                                                                   -8 pts _____

1.      Does not use a JFileChooser for user to select files

2.      Does not correctly read from given file

3.      Does not change fields and labels depending on type of employee

4.      Does not format weekly pay with currency format

 

Possible decrements:                                                                                                   -60 pts _____

 

Possible total grade:                                                                                                     100 pts _____

More products