By: Team T12-1 Since: Feb 2019 Licence: MIT

1. Introducing HMS+

You need a world-class property management system to run your hotel’s front desk and back office. We’ve spent years listening to what independent hoteliers need to take their business to the next level. From before check-in to post check out, we have everything you need to get your customers moving and your hotel running.

HMS+ is for hotels that want to use a single, integrated system to manage all aspects of their requirements.

This user guide provides an in-depth documentation on the HMS+ installation process, system configuration and management, monitoring and troubleshooting problems. In addition, the Section 2, “Getting Started” will provide the basic knowledge of the setup process and how you can get started.

2. Getting Started

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

  2. Download the latest hms+.jar here.

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

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

    Ui
  5. Type the command in the command box and press Enter to execute it.
    e.g. typing help and pressing Enter will open the help window.

  6. Some example commands you can try:

    • list-customers : lists all customers

    • add-customern/John Doe p/98765432 e/johnd@example.com id/G8957685R a/John street, block 123, #01-01 : adds a customer named John Doe to the HMS+ database.

    • delete-customer3 : deletes the 3rd customer shown in the current list

    • exit : exits the app

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

3. Features

Command Format

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

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

  • Items in curly brackets separated by a slash (/) are interchangeable (entering either of those items have the same effect). For example, {addcustomer/ac} are two aliases of the same command.

  • Items with after them can be used multiple times including zero times. For example, [t/TAG]… can be used as   (i.e. 0 times), t/friend, t/friend t/family etc.

  • Parameters can be in any order. For example, if the command specifies n/NAME p/PHONE_NUMBER, p/PHONE_NUMBER n/NAME is also acceptable.

  • If you enter the same prefix twice, the data in the second prefix is recorded. For example, n/Tejas Bhuwania n/Sanjay Bhuwania will take in Sanjay Bhuwania inside the database.

  • All commands using indexes refer to the displayed list. For example, if the displayed customer list has 2 customers and you try to delete customer at index 3, it is an invalid command, though there are total of five customers in the database.

The examples for each of the commands given below are independent of each other and do not follow a chronological order.

3.1. Viewing help : help,hp

Effect: Displays a help list, which lists all the commands that can be used.
Format: {help/hp}

help command
Figure 1. Example for the help command

3.2. Customer commands

3.2.1. Adding a customer : add-customer, ac

Effect: Adds a customer to the customer database.
Format: {add-customer/ac} n/ NAME p/ PHONE_NUMBER e/ EMAIL id/ IDENTIFICATION_NO [ dob/ DATE_OF_BIRTH ] [ a/ ADDRESS ] [ t/ TAG ]

  • A person needs to have the Name, Phone number, Email address and Identification number fields compulsorily.

  • Any two person cannot have the same Phone number, Email address or Identification number.

  • Identification number refers to NRIC/FIN number or Social Security Number (used in the US) and is therefoe a bit flexible.

  • Date of birth, address and tags are optional fields. A customer can exist can without any of these.

A person can have any number of tags (including 0)

Examples:

  • ac n/John Doe p/98765432 dob/28/05/1999 e/johnd@example.com id/A5525261 a/John street, block 123, #01-01 t/Student Adds the customer John Doe with the given details.

JohnDoeadd
Figure 2. Example for the above 'add-customer` command
  • ac n/Betsy Crowe e/betsy.crowe@example.com p/98321012 id/A3452521Q Adds the customer Betsy Crowe with the given details.

BetsyCroweadd
Figure 3. Example for the above add-customer command

3.2.2. Listing all customers : list-customers, lc

Effect: Displays a customer list, which lists all customers in the customer database.
Format: {list-customers/lc}

Examples:

  • lc
    Lists all the customers present in the database.

lc
Figure 4. Example for the lc command

3.2.3. Editing a customer : edit-customer, ec

Effect: Edits the fields of an existing customer in the customer database.
Format: {edit-customer/ec} INDEX [ n/ NAME ] [ p/ PHONE ] [ e/ EMAIL ] [ id/ IDENTIFICATION_NO ] [ dob/ DATE_OF_BIRTH ] [ a/ ADDRESS ] [ t/ TAG]

  • Edits the customer at the specified INDEX. The index refers to the index number shown in the displayed customer list. The index must be a positive integer.

  • At least one of the optional fields must be provided. Otherwise, nothing will be changed.

  • Existing values will be updated to the input values.

  • When editing tags, the existing tags of the customer will be removed, i.e. adding of tags is not cumulative.

