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.
- FinanceIt: A Finance Management Application with a CLI Interface
- Set-up
- Overview
- Main Menu
- Manual Tracker
- Entry Tracker
- Recurring Tracker
- FinanceTools
- Goal Tracker
- Save Manager
- Summary of Features
Set-up
Setting up for Testers (IMPORTANT)
Prerequisites: A computer
- Download the executable from our latest release .
- Save the executable file in your preferred folder.
- 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.
- Download the latest release from the release page.
- Open Intellij (if you are not in the welcome screen, click
File
>Close Project
to close the existing project dialog first) - Set up the correct JDK version, as follows:
- Click
Configure
>Structure for New Projects
and thenProject Settings
>Project
>Project SDK
- 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 - Click
OK
- Click
- Import the project into Intellij as follows:
- Click
Open or Import
. - Select the project directory, and click
OK
- If there are any further prompts, accept the defaults.
- Click
- After the importing is complete, locate the
src/main/java/seedu.financeit/Financeit.java
file, right-click it, and chooseRun 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
.
- Automatic creation of non-existing ledgers
- If the ledger specified do not exist and if the param type supplied is “/date”, the program will create a new ledger in accordance to the date supplied.
- If the user specifies a non-existing index, then the program will not have enough information to create the new ledger instance. Automatic creation will not apply in this particular case.
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:
Print command list
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:
- Time of transaction
- Time in which the transaction ocurred
- Type of transaction
- Income or Expense
- Category of transaction. The user is only limited to the following set of categories.
- Income: {Salary, Allowance, Others}
- Expense: {Transport, Food, Travel, Shopping, Bills, Others}
- Amount
- Amount involved in the transaction.
- If the transaction type is expense, the amount is considered as a deduction to the account.
- If the transaction type is income, the amount is considered as a credit to the account.
- Amount involved in the transaction.
- Description
- User input texts to help them record the details of the transaction.
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:
- For transaction categories, we require the users to enter the shortcut equivalent to the categories listed above. Refer to the following table.
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
- While the index is compulsory to be provided, the rest of the params are not compulsory. The users will include the params that they wish to modify.
- Hence, a sample command
entry edit /id 1 /time 1600
will modify entry at index 1 to time 1600.
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:
Print command list
Prints available commands that users can enter in for manualTracker.
Syntax
commands
Example:
Print categories
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
-e
OR-i
- Indicates whether entry is income or expense (Mandatory to have 1 of 2, but not both)-auto
- Indicates that entry is an automatically deducted/credited expense/income. Only serves as a reminder, is not linked to any functionality. (Optional)/desc
- Description of entry (Mandatory)/amt
- Amount (Mandatory)/day
- Day of month which entry occurs on (Mandatory)/notes
- Additional notes and remarks (Optional)
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
/id
- Index of item to be deleted. 1-based indexing (Mandatory)
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
/id
- Index of entry to edit. 1-based indexing (Mandatory)field(s) to edit
- Follows the same format as new entry E.g. to edit amount, use/amt {NEW_AMT}
. Overwrites previous value present.
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
/a
- Amount (Mandatory)/r
- Interest Rate (Mandatory)
Syntax:
simple /a {AMOUNT} /r {INTEREST_RATE}
Example:
simple /a 1000 /r 5
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
/a
- Amount (Mandatory)/r
- Interest Rate (Mandatory)/p
- Number of Years (Mandatory)/d
- Yearly Deposit (Optional)
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
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
/a
- Amount (Mandatory)/r
- Interest Rate (Mandatory)/p
- Number of Months (Mandatory)/d
- Monthly Deposit (Optional)
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
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
/a
- Amount (Mandatory)/r
- Cashback Rate (Mandatory)/c
- Cashback Cap (Mandatory)
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
Miles Credit Calculator
Calculate cashback earned.
Parameters
/a
- Amount (Mandatory)/r
- Miles Rate (Mandatory)
Syntax:
miles /a {AMOUNT} /r {MILES_RATE}
Example:
miles /a 1000 /r 5
Account Storage
Store account information.
Additionally, it implements the following operations:
info
- list account(s) informationclearinfo
- clear all informationstore /rm <ACCOUNT_NO>
- delete corresponding account number in list
Parameters
/n
- Account Name (Optional)/ir
- Interest Rate (Optional)/r
- Cashback Rate (Optional)/c
- Cashback Cap (Optional)/o
- Other Notes (Optional)/rm
- Account Number (Optional)
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
Command and Calculation History
Store the commands inputted and results from calculations in FinanceTools.
Syntax:
history
Example:
history
Exit FinanceTools
Exit FinanceTools to Main Menu.
Syntax:
exit
Example:
exit
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
Set Expense Goal
Setting of expense goal for respective months.
syntax
expense {int amount} for {month in int form}
Example
expense 2000 for 07
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
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
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
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.
Menu
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
You can enter “list” to list all backup saves.
Example
list
Add Save
To create a back up save
Syntax
add /name {SAVE_NAME} >Example
add /name save12345
In your data/backup directory, you can see 3 text files created.
In your names.txt file, an additional entry will be appended.
Load Save
To load a back up save
Syntax
load /name {SAVE_NAME} >Example
load /name save12345
Delete Save
To remove a back up save
Syntax
delete /name {SAVE_NAME} >Example
delete /name save123
As you can see, the 3 text files you want to delete are gone.
names.txt file is also updated.
Reset
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 |