diff --git a/docs/UserGuide.md b/docs/UserGuide.md
index a8da6758d7b..9cb716a7aeb 100644
--- a/docs/UserGuide.md
+++ b/docs/UserGuide.md
@@ -6,7 +6,7 @@ title: User Guide
TutorPro is a **desktop app designed to help private tutors manage their student information effectively**. With TutorPro, tutors can easily keep track of their students' addresses, contact details, lessons, homework, and progress, all in one place. This app is optimized for use via a Graphical User Interface (GUI), allowing tutors to interact with the app using easy-to-understand buttons and menus. However, TutorPro also provides a Command Line Interface (CLI) for those who prefer a faster way of getting things done. Whether you're managing a handful of students or hundreds, TutorPro can help you streamline your workflow and make your tutoring experience more efficient.
--------------------------------------------------------------------------------------------------------------------
-* Table of Contents
+## Table of Contents
{:toc}
--------------------------------------------------------------------------------------------------------------------
@@ -30,33 +30,91 @@ TutorPro is a **desktop app designed to help private tutors manage their student
--------------------------------------------------------------------------------------------------------------------
### Glossary
-In the user guide, you may come across some terms you do not understand. The following table provides clarification
-of the terms commonly used in PetCode.
-
-| Term | Description |
-|:----------------:|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| **Alphanumeric** | Digits and letters only. For example, `AB3`, `PetCode`, `coco123`, and `2103` are alphanumeric. `#01-04`, `email@domain.com`, and `white spaces` are not. |
-| **Attribute** | Words that follow prefixes to describe properties, states, characteristics, and traits. Examples are price, weight, name, and order status. |
-| **Command** | A command is a specific instruction you can give to PetCode to perform an action. You can view the list of commands available [here](#command-summary). |
-| **Contact** | A contact is an information entry in PetCode. There are three types of contacts you can add - `Buyer`, `Supplier` and `Deliverer`. You can add a contact with the [`add` command](#adding-a-contact-or-item-add). |
-| **CLI** | Command-Line Interface (CLI) receives commands from a user in the form of lines of text. It refers to the input textbox in this context. |
-| **GUI** | GUI stands for Graphical User Interface. It refers to the display window of the PetCode application. |
-| **Index** | The index of the contact or item in the display list for contacts/items. |
-| **Integer** | Whole number |
-| **Parameter** | A parameter refers to the information you need to give to your command such that it can execute an action based on that information. For example, the [`list` command](#listing-contacts-or-items--list) requires a KEY parameter to know what kind of list to display. `list buyer` displays your list of buyers, where the KEY parameter is `buyer`. |
-| **Prefix** | A prefix indicates the kind of information you are keying in. You can view the list of prefixes available [here](#list-of-prefixes). |
-| **Whitespace** | An empty character, or a placeholder character ` `. |
-| **Student** | A `Student` whom the user (who is a tutor) teaches |
-| **Homework** | A `Homework` assignment whom the user (who is a tutor) has assigned to a `Student` |
-| **Lesson** | A `Lesson` that the user has scheduled with a `Student` |
-| **Exam** | An `Exam` that a Student is scheduled to sit for |
+You may come across some terms you do not understand in the user guide. The following table provides clarification of the terms commonly used in TutorPro.
+
+| Term | Description |
+| :--------------: | ------------------------------------------------------------ |
+| **Alphanumeric** | Digits and letters only. For example, `AB3`, `TutorPro`, `coco123`, and `2103` are alphanumeric. `#01-04`, `email@domain.com`, and `white spaces` are not. |
+| **Attribute** | Words that follow prefixes to describe properties, states, characteristics, and traits. Examples are price, weight, name, and order status. |
+| **Command** | A command is a specific instruction you can give to TutorPro to perform an action. You can view the list of commands available [here](#command-summary). |
+| **Contact** | A contact is an information entry in TutorPro. There are three types of contacts you can add - `Buyer`, `Supplier`, and `Deliverer`. You can add a contact with the [`add` command](#adding-a-contact-or-item-add). |
+| **CLI** | Command-Line Interface (CLI) receives commands from a user in the form of lines of text. It refers to the input textbox in this context. |
+| **GUI** | GUI stands for Graphical User Interface. It refers to the display window of the TutorPro application. |
+| **Index** | The index of the contact or item in the display list for contacts/items. |
+| **Integer** | Whole number |
+| **Parameter** | A parameter refers to the information you need to give to your command such that it can execute an action based on that information. |
+| **Prefix** | A prefix indicates the kind of information you are keying in. You can view the list of prefixes available [here](#list-of-prefixes). |
+| **Whitespace** | An empty character, or a placeholder character. |
+| **Student** | A `Student` whom the user (who is a tutor) teaches |
+| **Homework** | A `Homework` assignment whom the user (who is a tutor) has assigned to a `Student` |
+| **Lesson** | A `Lesson` that the user has scheduled with a `Student` |
+| **Exam** | An `Exam` that a Student is scheduled to sit for |
--------------------------------------------------------------------------------------------------------------------
+## GUI
+When you first run the app, you may see a display window pop up similar to the one below. We call this window the **Main Window**.
-## Features
+
+* The **Command Box** on the left bottom refers to the text field where you can type commands in.
+* The **Display List for Students** on the left top refers to the list of students you are currently displaying.
+* The **Detailed Information Section** on the right refers to the section where more specific information of the profile, homework, lessons, or exams of a particular sutden is displayed.
+You may enter the following commands in the Command Box to see how the Display List changes:
+* `list` lists all students.
+* `delete-b 1` deletes the student with index 1.
+* `view-homework` displays all the homework from all students.
+
+You may also click the quick access buttons one each student card to see how the Detailed Information Section changes.
+
+### Quick Access Buttons and Detailed Information Section
+Upon launching the application or executing a command, a welcome page will be displayed in the Detailed Information Section.
+Each Student card has four buttons, which are profile, homework, lessons, and exams. When a user clicks on any of the buttons, the corresponding information will be presented in the Detailed Information Section.
+#### Profile Page
+Upon clicking the Profile Button, the Detailed Information section will be refreshed and show the detailed particulars of the student, including the student's full name, phone number, address, and email.
+
+
+
+#### Homework Page
+
+Upon clicking the Profile Button, the Detailed Information section will be refreshed and show the detailed homework information of the student.
+
+It includes a homework list, showing all the homework information. The icon on the left of each homework represents its status, with the tick icon being `completed` and the cross icon being `pending`. It also has a pie chart which represents ratio between completed and pending homework.
+
+
+
+#### Lessons Page
+
+Upon clicking the Lessons Button, the Detailed Information section will be refreshed and show the detailed Lessons Information for the student.
+
+It includes a past lessons list, showing all the past lesson information and a upcoming lessons list, showing all the upcoming lessons.
+
+
+
+#### Exams Page
+
+Upon clicking the Exams Button, the Detailed Information section will be refreshed and show the detailed Exams Information for the student.
+
+It includes a past exams list, showing all the past exams information and all the upcoming exams list, showing all the upcoming exams.
+
+
+
+## Commands
+
+
+:information_source: **How to interpret the Command format:**
+
+* The terms in `UPPER_CASE` are placeholders need to replace with your n values. For example, in the command `add n/NAME`, `NAME` is a placeholder that can be substituted with a specific name, such as `add n/John Doe`.
+
+* Items with `…` after them can be used multiple times including zero times.
+ e.g. `[name/STUDENT_NAME]…` can be used as ` ` (i.e. 0 times), `name/John Doe`, `name/John Doe name/Jane Ho` etc.
+
+* Extraneous parameters for commands that do not take in parameters (such as `help`, `exit,` and `clear`) will be ignored.
+ e.g. if the command specifies `help 123`, it will be interpreted as `help`.
+
+* Unless otherwise specified, the order of prefixes does not matter.
+ e.g. if the command specifies `n/NAME ph/PHONE_NUMBER`, `ph/PHONE_NUMBER n/NAME` is also acceptable unless stated otherwise in a particular command.
### Create a new student profile
@@ -94,19 +152,24 @@ Creates a homework assignment with a deadline for a student
Format: `new-homework [name/STUDENT_NAME] [homework/HOMEWORK_NAME] [deadline/DEADLINE]`
* The `STUDENT_NAME` must be an existing student of the tutor.
+* The `DEADLINE` must be in the format given in the support date and time formats appendix.
+* The `DEADLINE` must be in the future.
Examples:
* `assign-homework name/John homework/listening comprehension ex1 deadline/02-12-2023-2359` adds the assignment `listening comprehension ex1` to the student named `John. The deadline is 02 Dec 2023 at 23:25.
+:exclamation: **Caution:** STUDENT_NAME, HOMEWORK_INDEX , and DEADLINE should all only appear at most once and should not be empty.
+
+
### View the Homework of Students
Displays a list of homework with the ability to filter by student name and homework status.
-Format: `view-homework [name/STUDENT_NAME] [status/STATUS]`
+Format: `view-homework [name/STUDENT_NAME]... [status/STATUS]`
-* By default, all homework will be displayed.
-* To view homework for a specific student, specify the name using `name/STUDENT_NAME`.
+* By default, all homework will be displayed, if no name or status parameter is provide.
+* To view homework for specific students, specify the name using `name/STUDENT_NAME`s.
* To view homework with a specific status, specify the status using `status/STATUS`.
* It is possible to filter by both student name and status simultaneously.
* The available status values are `completed` and `pending`.
@@ -114,9 +177,11 @@ Format: `view-homework [name/STUDENT_NAME] [status/STATUS]`
Examples:
* `view-homework` displays a list of all homework.
* `view-homework name/John` displays homework for a student named `John`.
-* `view-homework status/completed` displays all completed homework.
+* `view-homework status/completed` displays all completed homework from all students.
* `view-homework name/John status/pending` displays pending homework for a student named `John`.
+:exclamation: **Caution:** STATUS should only appear at most once and should not be empty. STUDENT_NAME can be zero or multiple but they all cannot be empty.
+
### Delete Homework from a Student
Deletes a homework assignment for a student.
@@ -132,6 +197,8 @@ Examples:
* `delete-homework name/John index/1` deletes the first homework assignment for the student named John.
* `delete-homework name/Susan index/3` deletes the third homework assignment for the student named Susan.
+:exclamation: **Caution:** STUDENT_NAME, and HOMEWORK_INDEX should all only appear at most once and should not be empty.
+
### Mark the Homework of a Student as Done
Marks homework of a student as done.
@@ -147,6 +214,8 @@ Examples:
* `mark-homework name/John index/1` marks the first homework assignment for the student named John.
* `mark-homework name/Susan index/3` marks the third homework assignment for the student named Susan.
+:exclamation: **Caution:** STUDENT_NAME, and HOMEWORK_INDEX should all only appear at most once and should not be empty.
+
### Unmark Homework of a Student as Undone
@@ -163,6 +232,7 @@ Examples:
* `unmark-homework name/John index/1`unmarks the first homework assignment for the student named John.
* `unmark-homework name/Susan index/3` unmarks the third homework assignment for the student named Susan.
+:exclamation: **Caution:** STUDENT_NAME, and HOMEWORK_INDEX should all only appear at most once and should not be empty.
### Update Homework of a Student
@@ -172,7 +242,9 @@ Format: `update-homework [name/STUDENT_NAME] [index/HOMEWORK_INDEX] [homework/HO
* The `STUDENT_NAME` must be an existing student of the tutor. Note that there can only be one student's name.
* The `HOMEWORK_INDEX` must be the index of an existing homework assignment for the specified student.
-* At least one homework name and deadline must be in the command.
+* The `DEADLINE` must be in the format given in the support date and time formats appendix.
+* The `DEADLINE` must be in the future.
+* At least one of homework name and deadline must be in the command. They cannot be absent concurrently.
* A success message will be displayed if the homework assignment is successfully deleted. Otherwise, an error message will be displayed.
Examples:
@@ -181,24 +253,25 @@ Examples:
* `updates-homework name/Susan index/3 deadline/2023-05-12 23:59` updates the deadline of homework 3 of Susan to be `2023-05-12 23:59`.
* `updates-homework name/Donald index/2 homework/Math Assignment 1 deadline/2023-05-12 23:59` updates the name of homework 2 of Donald to be `Math Assignment 1` and updates the deadline of homework 2 of Donald to be `2023-05-12 23:59`.
+:exclamation: **Caution:** STUDENT_NAME, HOMEWORK_INDEX , and DEADLINE should all only appear at most once and should not be empty.
-### Create a New Lesson for a Student
+### Create a New Lesson Plan for the Upcoming Lesson
-Creates a new lesson for a given student, with a lesson title, start time, and end time.
+Creates a new lesson for a given student, with a lesson title and time.
-Format: `new-lesson [name/STUDENT_NAME_1] (optional)[name/STUDENT_NAME_2] [lesson/LESSON_TITLE] [start/START_TIME] [end/END_TIME]`
+Format: `new-lesson [name/STUDENT_NAME] [lesson/LESSON_TITLE] [start/START_TIME] [end/END_TIME]`
-* All fields, except for additional studetn names, are mandatory.
+* All fields are mandatory.
Examples:
-`new-lesson name/John Doe lesson/The Water Cycle start/25-03-23-1300 end/25-03-23-1500` creates a new lesson for the student named `John Doe` with the lesson title `The Water Cycle` starting at `25 Mar 2023 13:00` and ending at `25 Mar 2023 15:00`.
+`new-lesson name/John Doe lesson/The Water Cycle start/25-03-23-1300 end/25-03-23-1500`
-### View Lessons
+### View Lessons History
-Displays the lessons for a given student/all students, filtered by subject and/or student name and/or date and/or whether the lesson has been completed
+Displays the lesson history for a given student/all students.
-Format: `view-lesson (optional)[name/STUDENT_NAME] (optional)[subject/SUBJECT] (optional)[date/DATE] (optional)[done/DONE]`
+Format: `view-lesson [name/STUDENT_NAME]`
* Displays the lesson history for all the tutor’s students if no student name is specified.
* Displays the lesson history for a specific student if a student's name is specified with the `name/` prefix.
@@ -206,31 +279,7 @@ Format: `view-lesson (optional)[name/STUDENT_NAME] (optional)[subject/SUBJECT] (
Examples:
* `view-lesson` Displays the lesson history for all the tutor’s students.
-* `view-lesson name/John subject/Math date/2023-05-03` Displays the lessons for student John, which are of subject Math, on the day 2023-05-03.
-* `view-lesson done/done` Displays all lessons that have been completed
-
-### Remove a Lesson
-Deletes a lesson for a given student.
-
-Format: `delete-lesson [name/STUDENT_NAME] [index/LESSON_INDEX]`
-
-* The `STUDENT_NAME` must be an existing student of the tutor. Note that there can only be one student's name.
-* Deletes the lesson at the specified `LESSON_INDEX`.
-
-Example:
-* `delete-lesson name/John Doe index/1` deletes the first lesson for the student named John Doe.
-
-### Update a Lesson
-Updates a lesson for a given student. This includes the lesson title, start time, and end time.
-
-Format: `update-lesson (optional)[name/STUDENT_NAME] (optional)[lesson/LESSON_TITLE] (optional)[start/START_TIME] (optional)[end/END_TIME]`
-
-* The `STUDENT_NAME` must be an existing student of the tutor. Note that there can only be one student's name.
-* Updates the specified Lesson with the new information (lesson name and/or start time and/or end time).
-* At least one of the fields must be specified.
-
-Example:
-* `update-lesson name/John Doe lesson/The Water Cycle start/25-03-23-1300 end/25-03-23-1500` updates the lesson for John Doe with the new information.
+* `view-lesson name/John` Displays the lesson history for the student named John. If two students have the same name, then ask which one to show.
### Add an Exam to be tracked: `add-exam`
@@ -248,8 +297,8 @@ Format: `new-exam [name/STUDENT_NAME_1] (optional)[name/STUDENT_NAME_2].. [exam/
See `calculate-grade` below:
Examples:
-* `new-exam name/John Doe exam/Math MYE start/2023-05-21 12:00 end/2023-05-21 14:00` creates an exam named `Math MYE` for the student named John Doe, which starts at 12:00 on 21 May 2023 and ends at 14:00 on 21 May 2023.
-* `new-exam name/John Doe name/Faye Doe exam/Science MYE start/2023-05-22 12:00 end/2023-05-22 14:00` creates an exam named `Science MYE` for the students named John Doe and Faye Doe, which starts at 12:00 on 22 May 2023 and ends at 14:00 on 22 May 2023.
+* `new-exam name/John Doe exam/Math MYE start/2023-05-21 12:00 end/2023-05-21 14:00`
+* `new-exam name/John Doe name/Faye Doe exam/Science MYE start/2023-05-22 12:00 end/2023-05-22 14:00`
### Remove an exam: `delete-exam`
@@ -261,8 +310,8 @@ Format: `delete-exam [name/STUDENT_NAME_1] (optional)[name/STUDENT_NAME_2].. [in
student.
Examples:
-* `delete-exam name/John Doe index/1` deletes the first exam for the student named John Doe.
-* `delete-exam name/John Doe name/Faye Doe index/1` deletes the first exam for the students named John Doe and Faye Doe.
+* `delete-exam name/John Doe index/1`
+* `delete-exam name/John Doe name/Faye Doe index/1`
### View exams tracked by TutorPro: `view-exam`
@@ -291,9 +340,7 @@ Format: `update-exam [name/STUDENT_NAME] [index/INDEX] (optional)[exam/NEW_EXAM_
student.
Examples:
-* `update-exam name/John index/1 grade/20/25` updates the grade of the first exam for the student named John Doe to 20/25.
-* `update-exam name/John index/1 exam/Science MYE` updates the name of the first exam for the student named John Doe to Science MYE.
-* `update-exam name/John index/1 start/2023-05-21 12:00 end/2023-05-21 14:00` updates the start and end time of the first exam for the student named John Doe to 12:00 on 21 May 2023 and ends at 14:00 on 21 May 2023.
+* `update-exam name/John index/1 grade/20/25`
### Calculate grade: `calculate-grade`
@@ -361,7 +408,7 @@ Examples:
| `subject/` | Subject | Subject of a lesson | `subject/Mathematics` |
| `done/` | Done | indicates if a lesson/exam is past the current time | `done/done` |
-### Supported date-time formats:
+### Supported date-time formats
* `MMM dd yyyy HHmm`
* `MMM dd yyyy HH:mm`
* `yyyy-MM-dd'T'HH:mm `
diff --git a/docs/images/Exams.jpg b/docs/images/Exams.jpg
new file mode 100644
index 00000000000..4a009d9b147
Binary files /dev/null and b/docs/images/Exams.jpg differ
diff --git a/docs/images/GUI.jpg b/docs/images/GUI.jpg
new file mode 100644
index 00000000000..91f17cd5890
Binary files /dev/null and b/docs/images/GUI.jpg differ
diff --git a/docs/images/Homework.jpg b/docs/images/Homework.jpg
new file mode 100644
index 00000000000..1bb60cc5c54
Binary files /dev/null and b/docs/images/Homework.jpg differ
diff --git a/docs/images/Lessons.jpg b/docs/images/Lessons.jpg
new file mode 100644
index 00000000000..785c7310787
Binary files /dev/null and b/docs/images/Lessons.jpg differ
diff --git a/docs/images/Profile.jpg b/docs/images/Profile.jpg
new file mode 100644
index 00000000000..2d6ba191561
Binary files /dev/null and b/docs/images/Profile.jpg differ
diff --git a/src/main/java/seedu/address/logic/commands/exceptions/CommandException.java b/src/main/java/seedu/address/logic/commands/exceptions/CommandException.java
index a16bd14f2cd..f44c0c19186 100644
--- a/src/main/java/seedu/address/logic/commands/exceptions/CommandException.java
+++ b/src/main/java/seedu/address/logic/commands/exceptions/CommandException.java
@@ -1,5 +1,7 @@
package seedu.address.logic.commands.exceptions;
+import seedu.address.logic.commands.Command;
+
/**
* Represents an error which occurs during execution of a {@link Command}.
*/
diff --git a/src/main/java/seedu/address/ui/exam/FilledExamsContent.java b/src/main/java/seedu/address/ui/exam/FilledExamsContent.java
index f66f6c765db..d4ddcf58332 100644
--- a/src/main/java/seedu/address/ui/exam/FilledExamsContent.java
+++ b/src/main/java/seedu/address/ui/exam/FilledExamsContent.java
@@ -44,7 +44,7 @@ public FilledExamsContent(Student student) {
studentName = student.getName();
name.setText(String.format("First Name: %s", student.getName().getFirstName()));
- pastExamsListName.setText("All Exams: ");
+ pastExamsListName.setText(PAST_EXAMS_LIST_NAME);
// Set the past exams list panel to display the past exams of the student
ObservableList pastExamsList = student.getPastExamsList();
diff --git a/src/main/resources/view/ProfileContent.fxml b/src/main/resources/view/ProfileContent.fxml
index 8292aee71b4..96df10ed1e1 100644
--- a/src/main/resources/view/ProfileContent.fxml
+++ b/src/main/resources/view/ProfileContent.fxml
@@ -1,6 +1,7 @@
+
@@ -9,12 +10,16 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/view/stylesheet/DetailedInfoRegion.css b/src/main/resources/view/stylesheet/DetailedInfoRegion.css
index 501cd6c0028..70f82f2350b 100644
--- a/src/main/resources/view/stylesheet/DetailedInfoRegion.css
+++ b/src/main/resources/view/stylesheet/DetailedInfoRegion.css
@@ -18,7 +18,7 @@
}
#welcomeMessage {
- -fx-font-size: 12pt;
+ -fx-font-size: 13pt;
-fx-font-family: "Comic Sans MS";
-fx-text-fill: #1d1d1d;
}
@@ -52,3 +52,10 @@
#homeworkPieChart.default-color0.chart-pie { -fx-pie-color: #ffd700; }
#homeworkPieChart.default-color1.chart-pie { -fx-pie-color: #ffa500; }
+
+#detailedContentScroll {
+ -fx-background-color: #f5f5f5;
+ -fx-border-width: 2;
+ -fx-border-color: black;
+ -fx-border-radius: 5;
+}