PROJECT: Morpheus


Overview

Morpheus is a hotel management system desktop application designed to manage the activities in a hotel. The user interacts with it in a CLI and it has a GUI created with JavaFx. It is written in Java.

Summary of contributions

  • Major enhancement: implementing structure of Hotel

    • What it does: Implementing structure of Hotel, basic objects such as Booking, Charges, Tier, Service.

    • Justification: This enhancement sets foundation for developing Morpheus.

  • Major enhancement: implementing hotel initialization

    • What it does: Allows user to initialize hotel with data such as rooms, costs, available services.

  • Major enhancement: implementing deleting commands

    • What it does: Allows user to delete guests, rooms, bookings, services from hote.

  • Major enhancement: implementing finding commands

    • What it does: Allows user to find guests, bookings, rooms, empty rooms, services from hotel.

  • Minor enhancement: Implementing how UI shows response after each command:

    • What it does: Shows response by switching tabs, and filtering details to show that the action has been done.

  • Code contributed: [Functional code]

  • Other contributions:

    • Project management:

      • Managed releases v1.2 - v1.4 (3 releases) on GitHub

    • Enhancements to existing features:

      • Wrote additional tests for existing features.

    • Documentation:

      • Did cosmetic tweaks to existing contents of the User Guide: #285

    • Community:

    • Tools:

      • Integrated a new Github plugin (Travis CI) to the team repo

Contributions to the User Guide

Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users.

Overview Of Features

Features can be divided into 5 groups of commands

  • Initialization commands

    • addguest command adds a guest.

    • addroom command adds a room into hotel.

    • addservice command adds an available service to the hotel.

    • setrcost command sets the cost of a room.

  • Service commands

    • reserve command makes a reservation.

    • checkin and checkout command receives and returns customers.

    • chargeservice command charges customers for getting services.

    • deletecservice command removes a charged service from the bill of customers.

    • fetchbill command fetches the bill of a guest.

  • Deletion commands

    • delete command deletes a guest from the hotel database.

    • deleteroom command deletes a room from the hotel database.

    • deleteservice and deletebooking commands removes available services and bookings from the hotel database.

  • Find commands

    • findroom command finds room with specific person, or room ids.

    • findguest command finds a guest in the hotel.

    • findemptyroom command finds list of empty rooms in the hotel.

    • findbooking command finds booking ids from names and room ids.

  • General purpose commands

    • help command shows instructions.

    • exit command quits the app.

    • clear command clears all entries.

    • switch command navigate between tabs.

Deleting a room by room number : deleteroom

If you want to delete a room from the hotel, use the command deleteroom.

Format: deleteroom rn/ROOM_NUMBER

Examples:

  • deleteroom rn/101

Result: Deletes room 101 into the database.

Deleting a room by the position it appears in current room tab: deleteroom

If you want to delete a room from the hotel by the index it appears in current room tab.

Format: deleteroom INDEX

Examples:

  • deleteroom 1

Result: Deletes the first room in the list.

Deleting an available service: deleteservice

If you want to delete an available service from the hotel database using the service’s ID, use the command deleteservice

Format: deleteservice si/SERVICE_ID

Examples:

  • deleteservice si/WC

Result: Deletes a service with service ID WC.

Deletting an available service by the position it appears in current service tab: deleteservice

Format: deleteservice INDEX

Examples:

  • deleteservice 1

Result: Deletes the first room the the list.

Contributions to the Developer Guide

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

Appendix B: Non Functional Requirements

  1. Should work on any mainstream OS as long as it has Java 11 or above installed.

  2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.

  3. Should be able to hold up to 1000 rooms without a noticeable sluggishness in performance for typical usage.

  4. Should be able to handle up to 10000 requests per day.

  5. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.

  6. Should not consume more than 200 megabytes of storage (should optimize encoded data).

  7. Should be able to restart without loss of data.

  8. Should be able to store back-ups data in case of breaking down.

Appendix A: FindRoomCommand

Implementation

Currently this command only support searching of room full name or/and id number, or room number.

The following steps show how the search guest feature works:

  1. The find room command from the user is parsed into a list of pattern contained in the find room command.

  2. The find room command then executes and filters the guest list based on the patterns.

The diagram below show how the findroom command store its pattern.

FindRoomCommand
Figure 1. Class diagram for FindGuestCommand

The diagram below shows the execution of the command:

FindBookingCommand

Implementation

Currently this command only support searching of booking full name or/and id number, or room number.

The following steps show how the search guest feature works:

  1. The find booking command from the user is parsed into a list of pattern contained in the find booking command.

  2. The find booking command then executes and filters the guest list based on the patterns.

The diagram below show how the findbooking command store its pattern.

FindBookingCommand
Figure 2. Class diagram for FindGuestCommand

FindEmptyRoomCommand

Implementation

This command support finding empty rooms

The following steps show how the search feature works:

  1. The find empty room command from the user is parsed into a list of pattern contained in the find booking command.

  2. The find empty room command then executes and filters the guest list based on the patterns.