Skip to content

Commit

Permalink
Merge pull request #171 from tuandingwei/master
Browse files Browse the repository at this point in the history
Update User Guide and Developer Guide
  • Loading branch information
victorvic54 committed Nov 11, 2019
2 parents a334fa0 + 2d8090c commit eaaa1f7
Show file tree
Hide file tree
Showing 100 changed files with 984 additions and 1,707 deletions.
6 changes: 3 additions & 3 deletions README.adoc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
= Modulo
= Modulo image:modulo.png[align="center", width="50"]
ifdef::env-github,env-browser[:relfileprefix: docs/]

https://travis-ci.org/AY1920S1-CS2103-T16-2/main[image:https://travis-ci.org/AY1920S1-CS2103-T16-2/main.svg?branch=master[Build Status]]
Expand All @@ -12,11 +12,11 @@ ifndef::env-github[]
image::images/Ui.png[width="800"]
endif::[]

* _Modulo_ is a desktop application developed to help National University of Singapore (NUS) students manage their studies and expenditures.
* _Modulo_ Modulo is an all-in-one student life application which is mainly targeted to NUS students. The app features four different functions which consists of weekly organizer, financial record system, quiz revision, and grades tracker.
* With _Modulo_, you no longer need to use multiple different applications to organise your student life.
Things like scheduling your timetable, recording down the tasks and events you need to do and attend, reviewing your academic progress,
creating your own question bank and keeping track of your expenses; _Modulo_ will handle it all.
* The application has a GUI (Graphical User Interface) but most user interactions happen using a CLI (Command Line Interface).
* The application has a modern and streamlined GUI (Graphical User Interface) and most user interactions happen using a CLI (Command Line Interface).
== Site Map

Expand Down
87 changes: 77 additions & 10 deletions docs/DeveloperGuide.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ The features in _Modulo_ are quite distinct and having minimal overlaps, each fe
[discrete]
==== How the architecture components interact with each other

The _Sequence Diagram_ below shows how the components interact with each other for the scenario where the user issues the command `delete 1` when in the feature _Module_.
The _Sequence Diagram_ below shows how the components interact with each other for the scenario where the user issues the command `delete CS2103` when in the feature _Module_.

.Component interactions for `delete 1` command in _Cap_ feature
image::ArchitectureSequenceDiagram.png[]
Expand Down Expand Up @@ -477,6 +477,75 @@ image::AddNewEntryActivityDiagram.png[width=60%]
** Cons: Will use more memory (now storing the list of entries). Difficult when an entry is delete or modified, have to delete and modify entry accordingly in the list of entries stored under the budget.
// end::budget[]

//tag::grades tracker[]
=== Grades Tracker

==== Implementation

The following activity diagram displays the sequence of events after the user inputs to add a new module.

.Class Diagram of Module
image::CapActivityDiagram.png[]

For the user to add new modules to the Modulo Grades Tracker, the `Module` has to be designed to satisfy the requirements of a module and the needs of the user.

* Each `Module` consists of `ModuleCode`, `Title`, `Semester`, `Credit`, `Grade`.
* All fields in `Module` are unique.
* Each class has their respective getter methods and validity-check method.

.Class Diagram of Module
image::ModuleClassDiagram.png[]

==== Implementation of Module commands

Module class supports multiple commands. They include:

* `AddCommand` - Adds a module to the Grades Tracker.
* `DeleteCommand` - Removes a module from the Grades Tracker by specifying the module code.
* `FindCommand` - Find and returns any modules with `ModuleCode` and/or `Title` that matches the keyword specified by the user.
* `SortCommand` - Sorts the modules in chronological order based on the `Semester` the module was taken.
* `ListCommand` - List all the modules. Often required after the find command.

.Sequence Diagram of DeleteCommand
image::DeleteSequenceDiagram.png[]

[NOTE]
The lifelines for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifelines reaches the end of diagram.

After a successful execution, the module with the specified module code will be deleted from Modulo Grades Tracker.

==== Design Consideration

All fields should not be have special characters or left blank as the details are important to the implementation and the user experience.

The class diagram below gives an overview of the Module class.


The search for the matching module code is implemented with a linear search. With 70 modules in Modulo, the linear search is still responsive and there were not observable lags.

*Alternative*

An alternative would be to use a search algorithm that comprises a Hash set and linear search.