You can remove all the customer’s tags by typing t/ without specifying any tags after it.

Examples:

  • lc, then ec 2 n/Roshani Venkatesh t/
    Edits the name of the 2nd customer to be Roshani Venkatesh and clears all existing tags.

ec1
Figure 5. Example before the above ec command
ec2
Figure 6. Example after the above ec command

3.2.4. Finding customers by name: find-name, fn

Effect: Displays a customer list, which consists of customers whose names contain any of the given keywords.
Format: {find-name/fn} KEYWORD [ MORE_KEYWORDS ]

  • The search is case insensitive, e.g hans will match Hans

  • The order of the keywords does not matter. e.g. Hans Bo will match Bo Hans

  • Only full words will be matched, e.g. Han will not match Hans

  • Persons matching at least one keyword will be returned (i.e. OR search). e.g. Hans Bo will return Hans Gruber and Bo Yang

Examples:

  • find-name Vidhi
    Returns any person having name Vidhi.

fn1
Figure 7. Example for the find-name Vidhi command
  • fn Tejas Vidhi Ayushi
    Returns any person having names Tejas, Vidhi and Ayushi.

fn2
Figure 8. Example for the fn Tejas Vidhi Ayushi command

3.2.5. Deleting a customer : delete-customer, dc

Effect: Deletes a customer from the customer database.
Format: {delete-customer/dc} INDEX

  • Deletes the customer at the specified index. The index refers to the index number shown in the displayed customer list. The index must be a positive integer.

  • This command will delete all the bookings and reservations associated with the customer as well.

Examples:

  • list-customers, then delete-customer 2
    Deletes the 2nd person of the customer database.

dc1a
Figure 9. Example before the delete-customer 2 command
dc1b
Figure 10. Example after the delete-customer 2 command
  • find-name Betsy Tejas, then delete-customer 2
    Deletes the 2st customer in the customer list returned by the find-name command.

dc2a
Figure 11. Example after the find-name Betsy Tejas command
dc2b
Figure 12. Example after the delete-customer 2 command

3.3. Room Type commands

3.3.1. Adding a room type : add-room-type, art

Effect: Adds a room type to hotel database. This makes it available for people to do reservations with the added room type.
Format: {add-room-type/art} n/ ROOM_TYPE cap/ NUMBER_OF_ROOM rate/ RATE

  • All fields are compulsory.

  • ROOM_TYPE is case insensitive.

Example:

  • art n/FUN ROOM cap/50 rate/300.0
    Adds a room type with name FUN ROOM, with a rate of 300.0 and capacity of 50

ast1
Figure 13. Example after the art n/FUN ROOM cap/50 rate/300.0 command

3.3.2. Deleting a room type : delete-room-type, drt

