By: CS2113-AY1819S1-F09-2 Since: Aug 2018 Licence: MIT

1. Introduction

The Restaurant Management System (RMS) provides restaurants with a more efficient way to manage their operations. It has a wide variety of features which cater to different roles in a restaurant. In line with Singapore’s "Smart Nation" movement, the RMS aims to digitise the restaurant business and make day-to-day operations smoother and simpler. Jump to [Setting up] to get started.

2. Quick Start

  1. Ensure you have Java version 9 or later installed in your Computer.

  2. Download the latest Rms.jar here

  3. Copy the file to the folder you want to use as the home folder for your Restaurant Management System.

  4. Double-click the file to start the application. The GUI should appear in a few seconds.

    Ui
  5. Type the command in the command box and press Enter to execute it.

  6. Some example commands you can try:

    • listmenu : lists all menu items

    • addmemberJohn Doe : adds a member named John Doe to the Restaurant Management System.

    • listorder : lists all orders in the order list.

    • deleteorder3 : deletes the 3rd order shown in the last shown order list

    • exit : exits the app

  7. Refer to Section 4, “Features” for details of each command.

3. Important Terminology

  1. A customer is anyone who wants to place an order.

  2. An employee is a person that works at the restaurant.

  3. A member in the RMS is a registered customer who enjoys more benefits than an unregistered customer.

  4. A dish is a food item on the menu.

4. Features

Command Format

  • Words in UPPER_CASE are the parameters to be supplied by the user e.g. in add n/NAME, NAME is a parameter which can be used as add n/John Doe.

  • Items in square brackets are optional e.g n/NAME [t/TAG] can be used as n/John Doe t/friend or as n/John Doe.

4.1.1. Show Main Menu

Shows a list of menu categories available.

Format: showmainmenu

4.1.2. List Menu

Shows a list of all the menu items that exists in the restaurant’s menu database.

Each menu item include details of: menu item, price, type and any relevant tags.

Format: listmenu

  • List the current menu items in the menu

4.1.3. List Menu According to Category

Shows a list of the menu items of a particular category type. The category types are shown in the Main Menu (e.g main, sides).

Each menu item include details of: menu item, price, type and any relevant tags.

Format: listmenutype TYPE

  • List the current menu items of a particular category in the menu

Example:
listmenutype main
System shows all the main dishes in the menu.

4.1.4. Add Menu

Add a new item to the menu.
Format: addmenu NAME p/PRICE type/TYPE [t/TAG]…​

  • Adds the new menu item into the menu list

  • Names must be unique, cannot be longer than 30 alphanumeric characters and spaces. It must contain minimum one character.

  • Note that duplicate menu name is still detected even if the user tries to key in the same name with extra spaces at the end of the menu name (eg. 'Cheese Burger' and 'Cheese Burger ')

  • Price must follow the formal $A.BC or $A where A is a number of 1-3 digits and B and C are 1 digit each.

  • Type should only be of the following categories: main, sides, beverage, dessert, others, set meal

  • A new food item can have multiple tags (including 0)

Example:
addmenu Cheese Fries p/$3.50 type/sides t/newItem t/seasonalSpecial
System adds Cheese Fries to the existing menu.

4.1.5. Delete Menu

Delete an item on the menu
Format: delmenu INDEX
Preconditions: The user must perform 'List Menu' , 'List Menu According to Category' or 'Find Menu' use cases first before performing 'Delete Menu'

  • Deletes the menu item in that particular index

  • INDEX should be less than or equal to the total number of food items stated at the end of the list

Example:
listmenutype main
delmenu 1
System deletes menu item in index 1 from the displayed menu of main dishes.
listmenutype main
delmenu 1
System deletes the menu item in index 1 from the displayed menu of main dishes.
findmenu Cheese Fries
delmenu 3
System deletes Cheese Fries in index 3 from the displayed menu of items found with Cheese Fries keyword.

4.1.6. Find Menu

Finds the menu item(s) related to the keywords typed in by the user.
Format: findmenu KEYWORD [MORE KEYWORDS]

  • A list of menu items with names related to the keyword(s) will be displayed.

  • The search is case insensitive eg. cheese will match Cheese.

  • Order of keywords do not matter.

  • Only full words will be matched. eg burg will not match Burger

  • Menu items matching atleast one key word will be returned. eg '`cheese` will return Cheese Fries, Cheese Burger.

Example:
findmenu Burger Coke Fries
Returns Double Cheese burger, Veggie Burger, Coke, coke zero, Fries, Curly Fries

Displays the best selling items of each category, if they are sold, as the recommended items of the restaurant.
Format: recommendations

  • For a particular category, if no menu items are sold, items from that category will not be displayed under recommendations.

  • Atleast one item from each category must be sold in order for recommendations to reflect items from that category.

Example:
recommendations
Returns Main: Double Cheese Burger, Sides: French Fries, Beverage: Sprite

4.2. Members

4.2.1. Add Member

Add a new member to the RMS
Format: addmember NAME e/EMAIL

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

  • Member name must have at least 1 character.

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

Example:
addmember kang ming e/kangming@rms.com
Returns: New member added: kang ming | Email: kangming@rms.com | Available Points: 0 | Total Points: 0 | Tier: Bronze | Date: Mon Oct 20 22:12:07 SRET 2018

4.2.2. List Member

Shows a list of all the members in the RMS. Displays the NAME, POINTS, DATE JOINED, MEMBERSHIP TIER of each member.
Format: listmember

Example:
listmember

4.2.3. Delete Member

Delete membership details of a member in the RMS
Format: delmember INDEX

  • Deletes the member at the specified INDEX.

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

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

Example:
listmember
delmember 1

