The timeclock needs to have a Main Screen that displays 4 options:
A) Add New Employee – Displays new employee screen
B) Punch In/Out – Displays punch in/out screen
C) Report – Displays report screen
D) Exit – Exits the program
• Display an input field called “Choice” to input one of the four options.
• Inputting an incorrect option shall display a prompt indicating that the input was invalid and to try again.
Add New Employee Screen
The ‘add new employee screen’ shall:
• Add a new employee (we will not worry about modifying or deleting.), saving the data to a memory object or file.
o The program shall allow the user to enter the Employee’s First and Last Name
o The program shall validate the first and last name entered to ensure they are not blank. (We will assume that everyone has a first and last name.)
o The program shall assign a new employee ID to the employee and display it on the screen.
o The employee ID shall be generated by adding 1 to the largest employee ID already in the employee memory object (or employee.txt data file).
o The program shall allow the user to enter an unlimited number of employees. In console based applications, the system shall prompt “Do you want to enter another? (y/n). Entering ‘y’ shall clear the screen and prompt for another employee. If ‘n’, the program shall return to the main screen.
o The employee data shall be saved to a memory object called employee (or file called employee.txt)
o Optional functionality: Check the first and last name to ensure that there are only valid characters. For examples, filter out numbers, punctuation, etc. Commas can cause problems because the data is being saved to comma-delimited files and that can be a headache!
Punch in/out Screen
The ‘punch in/out screen’ shall:
• Save the punch in or punch out date and time of the employee to a memory object (or file).
o The date and time, ‘I’ for Punched In or ‘O’ for punched out along with the Employee ID shall be saved to a memory object called timeclock (or file called timeclock.txt).
o The recorded date for ‘punched in’ and ‘punched out’ shall be the method for matching corresponding records.
o The program shall test to ensure that there is a ‘Punched in’ record for the corresponding day before a ‘punched out’ record is saved. If none is found, prompt the user to enter a ‘punched in’ time.
o When the user has punched in or out, the program shall display a message indicating that the employee has punched in or out, the employee ID, date and time.
o In console based applications the screen shall display “Press any key to continue”
o In console based applications the program shall return to the main menu after a key is pressed when the “Press any key to continue” prompt is displayed.
o Optional functionality: Add the day of the week to the data saved.
Report Screen (Hint: If you are writing a console application, java.io.PrintWriter may be useful.)
The ‘report screen’ shall:
• Allow the user to display a work history report for an individual or for all employees for the two weeks prior to the report request.
o The screen shall display a prompt to enter ‘I’ for individual employee report, ‘A’ for all employees report.
o If the selected value is ‘I’, prompt the user to enter the employee’s ID number.
§ If ‘I’ is selected the display shall show the employee’s name and ID, list out each day worked in chronological order, the number of hours worked that day and a total number of hours worked in the two week period.
§ The report shall prompt the user to re-enter an employee ID of it does not exist in the employee file.
§ Optional Functionality: If the user inputs a nonexistent employee ID more than 3 times, prompt the user and then return to the main screen.
o If the selected value is ‘A’, output the information to the console for the past two weeks.
o The end of the report shall display “Press any key to continue” to return to the main menu.