Skip to content
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

Update UG with 2101 stuff and new commands #65

Merged
merged 1 commit into from
Apr 4, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
206 changes: 142 additions & 64 deletions docs/UserGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,89 +3,127 @@ layout: page
title: User Guide
---

ModContacts is a desktop app for keeping track of your peers and the modules that they take so that you can keep in contact with them amidst your journey in NUS!
Hello NUS School of Computing (SoC) students! Welcome to the User Guide for **ModContacts**!

* Table of Contents
**TIRED** of constantly needing to remember what your NUS friends are up to?
**ModContacts** is a desktop app for keeping track of your peers and the modules that they take so that you can keep in
contact with them amidst your journey in NUS!

# Table of Contents
{:toc}

--------------------------------------------------------------------------------------------------------------------

## Quick start
# About ModContacts
## Who is ModContacts for?
ModContacts tailored specifically for:
1. NUS School of Computing students,
2. people who want to keep in touch with their NUS friends easily,
3. people who desire academic success by utilising their social connections,
4. people quick on the keyboard, tired of moving constantly between the mouse and keyboard

1. Ensure you have Java `11` or above installed in your Computer.
## What does ModContacts do?
ModContacts is designed to help School of Computing students:
- Effortlessly keep track of all their friend's modules and schedules
- Our one-stop solution to keeping track of our friend's timetables!
- Find out common timings when everyone is free to meet
- Say goodbye to painting when2meets!
- Discover who is taking the same module as you
- No more constantly asking: "hey bro, what mods are you doing this sem?"

1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).
## What is the Purpose of this User Guide?
Some of you are definitely thinking: _What is the point of this User Guide?_

1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.
The ModContacts User Guide serves as a quick, efficient, all-in-one manual for both new and experienced users.

