PROJECT: Restaurant Management System


Introduction

The purpose of this portfolio is to detail the contributions that I have made throughout the time that me and my team have spent on this project.

Our team was formed through our CS2113T module which we were taking together. The project that we have done is an idea that we have come up with as a team, where we aim to align our project to meet Singapore’s goal of cultivating a smart nation. Not only that, the project has aspects of sustainability that would allow future developers that would like to adopt our project, to morph existing features or add new features to meet the ever changing needs of users, be it from the food industry or other industries.

Restaurant Management System is an application that can be run on a desktop, which helps restaurants run more smoothly and efficiently by turning everyday processes and tasks that needs to be carried out by restaurants into a paperless and digital format.

The main features of the Restaurant Management System are:

  • Menu management

  • Order management

  • Employee management

  • Member management

  • Statistics

Summary of contributions

Given below are the contributions that I have made for the project.

  • Major enhancement: Added employee management features.

    • What it does: Allows restaurant managers to manage their employees through the system. The system stores details of the employees where the managers are able to view, add, edit and delete the details of the employees that are available in the system. Additionally, employees of the restaurant can clock in and out their attendance using the system, where details of their attendance would be stored in the system.

    • Justification: This feature improves the product significantly as restaurant managers using the system would be able to manage his/her employees more efficiently.

    • Highlights: Needed to ensure that the commands implemented would be easy to understand and use for a non-tech savvy audience. The commands had to properly take care of formatting errors of commands that could be entered by such users and display examples on how to properly use the command that they are trying to use that can guide them when such formatting errors are encountered.

    • Credits: https://github.com/nusCS2113-AY1819S1/addressbook-level3

  • Code contributed: Link to code contributed

    • Documentation:

      • Addition of content to User Guide: #9, #82, #118

      • Addition of content to Developer Guide: #91, #120

    • Community:

      • PRs reviewed (with non-trivial review comments): #88, #99, #100

Contributions to the User Guide

_ Given below are the additions that I have made to the User Guide for the project. They demonstrate my capability to craft documentation that is targeted at end-users._

Employees

List Employees

Show a list of all the employees on the RMS.
Format: listemp

Add Employee

Adds a new employee to the RMS.
Format: addemp NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS pos/POSITION

  • Employees with exact same names are not allowed irregardless of it being in upper or lower case.

  • Employee name cannot be longer than 30 alphanumeric characters and spaces.

  • Employee name must have at least 1 character.

  • Phone numbers must be an 8 digit number.

  • Email should be 2 alphanumeric/period strings that are no longer than 20 characters separated by '@'

Example:
addemp John Doe p/91234567 e/Example2018@rms.com a/Clementi Ave 2, Blk 543 #13-12 pos/Cashier
Adds a new employee with the specified details.

Edit Employee