.Considerations when designing the Module class
[width="80%" cols="^3, ^10" options="header"]
|=======
| Field | Validity
| ModuleCode | Module code should contain a set of 4 integers and no excessive characters. The student is provided with the liberty to input any module code in consideration that new modules and faculties may be created in the future.
| Semester | Semester should contain valid academic years and semester period. The academic year stated can only be +/-5 years than the current year, assuming that students are able to graduate in at most five years. While the semester period allows input from 1 to 4.
| Title | The title of the module is left for the user to define. This is to take into account that there might be new modules released in teh future hence the user needs to have the ability to customise the title. It is valid as long as it does not have special characters.
| Credit | As stated by NUS, the range of modular credit ranges from 2 to 23.
| Grade | Only NUS approved grades are allowed i.e. A+, A, A-, B+, B, B-, C+, C, D+, D and F
|=======
//end::GradesTracker[]

== UI

The User Interface features a sleak and modern interface. The primary concept of the user interface includes simplicity, rounded corners, shadow-like back panes and trendy fonts. We have greatly enhanced the UI from the original addressbook. Borders are removed to ensure a smooth flow of content, delivering a "less is more" modern concept to enhance the user experience.

The quiz feature remains to have a dark theme as the dark theme doesn't harm the eyes of the user. It uses a more neutral tone to improve the productivity of the user.


== Documentation