Effect: Deletes a room type from the hotel database. This makes it unavailable for people to do reservations with the deleted room type.
Format: `{delete-room-type/drt} INDEX

Deleting a room type also deletes all its related reservations.

Example:

  • drt 2
    Deletes the room type at index 2.

drt1
Figure 14. Example before the drt 2 command
drt2
Figure 15. Example after the drt 2 command

3.3.3. Clearing all room types: clear-room-type, crt

Effect: Removes all room types and room reservations from the database.
Format: {clear-room-type/crt}

Examples:

  • crt
    Clears all room types and reservations from the database.

crta
Figure 16. Example before the crt command
crtb
Figure 17. Example after the crt command

3.3.4. Editing a room type : edit-room-type, ert

Effect: Edits the room type at the specified index. This modifies the room available to people to do reservations.
Format: {edit-room-type/ert} INDEX [ n/ ROOM_TYPE ] [ cap/ NUMBER_OF_HOURS ] [ rate/ RATE ]

Example:

  • ert 2 cap/100
    Edits the room type at index 2 by changing the number of rooms to 100.

erta
Figure 18. Example before the ert 2 cap/100 command
ertb
Figure 19. Example after the ert 2 cap/100 command

3.4. Room Reservation commands

3.4.1. Reserving a room : add-reservation, ar

Effect: Adds a reservation for a room associated with certain customers.
Format: {add-reservation/ar} r/ ROOM_TYPE d/ START_DATE-END_DATE $/ PAYER_INDEX [ c/ MORE_CUSTOMER_INDICIES… ] [ com/ COMMENTS ]

  • ROOM_TYPE is the name of the room type taken from the list shown in the application

  • START_DATE and END_DATE follows the DD/MM/YYYY format.

  • COMMENTS can contain any text without slash (/).

  • All reservations can only be done from current date to upto one year from current date.

  • We allow the same person to reserve the same room for the same dates. In short, we allow duplicate reservations.

  • We allow different people to reserve the same room for the same date as someone else already has.

Examples:
Assume current date is 10 May, 2019.

  • list-customers, then ar r/SINGLE ROOM d/20/5/2019-25/5/2019 $/5
    Adds a reservation of Single Room in the name of the 5th customer from 20 May 2019 to 25 May 2019.

ar1
Figure 20. Example after the above command
  • list-customers, then ar r/SHARING ROOM d/23/5/2019-25/5/2019 $/4 c/2 c/3
    Adds a reservation of Sharing Room in the name of the 4th customer along with the 2nd and 3rd customers from 23 May 2019 to 25 May 2019.

ar2
Figure 21. Example after the above command

3.4.2. Listing all reservations : list-reservations, lr

Effect: Displays a reservation list, which lists all the reservations.
Format: {list-reservations/lr}

Examples:

  • lr
    Lists all reservations.

lr
Figure 22. Example after the lr command

3.4.3. Editing a room reservation : edit-reservation, er

Effect: Edits the fields of an existing reservation in the reservation database.
Format: {edit-reservation/er} INDEX [ r/ ROOM_TYPE ] [ d/ START_DATE-END_DATE] ] [ $/ PAYER_INDEX ] [ c/ MORE_CUSTOMER_INDICES ] [ com/ COMMENTS ]

  • Edits the reservation at the specified index. The index refers to the index number shown in the displayed reservation list. The index must be a positive integer.

  • At least one of the optional fields must be provided. Otherwise, nothing will be changed.

  • Existing values will be updated to the input values.

  • When editing comments, the existing comments of the booking will be removed, i.e adding of comments is not cumulative.

You can remove all the reservation’s comments by typing com/ without specifying any tags after it.

Examples:

  • lr, then er 1 r/DOUBLE ROOM
    Edits the room type of the 1st reservation to be DOUBLE ROOM.

era
Figure 23. Example before the er 1 r/DOUBLE ROOM command
erb
Figure 24. Example after the er 1 r/DOUBLE ROOM command
  • lr, then er 2 d/14/02/2020-14/03/2020 com/
    Edits the date of the 2nd reservation to be from 14 Feb 2020 to 14 Mar 2020 and clears all existing comments related to it.

3.4.4. Deleting reservations: delete-reservation, dr

Effect: Deletes a reservation from the reservation database.
Format: {delete-reservation/dr} INDEX

  • Deletes the reservation at the specified index. The index refers to the index number shown in the displayed booking list. The index must be a positive integer.

Examples:

  • lr, then dr 2
    Deletes the 2nd entry of the reservation database.

dr1
Figure 25. Example before the dr 2 command
dr2
Figure 26. Example after the dr 2 command

3.4.5. Clearing all reservations: clear-reservations, cr

Effect: Removes all room reservations from the database.
Format: {clear-reservations/cr}

Examples:

  • cr
    Clears all reservations from the database.

lr
Figure 27. Example before the cr command
cr
Figure 28. Example after the cr command

3.4.6. Find a reservation: find-reservation, fr

Effect: Displays a reservation list based on the filters given by the user.
Format: {find-reservation/fr} [ id/ IDENTIFICATION_NO ] [ r/ ROOM_TYPE ] [ d/ START_DATE - END_DATE ]

  • The searching is done in the whole reservation list.

  • If you just enter the command fr, it displays all the reservations in the database.

  • If you enter fr d/4/6/2019 - 7/6/2019, it displays all reservations between 4th June to 7th June. This consists of reservations which include the date 4th June but does not include reservations which include the date 7th June.

Example:

  • fr id/Q000001P
    Returns all reservations for customer with identification number, Q000001P.

fr1
Figure 29. Example for the fr id/Q000001P command
  • fr id/Q000001P r/SHARING ROOM
    Returns all sharing room reservations for customer with identification number, Q000001P.

fr2
Figure 30. Example for the fr id/Q000001P r/SHARING ROOM command

3.5. Service Type commands

3.5.1. Adding a service type : add-service-type, ast

Effect: Adds a service type to hotel database. This makes it available for people to do bookings with the added service type.
Format: {add-service-type/ast} n/ SERVICE_NAME cap/ CAPACITY_OF_SERVICE rate/ RATE :/ OPERATIONAL_HOURS

  • All fields are compulsory.

  • Operational hours are only between 0 - 23.

  • SERVICE_NAME is case insensitive.

Example:

  • `art n/SPA cap/50 rate/10.0 :/10-22 `
    Adds a service type with name SPA, with a rate of 10.0 and capacity of service equal to 50 and operates from 10am to 10pm

3.5.2. Deleting a service type : delete-service-type, dst

Effect: Deletes a service type from the hotel database. This makes it unavailable for people to do bookings with the deleted service type.
Format: `{delete-service-type/dst} INDEX

  • Deleting a service type deletes all its related bookings too.

