View on GitHub

tp

FinanceIt: A Finance Management Application with a CLI Interface

FinanceIt is an all-in-one desktop application that handles the finance tracking needs of university students who are comfortable with a CLI interface. It includes 5 different finance tools, all of which take in typed commands from the users to execute their respective functions.

Set-up

Setting up for Testers (IMPORTANT)

Prerequisites: A computer

  1. Download the executable from our latest release .
  2. Save the executable file in your preferred folder.
  3. Run the program via the command line. The command is: java -jar financeit.jar.

Setting up in Intellij

Prerequisites: JDK 11, update Intellij to the most recent version.

  1. Download the latest release from the release page.
  2. Open Intellij (if you are not in the welcome screen, click File > Close Project to close the existing project dialog first)
  3. Set up the correct JDK version, as follows:
    1. Click Configure > Structure for New Projects and then Project Settings > Project > Project SDK
    2. If JDK 11 is listed in the drop down, select it. If it is not, click New... and select the directory where you installed JDK 11
    3. Click OK
  4. Import the project into Intellij as follows:
    1. Click Open or Import.
    2. Select the project directory, and click OK
    3. If there are any further prompts, accept the defaults.
  5. After the importing is complete, locate the src/main/java/seedu.financeit/Financeit.java file, right-click it, and choose Run Financeit.main(). If the setup is correct, you should see something like the below:

Output:

Overview

Main Features

Feature Command Description
Manual Tracker manual Manual entry of transactions. In Manual Tracker, the user manages daily lists of entries called Ledgers.
Entry Tracker entry Subsidiary subroutine of Manual Tracker. In Entry Tracker, the user manages ledger entries, which represents a unit of transaction for a particular day.
Recurring Tracker recur In recurring Tracker, the user manages special recurring entries that reoccur on a monthly basis, for instance monthly bills and salary.
Goal Tracker goal Sets income or expense goals, whereby the tracker will report to user his progress towards them whenever an entry is added.
Save Manager saver Allows save of multiple program running states and load them anytime you want. May also delete and reset running state.
Finance Tools finance FinanceTools contains tools related to financial calculations.

Main Menu

Gateway to the various other features of the application. Upon running the application, you should be greeted by the main menu. Enter the corresponsing commands shown on the table to visit the desired feature!

Feature Command
Manual Tracker manual
Entry Tracker entry
Recurring Tracker recur
Goal Tracker goal
Save Manager saver
Finance Tools financial
Quit quit

Exit from Main Menu

Exits from the program. If you have an outstanding list, it will be saved automatically as lastSave.txt in the saveStates folder. This folder will be automatically created when you first run the program.

Syntax

exit

Example:

Manual Tracker

Users can manage lists of entries, which are known as ledgers. Each list represents a single date of record.

Example If I wish to record my income and expenditures on 30 October 2020, I will use the program as follows: 1. Use Manual Tracker to create a ledger of date 20-10-03 2. Open the ledger of date 20-10-03 3. Use Entry Tracker to create entries to record the transactions for that particular date

Add ledger

Add a ledger to the record, representing a date.

Syntax

new {PARAM_TYPE} {PARAM} 
Param Type Param Param Format
/date Date of the ledger, and all the entries under that ledger. Input string of the date in YYMMDD, YY-MM-DD or YY-M-D

Example:

Remove ledger

Remove a specified ledger from the record, referenced by date or id on the list. This means that the user only need to specify one of the two param types, either /date or /id.

Syntax

delete {PARAM_TYPE} {PARAM}
Param Type Param Param Format
/date Date of the ledger, and all the entries under that ledger. Input string of the date in YYMMDD, YY-MM-DD or YY-M-D
/id Index of the ledger in the list, where the first ledger is of index 1. Input positive integer

Example:

Open ledger

Users will gain access into the entries associated with the specified ledger, referenced by date or id on the list. This means that the user only need to specify one of the two param types, either /date or /id.

Refer to Feature Entry Tracker onwards for further instructions.

Syntax

open {PARAM_TYPE} {PARAM}
Param Type Param Param Format
/date Date of the ledger, and all the entries under that ledger. Input string of the date in YYMMDD, YY-MM-DD or YY-M-D
/id Index of the ledger in the list, where the first ledger is of index 1. Input positive integer