1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.<br>
A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.<br>
![Ui](images/Ui.png)
### New Users

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.<br>
Some example commands you can try:
Head to the [Getting Started](#Getting-Started) section and follow the guide to get ModContacts up and running!

* `list` : Lists all contacts.
Then check out some [Features](#Features) ok idk waht else to write here

* `add n/John Doe p/98765432 e/[email protected] a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.
### Experienced Users

* `delete 3` : Deletes the 3rd contact shown in the current list.
Head over to the summary section idk havent done this yet

* `clear` : Deletes all contacts.
## How should I use this guide?

* `exit` : Exits the app.
includes information on how users can effectively navigate the document, clarifies the meaning of icons and formatting used, and provides guidance on understanding features, functions, or commands.

1. Refer to the [Features](#features) below for details of each command.

--------------------------------------------------------------------------------------------------------------------
[Back to Table of Contents](#Table-of-Contents)

---

# Getting Started

## Prerequisites

For ModContacts to work, you need to have Java `11` or above installed on your computer!

Follow this guide for your OS of choice:
- [Windows](https://docs.oracle.com/en/java/javase/11/install/installation-jdk-microsoft-windows-platforms.html#GUID-A7E27B90-A28D-4237-9383-A58B416071CA)
- [MacOS](https://docs.oracle.com/en/java/javase/11/install/installation-jdk-macos.html#GUID-2FE451B0-9572-4E38-A1A5-568B77B146DE)
- [Linux](https://docs.oracle.com/en/java/javase/11/install/installation-jdk-linux-platforms.html#GUID-737A84E4-2EFF-4D38-8E60-3E29D1B884B8)

## Quick start

1. Ensure you have Java `11` or above installed in your computer from the [Prerequisites](#Prerequisites) Section.

2. Download the latest `modcontacts.jar` from [here](https://github.com/AY2324S2-CS2103T-W12-2/tp/releases).

# Terms
Throughout this guide, we'll be using new terms & concepts to introduce you to the world of ModContacts!
3. Simply double-click on `modcontacts.jar` within your file explorer and a GUI similar to what is shown below should appear!
![Ui](images/Ui.png)

## Usage

## Friends, what are they?
Here we will probably have images of modcontacts showing what the command box is, where the data is shown,
images ideally should have labels and what not. Show a sample command usage, maybe add a student. IMAGES.

### Friends, what are they?
A `Friend` is a person that you want to keep contact with in school! This is pretty intuitive as there is no distinction between the term that we use in ModContacts and the term that is used in real life.
## Modules, what are they?
### Modules, what are they?
A `Module` refers to the modules that you take during a semester in NUS. They have **Module Codes** (e.g **MA2001** Linear Algebra I) to identify them.


## So what now?
### So what now?
Since you know what a `Module` and a `Friend` is, you are one step closer to being a master at using ModContacts to add your `Friend`, and also add a `Module` to your `Friend`!

Let's get down to how we can write commands to add them!

# What is a Command?
### What is a Command?

A command is what you type into the app to execute your intentions (Adding a `Friend` or a `Module`)!

Here are some examples of commands that you'd be using:

* `add n/Aditya e/[email protected]`
* `add n/Aditya p/98765432`

* `add_module i/1 m/MA2001`

* `delete_module i/2 m/CS1231S`

You may notice a pattern here, and here is a rough breakdown of what a command composes of. Let's use the first example!
```
add n/Aditya m/[email protected]
add n/Aditya p/98765432
```
Our command composes of:

1. A Command Word (`add`)

This is the first word of your command that carries the intention of your action! Examples would be using `add` when you want to add a `Friend`, `add_module` when you want to add a `Module` to your `Friend`, so on and so forth!
This is the first word of your command that carries the intention of your action! Examples would be using `add` when you want to add a `Friend`, `add_module` when you want to add a `Module` to your `Friend`, so on and so forth!

2. Prefixes (`n/Aditya m/[email protected]`)
2. Prefixes (`n/Aditya p/98765432`)

Prefixes are additional information that you add to your command. For example, when adding a friend you would want to add their **name** and their **email**.
Prefixes are additional information that you add to your command. For example, when adding a friend you would want to add their **name** and their **email**.

We can use Prefixes to accomplish this! They are usually marked with an unique identifier (`n/` for **name** and `m/` for **email**). You can then add your values after the identifiers! (`Aditya` is the value supplied for the **name** when you type `n/Aditya`).
We can use Prefixes to accomplish this! They are usually marked with an unique identifier (`n/` for **name** and `p/` for **phone number**). You can then add your values after the identifiers! (`Aditya` is the value supplied for the **name** when you type `n/Aditya`).

**(P.S)** Different commands have different prefixes! Check out the **[Features](#Features)** section to see what prefixes exist for each command.
**(P.S)** Different commands have different prefixes! Check out the **[Features](#Features)** section to see what prefixes exist for each command.


### Summary
In summary, what this command (`add n/Aditya e/[email protected]`) does is that it adds a `Friend` whose name is `Aditya` and whose email is `[email protected]`.
In summary, what this command (`add n/Aditya p/98765432`) does is that it adds a `Friend` whose name is `Aditya` and whose email is `[email protected]`.

<div markdown="block" class="alert alert-info">

Expand All @@ -109,17 +147,27 @@ In summary, what this command (`add n/Aditya e/[email protected]`) does is that
* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.
</div>

Refer to the [Features](#features) below for details of each command.

[Back to Table of Contents](#Table-of-Contents)

--------------------------------------------------------------------------------------------------------------------

# Features
### Viewing help : `help`

Shows a message explaning how to access the help page.
[//]: # (### Viewing help : `help`)

[//]: # ()
[//]: # (Shows a message explaning how to access the help page.)

![help message](images/helpMessage.png)
[//]: # ()
[//]: # (![help message]&#40;images/helpMessage.png&#41;)

Format: `help`
[//]: # ()
[//]: # (Format: `help`)


### Adding a student: `add`
## Adding a student: `add`

Adds a student to the address book.

Expand All @@ -133,13 +181,13 @@ Examples:
* `add n/John Doe p/98765432 e/[email protected] a/John street, block 123, #01-01`
* `add n/Betsy Crowe t/friend e/[email protected] a/Newgate Prison p/1234567 t/criminal`

### Listing all students : `list`
## Listing all students : `list`

Shows a list of all students in the address book.

Format: `list`

### Editing a student : `edit`
## Editing a student : `edit`

Edits an existing student in the address book.

Expand All @@ -156,7 +204,7 @@ Examples:
* `edit 1 p/91234567 e/[email protected]` Edits the phone number and email address of the 1st student to be `91234567` and `[email protected]` respectively.
* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd student to be `Betsy Crower` and clears all existing tags.

### Adding a Module: `add_module`
## Adding a Module: `add_module`

Adds a module to your friend in the address book.

Expand All @@ -169,7 +217,7 @@ Format: `add_module i/INDEX m/MODULE_CODE`
If you are unsure of a module code, you can use <a href="https://www.nusmods.com">NUS Mods</a> to find it!
</div>

### Deleting a Module: `delete_module`
## Deleting a Module: `delete_module`

Deletes a module from your friend in the address book.

Expand All @@ -178,12 +226,31 @@ Format: `delete_module i/INDEX m/MODULE_CODE`
* The `INDEX` refers to the index number shown in the displayed student list. The index must be a positive integer 1, 2, 3, ...
* The `MODULE_CODE` refers to the module code of the module you intend to delete

## Adding a Module Timing: `add_timing`

Adds a module's class timing to your friend in the address book.

Format: `add_timing i/INDEX m/MODULE_CODE d/DAY st/START_TIME et/END_TIME`

* The `INDEX` refers to the index number shown in the displayed student list. The index must be a positive integer 1, 2, 3, ...
* The `MODULE_CODE` refers to the module code of the module you intend to add
* The `DAY` refers to the day of the class, i.e. Mon, Tue, Wed, Thu, Fri, Sat, Sun
* The `START_TIME` refers to the start time of the class i.e. 0800, 1230, 1845, 2300
* The `END_TIME` refers to the end time of the class i.e. 0900, 1430, 2045, 2359

## Deleting a Module Timing: `delete_timing`

Deletes a module's class timing from your friend in the address book.

Format: `delete_timing i/INDEX m/MODULE_CODE d/DAY st/START_TIME`

* The `INDEX` refers to the index number shown in the displayed student list. The index must be a positive integer 1, 2, 3, ...
* The `MODULE_CODE` refers to the module code of the module you intend to add
* The `DAY` refers to the day of the class, i.e. Mon, Tue, Wed, Thu, Fri, Sat, Sun
* The `START_TIME` refers to the start time of the class i.e. 0800, 1230, 1845, 2300


### Locating students by name: `find`
## Locating students by name: `find`

Finds students whose names contain any of the given keywords.

Expand All @@ -196,12 +263,29 @@ Format: `find KEYWORD [MORE_KEYWORDS]`
* Students matching at least one keyword will be returned (i.e. `OR` search).
e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`

Examples:
* `find John` returns `john` and `John Doe`
* `find alex david` returns `Alex Yeoh`, `David Li`<br>
![result for 'find alex david'](images/findAlexDavidResult.png)

### Deleting a student : `delete`
## Find students who are free to meet: `find_free_time`

Finds students who are free at this given time period.

Format: `find_free_time d/DAY st/START_TIME et/END_TIME`

* The `DAY` refers to the day of the class, i.e. Mon, Tue, Wed, Thu, Fri, Sat, Sun
* The `START_TIME` refers to the start time of the class i.e. 0800, 1230, 1845, 2300
* The `END_TIME` refers to the end time of the class i.e. 0900, 1430, 2045, 2359


## Learn more about modules: `list_modules`

Gets more information on the modules in ModContacts.

Format: `list_modules m/MODULE_CODE`

* The `MODULE_CODE` refers to the module code of the module you intend to add



## Deleting a student : `delete`

Deletes the specified student from the address book.

Expand All @@ -215,42 +299,36 @@ Examples:
* `list` followed by `delete 2` deletes the 2nd student in the address book.
* `find Betsy` followed by `delete 1` deletes the 1st student in the results of the `find` command.

### Clearing all entries : `clear`
## Clearing all entries : `clear`

Clears all entries from the address book.

Format: `clear`

### Exiting the program : `exit`
## Exiting the program : `exit`

Exits the program.

Format: `exit`

### Saving the data
--------------------------------------------------------------------------------------------------------------------

AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
## FAQ

### Editing the data file
**Q**: How do I transfer my data to another Computer?<br>
**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.

AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.
**Q**: How do I know if my data is saved?<br>
**A**: AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.

**Q**: Can I manually edit the data file?<br>
**A**: AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.

<div markdown="span" class="alert alert-warning">:exclamation: **Caution:**
If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.<br>
Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.
</div>

### Archiving data files `[coming in v2.0]`

_Details coming soon ..._

--------------------------------------------------------------------------------------------------------------------

## FAQ

**Q**: How do I transfer my data to another Computer?<br>
**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.

--------------------------------------------------------------------------------------------------------------------

## Known issues
Expand Down
Loading