Li Haoyang - Project Portfolio Page
Overview
FastScheduler (FS) is a desktop app for restaurant managers to schedule employees for work, optimised for use via
a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast
and prefer typing, FS can help you manage the schedules of employees and shifts faster than traditional GUI apps.
Summary of Contributions
- Code contributed: RepoSense link
 
Given below are details of my contributions to the project.
Contributions to coding
Implemented most features under the employee package as shown below:
Employeeclass- Defined all variables in the class(
name,schedules, all other constants). - Created the class constructor(
Employee) and all get/set methods (getName,setName,getSchedules). - Created 
addScheduleto add a new schedule for an employee to the system (handles internal logic). - Created 
dropScheduleto drop an existing schedule from an employee (handles internal logic). - Created 
isScheduleValidto ensure the schedule entered is in a valid format. - Created 
isIntegerfor variable checking within the class. 
- Defined all variables in the class(
 
Justification: This Employee Class is essential because our entire APP is about managing an employee’s 
schedules and shifts. Hence, each employee must be defined clearly through his/her own attributes.
Also, the addSchedule, dropSchedule, isScheduleValid methods are needed to define the internal behaviours
of the class, such as what is the format of a valid schedule.
EmployeeControllerclass- Created 
addEmployeeto add a new employee to the system. - Created 
addScheduleto add a new schedule for an employee to the system (handles external logic). - Created 
dropScheduleto drop an existing schedule from an employee (handles external logic). - Created 
getEmployeeObjectByNameto return anEmployeebased on a name. - Created 
isEmployeeDuplicateandisScheduleDuplicateto prevent a duplicated employee or schedule from being added to the system. 
- Created 
 
Justification: EmployeeController aims to make our code more OOP by handling the logic between an user and his interaction with an 
employee
Implemented the Ui class and all its methods
printWelcomeMessageprintExitMessageprintHelpMessageprintInvalidScheduleFeedbackMessage
Justification: Ui aims to make our code more OOP by taking the responsibility to hold important messages to be displayed to an user.
Built the overall structure of the AppController class, and contributed to its final implementation.
Below are the structures/ideas that I came up with for AppController:
- The class holds the common variables to be used by all programmers (eg. 
employees,shifts) - The class interacts with the user and passes control to other parts of the program by using ‘while’ and ‘switch’ statements.
 
Justification: This feature aims to make the code more OOP by serving as a platform that interacts with an user, identifies his commands and passes responsibility to other relevant parts of the program
Contributions to documentation
User Guide
Features I wrote in the final version:
- Add an employee: add employee
 - Add new employee’s schedules: add schedule
 - Drop existing employee’s schedules: drop schedule
 
Other joint contributions to our google doc (outdated version):
- user stories
 - command summary
 
Contributions to DG
- Under Implementation, I wrote the section titled ‘add schedule to employee feature’, which includes:
    
- A brief overview of the Employee Class, along with a simple class diagram titled ‘employee class diagram v2’
 - A detail explanation of our addSchedule feature, along with a detail sequence diagram titled ‘add schedule sequence diagram v2’
 
 
Contributions to team-based tasks
- Contributed to bug finding and fixing
 - Creating and releasing of all jar files (Resolved the frequently appearing bug on “no main manifest attribute” when launching the jar file with the help of external resources)
 - Setting up github team and repo
 - Clarifying tp doubts on behalf of the group