-
Notifications
You must be signed in to change notification settings - Fork 248
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[CS2113-T15-3] Moneymind #42
base: master
Are you sure you want to change the base?
Changes from 169 commits
51baf31
6abf3dd
c5c4994
1cdd0c7
c333801
a62c290
696ecfa
2921a4c
594bb2d
f6e6431
16c9ed4
22d501e
e6f2a78
675dffa
b9807fa
8e5a110
b37565d
0fa5c2a
79e0765
b2300a3
ef00a53
5cb8ed2
1f1246b
90cbf14
d7de1d8
f8ba774
7fc47ca
d91084b
9611736
865217e
3735d9a
6df3c34
c6eb85f
bfceefb
284b95a
dcf3fdf
16172c9
9108f1f
f75f9bb
1c37bfc
5f7b7be
b4ac16c
ee81016
079d5cb
dee2f1d
7c449b3
a0885a2
cdb7d69
e69696a
9fe2e66
d8c626b
c3f9cb8
4e01158
f83941f
da1fdbc
1d185f8
864fb6a
82cbbf4
f18725f
08d5225
9e23983
151002f
8406bd7
a32cb69
c34b217
f9fa7e8
5b10f51
5f7d53f
89c2686
dff03a1
da7ae92
ed20f9e
3a8319a
091205a
f2d016c
e5a5c90
136606f
0bfab47
27f08d3
8b3314d
6c3bc28
cf51bee
5bc3f7f
0919c3d
f7ee5d7
b18f8cb
f0c5e5a
7073e18
b312ab9
1b550c5
e45914e
40f44f1
569cd8c
72fb5c1
b4cbc76
e1762eb
ce02dc3
55472c0
dab2cc3
cdc0154
e612f1a
c26cfde
cacd63f
c4551be
313ca61
47bbe88
f86f203
1bd6885
d2f2696
fcc61fa
17992e1
ca3eb71
4b028f1
a4533c0
419e5a3
975d8a6
7165d31
47e56ff
c2a7946
48cadb0
10f53a2
a6b6af8
aa8dd6a
95b2922
598139e
e210f32
45ffb0e
e814db5
668c982
e795209
61266ba
085706c
6be22c4
be44fa5
89fc707
0068627
2cb61fe
85a2a2a
f5ae94b
77a34f3
01aee55
528476f
fb4bc9a
7033e0c
bb2e7df
2f49477
ad86ec0
e9d5263
9f65667
7bfc8a2
2724df5
2b9a003
1f61c22
a6853c5
0262e40
4e14258
0cae84f
427231b
f077146
b1019b3
c839a1d
f251477
6d6a7ca
afaf01e
95dcd69
2c5561c
6367020
d5fa09b
0c60242
16d4be9
13fc6e3
bf9c012
4efab36
514fe9f
ce6936b
ec1c53d
9128dcf
59b2c34
761b3c2
8841d44
0dfaa08
e7b7929
74cc409
417cdeb
9dde2ad
a2c7487
fc19df2
54986da
87451e7
e5aa42e
4f85878
efc7453
82d6dd1
806c3ed
e99729a
0faf93d
868ca71
5279972
c258099
ddfc769
cec30e2
df8dbec
48c8726
87064b6
c07eff6
c6e69db
ecc549e
c88f485
b3a4d68
56ee29a
398dc47
a800a20
2f31d2f
cb41d00
f8bd2a7
16a4c52
ec57486
54eb157
2569a86
195201f
20e7793
08d4868
ceaefe1
a5c7ff5
01a682f
04e0068
8ea3487
70cd84e
38047d1
c868fad
06ebf3a
e1866bb
b018bd9
73b8ee3
92f82a2
e4d8ba9
a31955c
0efed4c
ac1e84e
06817c3
2fd475e
c7b45aa
f420643
f405753
d069534
5d86c98
db47fb6
377e81e
b0cac09
551ecda
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -15,3 +15,4 @@ bin/ | |
|
||
/text-ui-test/ACTUAL.TXT | ||
text-ui-test/EXPECTED-UNIX.TXT | ||
EventList.txt |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{ | ||
"java.configuration.updateBuildConfiguration": "interactive" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,8 @@ | ||
# About us | ||
|
||
Display | Name | Github Profile | Portfolio | ||
--------|:----:|:--------------:|:---------: | ||
![](https://via.placeholder.com/100.png?text=Photo) | John Doe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
![](https://via.placeholder.com/100.png?text=Photo) | Don Joe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
![](https://via.placeholder.com/100.png?text=Photo) | Ron John | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
![](https://via.placeholder.com/100.png?text=Photo) | John Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
![](https://via.placeholder.com/100.png?text=Photo) | Don Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
Display | Name | Github Profile | Portfolio | ||
--------|:--------------------------:|:-------------------------------------------:|:---------: | ||
![](https://avatars.githubusercontent.com/u/88603534?s=400&u=3007dc79299805aa3b8f71aeb61899ea9fb64f6e&v=4) | Zhao Lixiuqi | [Github](https://github.com/alexgoexercise) | [Portfolio](docs/team/Zhao_Lixiuqi.md) | ||
![](https://via.placeholder.com/100.png?text=Photo) | Toh Hongfeng | [Github](https://github.com/Toh-HongFeng) | [Portfolio](docs/team/tohhongfeng.md) | ||
![](https://via.placeholder.com/100.png?text=Photo) | Li Mingyuan | [Github](https://github.com/mingyuannus) | [Portfolio](docs/team/johndoe.md) | ||
![](https://via.placeholder.com/100.png?text=Photo) | Nguyen Duc Thang | [Github](https://github.com/Mnsd05) | [Portfolio](docs/team/johndoe.md) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,38 +1,269 @@ | ||
# Developer Guide | ||
<div align="center"> | ||
<h2> MoneyMind Developer Guide</h2> | ||
<h3> "Mind your Money" </h3> | ||
</div> | ||
|
||
<div align="left"> | ||
|
||
## Acknowledgements | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
||
{list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well} | ||
|
||
## Design & implementation | ||
## Design | ||
Comment on lines
16
to
+20
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Seems like the markdown failed to render as expected from acknowledgements onwards. Consider checking your markdown before it might be potentially reviewed by anyone in the future. |
||
|
||
{Describe the design and implementation of the product. Use UML diagrams and short code snippets where applicable.} | ||
|
||
### Architecture | ||
|
||
<img src="images\ArchitectureDiagram.png" width="300" /> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Architecture Diagram is clear and concise and allows reader to follow easily. Look good! |
||
|
||
Comment on lines
+25
to
+27
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
The ***Architecture Diagram*** given above explains the high-level design of the App. | ||
|
||
Given below is a quick overview of how each component interact with each other. | ||
|
||
The main components in the architecture are: | ||
|
||
* `MoneyMind`: The main program of the application, | ||
it initializes the other components in the correct sequence and is responsible for shut down the application. | ||
* `UI`: The user interface of the application. | ||
* `Storage`: The storage of data of the application. | ||
* `Data`: The data classes used in the application, including Event, Category and CategoryList. | ||
* `Command`: The command of the application, including AddCommand, DeleteCommand, ListCommand, etc. | ||
|
||
<img src="images\ArchitectureSequence.png" width="500" /> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It seems the <> sections are constructors. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I thought this sequence diagram is well done in conveying the idea 👍but there are a few notation mistakes.
However, minor issue is the colour of the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
The *sequence diagram* above shows how the components interact with each other for the scenario | ||
where the user issues the command `event buy lunch e/10`. | ||
Comment on lines
+43
to
+44
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe it might be clearer if you label the command() method instead of the user input "event buy lunch e/10" as described in the notes. |
||
|
||
The following sections will explain the architecture in more detail. | ||
|
||
### Storage component | ||
|
||
**API**: `Storage.java` | ||
|
||
<img src="images\Storage.png" width="500"> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Are event and category empty classes? That part is abit unclear. Also, this image is much too small. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. for methods, consider expressing them in the form of :
apart from that I'm not too sure if the <> statements on association arrows are considered valid notation However, I do like the effort put into making such a detailed class diagram 💯 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Agree with the earlier comments, many of the diagrams are sized a bit to small and can be hard to read. You can consider indicating the return type of the different methods as well. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Agree with the comments mentioned. Can consider checking with Prof or TAs regarding using <<>> statements as labels on the arrows. Otherwise good effort in representing the class diagram for Storage class. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Some issues in this part of your class diagram:
Similar issues also apply to other parts of the diagram There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
||
The `Storage` component, | ||
* can save category and event data in txt format, and read it back. (txt format is chosen because it is human readable) | ||
* depended on by `CategoryList.java` and `CategoryCommand.java` to load data to ArrayList and HashMap, and takes in an ArrayList of Category objects as parameter to save data. | ||
|
||
When the user first starts the application:<br> | ||
<img src="images\StorageSequenceDiagram.png" width="500"><p> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't understand the usage for the
Comment on lines
+53
to
+59
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can I clarify the need for an critical path, maybe you can further elaborate on it more in your developers guide. |
||
When the program is running:<br> | ||
<img src="images\StorageRunSequenceDiagram.png" width="500"><p> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The notation here is very accurate! 👍 However, why not create a new diagram for the critical process? this would greatly simplify the current diagram There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Return labels and method labels are very clear. No major issues seen on this current sequence diagram. However you can consider generating an activation bars when you methods for a clearer representation given there will not be many activation bars currently. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
||
### Commands component | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For the command component, why not include the explanation from line 87 to line 92? |
||
|
||
**API**: `Command.java` | ||
|
||
{UML class diagram} | ||
|
||
The `Command` component, | ||
* can execute different commands, such as adding category, adding event, deleting category, deleting event, viewing category, viewing event | ||
* depends on `CategoryList.java`, `CategoryCommand.java`, `Event.java`, `Parser.java` to execute the commands. | ||
|
||
### Parser component | ||
|
||
**API**: `Parser.java` | ||
|
||
{UML class diagram} | ||
|
||
The `Parser` component, | ||
* can parse the user input and process it to the correct format | ||
* depends on `CategoryList.java`, `CategoryCommand.java`, `Event.java`, `Command.java` to execute the commands. | ||
|
||
## Implementation | ||
|
||
### Parser component | ||
|
||
The Parser class contains several private methods, each of which is responsible for creating a specific type of Command | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. While there are great details in this explanation, why not express this validation process with a sequence diagram instead? |
||
object based on the user input. Each method takes in an array of strings as an argument, which contains | ||
the user input split into keyword and the content. The method then checks the first word in the array to determine which | ||
type of Command object to create. If the first word matches a specific keyword (e.g. "bye"), the corresponding Command | ||
object is created and returned. If the keyword is not recognized, an InvalidCommandException is thrown. Some methods | ||
also perform additional checks on the input string to ensure that it is formatted correctly. If the input is in correct | ||
format, the corresponding Command object is created and returned. Otherwise, an InvalidCommandException is thrown. | ||
|
||
### Commands component | ||
|
||
The Command class is an interface that is implemented by all the different types of Command objects. It contains methods | ||
that are common to all Command objects, such as execute() and isExit(). The execute() method contains the logic to | ||
perform certain tasks and is called when the Command object is to be executed. The isExit() method is called to | ||
check if the Command object is an ExitCommand object, which signals the end of the program. | ||
|
||
## Product scope | ||
### Exceptions component | ||
|
||
The Exceptions class contains several types of custom Exception objects that are thrown when the user input is not | ||
in the correct format. | ||
|
||
### Category component | ||
|
||
The components use arraylist to store events for each category and | ||
store all categories in a category list. | ||
|
||
### Event component | ||
|
||
The components implement event class to store the information of each event. | ||
|
||
## Appendix A: Product Scope | ||
### Target user profile | ||
|
||
{Describe the target user profile} | ||
------------------------- | ||
<div align="center"> | ||
<img src="images\NUS_Students.png" width="300" /> | ||
</div> | ||
|
||
* **Name**: NUS Student | ||
* **Age**: 18-25 years old | ||
* **Occupation**: Student | ||
* **Education**: Currently enrolled in NUS | ||
* **Income**: Limited income sources (part-time jobs, allowances from parents, etc.) | ||
* **Technology usage**: Tech-savvy and comfortable using a CLI-based application | ||
* **Interests**: Campus life, budgeting, saving, optimizing spending | ||
* **Financial goals**: Prioritize spending, cut down on unnecessary expenses, improve financial health | ||
* **Challenges**: Limited income, lack of financial knowledge, lack of financial discipline | ||
* **Needs**: A simple, easy-to-use application to help manage expenses and track spending habits | ||
|
||
Overall, NUS Student is a financially-conscious individual who wants to prioritize spending and save for the future while | ||
enjoying a good campus life. They are comfortable with technology and prefer an efficient and easy-to-use tool like MoneyMind | ||
to manage their finances. They are interested in tracking their expenses by category and exploring new ways to | ||
optimize their spending to achieve their financial goals. | ||
|
||
### Value proposition | ||
|
||
{Describe the value proposition: what problem does it solve?} | ||
|
||
## User Stories | ||
## Appendix B: User Stories | ||
|
||
| Version | As a ... | I want to ... | So that I can ... | | ||
|-----|------|--------------------------------------------------------------------------------------------------------|------------------------------------------------------------| | ||
| v1.0 | user | **add** an one time expense | keep track of how much I spend | | ||
| | user | **delete** a one time expense | ammend the record in case I add the wrong expense | | ||
| | user | **categorize** my expenses into different categories such as food, transportation, entertainment, etc. | better understand where my money is going | | ||
| v2.0 | user | **edit** one time expenses | change when I type wrongly | | ||
| | user | **search** for specific expenses by keyword or date range | easily find and review my past spending | | ||
|
||
## Appendix C: Non Functional Requirements | ||
|
||
1. MoneyMind should work on any mainstream OS as long as it has Java 11 or above installed. | ||
2. The user is expected to be a fast-typer. MoneyMind is not optimised for users that are not | ||
used to CLI applications. | ||
3. The user is expected to have a good habit of constantly and systematically recording their | ||
expenses. MoneyMind is not optimised for users that only record their expense on ad-hoc basis. | ||
4. Other than the above, please enjoy using MoneyMind! | ||
|
||
## Appendix D: Glossary | ||
|
||
* *budget* - A budget is a financial plan that outlines an individual's or | ||
organization's expected income and expenses over a specific period of time. | ||
In context given, the budget here is scaled down to NUS students' expenses over | ||
different categories. | ||
Budgets can typically include categories for different types of expenses, | ||
such as housing, transportation, food, entertainment, and savings. | ||
* *expense* - An expense is the cost incurred by an organization or individual. | ||
In context given, the expense here is scaled down to NUS students' spending over | ||
different events that they are engaged in. | ||
* *event* - An event is a specific occurrence of expenses that is planned or occurs. | ||
It can be a one time expense like buying a pair of sneakers or recurring expenses like | ||
electricity bills. | ||
* *category* - A category is a group of events that are related to each other. For example, | ||
food, transportation, entertainment, etc. | ||
* *one time expense* - An expense that occurs only once. | ||
* *recurring expense* - An expense that occurs repeatedly, in the context of MoneyMind, the | ||
frequency is set to monthly. | ||
|
||
## Appendix E: Instructions for Manual Testing | ||
|
||
First type | ||
``` | ||
category food b/200 | ||
``` | ||
|
||
Expected: | ||
``` | ||
New category added: food | ||
``` | ||
|
||
Then type | ||
``` | ||
event buy salad e/12 | ||
``` | ||
|
||
Expected: | ||
``` | ||
Please select the category you want to add the event to: | ||
``` | ||
|
||
Then type | ||
``` | ||
1 | ||
``` | ||
|
||
Expected: | ||
``` | ||
New event added: buy salad | ||
``` | ||
|
||
Then type | ||
``` | ||
edit c/food e/1 | ||
``` | ||
|
||
Expected: | ||
``` | ||
The current event expense for buy salad is: 12 | ||
Your new expense would be: | ||
``` | ||
|
||
Then type | ||
``` | ||
100 | ||
``` | ||
|
||
Expected: | ||
``` | ||
Ok, the new expense is now changed to: 100 | ||
``` | ||
|
||
Then type | ||
``` | ||
view | ||
``` | ||
|
||
Expected: | ||
``` | ||
1.food (budget: 200) | ||
buy salad [expense]100 | ||
``` | ||
|
||
|Version| As a ... | I want to ... | So that I can ...| | ||
|--------|----------|---------------|------------------| | ||
|v1.0|new user|see usage instructions|refer to them when I forget how to use the application| | ||
|v2.0|user|find a to-do item by name|locate a to-do without having to go through the entire list| | ||
Then type | ||
``` | ||
delete c/food | ||
``` | ||
|
||
## Non-Functional Requirements | ||
Expected: | ||
``` | ||
Category deleted: food | ||
``` | ||
|
||
{Give non-functional requirements} | ||
Then type | ||
``` | ||
view | ||
``` | ||
|
||
## Glossary | ||
Expected: | ||
``` | ||
There are no categories to view | ||
``` | ||
|
||
* *glossary item* - Definition | ||
Then type | ||
``` | ||
bye | ||
``` | ||
|
||
## Instructions for manual testing | ||
Expected: | ||
``` | ||
Bye. Hope to see you again soon! | ||
``` | ||
|
||
{Give instructions on how to do a manual product testing e.g., how to load sample data to be used for testing} | ||
</div> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,8 @@ | ||
# Duke | ||
# MoneyMind | ||
|
||
{Give product intro here} | ||
MoneyMind is a desktop application for managing your finances, 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, MoneyMind can get your finance management tasks done faster than traditional GUI apps. | ||
|
||
Useful links: | ||
To get to know more about MoneyMind, here are the useful links: | ||
* [User Guide](UserGuide.md) | ||
* [Developer Guide](DeveloperGuide.md) | ||
* [About Us](AboutUs.md) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For some reason, the formatting goes haywire from this point onwards.