dIS;)Tr38BI?X<1EVE
zX1b%RduIw?wrUe+yhTFALI|V*^a*Wb$SeOoqSHb#NG6tCximOSsF(n2o?94}l4Mx*
zifaZhHhC0A4$pKj)nS!|#YdNwah61Qm~MxttR uK
z%G>}<2uTaS`#Sxt%*V^G1%a*uP`@sKq|ru+Kr}P-T B2k^l-FFkmSo!`RT`HS1HMej_
zz5kT5@W|Kt{Z{w?xUcNoWX|7ZhIQB@<}W^ 8Wnrjdv2m$NTlGyeav2l&p^e2JOKWS#8A1a`#$Q4P#$Q&vxcyf%qGxTABtc}>V
zU8Zf<_J;1T#2?Max$X4kl&|DPfGwlFl2>W>aiLRj!>;1)p2FU+X+GtlrE=+ 5*=D73$TNm}WzdpP5%YMogmSlWH
zik{w_*FPQQ>&!+~C(Bf{h_HF1O_k3!>^gtvVwhLfVY;cQ^DJq>>rF(2Tza}Mj_E62
zYowaEhfrN1y7X(pbbUWI8ZhbSn;biXWMmMn*`$zan_+q@pH(7wx)hOV@h!>A+ci_t
z)>-^{l@hvvsLp6+I7@i$VsS3?jrhbZxip1v-Hr1V))?Xv8GNbL3ZRs_Ce#fD&KF*U
znqZcYU&|ztCEV0)G8s%!7PMgEjMCQf9)!z`r^51Zuou~M#MRNU6S8|3}u~j=g#49?N0*brKRon_M_7g=9-G0G5AR{POA3qev^Q8v9z=#dJyU0nNlHG
zp@a6531dq%Q%B1-i?2m~q;*tJ$Nh{a4
W_&!y6-{y
zCW!oW0NLK#R{XG-AmPGH$;?Mu*%K8Aqqi=VPh|^|G|t@OPFG_=p>#6a>VUqE2nm^A
z{%o{qewX-qu1q*+({vyKVy))r$WI%s(EPl=#9_Kf5ytVEuv3-}&qv@HL-lb=Q=HQR
z0t0=_&3Nb_pEv4Oblz6QmPue95Hvr8f%Ew5Xef_EY
- Expected: All unreturned loans linked to the first contact in the current view are shown.
+ Expected: All unreturned loans linked to the first contact in the current view are shown.
Note that if there are no contacts in view this command will not work. Perform `list` command if necessary.
1. Test case: `viewloan -a 1`
Expected: All loans linked to the first contact in the current view are shown.
@@ -775,7 +775,7 @@ testers are expected to do more *exploratory* testing.
1. Prerequisites: At least one contact in the list.
1. Test case: `analytics 1`
- Expected: The analytics of the first contact in the current view are shown.
+ Expected: The analytics of the first contact in the current view are shown.
Note that if there are no contacts in view this command will not work. Perform `list` command if necessary.
### Saving data
@@ -783,13 +783,13 @@ testers are expected to do more *exploratory* testing.
1. Dealing with missing/corrupted data files
1. Close the app. Choose either to simulate a missing data file or corrupted data file, but not both.
- 1. _To simulate a missing file, go to ./data and delete the JSON file inside, where . refers to
+ 1. _To simulate a missing file, go to ./data and delete the JSON file inside, where . refers to
th directory containing the jar file._
2. _To simulate a corrupted file, open the JSON file and delete a few characters from the middle of the file._
1. Launch the app.
Expected: The app should launch successfully. A new JSON file should be created in the
- ./data folder. For a missing file, the address book should show the sample data.
+ ./data folder. For a missing file, the address book should show the sample data.
For a corrupted file, a blank address book should be shown.
2. After populating the address book with some data, repeat steps i to iv for the other of missing/corrupted.
@@ -809,29 +809,29 @@ In either case, the app should close.
## **Appendix: Effort**
-The main effort for this project was spent on creating the loan management features, which were not present in AB3.
+The main effort for this project was spent on creating the loan management features, which were not present in AB3.
These include:
* linking a loan
* viewing loans
-* marking and unmarking a loan
+* marking and unmarking a loan
* deleting loans
* editing loans
* viewing analytics of a contact
Much inspiration was drawn from the existing commands in AB3, as well as the tutorial to add a new command.
-While the first five features looked similar, some required more effort than the others.
+While the first five features looked similar, some required more effort than the others.
The main difficulty we faced include how to implement the deletion and editing of loans.
-We had to ensure deletion can only happen if that loan is currently within view, else there could
-easily be mistakes. Likewise for editing a loan. The solution we came up with was to alter the
-person and loan lists in view, based on the commands given. Based on the lists in view, we decide
-if each operation can be done.
+We had to ensure deletion can only happen if that loan is currently within view, else there could
+easily be mistakes. Likewise for editing a loan. The solution we came up with was to alter the
+person and loan lists in view, based on the commands given. Based on the lists in view, we decide
+if each operation can be done.
The analytics feature was the most challenging feature to implement. This is because we needed to define
-the analytics that we wanted to show, and then implement the logic to calculate these analytics. The GUI,
+the analytics that we wanted to show, and then implement the logic to calculate these analytics. The GUI,
in particular the pie chart, was also challenging to implement.
-Nonetheless, we managed to implement all the features we set out to do, and we are proud of the final product.
+Nonetheless, we managed to implement all the features we set out to do, and we are proud of the final product.
In particular, we are proud of the analytics feature, which we believe is a unique feature that sets our app apart.
--------------------------------------------------------------------------------------------------------------------
@@ -840,23 +840,23 @@ In particular, we are proud of the analytics feature, which we believe is a uniq
Team size: 5
-1. After executing `viewloan`, if we call `viewloan 1`, the error message provided states "The person index is invalid".
+1. After executing `viewloan`, if we call `viewloan 1`, the error message provided states "The person index is invalid".
A better error message would be something like "Please run the list command before running this command again".
-2. When entering an email for a new person in the form of `name@domain`(e.g. `jameshoexample@com`), an error message should be displayed and
- the new person shouldn't be added, as opposed to the current behaviour. This is because emails are typically
+2. When entering an email for a new person in the form of `name@domain`(e.g. `jameshoexample@com`), an error message should be displayed and
+ the new person shouldn't be added, as opposed to the current behaviour. This is because emails are typically
in the form of `local-part@mail-server.domain`(`jameshoexample@gmail.com`)
-3. Detect duplicate names, including case-insensitive ones. For example, if we have a person named "John Doe",
- we should not be able to add another person named "john doe".
+3. Detect duplicate names, including case-insensitive ones. For example, if we have a person named "John Doe",
+ we should not be able to add another person named "john doe".
4. Do not allow the `/` character inside any field when adding a new person, since it is a special character for prefixes.
-5. Error message for the `linkloan` command should be more specific to the error, e.g. different error messages for
+5. Error message for the `linkloan` command should be more specific to the error, e.g. different error messages for
incorrect date format and a start date before end date.
-6. All fields should have a minimum length of 1 character and maximum length of 500 characters.
-Otherwise, an error message should be displayed, e.g. for name, "Name cannot be empty" or
+6. All fields should have a minimum length of 1 character and maximum length of 500 characters.
+Otherwise, an error message should be displayed, e.g. for name, "Name cannot be empty" or
"Name is cannot exceed 500 characters". Similar for other fields.
-7. Error messages related to indices should be more specific to the error.
+7. Error messages related to indices should be more specific to the error.
For example, if the user enters `viewloan 0`, the error message should be something like "INDEX must be a positive integer".
If the user enters `viewloan 8` when there are only 7 contacts, the error message should be something like "INDEX must be between 1 and 7".
-8. Reject loans that are > 2 decimal places as invalid.
+8. Reject loans that are > 2 decimal places as invalid.
For those loans that are < 2 decimal places, change them to 2 decimal places
format when displaying them instead of showing their exact value.
diff --git a/docs/UserGuide.md b/docs/UserGuide.md
index b1bc3e0d082..52ba940a5e1 100644
--- a/docs/UserGuide.md
+++ b/docs/UserGuide.md
@@ -39,7 +39,7 @@ title: User Guide
## Introduction
LoanGuardPro is a desktop app for managing contacts, optimized for use via a Command Line Interface (CLI) while still
-having the benefits of a Graphical User Interface (GUI).
+having the benefits of a Graphical User Interface (GUI).
If you are a moneylender looking to **keep track of your clients' contacts and loans**, LoanGuardPro is the right tool for you.
It is in the form of an address book and supports basic contact and loan handling features like adding, editing, deleting, and viewing contacts and loans.
@@ -120,40 +120,40 @@ There are three main categories of commands: Contact Management, Basic Loan Mana
### Contact Management
- Action | Format, Examples
-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
- **Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…`
e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague`
- **Clear** | `clear`
- **Delete** | `delete INDEX`
e.g., `delete 3`
- **Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…`
e.g.,`edit 2 n/James Lee e/jameslee@example.com`
- **Find** | `find KEYWORD [MORE_KEYWORDS]`
e.g., `find James Jake`
- **List** | `list`
+| Action | Format, Examples |
+|------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…`
e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` |
+| **Clear** | `clear` |
+| **Delete** | `delete INDEX`
e.g., `delete 3` |
+| **Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…`
e.g.,`edit 2 n/James Lee e/jameslee@example.com` |
+| **Find** | `find KEYWORD [MORE_KEYWORDS]`
e.g., `find James Jake` |
+| **List** | `list` |
### Basic Loan Management
- Action | Format, Examples
------------------|---------------------------------------------------------------------------------------------------------------
- **Link Loan** | `linkloan INDEX v/VALUE s/START_DATE r/RETURN_DATE`
e.g., `linkloan 1 v/500.00 s/2024-02-15 r/2025-02-15`
- **View Loan** | `viewloan [FLAG] [INDEX]`
e.g., `viewloan 1`, `viewloan -a 1`
- **Mark Loan** | `markloan INDEX`
e.g., `markloan 1`
- **Unmark Loan** | `unmarkloan INDEX`
e.g., `unmarkloan 1`
- **Edit Loan** | `editloan INDEX [v/VALUE] [s/START_DATE] [r/RETURN_DATE]`
e.g., `editloan 1 v/600.00 s/2024-02-15 r/2025-02-15`
- **Delete Loan** | `deleteloan INDEX`
e.g., `deleteloan 1`
+| Action | Format, Examples |
+|-----------------|---------------------------------------------------------------------------------------------------------------------|
+| **Link Loan** | `linkloan INDEX v/VALUE s/START_DATE r/RETURN_DATE`
e.g., `linkloan 1 v/500.00 s/2024-02-15 r/2025-02-15` |
+| **View Loan** | `viewloan [FLAG] [INDEX]`
e.g., `viewloan 1`, `viewloan -a 1` |
+| **Mark Loan** | `markloan INDEX`
e.g., `markloan 1` |
+| **Unmark Loan** | `unmarkloan INDEX`
e.g., `unmarkloan 1` |
+| **Edit Loan** | `editloan INDEX [v/VALUE] [s/START_DATE] [r/RETURN_DATE]`
e.g., `editloan 1 v/600.00 s/2024-02-15 r/2025-02-15` |
+| **Delete Loan** | `deleteloan INDEX`
e.g., `deleteloan 1` |
### Advanced Loan Management
- Action | Format, Examples
----------------|-------------------------------------------
- **Analytics** | `analytics INDEX`
e.g., `analytics 1`
+| Action | Format, Examples |
+|---------------|-------------------------------------------|
+| **Analytics** | `analytics INDEX`
e.g., `analytics 1` |
### Miscellaneous
- Action | Format
---------|-----------------
- **Exit** | `exit`
- **Help** | `help`
+| Action | Format |
+|----------|--------|
+| **Exit** | `exit` |
+| **Help** | `help` |
--------------------------------------------------------------------------------------------------------------------
@@ -396,7 +396,7 @@ Expected Behaviour:
* A success message in the form of "Loan edited: [loan details]" will be shown.
* The loan will be updated in the loan list.
-Examples:
+Examples:
* `editloan 1 v/600.00 s/2024-02-15 r/2025-02-15`
* Edits the loan at the 1st position in the loan list to have a value of $600.00, a start date of 15th Feb 2024, and a
@@ -412,7 +412,7 @@ Format: `deleteloan INDEX`
Parameters Restrictions:
-* The index refers to the index number shown in the displayed loan list.
+* The index refers to the index number shown in the displayed loan list.
The index **must be a positive integer** 1, 2, 3, …, and it must not exceed the number of loans shown in the list.
Expected Behaviour:
From 036eec4d94dcefe883bf5549f7d6ed9c550bdb57 Mon Sep 17 00:00:00 2001
From: narwhalsilent <110954060+narwhalsilent@users.noreply.github.com>
Date: Sun, 14 Apr 2024 23:52:41 +0800
Subject: [PATCH 8/8] New line at the end of file
Thanks checkstyle
---
docs/AboutUs.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/AboutUs.md b/docs/AboutUs.md
index 9537a4dc4a8..41ed704fe65 100644
--- a/docs/AboutUs.md
+++ b/docs/AboutUs.md
@@ -62,4 +62,4 @@ writing the developer guide.
[[portfolio](https://github.com/xiaorui-ui)]
* Role: Developer for basic loan management and DG documentation.
-* Responsibilities: Implementing `deleteloan`, `markloan`, and `unmarkloan` commands; writing the developer guide.
\ No newline at end of file
+* Responsibilities: Implementing `deleteloan`, `markloan`, and `unmarkloan` commands; writing the developer guide.