Example:

Show ledger list

Shows the record of ledgers that has been added.

Syntax

list

Example:

Prints available commands that users can enter in for manualTracker.

Syntax

commands

Example:

Exit to Main Menu

Exit to main menu where users can choose another feature to use.

Syntax

exit

Example:

Entry Tracker

Subroutine that is subsidiary off the ManualTracker. Users can manage entries associated with the ledger they have opened. Entries are specified by the following parameters:

Example

Ledger of date 20-10-03
    Entry 1: Shopping at MBS : $1500
    Entry 2: Salary : $3000

From the above, we can infer that on the date 20-10-03, the user has one expense entry and one income entry.

Add entry

Add an entry to the ledger record.

Note:

Category Category shortcut Compatible transaction type
FOOD fd Expense
BILLS bll Expense
TRANSPORT tpt Expense
TRAVEL tvl Expense
SALARY slr Expense
ALLOWANCE alw Income
OTHERS oth Income

Syntax

new {PARAM_TYPE} {PARAM}
Param Type Param Param Format
/time Time of the entry. Input string of the date in HHMM, HHMMSS or H.
/amt Amount involved in the transaction. Input positive floating point number in 2 d.p.
Can be $XX.XX, XX, etc.
/cat Category of transaction. Input string belonging in the set: {tpt, fd, tvl, shp, bll, slr, alw}
-i or -e Type of transaction. No parameter required.
/desc Information about the transaction Description should not have ‘;’ characters.
Users can use the ‘>’ character to indent their input texts.

Example:

Note that ‘;’ is an illegal input character! Also, you can force indent to your text using ‘>’ key.

Edit entry

Edit an existing entry in the ledger record. Users only need specify the param-type to edit; there is no need to fill out all param-types as per the create entry command.

Note

Syntax

edit /id {INDEX} {PARAM_TYPE} {PARAM} ... 
Param Type Param Param Format
/id Index of the entry in the list, where the first entry is of index 1. Input positive integer
/time Time of the entry. Input string of the date in HHMM, HHMMSS or H.
/amt Amount involved in the transaction. Input positive floating point number in 2 d.p.
Can be $XX.XX, XX, etc.
/cat Category of transaction. Input string belonging in the set: {tpt, fd, tvl, shp, bll, slr, alw}
-i or -e Type of transaction. No parameter required.

Example:

Remove entry

Remove a specified entry from the record, referenced by id on the list.

Syntax

delete {PARAM_TYPE} {PARAM} 
Param Type Param Param Format
/time Time of the entry. Input string of the date in HHMM, HHMMSS or H.
/id Index of the entry in the list, where the first entry is of index 1. Input positive integer

Example:

Show entry list

Shows the record of entries that has been added.

Syntax

list

Example:

Prints available commands that users can enter in for manualTracker.

Syntax

commands

Example:

Prints expenditure category shortcuts that the user can input in entry creation/ edit commands.

Syntax

cat

Example:

Exit to Manual Tracker Main Routine

Exit to Manual tracker where users can choose another ledger.

Syntax

exit

Example:

Recurring Tracker

Users can manage expenses/income that recurs on a monthly basis e.g. monthly bill or salary.

New entry

Creates a recurring entry. Entries can either be income or expense. If income, entries can be set to “auto” which indicates that the income is automatically credited to the user’s bank account e.g. Salary which is transferred into bank account by company. Else, it will indicate a manually credited income, which requires the user to collect or take action upon e.g. collecting payment from customers (as a supplier), redeeming of reward points on a monthly basis.

Vice versa for expense entries.

Parameters

Syntax

new [-e OR -i] [-auto] /desc {DESCRIPTION} /amt {AMOUNT} /day {DAY_OF_MONTH} [/notes {NOTES}]

Example

new -e -auto /desc Netflix /amt 40 /day 10 /notes Cancel if Homemade ends
//Netflix, $40 per month, auto-payment via credit card 
on the 10th of every month. Saved with a note of “Cancel if Homemade ends"

new -i /desc Redeem air miles for vouchers /amt 50 /day 12
//Redeem air miles for vouchers, $50 per month, user has to take manual action 
by 12th of every month.

List all entries

Displays a list of all recurring entries.

Syntax

list

Delete entry