Example:

  • dst 2
    Deletes the service type at index 2.

dst1
Figure 31. Example before the dst 2 command
dst2
Figure 32. Example after the dst 2 command

3.5.3. Clearing all service types: clear-service-type, cst

Effect: Removes all service types and service bookings from the database.
Format: {clear-service-type/cst}

Examples:

  • cst
    Clears all service types and service bookings from the database.

cst1
Figure 33. Example before the cst command
cst2
Figure 34. Example after the cst command

3.5.4. Editing a service type : edit-service-type, est

Effect: Edits the service type at the specified index. This modifies the service available to people to do bookings.
Format: {edit-service-type/est} INDEX [ n/ SERVICE_NAME ] [ cap/ CAPACITY_OF_SERVICE ] [ rate/ RATE ] [ :/ OPERATIONAL_HOURS ]

Example:

  • est 2 cap/100
    Edits the service type at index 2 by changing the capacity of the service to 100.

est1
Figure 35. Example before the est 2 command
est2
Figure 36. Example after the est 2 command

3.6. Service Booking commands

3.6.1. Booking a service: add-booking,ab

Effect: Adds a service associated with certain customers.
Format: {add-booking/ab} s/ SERVICE_NAME :/ START_TIME-END_TIME $/ PAYER_INDEX [ c/ MORE_CUSTOMER_INDICES ] [ com/ COMMENTS ]

  • SERVICE_TYPE is the name of the service taken from the list in the application

  • START_TIME and END_TIME follows the HH 24-hour format.

  • COMMENTS can contain any text without slash (/).

  • We allow the same person to book the same service for the same period of time. In short, we allow duplicate bookings.

  • We allow a different person to book the same service for the same period od time as someone else already has.

Examples:

  • lc, then add-booking s/SWIMMING POOL :/12-14 $/2 Adds a booking for service SWIMMING POOL, for the 2nd customer from the complete customer list, from 12:00 to 14:00 if the service is available.

ab1
Figure 37. Example for the above command

3.6.2. Listing all booked services: list-bookings,lb

Effect: Displays a booking list, which lists all the bookings made till now. Format: {list-bookings/lb}

Example:

  • lb
    Lists all bookings.

lb
Figure 38. Example for the lb command

3.6.3. Editing a booked service: edit-booking, eb

Effect: Edits the fields of a booking in the database.
Format: {edit-booking/eb} INDEX [ s/ SERVICE_NAME ] [ :/ START_TIME-END_TIME ] [ p/ PAYER_INDEX ] [ c/ MORE_CUSTOMER_INDICES ] [ com/ COMMENTS ]

  • Edits the booking at the specified index. The index refers to the index number shown in the displayed booking list. The index must be a positive integer.

  • At least one of the optional fields must be provided. Otherwise, nothing will be changed.

  • Existing values will be updated to the input values.

  • When editing comments, the existing comments of the booking will be removed, i.e adding of comments is not cumulative.

You can remove all the booking’s comments by typing com/ without specifying any tags after it.

Examples:

  • lb, then eb 1 s/TRANSPORT Edits the service type of the 1st booking to be GYM.

eb1
Figure 39. Example before the eb 1 s/TRANSPORT command
eb2
Figure 40. Example after the eb 1 s/TRANSPORT command
  • lb, then edit-booking 2 :/14-15 com/ Edits the timing of the 2nd booking to be 14:00 - 15:00 and clears all existing comments.

3.6.4. Deleting a booked service: delete-booking, db

Effect: Deletes a booking from the database. Format: {delete-booking/db} INDEX

  • Deletes the booking at the specified index.

  • The index refers to the index number shown in the displayed room service list. The index must be a positive integer.

Example: lb, then delete-booking 2
Deletes the 2nd booking of the booking database

