From 915f09e7e9cc161dc5c446ba68ed37c19e7c7b4b Mon Sep 17 00:00:00 2001 From: QinHaichen12 Date: Mon, 11 Nov 2024 16:30:30 +0800 Subject: [PATCH] Change ug for consistency --- docs/UserGuide.md | 67 +++++++++++++++++------------- docs/images/findSessionResult.png | Bin 0 -> 19824 bytes 2 files changed, 39 insertions(+), 28 deletions(-) create mode 100644 docs/images/findSessionResult.png diff --git a/docs/UserGuide.md b/docs/UserGuide.md index ea4604b207e..8e63a6e5499 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -78,19 +78,19 @@ Refer to the [Command Summary](#command-summary) section below for a quick overv ## Command Summary -| Action | Format / Examples | -| ------------------ |-------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Action | Format / Examples | +| ------------------ |----------------------------------------------------------------------------------------------------------------------------------------------| | **Add member** | `add_member n/NAME r/ROOM_NUMBER t/TELEGRAM [tag/TAG]…​​`
e.g., `add_member n/James Ho r/4-3-301 t/jamesho123 tag/friend tag/colleague` | | **Update member** | `update_member INDEX [n/NAME] [r/ROOM_NUMBER] [t/TELEGRAM] [tag/TAG]…​`
e.g.,`update_member 2 n/James Lee r/5-2-203 t/jameslee99` | -| **Delete member** | `delete_member INDEX`
e.g., `delete_member 3` | -| **Add session** | `add_session s/NAME d/DATE p/POINTS m/INDEX…​`
e.g., `add_session s/Rehearsal d/24 Oct 2024 p/2 m/1 m/3` | -| **Delete session** | `delete_session s/NAME m/INDEX…`
e.g., `delete_session s/Rehearsal m/1 m/3` | -| **Find members** | `find_members KEYWORD [MORE_KEYWORDS]…`
e.g., `find_members James Jake` | -| **Find sessions** | `find_sessions KEYWORD [MORE_KEYWORDS]…`
e.g., `find_sessions Team meeting` | -| **List** | `list` | -| **Clear** | `clear` | -| **Help** | `help` | -| **Exit** | `exit` | +| **Delete member** | `delete_member INDEX`
e.g., `delete_member 3` | +| **Add session** | `add_session s/NAME d/DATE p/POINTS m/INDEX [m/INDEX]…​`
e.g., `add_session s/Rehearsal d/24 Oct 2024 p/2 m/1 m/3` | +| **Delete session** | `delete_session s/NAME m/INDEX [m/INDEX]…`
e.g., `delete_session s/Rehearsal m/1 m/3` | +| **Find members** | `find_members KEYWORD [MORE_KEYWORDS]…`
e.g., `find_members James Jake` | +| **Find sessions** | `find_sessions KEYWORD [MORE_KEYWORDS]…`
e.g., `find_sessions Team meeting` | +| **List** | `list` | +| **Clear** | `clear` | +| **Help** | `help` | +| **Exit** | `exit` | --- @@ -132,24 +132,24 @@ Displays an alphabetical list of all available commands for quick and easy refe Adds a member to Hall Pointer. A member must have a name, room assignment, and Telegram username. You can also add tags to help categorize members. -**Format:** `add_member n/NAME r/ROOM_NUMBER t/TELEGRAM [tag/TAG]…​​` - - - -**Tip:** A member can have any number of tags (including 0). - - +**Format:** `add_member n/NAME r/ROOM_NUMBER t/TELEGRAM_HANDLE [tag/TAG]…​​` **Constraints:**
-- **Unique Name**: Each member must have a unique name. This is necessary to prevent confusion between members and to ensure accurate tracking. -- **Unique Telegram Username**: Each member must have a unique Telegram username, as this is a personal identifier for each user. +- **Unique Name**: Each member must have a unique name. This is necessary to prevent confusion between members and to ensure accurate tracking. +- **Unique Telegram Username**: Each member must have a unique Telegram username, as telegram account is personal and each username can only be used by one person at a time. - **Shared Rooms Allowed**: Multiple members can be assigned to the same room to accommodate shared living arrangements.
+ +**Tips** +- A member can have any number of tags (including 0). +- If you have multiple members with the same name, consider adding a distinguishing initial or number (e.g. "Daniel L", "Daniel O", "Daniel 2"). + + **Examples:** - `add_member n/John Doe r/4-3-301 t/johndoe123` adds a member with name `John Doe` in room `4-3-301` and Telegram username `johndoe123`. @@ -174,7 +174,7 @@ Shows a list of all members registered in Hall Pointer. Updates an existing member in Hall Pointer. -**Format:** `update_member INDEX [n/NAME] [r/ROOM_NUMBER] [t/TELEGRAM] [tag/TAG]…​​` +**Format:** `update_member INDEX [n/NAME] [r/ROOM_NUMBER] [t/TELEGRAM_HANDLE] [tag/TAG]…​​` **Constraints:** @@ -195,6 +195,8 @@ Updates an existing member in Hall Pointer. - `update_member 1 t/johndoe123_updated n/Johnson Doe` updates the Telegram username and name of the 1st member to be `johndoe123_updated` and `Johnson Doe`, respectively. - `update_member 2 n/Betsy Crower tag/` updates the name of the 2nd member to be `Betsy Crower` and clears all existing tags. +- `update_member 2 tag/Friend tag/Leader` updates the tags of the 2nd member to `Friend` and `Leader`. + ![result for 'update_member 1 t/johndoe123_updated n/Johnson Doe'](images/updateCommandResult.png) @@ -204,8 +206,9 @@ Updates an existing member in Hall Pointer. Finds members whose names contain any of the given keywords. -**Format:** `find_members KEYWORD [MORE_KEYWORDS]` +**Format:** `find_members KEYWORD [MORE_KEYWORDS]…` +**Constraints** - **Case-Insensitive Search**: The search is case-insensitive, so `hans` will match `Hans`. - **Order of Keywords**: The order of the keywords does not matter, so `Hans Bo` will match both `Bo Hans` and `Hans Bo`. - **Full Word Matching**: Only full words will be matched, so `Han` will not match `Hans`. @@ -249,13 +252,17 @@ Deletes the specified member from Hall Pointer. ### Adding a Session: `add_session` -Adds a session to Hall Pointer and associates it with specified members. A session contains a name, date, and points awarded. You can associate multiple members with a session. +Adds a session to Hall Pointer and associates it with specified members. A session contains a name, date, and points awarded to each member attending the session. You can add multiple members to a session. -**Format:** `add_session s/NAME d/DATE p/POINTS m/INDEX...` +**Format:** `add_session s/NAME d/DATE p/POINTS m/INDEX [m/INDEX]…` -**Tip:** **Points** should be an integer between 0 and 100. A maximum of 100 points can be awarded to any session. +**Tip:** +- **Points** should be an integer between 0 and 100. A maximum of 100 points can be awarded to any session. +- **Multiple members** If you have multiple members attending the session, you can add them sequentially by specifying their indexes. +- **Duplicate Session** You cannot add a session to a member if the member already attended a session with the same name. +If you wish to add multiple sessions with the same name to a member, consider adding a unique identifier to the session name (e.g., "Rehearsal 1", "Rehearsal 2"). @@ -263,7 +270,7 @@ Adds a session to Hall Pointer and associates it with specified members. A sessi **Constraints:**
-- **Unique Session Name**: Each session name must be unique within a member. This ensures that each session is distinct and prevents duplicate records. If you have multiple similar sessions, consider naming them sequentially (e.g., "Rehearsal 1", "Rehearsal 2"). +- **Unique Session Name**: Each session name must be unique within a member. This ensures that each session is distinct and prevents duplicate records. @@ -278,7 +285,7 @@ Adds a session to Hall Pointer and associates it with specified members. A sessi This command finds members who have attended sessions with names that contain any of the specified keywords. -**Format:** `find_sessions KEYWORD [MORE_KEYWORDS]` +**Format:** `find_sessions KEYWORD [MORE_KEYWORDS]…` **Tips:** - **Case-Insensitive Search:** The search is case-insensitive. For example, `meeting` will match `Meeting`. @@ -292,6 +299,7 @@ This command finds members who have attended sessions with names that contain an - `find_sessions Team` – Returns any member associated with sessions named "Team meeting," "Team bonding," etc. - `find_sessions AGM meeting` – Returns members associated with sessions such as "AGM meeting" or "team meeting." +![result for 'find_session'](images/findSessionResult.png) --- @@ -300,7 +308,10 @@ This command finds members who have attended sessions with names that contain an Deletes a session associated with one or more members in Hall Pointer. -**Format:** `delete_session s/NAME m/INDEX...` +**Format:** `delete_session s/NAME m/INDEX [m/INDEX]…` + +**Tips:** +- **Case-Insensitive Search:** The search is case-insensitive. For example, `meeting` will match `Meeting`. **Examples:** diff --git a/docs/images/findSessionResult.png b/docs/images/findSessionResult.png new file mode 100644 index 0000000000000000000000000000000000000000..5cf101429195d23c6d2cca0763d203ab7612aa20 GIT binary patch literal 19824 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