Deletes an entry at the given index. Index can be found via list and then checking the associated index in the leftmost column.

Syntax

delete /id {INDEX}

Parameters

Example

delete /id 15

Edit entry

Update one or more fields of an existing entry. Overwrites any existing value corresponding to the field(s) being modified.

Syntax

edit /id {INDEX} [field(s) to edit]

Parameters

Example

edit /id 2 /desc Updated name!! /day 23
//Overwrites existing description and day for entry 2. Other fields are untouched.

Exit tracker

Exits to main menu.

Syntax

exit

Reminders

The program will check the list of recurring entries, and automatically print reminders for entries which are within 5 days from current system date.

For instance, if the two examples in New Entry are entered and current system date is the 9th, the following reminders will be shown upon launching the program or returning to main menu.

FinanceTools

FinanceTools contains tools related to financial calculations.

Simple Interest Calculator

Calculate simple interest earned.
Simple interest is based on the principal amount of a deposit.

Parameters

Syntax:

simple /a {AMOUNT} /r {INTEREST_RATE}

Example:

simple /a 1000 /r 5

Example

Yearly Compound Interest Calculator

Calculate yearly compound interest earned with optional yearly deposit.
Compound interest is based on the principal amount and the interest that accumulates on it every period.

Parameters

Syntax:

cyearly /a {AMOUNT} /r {INTEREST_RATE} /p {YEARS} /d {YEARLY_DEPOSIT}

Example:

cyearly /a 1000 /r 3 /p 2
cyearly /a 1000 /r 3 /p 2 /d 1200

Example

Example

Monthly Compound Interest Calculator

Calculate monthly compound interest earned with optional monthly deposit.
Compound interest is based on the principal amount and the interest that accumulates on it every period.

Parameters

Syntax:

cyearly /a {AMOUNT} /r {INTEREST_RATE} /p {MONTHS} /d {MONTHLY_DEPOSIT}

Example:

cmonthly /a 1000 /r 3 /p 2
cmonthly /a 1000 /r 3 /p 2 /d 100

Example

Example

Cashback Calculator

Calculate cashback earned with optional monthly cap. The monthly cap is the maximum amount of cashback a user can earn per month.

Parameters

Syntax:

cashb /a {AMOUNT} /r {CASHBACK_RATE} /c {CASHBACK_CAP}

Example:

cashb /a 1000 /r 5 /c 1000
cashb /a 1000 /r 5 /c 10

Example

Example

Miles Credit Calculator

Calculate cashback earned.

Parameters

Syntax:

miles /a {AMOUNT} /r {MILES_RATE}

Example:

miles /a 1000 /r 5

Example

Account Storage

Store account information.

Additionally, it implements the following operations:

Parameters

Syntax:

store /n {ACCOUNT_NAME} /ir {INTEREST_RATE} /r {CASHBACK_RATE} /c {CASHBACK_CAP} /o {OTHER_NOTES}

Example:

store
store /n myaccount
store /n myaccount /ir 2
store /n myaccount /ir 2 /r 2
store /n myaccount /ir 2 /r 2 /c 100
store /n myaccount /ir 2 /r 2 /c 100 /o main account
store /rm 1

Example

Example

Example

Example

Example

Example

Example

Command and Calculation History

Store the commands inputted and results from calculations in FinanceTools.

Syntax:

history

Example:

history

Example

Exit FinanceTools

Exit FinanceTools to Main Menu.

Syntax:

exit

Example:

exit

Example

Goal Tracker

Goal Tracker that helps user to track their monthly incomes and expenses goal.

Set Goal

Set Income Goal
Setting of income goal for respective months.

syntax

income {int amount} for {month in int form}

Example:

income 5000 for 08

Example

Set Expense Goal
Setting of expense goal for respective months.

syntax

expense {int amount} for {month in int form}

Example

expense 2000 for 07

Example

Display Goal

Display income and expense goal for the individual month.

syntax

display income/expense for {month in int form}

Example

display income for 08
display expense for 07

IncomeExample ExpenseExample

Exit Display Goal

The system will auto prompt the user whether they want to exit DisplayGoal and return to Goal tracker main menu.

syntax

enter {y} to exit

Example

y

PromptExitDisplay ReturnMain

Edit Goal