db1
Figure 41. Example before the delete-booking 2 command
db2
Figure 42. Example after the delete-booking 2 command

3.6.5. Clearing all bookings: clear-bookings, cb

Effect: Removes all service bookings from the database.
Format: {clear-bookings/cb}

Example:

  • cb
    Clears all bookings from the database.

lb
Figure 43. Example before the cb command
lb
Figure 44. Example after the cb command

3.6.6. Find a specific booking: find-booking, fb

Effect: Displays a booking list based on the filters given by the user.
Format: {find-booking/fb} [ id/ IDENTIFICATION_NO ] [ s/ SERVICE_NAME ] [ :/ START_TIME-END_TIME ]

  • The searching is done in the whole booking list.

  • If you just enter the command fb, it will display the entire booking list.

Example:

  • fb id/A0176884J
    Returns all bookings for customer with identification number, A0176884J.

fb1
Figure 45. Example before the fb id/A0176884J command
  • fb id/A0176884J s/SPA
    Returns all spa bookings for customer with identification number, A0176884j.

3.7. Generate Bill commands

All generate bill commands only display the bill. They don’t make any change in the storage or the database. That is, the bill isn’t stored anywhere. So any changes in the database due to other commands while bill is being displayed doesn’t affect it. To see the new update in the bill, the command needs to be inputted again.

3.7.1. Generate bill for specific booking: generate-bill-booking, gb-b

Effect: Generates the bill for the specific booking of a customer
Format: {generate-bill-booking/gb-b} INDEX [ s/ SERVICE_NAME ] [ :/ START_TIME - END_TIME ]

Example:

  • lc, then generate-bill-booking 4
    Returns the bill for all services booked by the customer at index 4.

gbb1
Figure 46. Example for the generate-bill-booking 4 command
  • lc, then gb-b 1 s/SPA
    Returns the bill for all spa services booked for the customer at index 1.

gbb2
Figure 47. Example for the gb-b 1 s/SPA command

3.7.2. Generate bill for specific reservation: generate-bill-reservation, gb-r

Effect: Generates the bill for the specific booking of a customer
Format: {generate-bill-reservation/gb-r} INDEX [ r/ ROOM_TYPE ] [ d/ START_DATE - END_DATE ]

  • If you enter gb-r 2 d/4/6/2019 - 7/6/2019, it calculates the bill for all reservations between 4th June to 7th June for customer at index 2. This does not include reservations which include the date 7th June.

Example:

  • lc, then generate-bill-reservation 1
    Returns the bill for all rooms reserved by the customer at index 1.

gbr2
Figure 48. Example for the generate-bill-reservation 1 command
  • lc, then gb-r 3 r/SHARING ROOM
    Returns the bill for all sharing rooms reserved by the customer at index 3.

gbr1
Figure 49. Example for the gb-r 3 r/SHARING ROOM command

3.7.3. Generate customer’s bill : generate-bill-customer, gb-c

Effect: Generates the bill for the customer based on his total room reservations and service bookings.
Format: {generate-bill-customer/gb-c} INDEX

This command is a super set of all the other "generate bill" commands and can be used to obtain the complete breakup for a customer.