Returns: Deleted member: kang ming | Email: kangming@rms.com | Available Points: 0 | Total Points: 0 | Tier: Bronze | Date: Mon Oct 20 22:19:32 SRET 2018

4.3. Employees

4.3.1. List Employees

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

4.3.2. 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.

4.3.3. 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.

4.3.4. 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.

4.3.5. 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.

4.3.6. 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.

4.4. Order

4.4.1. Add Order

AddOrderInstruction

To add a new order to the order list, a draft must be completed before adding it to the order list.

To do so, dishes must be added into the draft before it can be added into the order list after the draft is confirmed.

If the customer is a registered member, the customer’s information can be found in the member list and can be added into the order draft to use and accumulate member points once the order is confirmed.

  • Display Draft And Instruction For Adding New Order

    Displays the current draft, steps to add an order and the list of order draft commands that can be used

    Format: addorder

  • Edit A Dish Item Of The Draft

    By picking dishes from the last shown menu and state the quantity to be added, te dish items can be added, deleted or edited in the draft order.

    • If the quantity is set to 0, then the dish will be removed from the draft.

    • If the quantity is a positive integer, then the quantity of the dish will be set to quantity.

    Format: draftdish INDEX q/QUANTITY [INDEX q/QUANTITY]…​

    • There must be no duplicated index in the input command.

    • The indexes refer to the index numbers shown in the last shown menu list.

    • The indexes must be non-negative integers.

    • The quantities must be non-negative integers of 1-3 digits.

  • Select A Member As The Customer Of The Draft
    This step is only necessary if the customer is a member.

    Select a member from the last shown member list to be the customer of the draft order.

    Format: draftcustomer INDEX

    • The index refers to the index number shown in the last shown member list.

  • Redeems member points in the draft order
    This step can only be done after the following conditions have been met:

    1. A member has been added to the draft order.

    2. At least one dish has been added to the draft order.

      Assign member points to be redeemed as discount for the draft order.

      Format: draftpoints POINTS

      • The points redeemed must be a non-negative integer.

      • The limit to the redeemable points is set as the smaller value between the amount of points the customer currently has and the maximum amount of points can be deduced from the order such that the final price is not less than zero.

      • If the assigned redeemed points is more than the limit, then it will be set back to the limit.

  • Clear Draft

    Clear all details of the draft order.

    Format: cleardraft

  • ConfirmDraft

    Confirm the draft and add it to the order list.

    Once it is confirmed, the ordered dish items in the newly added order can no longer be changed.

    Format: confirmdraft

4.4.2. Delete Order

Delete an order.

The deleted order is specified by the index of that order on the last displayed order list.

Format: deleteorder INDEX

  • The index refers to the index number shown in the last shown order list.

4.4.3. Clear Order

Clear the entire order list.

Format: clearorder

4.4.4. List Orders

Shows a list of all the current orders.

Each order include details of: customer, ordered time, total price and the list of dish items and quantities ordered

Format: listorder.

4.5. Statistics

4.5.1. View Employee Statistics

Displays the employee statistics overview
Overview consists of the number of employees in the system, current on duty employees and all the employees' recent 3 activity
Format: statsemp

Examples:
statsemp

4.5.2. View Member Statistics

Displays the member statistics overview
Overview consists of the number of new member signups on the current day, month and year. It also includes the number of members in each member tier.
Format: statsmember

Examples:
statsmember

4.5.3. View Menu Statistics

Displays the menu statistics overview without any parameters or with optional parameters f/ or t/ to set date range for calculation of statistics
Overview consists of the number of sales for all the menu items in the system. Including menu items that was deleted but still exists in an order.
Bestsellers and least popular items are also displayed. Format: statsmenu [f/MMDDYYY] [t/MMDDYYY]

Examples:

  • statsmenu

  • statsmenu f/01122017 t/31122017

  • statsmenu f/01012017

  • statsmenu f/31122018

4.5.4. View Order Statistics

Displays the order statistics overview
Overview consists of the number of sales as well as the revenue for the current day, month and year
Past 12 monthly revenue are also displayed here. Format: statsorder

Examples:
statsorder

4.6. Saving the data

Data from the Restaurant Management System are saved in the hard disk automatically after any command that changes the data.
There is no need to save manually.

5. FAQ

Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous Restaurant Management System folder.

6. Command Summary

Show Main Menu Page : showmainmenu

Find Menu : findmenu KEYWORD [MORE KEYWORDS]

Add Item : addmenu NAME p/PRICE type/TYPE [t/TAG]

Delete Item : delmenu INDEX

List Menu : listmenu

List Menu According to Category : listmenubytype TYPE

See Recommended Menu Items : recommendations

6.2. Employees

List Emplyees : listemp

Add Employee : addemp NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS pos/POSITION

Edit Employee : editemp INDEX [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [pos/POSITION]

Delete Employee : delemp INDEX

Clock In : clockin NAME

Clock Out : clockout NAME

6.3. Members

Add Member : addmember NAME e/EMAIL

List Member : listmember

Delete Member : delmember INDEX

6.4. Order

  • Add Order:

    • Display Add Order Commands: addorder

    • Edit Draft Dishes: draftdish INDEX q/QUANTITY
      e.g. draftdish 4 q/1

    • Select Draft Customer: draftcustomer INDEX
      e.g. draftcustomer 2

    • Redeem Member Points: draftpoints POINTS
      e.g. draftpoints 100

    • Clear The Draft: cleardraft

    • Confirm Draft: confirmdraft

  • Delete Order : deleteorder INDEX
    e.g. deleteorder 3

  • Clear Order List : clearorder

  • List All Orders : listorder

6.5. Statistics

View Employee Statistics : statsemp

View Member Statistics : statsmember

View Menu Statistics : statsmenu [f/ddmmyyyy] [t/ddmmyyyy]

View Order Statistics : statsorder