Edit income and expense goal for the individual month.

syntax

edit income/expense {int amount} for {month in int form}

Example

edit income 2000 for 08
edit expense 1000 for 07

EditIncome EditExpense

Exit Goal Tracker

Exit Goal Tracker program and return to FinanceIt main UI.

syntax

exit

Example

exit

Save Manager

This utility feature helps to save multiple program states and load them at will.

picture
Main menu shows all the available commands and how to use them.
You can enter “help” anytime to return to this main menu

List Save

picture
You can enter “list” to list all backup saves.

Example

list

Add Save

picture
To create a back up save

Syntax

add /name {SAVE_NAME} >Example

add /name save12345

picture
In your data/backup directory, you can see 3 text files created.

picture
In your names.txt file, an additional entry will be appended.

Load Save

picture
To load a back up save

Syntax

load /name {SAVE_NAME} >Example

load /name save12345

Delete Save

picture
To remove a back up save

Syntax

delete /name {SAVE_NAME} >Example

delete /name save123

picture
As you can see, the 3 text files you want to delete are gone.
names.txt file is also updated.

Reset

picture
To reset all data currently used by the program enter “reset”

Example

reset

Summary of Features

Manual Tracker

No. Feature Syntax
1. Open Ledger open /date {YYMMDD} or delete /id {INDEX}
2. New Ledger new /date {YYMMDD}
3. List Ledgers list
4. Delete Ledgers delete /date {YYMMDD} or delete /id {INDEX}
5. Exit to Main Menu exit

Entry tracker

No. Feature Syntax
1. New Entry new /time {HHMM} /desc {STRING} /cat {STRING_CATEGORY} /amt {AMOUNT} [-i or -e]
2. Edit Entry edit /id {INDEX} {PARAM_TYPE} {PARAM} …
3. list Entries list
4. Delete Entry delete /id {INDEX}
5. List Transaction Categories cat
6. Exit to Manual Tracker exit

Recurring Tracker

No. Feature Syntax
1. New Entry new [-e OR -i] [-auto] /desc {DESCRIPTION} /amt {AMOUNT} /day {DAY_OF_MONTH} [/notes {NOTES}]
2. Edit Entry edit /id {INDEX} {PARAM_TYPE} {PARAM} …
3. list Entries list
4. Delete Entry delete /id {INDEX}
6. Exit to Manual Tracker exit

FinanceTools

No. Feature Syntax
1. Simple Interest Calculator simple /a {AMOUNT} /r {INTEREST_RATE}
2. Yearly Compound Interest Calculator cyearly /a {AMOUNT} /r {INTEREST_RATE} /p {YEARS} /d {YEARLY_DEPOSIT}
3. Monthly Compound Interest Calculator cmonthly /a {AMOUNT} /r {INTEREST_RATE} /p {MONTHS} /d {MONTHLY_DEPOSIT}
4. Cashback Calculator cashb /a {AMOUNT} /r {CASHBACK_RATE} /c {CASHBACK_CAP}
5. Miles Credit Calculator miles /a {AMOUNT} /r {MILES_RATE}
6. Account Storage store /n {ACCOUNT_NAME} /ir {INTEREST_RATE} /r {CASHBACK_RATE} /c {CASHBACK_CAP} /o {OTHER_NOTES}
7. List Account(s) Information info
8. Clear All Account Information clearinfo
9. Command and Calculation History history
10. Exit to Main Menu exit

Goal Tracker

No. Feature Syntax
1. Set Expense Goal expense {AMOUNT} for {MONTH IN INT VALUE}
2. Set Income Goal income {AMOUNT} for {MONTH IN INT VALUE}
3. Edit Expense Goal edit expense {AMOUNT} for {MONTH IN INT VALUE}
4. Edit Income Goal edit income {AMOUNT} for {MONTH IN INT VALUE}
5. Display Expense Goal display expense for {MONTH IN INT VALUE}
6. Display Income Goal display income for {MONTH IN INT VALUE}
7. Exit to Main Menu exit

Save Manager

No. Feature Syntax
1. List save list
2. Add save add /name {SAVE_NAME}
3. Load save load /name {SAVE_NAME}
4. Delete save delete /name {SAVE_NAME}
5. Reset program reset
6. Return to main menu exit