Portfolio Overview
This project portfolio page documents my contribution to the team project TravelPal. The page includes an overview of the project, summary of the features I have implemented, and contributions to the User Guide and Developer Guide.
About our Project
The application TravelPal developed by our team is an all-in-one Trip Planner which provides casual travellers and leisure travellers a hassle free way to manage their trips before, during and after the trip! It comes with a highly customisable, intuitive and integrated trip management system. We aim to ease pre-trip planning process with features such as trip itinerary, trip inventory, bookings manager, and expense manager, and offer a platform for users to record their memorable trip highlights with our diary feature.
TravelPal has the feature of Command Line Interface (CLI) for keyboard input as it is a PC-based application. Furthermore, each CLI feature has a Graphical User Interface (GUI) alternative for richer user friendly experience.
In GUI, display includes panes, menus and message boxes. We believe such implementation makes our application more user-friendly and easy to use.
In our project, my role was to implement the Booking Manager feature. The following sections will elaborate on the enhancements related to Booking.
Summary of contributions
This section encompasses an overview of my contribution to the TravelPal application, including the summary of my code implementation and how they add value to the application in terms of functionality and user experience. |
Major enhancements: Implementation of the Booking Manager feature
-
What it does: The Booking Manager allows users to manage all sorts of bookings, by mentioning the type in the name description. User can choose to manually add a new booking. All bookings will be displayed in a sequential order
-
Justification: Keeping track of a booking can be a hassle as some are pre-planned while some are scheduled on-the-go. Booking Manager intends to mitigate user’s troubles by providing a convenient way to keep a track of all the bookings. User can also note the expenditure associated with the booking apart from storing the contact details (mobile number, address, description, etc.)
-
Highlights: Managing the bookings is tricky in the sense that seemingly same looking booking might result in confusion, so the
create
feature will warn the user if same booking is being created, apart from convenient listing of all the bookings in a bug-free and efficient way. -
Credits: I used the concepts and logic from the existing code of address book provided to us to enhance the features.
Other Contributions
-
Code contributed: [RepoSense Code][Github Pull Requests]
-
Idea generation:
-
Contributed main idea of TravelPal and its various sub-features (itinerary, bookings, contacts, etc.), along with their working diagrams during project discussion, partly inspired from my tribulations as well. (see travelpal idea generation google docs)
-
Kept a timeline of the features added to coordinate in a better fashion among the team members.
-
-
Enhancements to existing features:
-
Wrote test cases for Booking Manager and related classes.
-
Helped in testing of all the features, in general.
-
Updated UI, and logic of the code to make it user friendly as well as efficient.
-
-
Project management:
-
Reviewed and approved several PRs of my team members
-
Updated AboutUs page #18
-
Contributions to the User Guide
This section displays the excerpt of User Guide related to the usage of Booking Manager feature, created by me, and later revised along the application development. |
Booking
Introduction
Welcome to the Booking feature of TravelPal!
The Booking feature is one of the main features that allows you to add all the bookings pertaining to your trip in one single place with a user defined name, contact and the expense of the booking. You can easily add, edit and cancel bookings during creation of any booking.
Furthermore, for almost every command, there is a GUI alternative using various buttons to execute the same operations.
The following section of the User Guide explains how to use the Booking feature of TravelPal.
Booking User Interface Overview
This section of the user guide explains how to view and manage your bookings using Booking Manager.
How to reach the Landing Page of Booking Manager
When inside a trip, the command bookings
will bring you to the landing page (this command works from all pages of the
trip).
Shown below is the landing page of the Booking Manager.
Bookings serve to assimilate all the activities which you have planned throughout your trip in a single convenient place Bookings are connected to your overall expenses and budget of the travel, activities or accommodation.
Commands
On the Booking Manager page, the following commands are available:
-
create
: creates a new booking; can also be accessed by clicking the buttonAdd Booking
for a more user-friendly experience. -
edit <index of the booking>
: edits an indexed booking, if the index is valid; this command brings up the booking setup page. -
delete <index of the booking>
: deletes an indexed booking, if the index is valid.
valid: valid index implies that the index is lesser than or equal to the number of items so far created, i.e., you can edit or delete only an existing Booking. invalid index will not execute and show an error message
Booking Setup
Booking setup creates/edits properties of a specified booking as per the choice of the user.
To access the Booking Setup page, use create
or edit <index of the booking>
command on Booking Manager
page.
It is necessary for a booking to have a:
-
Name: can be of any length; it can also include short description
-
Contact: a varied input field which can store alphanumeric characters to satisfy contact number, email address or referencing words.
-
Budget: all the bookings have a pre-assigned expenditure involved with it; it should be a cost estimated upto two decimal places (automatically stored in SGD)
The following commands are available on Booking Setup page.
-
edit <prefix>/<value> …
: edit the respective field of the booking to be created/edited. -
done
: confirm and save the changes, and go back to the booking manager page. -
cancel
: go back to the booking manager page without saving the changes.
The prefix
in edit <prefix>/<value> …
refers to editing each fields as follows:
-
n/
Name of the booking -
c/
Contact details of the booking -
b/
The amount of expenditure, in Singaporean dollars.
Example Usage for create
command:
To add a booking SampleBooking with contact details 98989898, DisneyLand with an expenditure of $80 SGD, use the following command:
edit n/SampleBooking c/98989898, DisneyLand b/80
create
a BookingIf two bookings have the same information of Name, Contact and Budget, second will not be saved but the user can still make changes. The user can use sequential naming (Booking1, Booking2, ….) to differentiate between the two bookings. |
Example Usage for edit
command:
To edit the previous created booking to with same name and contact details but with an expenditure of $100 SGD, use the following command:
edit b/100
edit
of the name of a Booking
You can choose to edit any number of fields any number of times. You can also choose to cancel the editing or
creation of any booking at any time by typing cancel command or clicking the Cancel button.
|
After adding your Bookings, beforehand or on-the-go, Booking Manager looks like this:
Contributions to the Developer Guide
This section displays the excerpt of Developer Guide showing the logic, model and user interface implementation of the Booking manager, created by me, and later revised along the application development. |
[Booking] Booking Manager
The Booking Manager is one of the main features of TravelPal. It maintains a list of Booking
stored in a
BookingList
.
Booking Manager displays all the Bookings in one place with Name, Contact details and expenditure in the form of Budget.
Aspect : Model
Booking
Booking
is a class storing Booking model.
It has three compulsory fields, the name of booking, the contact details of booking and the expenditure of booking (in budget). These fields are used to store information related to a booking.
They are implemented as instance of class Name
, Contact
and Budget
respectively.
BookingList
BookingList
is a class that stores the Booking
models.
It supports wrapper methods around the underlying ObservableList
to facilitate the use in the logic components.
Aspect : UI
The UI of Booking Manager mainly consists of two Page
: BookingsPage
and EditBookingsPage
.
BookingsPage
is the component in charge of displaying all the information of the booking: name, contact details and
associated expenditure.
It has a list of BookingCard
, a component that contains individual booking details. BookingsPage
extends
PageWithSidebar
as it contains navigation bar that helps user to
navigate between different main features.
EditBookingsPage
is the main page for creating and editing of booking. Both BookingsPage
and EditBookingsPage
have access to Model
and Logic
of the application, for handling of stored data and parsing commands.
Aspect : Logic
Create a booking
The creation of a new Booking
is done by calling EnterCreateBookingCommand
, which brings user to a
Booking Setup Page.
Edit a booking
Editing of booking can be accessed from BookingsPage
. The execution of command is handled by BookingsManagerParser
and
the command accesses the model through Model#getPageStatus()
method.
The details of execution is similar to Edit trip/day/event feature (see [Edit-Trip])
All the fields, namely name, contact and budget, of a Booking
can be edited with an edit
command. When done
command is executed the Booking
in BookingList
will be updated.
The following sequence diagram shows the sequence of method call when DoneEditCommand#execute(model)
is called in
LogicManager
.
UI Diagram shows the calling of various other classes (via FXML
pages) which are linked to creation of Booking.
Edit a Booking
edit
functionality of BookingWhen error is thrown, the user is expected to use a valid index. |
Delete a Booking
delete
functionality of BookingDeletion of booking is similar to the Delete Trip/Day/Event feature (see [Delete-Trip]).
The DeleteBookingCommand
in logic checks for index of deletion.
Below is the sequence diagram of deleting an expense:
Achievements and Learnings
Development of TravelPal is one of my first brown-field software engineering projects. During the process, I have gained many insights, project work ethics and presentational skills apart from useful programming knowledge. I also learned how to work on a large code base while working on my feature.
Knowledge was gained not by the mere end-product but during the collaborated team journey and educational experience.