Jeffrey Jian's Project Portfolio Page
Project: Spend N Split
Overview
Spend N Split (SNS) is a desktop app for managing expense from contacts, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).
If you can type fast, SNS can get your contact expense management tasks done faster than traditional GUI apps.
Summary of Contributions
Given below are my contributions to the project.
Code Contribution
- RepoSense link: jeffrey-jian
New Features
Added TransactionList
- What it does: Allows the user to store transactions in a list.
- Justification: This feature allows the user to view the transactions they have made.
- Highlights: This enhancement affects transaction-related commands. It required an in-depth analysis of design alternatives, where we considered the need for a unique or non-unique list.
Added New Command editTransaction
- What it does: Allows the user to edit an existing transaction in the transaction list.
- Justification: This feature allows the user to edit the transactions they have made, in case they made a mistake or would like to update the transaction.
- Highlights: This enhancement affects transaction-related commands. It required an in-depth analysis of design alternatives, whereby we considered what fields should we allow the user to edit, and how should we allow the user to edit.
Complications included the need to make sure edited transactions stay “relevant”. We also necessitated the need for
Transaction
objects to remain unique, and thus we had to design a way to ensure that the user can edit the transaction in a way that is intuitive and easy to use.
Added New Command updatePortion
- What it does: Allows the user to update the portions of a transaction.
- Justification: This feature allows the user to update the portions of a transaction, in case they made a mistake or would like to update the portions of a transaction.
- Highlights: This enhancement affects transaction-related commands. It required an in-depth judgement about the splitting of the commands for editing transactions, and how to allow the user to update the portions of a transaction.
It also required the designing of a 3-in-1 command, which is a command that can be used to add, edit, and delete portions. Similar to
editTransaction
, we had to ensure transactions of updated portions remained “relevant”.Added Navigation Hotkeys
- What it does: Allows the user to use pre-defined hotkeys to navigate through the app.
- Justification: This feature allows the user to navigate through the app faster using the keyboard only, and is especially useful for users who are familiar with the app.
- Highlights: This enhancement requires the use of JavaFX and keyCombination to implement the hotkeys. It also required an in-depth analysis of design alternatives, whereby we considered the need for hotkeys, and what hotkeys should we implement. Added a new interface
UiPartFocusable
that extendsUiPart
, which supports thefocus()
method and allows the user to focus on a specific UiPart.
Documentation
User Guide
- Worked on the “Navigating the App” section.
- Added documentation for the features
editTransaction
andupdatePortion
. - Did cosmetic tweaks to include tips and notes for features regarding “relevant” transactions.
Developer Guide
- Added command implementation details for:
setShorthand
clear
help
exit