Example:

  • lc, then `generate-bill-customer 1
    Returns the total bill (includes all bookings and reservations) for the customer at index 1.

gbc1
Figure 50. Example for the generate-bill-customer 1 command

3.8. Show Statistics command : show-stats, ss

Effect: Displays an individual window for statistics, including a text report and the charts. Format: {show-stats/ss} [ INDICES_OF_ITEMS… ]

  • Simply show-stats or ss will display all stats items available.

  • INDICES_OF_ITEMS should be integers between one and the largest index of the stats items.

Example:

  • ss
    This displays all stats items available.

ss
Figure 51. Example for the ss command
  • ss 1 3
    This displays the 1st and the 3rd stats items.

ss 1 3
Figure 52. Example for the ss 1 3 command

3.9. Switch tab command : switch-tab, st

Effect: Switches the panel and the tab based on input by the user.
Format: {switch-tab/st} PANEL_NUMBER TAB_NUMBER

Panel Number 1: Consists of Booking, Reservation and Bill tabs.
Panel Number 2: Consists of Service Type and Room Type tabs.

Example:

  • st 1 1
    This will switch to the booking tab in the the first panel.

st 1 1
Figure 53. Example for the st 1 1 command
  • st 2 1
    This will switch to the service type tab in the second panel.

st 2 1
Figure 54. Example for the st 2 1 command

3.10. Select customer command : select, s

Effect: Selects the customer whose index is specified.
Format: {select/s} INDEX

Example:

  • s 1
    Selects the customer at index 1.

s1
Figure 55. Example for the s 11 command

3.11. Listing entered commands : history,hs

Effect: Lists all the commands that you have entered in reverse chronological order.
Format: {history/hs}

history command
Figure 56. Example for the clear-all command

Pressing the and arrows will display the previous and next input respectively in the command box.

3.12. Undoing previous command : undo,u

Effect: Restores the address book to the state before the previous undoable command was executed.
Format: {undo/u}

Undoable commands: those commands that modify HMS’s content (addc, deletecustomer, editc, etc.).

Examples:

  • delete-customer 1
    lc
    undo (adds back the deleted customer)

undo
Figure 57. Example for the `undo`command
  • lc
    undo
    The undo command fails as there are no undoable commands executed previously.

  • delete-customer 1
    clear-all
    undo (adds back all cleared entries)
    undo (adds back the previously deleted customer)

3.13. Redoing the previously undone command : redo,r

Effect: Reverses the most recent undo command.
Format: {redo/r}

Examples:

  • delete-customer 1
    undo (adds back the deleted customer)
    redo (deletes customer at index 1 again)

undo redo
Figure 58. Example for the undo and redo command
  • delete-customer 1
    redo
    The redo command fails as there are no undo commands executed previously.

  • delete-customer 1
    clear
    undo (adds back all cleared entries)
    undo (adds back the previously deleted customer)
    redo (deletes customer at index 1 again)
    redo (clears all remaining entries again)

3.14. Clearing all entries : clear-hms, clear-all

Effect: Clears all entries from the database.
Format: {clear-hms/clear-all}

clear all command
Figure 59. Example for the clear-all command

3.15. Exiting the program : exit,ex

Effect: Exits the program.
Format: {exit/ex}

exit command
Figure 60. The exit command

3.16. Automatic tab switching

The tab will be switched automatically to show the content.

3.16.1. Service Booking

All service booking related commands will switch tab to the one for Booking and the one for Service Type.

Example:

  • lb
    All bookings will be shown and the tab will also be switched

atp forbooking1
Figure 61. Example for the automatic tab switching for lb command before executing
atp forbooking2
Figure 62. Example for the automatic tab switching for lb command after executing

3.16.2. Room Reservation

All room reservation related commands will switch tab to the one for Reservation and the one for Room Type.

Example:

  • lr
    All reservations will be shown and the tab will also be switched.

atp forreservation1
Figure 63. Example for the automatic tab switching for lr command before executing
atp forreservation2
Figure 64. Example for the automatic tab switching for lr command after executing

3.16.3. Bill

All bill related commands will switch tab to the one for Bill.

Example:

  • gb-c 1
    The bill be generated and the tab will also be switched.

atp forbill1
Figure 65. Example for the automatic tab switching for gb-c 1 command before executing
atp forbill2
Figure 66. Example for the automatic tab switching for gb-c 1 command after executing

3.17. Automatic panel scrolling

3.17.1. Service Booking

The customer panel will be scrolled automatically to show the newly added item.

aps forcustomer1
Figure 67. Example for the automatic panel scrolling for ac n/Tom Brown p/12442512 e/tom@brown.com id/G112342H command before executing
aps forcustomer2
Figure 68. Example for the automatic panel scrolling for ac n/Tom Brown p/12442512 e/tom@brown.com id/G112342H command after executing

3.17.2. Service Booking

The booking panel will be scrolled automatically to show the newly added item.

aps forbooking1
Figure 69. Example for the automatic tab switching for ab s/TUTORIAL :/10-11 $/1 command before executing
aps forbooking2
Figure 70. Example for the automatic tab switching for ab s/TUTORIAL :/10-11 $/1 command after executing

3.17.3. Room Reservation

The reservation panel will be scrolled automatically to show the newly added item.

aps forreservation1
Figure 71. Example for the automatic panel scrolling for ar r/DOUBLE DOUBLE ROOM d/16/04/2019-17/04/2019 $/3 command before executing
aps forreservation2
Figure 72. Example for the automatic panel scrolling for ar r/DOUBLE DOUBLE ROOM d/16/04/2019-17/04/2019 $/3 command after executing

3.18. Filtering by clicking

3.18.1. Service Booking

Click on a service type and the booking list will be filtered by the clicked service type.

fbc forbooking1
Figure 73. Example for booking filtering before clicking
fbc forbooking2
Figure 74. Example for booking filtering after clicking

3.18.2. Room Reservation

Click on a service type and the booking list will be filtered by the clicked room type.

fbc forbooking1
Figure 75. Example for reservation filtering before clicking
fbc forbooking2
Figure 76. Example for reservation filtering after clicking

3.19. Saving the data

The HMS+ data file is saved in the hard disk automatically after any command that changes the data.
There is no need to save manually.

4. Prefix List

4.1. Customer

  • Name

    Prefix

    n/

    Validation

    Name should adhere to following constraints:

    1: It cannot be blank.
    2: It should only contain alphanumeric characters and space.
    Example

    n/ Tejas Bhuwania

  • Phone

    Prefix

    p/

    Validation

    Phone should adhere to following constraints:

    1: It should contain only digits.
    2: It should be at least 3 digits long.
    Example

    p/ 81424394

  • Email

    Prefix

    e/

    Validation

    Email should adhere to the following constraints:

    1: Email should be of the format local-part@domain.
    2: The local-part should only contain alphanumeric characters and these special characters, excluding the parentheses, (!#$%&'*+/=?`{|}~^.-).
    3: This is followed by a '@' and then a domain name. The domain name must:
        - be at least 2 characters long
        - start and end with alphanumeric characters
        - consists alphanumeric characters, a period or hyphen for characters in between
    Example

    e/ tejasbhuwania2855@gmail.com

  • Identification Number

    Prefix

    id/

    Validation

    Identification Number should adhere to following constraints:

    1: It should contain only digits and uppercase alphabetical letters.
    2: It should be at least 7 digits long and maximum 10 digits long
    Example

    id/ Z4264321

  • Date of Birth

    Prefix

    dob/

    Validation

    Date of Birth should adhere to the following constraints:

    1: Date of birth should not exceed the current date.
    2: Date of birth should be of the format: DD/MM/YYYY.
    Example

    dob/ 28/05/1999

  • Address

    Prefix

    a/

    Validation

    Address has no constraints.

    Example

    a/ 311, Ali Amar Avenue

  • Tag

    Prefix

    t/

    Validation

    Tag should adhere to following constraints:

    1: Tags should be alphanumeric only.
    Example

    t/ friend