Edit details of an employee in the RMS.
Format: editemp INDEX [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [pos/POSITION]

  • Edits the employee at the specified INDEX.

  • Parameters in square brackets are optional.

  • At least one of the optional parameters must be provided.

  • Existing values will be updated to the input values.

  • The index must be a positive integer 1, 2, 3 …​

  • Phone numbers must be an 8 digit number.

  • Email should be 2 alphanumeric/period strings that are no longer than 20 characters separated by '@'

Example:

  • listemp

  • editemp 1 pos/Cashier
    Edits the position of the 1st employee in the employee list to Cashier.

Delete Employee

Deletes an employee from the RMS.
Format: delemp INDEX

  • Deletes the employee at the specified INDEX.

  • The index refers to the index number shown in the displayed employee list.

  • The index must be a positive integer 1, 2, 3 …​

Example:

  • listemp

  • delemp 1
    Deletes the 1st employee in the employee list.

Clock In

Clocks in attendance for the specified employee based on the current date and time
Format: clockin NAME

  • Employee must either have been newly created or have used the "Clock Out" command, otherwise the system will request the user to use the "Clock Out" command first.

Example:
clockin John Doe
Clocks in for the employee John Doe.

Clock Out

Clocks out for the specified employee based on the current date and time.
Format: clockout NAME

  • Employee must have used the "Clock In" command, otherwise the system will request the user to use the "Clock In" command first.

Example:
clockout John Doe
Clocks out for the employee John Doe.

Contributions to the Developer Guide

Given below are sections that I have added to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project.

UI component

UiComponentClassDiagram
Figure 1. Structure of the UI Component

The UI consists of Main that implements Stoppable and extends Application. Main is also dependent on Gui which is dependant on MainWindow. Furthermore, Gui and MainWindow are both dependent on Logic.

The components use JavaFx UI framework.

The Main component,

  • Executes user commands using the Gui component which relies on the Logic component.

Use case: List employees

System: Restaurant Management System (RMS)
Use Case: List employees
Actor: Restaurant Manager
Preconditions: User has started up the system.
Guarantees:

  • List of employees will be displayed.

MSS

  1. User requests to list employees.

  2. RMS displays a list of the employees.

    Use case ends.

Use case: Add employee

Actor: Restaurant Manager
Preconditions: "List employee" use case was used before this use case.
Guarantees:

  • New employee is added to the RMS.

MSS

  1. User requests to add a new employee with the required parameters.

  2. RMS adds a new employee to the list with the parameters that were specified by the User.

    Use case ends.

Extensions

  • 1a. RMS detects that an invalid command format has been entered.

    • 1a1. RMS displays an error that says the command format is invalid.

    • 1a2. RMS displays information on the proper use of the command along with an example.

      Use case ends.

  • 1b. RMS detects that there is an attempt to add a duplicate employee.

    • 1b1. RMS displays an error that says the employee already exists in Rms.

      Use case ends.

Use case: Delete employee

Actor: Restaurant Manager
Preconditions: "List employee" use case was used before this use case.
Guarantees:

  • The specified employee will be deleted from the RMS.

MSS

  1. User requests to delete an employee by using the index as shown on the list of employees.

  2. RMS deletes an employee using the specified index.

    Use case ends.

Extensions

  • 1a. RMS detects that an invalid index has been entered.

    • 1a1. RMS displays an error that says the index provided is invalid.

      Use case ends.

Use case: Edit employee

Actor: Restaurant Manager
Preconditions: "List employee" use case was used before this use case.
Guarantees:

  • Details of an employee is edited.

MSS

  1. User requests to edit an existing employee at the specified index with the optional parameters provided.

  2. RMS edits the employee at the specified index with the optional parameters that were provided.

    Use case ends.

Extensions

  • 1a. RMS detects that an invalid command format has been entered.

    • 1a1. RMS displays an error that says the command format is invalid.

    • 1a2. RMS displays information on the proper use of the command along with an example.

      Use case ends.

  • 1b. RMS detects that an invalid index has been entered.

    • 1b1. RMS displays an error that says the index provided is invalid.

      Use case ends.

Use case: Employee clock in

Actor: Employee
Preconditions: User has started up the system.
Guarantees:

  • Details of the time that the employee clocks in will be added to the system.

MSS

  1. User requests to record his/her clock in details into the system with his/her name.

  2. RMS clocks in the user’s attendance based on the current date and time using his/her specified name.

    Use case ends.

Extensions

  • 1a. RMS detects that the user did not use the clock out command yet.

    • 1a1. RMS displays an error that says the user has to clock out before clocking in.

    • 1a2. RMS displays information on the proper use of the command along with an example.

      Use case ends.

Use case: Employee clock out

Actor: Employee
Preconditions: User has started up the system.
Guarantees:

  • Details of the time that the employee clocks out will be added to the system.

MSS

  1. User requests to record his/her clock out details into the system with his/her name.

  2. RMS clocks in the user’s attendance based on the current date and time using his/her specified name.

    Use case ends.

Extensions

  • 1a. RMS detects that the user did not use the clock in command yet.

    • 1a1. RMS displays an error that says the user has to clock in before clocking out.

    • 1a2. RMS displays information on the proper use of the command along with an example.

      Use case ends.