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.
New Features
Implemented Shift
class and its methods
Essential methods implemented:
Shift
constructorget
andset
methodsassignEmployee
andunassignEmployee
assignEmployee
: assigns an employee to a shift and updates the vacancy of the shiftunassignEmployee
: unassigns an employee from a shift and updates the vacancy of the shift
Justification: This class is an essential class that represents a work shift using date, period (in 4 hour blocks using indexing), employees on the shift and number of vacancies remaining to be filled.
Implemented ShiftController
class and its methods
Essential methods implemented:
addShift
: creates a newShift
objectassignEmployee
: control logic that assigns anEmployee
to aShift
unassignEmployee
: control logic that unassigns anEmployee
from aShift
Justification: These methods are essential to satisfy the functional requirements of the application.
Highlights: These features are challenging in the sense that they must be bug-free and are able to handle all sorts of inputs that the user may make. They are coded with numerous exception cases and error-handling, and many applications of proper control logic flow so that the order of inputs and outputs make sense to the user.
Enhancements implemented
Implemented reusable methods in ShiftController
class
Methods Implemented:
getShiftDate
: obtain user’s date input and returns aLocalDate
objectgetShiftIndex
: obtain user’s integer input and returnsshiftIndex
getVacancy
: obtain user’s integer input and returnsvacancy
getShift
: find whether aShift
object from all the shifts have the sameshiftDate
andshiftIndex
, then returns theShift
object, else return nullgetEmployee
: find whether anEmployee
object from all the employees has the samename
, then returns theEmployee
object, else return nullemployeeAvailable
: find whether anEmployee
’sSchedule
is free on theshiftDate
and returns a boolean valueviewSelectedShift
: passes in aShift
object and prints the status of theShift
Justifications: These methods are highly reusable as almost every essential feature that address the functional requirement in this class will use at least one method that is implemented. They can even be used for future upgrades of the application to fulfil more functional requirements.
Implemented error-handling in methods
Coming up with the error-handling with exceptions has solved a lot of the bugs that were pointed out during the Practical Exam Dry Run. This also helped to test the methods written and ensure that the logic flow is correct.
Contributions to documentation
User Guide
For the user guide, I have filled in the methods for add shift
, assign employee
, unassign employee
, help
and
quit
commands, as well as their step-by-step usage and explanation of certain terms. I have also answered 2 questions
that may be commonly asked by new users or may be confusing to users who may not be familiar with our application.
Lastly, I tallied the command summary with our AppController
and added the missing commands.
Developer Guide
For the developer guide, my main contribution is the elaboration of Design and Implementation, as well as the sequence diagram of the assignEmployee section. I have also contributed by filling in the user stories section.
Team-based tasks
- Fixed all the bugs related to
Shift
andShiftController
classes - Supplying ideas for implementation and bugs
- Filling up the Q&A and Command Summary sections in UG
- Filling up the user stories section in DG