Refer to the guide <<Documentation#, here>>.
Expand Down Expand Up @@ -510,11 +579,9 @@ Priorities: High (must have) - `* * \*`, Medium (nice to have) - `* \*`, Low (un
[width="59%",cols="22%,<23%,<25%,<30%",options="header",]
|=======================================================================
|Priority |As a ... |I want to ... |So that I can...
|`* * *` |university student |add my modules by specifying a specific module code or title |track the modules I am taking this semester
|`* * *` |busy and motivated university student |add my modules by specifying a specific module code or title |track the modules the student am taking this semester

|`* * *` |student |view details, content, and requirements of each modules |comprehensively come to a decision on which module to take in the upcoming semester

|`* * *` |busy student |view my today's schedule |
|`* * *` |busy student |view my schedule for today |

|`* * *` |busy student |know the deadlines for my tasks |plan my schedule

Expand All @@ -530,15 +597,15 @@ Priorities: High (must have) - `* * \*`, Medium (nice to have) - `* \*`, Low (un

|`* * *` | cash-strapped student | set a budget for the month | limit my spending

|`* *` |student concerned with my CAP |find out what grades I should get in the current semester |pull my CAP up to the next degree classification

|`* *` |student |view details of modules I have taken in previous semesters |see my progress
|`* * *` |busy and motivated university student |add my modules by specifying a specific module code or title |track the grades of the modules that the user has taken

|`* *` |graduating student |see what remaining modules I need to take in order to fulfill my graduation requirements |plan my semester
|`* * *` |student concerned with his/her CAP |find out the current CAP and total MCs taken |display CAP and total MCs with degree classification

|`* *` |person who often make mistakes |undo my previous actions |

|`* *` |new user |see how many marks I have obtained for a module so far |review my progress
|`* *` |Busy and organised student |view the modules that have taken in chronological order |display the modules in chronological order of their semesters taken

|`* *` |Curious and analytical student |view the the overall grades make up |display grades in an analytical format to view the different portion of grades that make up the CAP

|`* *` |busy student| refer and use the predictive text |input a command with great ease and less time

Expand Down
68 changes: 48 additions & 20 deletions docs/UserGuide.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,17 @@ By: `Team T16-2` Since: `September 2019` Licence: `MIT`
// tag::intro[]
== Introduction

Modulo is a desktop application helping National University of Singapore (NUS) students to audit their academics, finances and schedule their time as they try their best to survive yet another semester of college. Those who prefer to work with a Command Line Interface (CLI) might find using Modulo to be more straightforward than the usual Graphical User Interface (GUI) applications. The application has the visual benefits of a GUI but stands strongly rooted in command line usage. Modulo does not require an internet connection to run so there’s no worry when the school wifi goes MIA yet again. The only time you need to be connected is at the start, when downloading the application. Look to <<Quick Start>> to find out how to get started on Modulo!
Welcome to the User Guide for Modulo!

Modulo is an all-in-one student life application which is mainly targeted to NUS students. The app features four different functions which consists of weekly organizer, financial record system, quiz revision, and grades tracker.

Those who prefer to work with a Command Line Interface (CLI) might find using Modulo to be more straightforward than the usual Graphical User Interface (GUI) applications. The application has the visual benefits of a GUI but stands strongly rooted in command line usage. Modulo does not require an internet connection to run so there’s no worry when the school wifi goes MIA yet again. The only time you need to be connected is at the start, when downloading the application. Look to <<Quick Start>> to find out how to get started on Modulo!
// end::intro[]

== Quick Start

. Make sure that `Java 11` or above is installed in your computer. Otherwise, you can download Java 11 https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html[here].
* Enter the follow command in Command Prompt for Windows or Terminal on Mac to check your current version of Java: `java --version`
* Enter the follow command in Command Prompt for Windows or Terminal on Mac to check your current version of Java: `java --version`
. Download the latest `modulo.jar` here.
. Copy the `.jar` file to a folder you wish to set as your working directory for the application.
. Double-click the file to start Modulo. If the GUI does not appear in a few seconds, please try running `java -jar modulo.jar` in your command prompt or terminal.
Expand Down Expand Up @@ -59,13 +63,19 @@ image::Ui.png[width="790"]
There are 4 features in _Modulo_: Calendar, Cap (i.e. Modules), Quiz and Finance. +

Format: `switch FEATURE_NAME`
Example: `switch quiz`

Examples: `switch quiz`, `switch calandar`, `switch cap`, `switch finance`.

==== Exiting the program

Exits the program.
Format: `exit`

==== To seek help

Brings up a link that leads to the user guide online. Thus, internet connection is required.
Format: `help`

//tag::calendar[]
=== Calendar

Expand Down Expand Up @@ -149,37 +159,50 @@ Delete all all `ToDoTask` and `ModuleTask` from all weeks.

Format: `clear`


//end::calendar[]

//tag::grades1[]

=== Grades Tracker

To enter the Module section please enter the command: `switch cap`

.Quick Reference sheet
[width="80%" cols="^3,^2, 10" options="header"]
[width="90%" cols="^3,^8, 10" options="header"]
|=======
|Available Commands | Prefixes / Input required | Use
| add | <m> MODULE_CODE, <t>TITLE, <s> SEMESTER, <c> CREDIT <g> GRADE | Adds a new module.
| delete | MODULE_CODE | Deletes a specific module.
| list | | List all the modules, often required after the find command.
| find | KEYWORD | Find a specific keyword within module code and/or module description.
| sort | | Display the modules in order of their semesters and academic years taken.
| clear | | clear all existing modules.
| clear | | Clear all existing modules.
|=======

==== Manually add module to record : `add`
The user can add new modules into the grade tracker.

The fields of a module consist of: +
- `MODULE_CODE` The module code of the module. The student is provided with the liberty to input any module code in consideration that new modules may be created in the future. Prefix: `<m>` +
- `TITLE` The title of the module. The student is provided with the liberty to input any module code in consideration that new modules may be created in the future. Prefix: `<t>`. +
- `SEMESTER` Semester includes 2 components i.e. the academic year and semester period. The academic year and semester that the module was taken in / provided. Modulo only takes in +/- 5 years for academic year, assuming that students are able to graduate within 5 years. The semester period field takes in 1, 2, 3, 4. Semesters 3 and 4 indicates special term 1 and 2 respectively. Prefix: `<s>`. +
- `CREDIT` Modular credit for the module. Module credit only accepts 2 to 23 credits. Prefix: `<c>`. +
- `GRADE` Grades for the attained for the module. Only permitted http://www.nus.edu.sg/nusbulletin/yong-siew-toh-conservatory-of-music/undergraduate-education/degree-requirements/grading-system-and-regulations/[grades] are accepted. SU is currently not supported. Prefix: `<g>`.
- `MODULE_CODE` The module code of the module. e.g. CS2103 Prefix: `<m>` +
- `TITLE` The title of the module. E.g. Software Engineering Prefix: `<t>`. +
- `SEMESTER` Semester includes 2 components that are seperated by a 'S' character. i.e. the academic year and semester period. E.g. 1920S1 Prefix: `<s>`. +
- `CREDIT` Modular credit for the module. Module credit only accepts 2 to 23 credits. E.g. 4 Prefix: `<c>`. +
- `GRADE` Grades for the attained for the module. Only permitted http://www.nus.edu.sg/nusbulletin/yong-siew-toh-conservatory-of-music/undergraduate-education/degree-requirements/grading-system-and-regulations/[grades] are accepted. E.g. A Prefix: `<g>`.

.Input constraints for Add command
[width="80%" cols="^3, ^10" options="header"]
|=======
| Field | Validity
| ModuleCode | Module code should contain a set of 4 integers and no excessive characters.
| Semester | Semester should contain valid academic years and semester period. The academic year stated can only be +/-5 years than the current year. While the semester period allows input from 1 to 4.
| Title | The title of the module is left for you to define. It is valid as long as it does not have special characters.
| Credit | As stated by NUS, the range of modular credit ranges from 2 to 23.
| Grade | Only NUS approved grades are allowed i.e. A+, A, A-, B+, B, B-, C+, C, D+, D and F
|=======


.Semester Period Classifications
[width="80%" options="header" cols="^1,^3"]
[width="60%" options="header" cols="^1,^4"]
|=======
|Input| Semester Period
| 1 | Semester 1
Expand All @@ -189,7 +212,7 @@ The fields of a module consist of: +
|=======

Format: `add MODULE_CODE MODULE_TITLE MODULE_YEAR_AND_SEMESTER MODULAR_CREDIT GRADE`
e.g. `add <m>CS2103 <t>Software Engineering <s>1920S1 <c>4 <g>A`, `add <m>ACC1002 <t>Financial Accounting <s>1920S1 <c>4 <g>A`
E.g. `add <m>CS2103 <t>Software Engineering <s>1920S1 <c>4 <g>A`, `add <m>ACC1002 <t>Financial Accounting <s>1920S1 <c>4 <g>A`

.List of sample commands
[width="80%" cols="^3, 10" options="header"]
Expand All @@ -210,10 +233,10 @@ e.g. `delete CS2103`

==== Listing all tasks : `list`

Shows the list of all modules in the grades tracker. +
Shows the list of all modules in the Grades Tracker. +
Format: `list`

==== Listing all tasks : `sort`
==== Sort all tasks in chronological order : `sort`

Sorts the list of modules in chronological order, the modules taken earlier to the modules taken later. The determination is based on the academic year then the semesters. +
Format: `sort`
Expand All @@ -224,20 +247,22 @@ Finds the module with the matching module code or module description.
The enhanced search is case insensitive and matches any keyword in the module code or description e.g. `cs1010s` matches `CS1010S`

The search method adopts the inclusive OR search method that returns any modules with the keyword.
e.g. searching for `metho` will return `Programming Methodology I`, `Programming Methodology II`, `Web Programming and Applications`.
e.g. searching for `metho` will return `Programming Methodology I` and `Programming Methodology II`.

Format: `find MODULE_CODE [OTHER_KEYWORDS]`
Format: `find KEYWORD`
e.g. `find CS1010S`, `find Programming`

==== Clear all modules in a specific semester or clean-slate all records : `clear`
==== Clear all modules the record : `clear`
Deletes all modules in the record. The user can avoid clearing modules one-by-one when large number of modules have to be cleared.
When the only single keyword `clear` is entered, Modulo would recognise it as a command to clear all the modules. The action is irreversible.
When the single keyword `clear` is entered, Modulo would recognise it as a command to clear all the modules. The action is irreversible!

Format: `clear`
e.g. `clear`

==== Categorisation [Coming in V2.0]
Categorisation of the modules in their respective semesters.
Categorisation of the modules in their respective semesters and predictive text.

//end::grades1[]

// tag::quizsection1[]
=== Quiz
Expand Down Expand Up @@ -558,7 +583,10 @@ Format: `*listb*`
_Modulo_ data are saved in the hard disk automatically after any command that changes the data. +
There is no need to save manually.


== FAQ

*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 _Modulo_ folder.

We have enjoyed budilding Modulo and we hope you have enjoyed Modulo like we do! We look forward to seeing you again in V2.0! May you get good grades!
4 changes: 2 additions & 2 deletions docs/diagrams/ArchitectureSequenceDiagram.puml
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ Participant ":Logic" as logic LOGIC_COLOR
Participant ":Model" as model MODEL_COLOR
Participant ":Storage" as storage STORAGE_COLOR

user -[USER_COLOR]> ui : "delete 1"
user -[USER_COLOR]> ui : "delete CS2013"
activate ui UI_COLOR

ui -[UI_COLOR]> logic : execute("delete 1")
ui -[UI_COLOR]> logic : execute("delete CS2013")
activate logic LOGIC_COLOR

logic -[LOGIC_COLOR]> model : deleteModule(module)
Expand Down
17 changes: 17 additions & 0 deletions docs/diagrams/CapActivityDiagram.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
@startuml
start
:User inputs command to add a new module;

'Since the beta syntax does not support placing the condition outside the
'diamond we place it as the true branch instead.

if () then ([week number is valid])
:Remove all tasks from the calendar view;
:Get and show tasks for the new week;
else ([error in command])
-> "User inputs command to add a new module"
endif


stop
@enduml
Loading

0 comments on commit eaaa1f7

Please sign in to comment.