4.2. Only Service Type

  • Operational Hours of Service

    Prefix

    :/

    Validation

    Operational Hours of Service should adhere to following constraints:

    1: It should be between 0 - 23.
    2: It should be of the format: HH - HH.
    Example

    :/ 10-22

4.3. Both Service Type and Room Type

  • Name of Service or Room Type

    Prefix

    n/

    Validation

    Name should adhere to following constraints:

    1: It cannot be blank.
    2: It should only contain alphanumeric characters and space.
    3: It can be maximum 20 in length.
    Example

    n/ DOUBLE ROOM

  • Rate of Service or Room Type

    Prefix

    rate/

    Validation

    Rate should adhere to following constraints:

    1: It should be positive.
    Example

    rate/ 700.0

  • Capacity of Service or Number of Rooms

    Prefix

    cap/

    Validation

    Capacity should adhere to following constraints:

    1: It should be positive.
    Example

    rate/ 200

4.4. Only Service Booking

  • Service Type

    Prefix

    s/

    Validation

    Service Type should adhere to following constraints:

    1: It should be a defined service type already present in the list.
    Example

    s/ GYM

  • Timing of Service

    Prefix

    :/

    Validation

    Timing of Service adheres to following constraints:

    1: The service timing should be within the operating hours.
    2: If service type is full during that time, it returns an error message.
    3: It should be of the format: HH - HH.
    Example

    :/ 08 - 10

4.5. Only Room Reservation

  • Room Type

    Prefix

    r/

    Validation

    Room Type should adhere to following constraints:

    1: It should be a defined room type already present in the list.
    Example

    r/ SINGLE ROOM

  • Date of Reservation

    Prefix

    d/

    Validation

    Date of Reservation adheres to the following constraints:

    1: If room type is full during those dates, it returns an error message.
    2: It should be of the format: DD/MM/YYYY - DD/MM/YYYY.
    3: It can only be from current date to one year after current date.
    Example

    d/ 12/10/2019 - 14/12/2019

