tp

Developer Guide


Welcome to the PlanPal Developer Guide! Thank you for taking an interest in the behind-the-scenes work of our product. We hope this document proves informative and useful for your work!

Table of Contents


Acknowledgements


Design & Implementation

Architecture

A high-level overview of the system is shown in the Architecture Diagram below.
Architecture.drawio.png

Main Components

Program Flow

The sequence diagram below describes how the components interacts with one another when the user issues a command.

For simplicity, the 3 different modes will be classified as :Mode.

Sequence Diagram for PlanPal
MainProgramFlowDiagram.drawio.png


Ui

Overview
The Ui component handles operations that displays messages for the user to read as an instruction.
Additionally, it is also used to capture user inputs in certain functions.

Methods
The Ui component has the following key methods:

Method Description
printWelcomeMessage Prints the welcome message
printAvailableModes Print all modes that are currently available in PlanPal
printByeMessage Prints the good bye message
printCreateStorage Prints the path to the storage that is created
getSetCategory Capture user input when using the category function in certain modes
printCat Prints the categories available in certain modes
printCategoryNotFound Prints when category is not found
print Custom print function that accepts multiple strings

Design Considerations
This component was created as functionalities such as printing will be used in most of the classes in the PlanPal Application.
Consolidating all the print methods that are repeated reduces repetition in code and makes it easier to update when necessary.


Parser

Overview
This component handles the logic behind the application. The parser component consists of the parent Parser Class and 3 children that inherits the Parser Class. These 3 children are used when the respective modes are in play.

Class Diagram for Parser Component

ParserClassDiagram.drawio.png

Design Considerations
The Parser class follows this structure as there are common commands between the different modes. Using inheritance prevents the repetition of code. Additionally, different parsers were created since different modes require different functionalities.


Mode: Contact Manager

The class diagram below represents the contact book system

Class Diagram for Contact Manager

ContactClassDiagram.drawio.png

General Classes

Contact Classes

Methods

Methods
addContact
deleteContact
viewContactList
editContact
findContact

Add Command

The sequence diagram below illustrates the process for resolving the “add” command.
AddContact.drawio.png

Components Breakdown:

Explanation:

Delete Command

The sequence diagram below illustrates the process for resolving the “delete” command.

DeleteContact.drawio.png

Components Breakdown:

Explanation:

List Command

The sequence diagram below illustrates the process for resolving the “list” command.
ViewContact.drawio.png

Components Breakdown:

Explanation:

Edit Command

The sequence diagram below illustrates the process for resolving the “edit” command.
EditContact.drawio.png

Components Breakdown:

Explanation:

Find Command

The sequence diagram below illustrates the process for resolving the “find” command.

FindContactDiagram.drawio.png

Components Breakdown:

Explanation:

Set Category Command

The sequence diagram below illustrates the process for resolving the “category” command. ContactManager is omitted from the diagram for simplicity.

SetContactCategory.drawio.png

Components Breakdown:

Explanation:

Search Command

The sequence diagram below illustrates the process for resolving the “search” command.

SearchByCategory.drawio.png

Explanation:

The ‘search’ command allows users to search contacts belonging to user-defined categories

Mode: Expense Manager

The class diagram below represents the Expense Manager system.

ExpenseClassDiagram.png

Expense Classes

Set Budget Command

The sequence diagram below illustrates the process from adding a budget (to a month).

SetBudgetDiagram.drawio.png

Components Breakdown:

Explanation:

Add Command

The sequence diagrams below illustrate the process for resolving the “add” command.
AddExpense.drawio.png

Components Breakdown:

Explanation:
The way the add command works for expense manager is similar to how it works for contact manager. The key differences are listed below:

List Command

The sequence diagram below illustrates the process for resolving the “list” command.

ViewExpensesDiagram.drawio.png

Components Breakdown:

Explanation:
The way the list command works for expense manager is similar to how it works for contact manager. The key difference are listed below:

Edit Command

The sequence diagram below illustrates the process for resolving the “edit” command.
EditExpense.drawio.png

