diff --git a/README.md b/README.md index 47c01884518..a252d21de6a 100644 --- a/README.md +++ b/README.md @@ -2,14 +2,10 @@ ![Ui](docs/images/Ui.png) -* This is **a project for Software Engineering (SE) students**.
- Example usages: - * as a starting point of a course project (as opposed to writing everything from scratch) - * as a case study -* The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details. - * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big. - * It comes with a **reasonable level of user and developer documentation**. -* It is named `Teacher's Pet` (`TP` for short) because it was designed to target the needs of teachers. +* Teacher’s Pet is a desktop application for managing contacts of students and classes, optimised for use via a Command +Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, Teacher’s +Pet can get your contact and class management tasks done faster than traditional GUI apps. +* It is named `Teacher's Pet` (`TP` for short) because it was designed to assist teachers. * For the detailed documentation of this project, see the **[Teacher's Pet Product Website](https://ay2223s1-cs2103t-t09-4.github.io/tp/)**. * This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org#https://se-education.org/#contributing) for more info. * This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org). diff --git a/docs/AboutUs.md b/docs/AboutUs.md index f379713c7d9..e5c9d8d6cae 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -5,7 +5,6 @@ title: About Us We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg). -You can reach us at the email `seer[at]comp.nus.edu.sg` ## Project team @@ -13,9 +12,8 @@ You can reach us at the email `seer[at]comp.nus.edu.sg` -[[homepage](http://www.comp.nus.edu.sg/~damithch)] -[[github](https://github.com/johndoe) -[portfolio](team/johndoe.md)] +[[github](https://github.com/cadencjk) +[portfolio](team/cadencjk.md)] * Role: Project Advisor @@ -33,7 +31,8 @@ You can reach us at the email `seer[at]comp.nus.edu.sg` -[[github](http://github.com/johndoe)] [[portfolio](team/johndoe.md)] +[[github](https://github.com/sjoann)] +[[portfolio](team/sjoann.md)] * Role: Developer * Responsibilities: Data diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 367bca7f0d5..d66eb855274 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1,5 +1,3 @@ -# Developer Guide - # Product Scope ## Target User Profile diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 68e630c0fae..a4de501ae53 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -1,15 +1,16 @@ -# Teacher's Pet User Guide (v1.2) - Teacher’s Pet is a desktop application for managing contacts of students and classes, optimised for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, Teacher’s Pet can get your contact and class management tasks done faster than traditional GUI apps. +* Table of Contents + {:toc} + --- ## Quick start 1. Ensure you have Java `11` or above installed in your Computer. -2. Download the latest `teacherpet.jar` from … +2. Download the latest `teacherpet.jar` from https://github.com/AY2223S1-CS2103T-T09-4/tp/releases when made available. 3. Copy the file to the folder you want to use as the *home folder* for your application. 4. Double-click the file to start the app. The GUI similar to the below should appear in a few seconds. Note how the app contains some sample data. @@ -23,21 +24,22 @@ Teacher’s Pet can get your contact and class management tasks done faster than Our application is divided into 5 areas to maximise productivity, the specific uses are: -- Input Command - The dialog box where all user interaction are held +- Input Command - The dialog box where all user interaction are held. - Application’s Reply - A short answer whether the application has executed the command, or an error message if the - application did not understand the command -- Student's Details - A window that will display the details of the student(s) + application did not understand the command. +- Student's Details - A window that will display the details of the student(s). - Statistics Window - A window that shows all the statistics of the tutor, such as the number of students and -the money collected/owed -- Day’s Schedule List - A scroll window which shows the schedule for the day, sorted by time +the money collected/owed. +- Day’s Schedule List - A scroll window which shows the schedule for the day, sorted by time. +Basic Instructions: 1. Type the command in the command box and press Enter to execute it. e.g. typing `help` and pressing Enter will open the help window. Some example commands you can try: - - `list`: Lists all contacts. - - `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`: Adds a contact named - `John Doe` to the Address Book. - - `delete 3`: Deletes the 3rd contact shown in the current list. - - `clear`: Deletes all contacts. + - `list`: Lists all students. + - `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`: Adds a student named + `John Doe` to the student list. + - `delete 3`: Deletes the 3rd student shown in the current list. + - `clear`: Deletes all students. - `exit`: Exits the app. 2. Refer to the Features below for details of each command. @@ -49,8 +51,8 @@ the money collected/owed - Words in `UPPER_CASE` are the parameters to be supplied by the user. e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`. -- Items in square brackets are optional. e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`. -- Items with `…` after them can be used multiple times including zero times. e.g. `[t/TAG]…` can be used as ` ` (i.e. +- Items in square brackets are optional. e.g. `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`. +- Items with `…` after them can be used multiple times including zero times. e.g. `[t/TAG]…` can be used as ` ` (e.g. 0 times), `t/friend`, `t/friend t/family` etc. - Parameters can be in any order. e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable. @@ -65,8 +67,6 @@ Shows a message explaining how to access the help page. Format: `help` -Example: `help` - ![Help](images/UiHelp.png) --- @@ -76,47 +76,43 @@ Example: `help` Adds a student to the Teacher’s Pet. -1. Student’s Name - - Student’s Name must not be empty - - Student’s Name must only contain alphabetical letters. +1. Student’s Name: + - Student’s Name must not be empty. + - Student’s Name must only contain alphanumeric characters. ```yaml -Note: Duplicates students are not allowed! +Note: Multiple students may share the same name. ``` -2. Student’s Contact Number - - Contact number must only contain numerical digits between `0` and `9` - - White spaces between numbers will be automatically removed. eg: `8123 4556` will be converted to `81234567` - - Number must have 8 digits and starts with either ‘8’ or ‘9’ +2. Student’s Contact Number: + - Contact number must only contain numerical digits between `0` and `9`. ```yaml -Note: Contact number cannot be empty. It must contain at least 1 digit. +Note: Contact number must contain at least 3 digits. Contact number must be unique. ``` -3. Next of Kin’s Number - - Next of Kin’s Number must only contain numerical digits between `0` and `9` - - Next of Kin’s Number must have 8 digits and starts with either ‘8’ or ‘9’ - - White spaces between numbers will be automatically removed. eg: `8123 4556` will be converted to `81234567` +3. Next of Kin’s Number: + - Next of Kin’s number must only contain numerical digits between `0` and `9`. ```yaml -Note: Next of Kin’s number cannot be empty. It must contain at least 1 digit. +Note: Next of Kin’s number cannot be empty. It must contain at least 3 digits. ``` -4. Address - - Address must not be empty - - Address may contain any kinds of character - +4. Address: + - Address must not be empty. + - Address may contain any kinds of character. ```yaml Note: Address cannot be empty. It must contain at least 1 character. ``` -5. Email - - Email may contain any kinds of `character`, other than white space ` ` - - Email must contain a `@` +5. Email: + - Email should be in the format of `local@domain`, where: + - Local address should only contain alphanumeric characters and these special characters `+_.-`. + - Domain address should be least 2 characters long. ```yaml -Note: Email cannot be empty. It must contain at least 1 character. +Note: Email cannot be empty. It must fulfil the above requirements. ``` -6. Class Date - - Class Date must be in the format YYYY-MM-DD {start time}-{end time} +6. Class Date: + - Class Date must be in the format YYYY-MM-DD {start time}-{end time}. ```yaml Note: Start time and End time must be in 24hour format. @@ -136,7 +132,7 @@ Note: Amount paid, Amount owed, Additional notes fields are to be updated via `e --- -### Edit student details: `edit` +### Editing student details: `edit` Edits an existing student in the list. @@ -149,22 +145,27 @@ Edits an existing student in the list. - Amount owed - Additional notes -1. Student's Name, Phone number, Next of Kin’s phone number, Email, Address, and Class Date follow the same convention as in Adding a student: - [`add` section](#adding-a-studentadd) -2. Amount paid +1. Student's Name, Phone number, Next of Kin’s phone number, Email, Address, and Class Date follow +the same convention as [adding a student](#adding-a-student). + +2. Amount paid: - Amount paid can be an integer or a double. - - Amount paid must be non negative. -3. Amount owed + - Amount paid must be non-negative. + +3. Amount owed: - Amount owed can be an integer or a double. - - Amount owed must be non negative. + - Amount owed must be non-negative. - Amount owed and Amount paid are modified independent of each other. -4. Additional notes - - Additional notes is a String and can be empty. ```yaml -Important: -- note **at least one** of these fields must exist in order to make the - `edit` command valid. +Note: Amount paid, Amount owed can only be between $0 and $2147483647. +``` + +4. Additional notes: + - Additional notes can be left empty. + - Additional notes can take in any types of character. +```yaml +Important: Note **at least one** of these fields must exist in order to make the `edit` command valid. ``` Format: `edit INDEX [n/NAME] [p/CONTACT_NUMBER] [np/NEXT_OF_KIN_CONTACT_NUMBER] [e/EMAIL] [dt/CLASS_DATE] [a/ADDRESS] @@ -177,7 +178,7 @@ Example: ![UiEdit](images/UiEdit.png) --- -### View all students: `list` +### Viewing all students: `list` Allows the user to view students and their information which includes: @@ -194,6 +195,55 @@ Format: `list` ![UiUList](images/UiList.png) +--- +### Finding a student : `find` + +Finds students whose names contain any of the given keywords. + +Format: `find KEYWORD [MORE_KEYWORDS]` + +- The search is case-insensitive. e.g. `alex` will match `Alex`. +- The order of the keywords does not matter. e.g. `Yeoh Alex` will match `Alex Yeoh`. +- Only the name is searched. +- Only full words will be matched e.g. `Han` will not match `Hans`. +- Persons matching at least one keyword will be returned. e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`. + +Example: + +`find tan` returns `Tan Xiao Ming` and `John Tan`. + +![UiFind](images/UiFind.png) + +--- +### Deleting a student: 'delete' + +Deletes the specified person from the student list. + +Format: `delete INDEX` + +- Deletes the person at the specified `INDEX`. +- The index refers to the index number shown in the Student's Details panel (bottom left). +- The index must be a positive integer. e.g. `1, 2, 3, ...`. + +Examples: +- `list` followed by `delete 2` deletes the 2nd person in the Student's Details panel. +- `find Betsy` followed by `delete 1` deletes the 1st person in the Stundent's Details panel. + +```yaml +❗ Caution: Deleting a student is irreversible! Please ensure the correct index number. +``` + +--- +### Clearing all student: 'clear' + +Clears all students and their details from the list. + +Format: `clear` + +```yaml +❗ Caution: Clearing all students is irreversible! +``` + --- ### Exiting the program : `exit` @@ -219,7 +269,7 @@ Students' data is saved as a JSON file `[JAR file location]/data/addressbook.jso Q: How do I transfer my data to another Computer? -A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder. +A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous Teacher's Pet home folder. --- @@ -231,7 +281,7 @@ A: Install the app in the other computer and overwrite the empty data file it cr | Edit a student | edit INDEX [n/NAME] [p/CONTACT_NUMBER] [np/NEXT_OF_KIN_CONTACT_NUMBER] [e/EMAIL] [dt/CLASS_DATE] [a/ADDRESS] [paid/AMOUNT_PAID] [owed/AMOUNT_OWED] [nt/ADDITIONAL_NOTES] `e.g., edit 2 p/98765431` | | Get help | `help` | | List all students | `list` | -| Find a student | find [NAME] `e.g., find John Doe` | +| Find a student | find NAME `e.g., find John Doe` | | Delete a student | delete INDEX `e.g., delete 2` | | Clear all students | `clear` | | Exit the application | `exit` | diff --git a/docs/images/UiFind.png b/docs/images/UiFind.png new file mode 100644 index 00000000000..f5360def76a Binary files /dev/null and b/docs/images/UiFind.png differ diff --git a/docs/images/UiHelp.png b/docs/images/UiHelp.png index 91fcc0b1a92..81030d8bbf1 100644 Binary files a/docs/images/UiHelp.png and b/docs/images/UiHelp.png differ diff --git a/docs/index.md b/docs/index.md index f3e1d310ef5..51c9078fe30 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,6 @@ --- layout: page -title: AddressBook Level-3 +title: Teacher's Pet --- [![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions) diff --git a/docs/team/johndoe.md b/docs/team/johndoe.md deleted file mode 100644 index 773a07794e2..00000000000 --- a/docs/team/johndoe.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: page -title: John Doe's Project Portfolio Page ---- - -### Project: AddressBook Level 3 - -AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC. - -Given below are my contributions to the project. - -* **New Feature**: Added the ability to undo/redo previous commands. - * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command. - * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them. - * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands. - * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}* - -* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys. - -* **Code contributed**: [RepoSense link]() - -* **Project management**: - * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub - -* **Enhancements to existing features**: - * Updated the GUI color scheme (Pull requests [\#33](), [\#34]()) - * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\#36](), [\#38]()) - -* **Documentation**: - * User Guide: - * Added documentation for the features `delete` and `find` [\#72]() - * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\#74]() - * Developer Guide: - * Added implementation details of the `delete` feature. - -* **Community**: - * PRs reviewed (with non-trivial review comments): [\#12](), [\#32](), [\#19](), [\#42]() - * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]()) - * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]()) - * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]()) - -* **Tools**: - * Integrated a third party library (Natty) to the project ([\#42]()) - * Integrated a new Github plugin (CircleCI) to the team repo - -* _{you can add/remove categories in the list above}_ diff --git a/src/main/java/seedu/address/ui/HelpWindow.java b/src/main/java/seedu/address/ui/HelpWindow.java index ccbc9576cee..65555f91ca8 100644 --- a/src/main/java/seedu/address/ui/HelpWindow.java +++ b/src/main/java/seedu/address/ui/HelpWindow.java @@ -16,7 +16,7 @@ public class HelpWindow extends UiPart { public static final String USERGUIDE_URL = - "https://github.com/AY2223S1-CS2103T-T09-4/tp/blob/master/docs/UserGuide.md"; + "https://ay2223s1-cs2103t-t09-4.github.io/tp/UserGuide.html"; public static final String HELP_MESSAGE = "Refer to the user guide: " + USERGUIDE_URL; private static final Logger logger = LogsCenter.getLogger(HelpWindow.class);