4.6. Both Service Booking and Room Reservation

  • Payer of Reservation or Service

    Prefix

    $/

    Validation

    Payer of Reservation should adhere to following constraints:

    1: The index number should be valid.
    Example

    $/ 1

  • Customers involved in Reservation or Service

    Prefix

    c/

    Validation

    Customers involved in Reservation or Service should adhere to following constraints:

    1: The index number should be valid.
    Example

    c/ 1

  • Comment for Reservation or Service

    Prefix

    com/

    Validation

    Comment for Reservation or Service should adhere to following constraints:

    1: It shouldn't contain (/).
    Example

    com/ Please turn AC on.

5. Command Summary

  • Help : {help/hp}

  • Add Customer : {add-customer/ac} n/NAME p/PHONE_NUMBER e/EMAIL id/IDENTIFICATION_NO [a/ADDRESS] [dob/DATE_OF_BIRTH] [t/TAG]…

  • List Customers : {list-customers/lc}

  • Edit Customer : {edit-customer/ec} INDEX [n/NAME] [p/PHONE] [e/EMAIL] [id/IDENTIFICATION_NO] [a/ADDRESS] [t/TAG]…

  • Find Customer by name : {find-name/fn} KEYWORD [MORE_KEYWORDS]

  • Delete Customer : {delete-customer/dc} INDEX

  • Add Room Type : {add-room-type/art} n/ROOM_TYPE rate/RATE cap/NUMBER_OF_ROOM

  • Delete Room Type : {delete-room-type/drt} INDEX

  • Edit Room Type : {edit-room-type/ert} n/ROOM_TYPE rate/RATE cap/NUMBER_OF_ROOM

  • Reserve room : {add-reservation/ar} r/ROOM_TYPE d/START_DATE-END_DATE $/PAYER_INDEX [c/MORE_CUSTOMER_INDICIES…] [com/COMMENTS]

  • List room reservations : {list-reservations/lr}

  • Edit room reservations : {edit-reservation/er} INDEX [s/SERVICE_NAME] [:/START_TIME - END_TIME] [p/PAYER_INDEX] [c/MORE_CUSTOMER_INDICES] [com/COMMENTS]

  • Delete room reservation : {delete-reservation/dr} INDEX

  • Add Service Type : {add-service-type/ast} n/SERVICE_NAME rate/RATE cap/CAPACITY_OF_SERVICE:/OPERATIONAL_HOURS

  • Delete Service Type : {delete-service-type/dst} INDEX

  • Edit Service Type : {edit-service-type/est} n/SERVICE_NAME rate/RATE cap/CAPACITY_OF_SERVICE:/OPERATIONAL_HOURS

  • Book services of hotel : {add-booking/ab} `{add-booking/ab} s/SERVICE_NAME :/START_TIME-END_TIME $/PAYER_INDEX [c/MORE_CUSTOMER_INDICES] [com/COMMENTS]

  • List services already booked : {list-bookings/lb}

  • Edit services already booked : {edit-booking/eb} INDEX [s/SERVICE_NAME] [:/START_TIME# - END_TIME] [p/PAYER_INDEX] [c/MORE_CUSTOMER_INDICES] [com/COMMENTS]

  • Delete service already booked : {delete-booking/db} INDEX

  • Finding a specific booking : {find-booking/fb} [id/IDENTIFICATION_NO] [s/SERVICE_NAME] [:/START_TIME-END_TIME]

  • Finding a specific reservation : {find-reservation/fr} [id/IDENTIFICATION_NO] [r/ROOM_TYPE] [d/START_DATE-END_DATE]`

  • Generate bill for specific booking : {generate-bill-booking/gb-b} INDEX [s/SERVICE_NAME] [:/START_TIME-END_TIME]

  • Generate bill for specific reservation : {generate-bill-reservation/gb-r} INDEX [r/ROOM_TYPE] [d/START_DATE-END_DATE]`

  • Generate bill for customer : {generate-bill-customer/gb-c} INDEX

  • Switch tab : {switch-tab/st} PANEL_NUMBER TAB_NUMBER

  • Select customer " {select/s} INDEX

  • History : {history/hs}

  • Undo : {undo/u}

  • Redo : {redo/r}

  • Clear hotel management system database : {clear-hms/clear-all}

  • Clear room reservations : {clear-reservations/cr}

  • Clear booked services : {clear-bookings/cb}

  • Clear room types : {clear-room-type/crt}

  • Clear service types : {clear-service-type/cst}

  • Exit : {exit/ex}