Components Breakdown:

Explanation:
The way the edit command works for expense manager is similar to how it works for contact manager. The key differences are listed below:

Delete Command

The sequence diagram below illustrates the process for resolving the “delete” command.
DeleteExpense.drawio.png

Components Breakdown:

Explanation:
The way the delete command works for expense manager is similar to how it works for contact manager. The key differences are listed below:

Find Command

The sequence diagram below illustrates the process for resolving the “find” command.
FindExpensesDiagram.drawio.png

Components Breakdown:

Explanation:
The way the find command works for expense manager is similar to how it works for contact manager. The key differences are listed below:


Mode: Activity Manager

The class diagram below represents the Activity Manager system.

ActivityClassDiagram.drawio.png

Add Command

The sequence diagram below illustrates the process for resolving the “add” command.

AddActivties.drawio.png

Components Breakdown:

Explanation:
The way the add command works for activity manager is similar to how it works for contact manager, with the only difference being the names used, as well as an additional type to dictate activity type.

Delete Command

The sequence diagram below illustrates the process for resolving the “add” command.

DeleteActivties.drawio.png

Components Breakdown:

Explanation:
The way the delete command works for activity manager is similar to how it works for contact manager, with the only difference being the names used.

Edit Command

The sequence diagram below illustrates the process for resolving the “edit” command.

EditActivity.drawio.png

Components Breakdown:

Explanation:
The way the edit command works for activity manager is similar to how it works for contact manager.

List Command

The sequence diagram below illustrates the process for resolving the “list” command.

ViewActivity.drawio.png

Components Breakdown:

Explanation:
The way the list command works for activity manager is similar to how it works for contact manager.

Find Command

The sequence diagram below illustrates the process for resolving the “find” command.

FindActivity.drawio.png

Components Breakdown:

Explanation:
The way the find command works for activity manager is similar to how it works for contact manager.


Product Scope

Target user profile

Our target user profile is international students studying in NUS.

Value proposition

Studying abroad can often feel overwhelming, and building a support network is essential to feeling connected and settled. This application empowers users to organize and easily access contact information and key details about the people they meet at NUS, fostering meaningful connections and a sense of community. Additionally, the app provides tools to manage spending effectively, helping international students stay on top of their finances and focus on making the most of their time in a new country.


User Stories

Version As a … I want to … So that I can …
v1.0 NUS international student see my list of contacts easily call home or look for emergency contacts when needed
v1.0 NUS international student add a contact expand my list of useful contacts
v1.0 NUS international student delete a contact remove a contact if I no longer need it
v1.0 NUS international student edit a contact amend any mistakes when creating the contact or if the number has been changed
v1.0 NUS international student save my contacts my contacts are still there when I exit and enter the application again
v2.0 NUS international student set a monthly budget ensure that I do not spend more than a certain amount each month
v2.0 NUS international student add an expense keep track of what I am spending my money on
v2.0 NUS international student delete an expense remove inaccurate expenses
v2.0 NUS international student list expenses view all my current expenses
v2.0 NUS international student edit an expense change details regarding my past expenses
v2.0 NUS international student find an expense view the expense I am looking for quickly
v2.0 NUS international student classify expenses into types keep track of what type of items I am spending money on
v2.0 NUS international student separate expenses by month keep track of monthly expenses
v2.0 NUS international student see a breakdown of my spending according to type be more aware of my spending habits
v2.0 NUS international student handle recurring expenses keep track of monthly subscriptions conveniently
v2.0 NUS international student see my list of activities keep track of my schedule
v2.0 NUS international student add an activity expand my list of activities
v2.0 NUS international student delete an activity remove an activity when I have done it
v2.0 NUS international student edit an activity amend any mistakes when creating the activity or if the activity has been changed
v2.0 NUS international student save my activities my activities are still there when I exit and enter the application again

Non-Functional Requirements


Glossary


Instructions for manual testing

View the User Guide for the full list of UI commands and their related use case and expected outcomes.