PROJECT: UltiStudent
1. Overview
UltiStudent is a student application that effectively tackles the problem of having too many applications to manage their school life by providing a centralised platform for them to manage their homework, cumulative average point and notes.
UltiStudent is catered for students who prefer to use a desktop app for managing their school activities through a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).
2. Summary of contributions
-
Enhancement:
-
Added the ability to add homework to homework manager through the use of
add-hw
command.-
It allows the user to add homework to the homework manager. This feature is essential and the foundation of homework manager as it enables homework manager to start keeping track of user’s homework.
-
This functionality was a challenging as it requires an in-depth analysis and understanding of AddressBook-Level4’s UI, Logic, Model and Storage. A need to understand how each component communicate with one another.
-
Credits: AddressBook-Level4’s add functionality was being used as a reference.
-
-
Added the ability to edit and save note for Notes Manager through the use of
edit-note
andsave-note
command.-
A core functionality for NotesManager.
-
This allows the user to edit the content of the empty note that was created using
add-note
. -
Credits: AddressBook-Level4’s select functionality was being used as a reference.
-
-
-
Minor enhancement:
-
Code contributed: Click here to view my code on the CS2103T Project Code Dashboard.
-
Other contributions:
-
Project management:
-
Managed issue tracker, closing issues upon fixes and implementations.
-
Refracted addressbook to ultistudent (Pull Request: #167)
-
-
Enhancements to existing features:
-
Documentation:
-
Community:
-
3. Contributions to the User Guide
Below are the main contributions to the User Guide, which consist of Add Homework, Edit and Save commands. They showcase my ability to write documentation targeting end-users in a clear and concise manner. |
3.1. Adding a homework: add-hw
Format: add-hw mc/MODULECODE hw/HOMEWORK d/DEADLINE
Have a homework but unable to attend to it immediately? No worries! Let Homework Manager help
us keep track of them! By using add-hw
, we can command this manager to remember our homework
for us! Make sure we are in the Homework Manager by using open HomeworkManager
first.
Sadly, it doesn’t do our homework for us… but hey it reduces our worries on forgetting our homework!
To use this command we have to adhere to this format: add-hw mc/MODULECODE hw/HOMEWORK d/DEADLINE
else Homework Manager would not be able to understand what we are trying to tell it to do.
DEADLINE must be in dd/mm/yyyy format and DEADLINE should not be a date that is before today! Homework are considered duplicated only if they have the same MODULECODE, HOMEWORK and DEADLINE. |
Okay enough explanation and time for an example!
Lets say we have to do Tutorial 1 for CS1101S by 1st May 2019. We could command this manager to
remember it for us by using add-hw mc/CS1101S hw/Tutorial 1 d/01/05/2019
in the command box (red highlighted box)
and do make sure that you are in the homework manager by checking if the Homework icon is highlighted in the
nagivation bar (white highlighted box) as shown below.
When CS1101S tutorial 1 has been successfully added, the Result Box (green highlighted box) would display
New homework added: CS1101S; Tutorial 1; 01/05/2019;
.
We will also be able to view the CS1101S being added into the Module List (blue highlighted box) since this is the first homework for CS1101S we have and the Homework List (orange highlighted box) would show us the newly added CS1101S homework.
Pro tip here! The ordering of mc/MODULECODE , hw/HOMEWORK and d/DEADLINE can be jumbled around!
so do not worry that this handy manager will not understand what you are trying to command it to do!
|
Sadly Homework Manager is english educated only… Therefore it only accepts english characters and numbers. Maybe Homework Manager would be educated in other languages to accept other characters in future! |
3.2. Editing and Saving a note : edit-note
save-note
Editing note: edit-note
Format: edit-note
Hurray! We’ve successfully added a note therefore it is time for us to learn how to edit and save the edited notes! But first! we got to make sure we are in the Notes Manager by looking at the Notes icon in the Navigation Box (white highlighted box) as shown below.
Now that we are in the Notes Manager. It is time for us to start editing our note! First off, we have to use
edit-note INDEX
to select the notes that we want to edit.
For example, we have 2 notes currently as shown in the image above, and we would like to edit our Personal
Project Portfolio note. We will use edit-note 1
in the Command Box (red highlighted box) to open Personal
Project Portfolio note for editing.
When Notes Manager has successfully open our note, it will display Opened note: 1
in the Result box (green
highlighted box). At the same time, the note will be highlighted in blue in the Notes List (blue highlighted box)
and the Text Field (orange highlighted box) will be activated and turn white, allowing us to start jotting down
our notes!
Saving note: save-note
Format: save-note
Now that we are done editing our note, it is time to save them! We can do this easily by using the save-note
in
the Command Box (red highlighted box)!
Once the note is saved, Notes Manager will let us know by displaying Saved note, Module: CS2103T Note: Personal
Project Portfolio Content: …(notes that we wrote)
in the Result Box (green highlighted box). At the same time,
the Text Field (orange highlighted box) will be disabled and turn grey.
For save-note
there is no parameters as it will save all edited notes in notes manager.
Pro tip here! We can edit multiple notes at the same time by using edit-note 1 then edit-note 2 to open the
respective notes to edit. Once we are done editing, we can simply use save-note to save all the edited notes!
|
For data integrity, undo and redo commands are not supported on editing and saving notes. Changes must be made manually. |
4. Contributions to the Developer Guide
Below are the main contributions to the User Guide, which consist of Add Homework, Edit and Save commands. They showcase my ability to write technical documentation and the technical depth of my contribution to UltiStudent in a clear and concise manner. |
4.1. Adding a homework: add-hw
The add homework feature is a core feature to the Homework Manager of UltiStudent. Which allows the users to create a homework object in UltiStudent. |
4.1.1. Overview
The add homework add-hw
mechanism is facilitated by AddHomeworkCommand
and AddHomeworkCommandParser
.
It takes in the following input from the user: ModuleCode
, HomeworkName
and Date
, which will
construct individual objects that construct a Homework
object.
The AddHomeworkCommandParser
implements Parser
with the following operation:
-
AddHomeworkCommandParser#parse()
- This operation will take in aString
input from the user that will create individual objects based on the prefixes 'mc/', 'hw/' and 'd/'. TheString
value after the individual prefixes will create the respective object: 'mc/' forModuleCode
, 'hw/' forHomeworkName
and 'd/' forDate
. A validation check will be imposed upon the creation of each object. Any checks that fails the validation would prompt the user on the failed component. For example:-
ModuleCode
would useParserUtil#parseHomeworkModuleCode()
to ensure that user has input 2 letters followed by 4 digits with an option to include a optional letter after the 4 digits. -
HomeworkName
would useParserUtil#parseHomeworkName()
to ensure that homework name is not a null. -
Date
would useParserUtil#parseDate()
to ensure that user has entered a date that is either a present or future date.
-
-
After validation checks are completed with no errors, a
Homework
object is then constructed withModuleCode
,HomeworkName
andDate
as the parameters -
AddHomeworkCommandParser
would then return aAddHomeworkCommand
object with theHomework
as the parameter
Take a look at the code snippet of AddHomeworkCommandParser below for an illustration:
4.1.2. Example
Given below is an example usage scenario of how add-hw
mechanism behaves at each step.
Step 1: The user executes add-hw mc/CS1101S hw/Tutorial 1 d/01/05/2019
to add a CS1101S Tutorial 1
homework with the deadline on 1st May 2019.
Step 2: LogicManager
would use UltiStudentParser#parse()
to parse the input from the user.
Step 3: UltiStudentParser
would determine which command is being used and creates the respective
parser. In this case, AddHomeworkCommandParser is being created and the user’s input would be pass in
as a parameter.
Step 4: AddHomeworkCommandParser
would do a validation check on the user’s input before creating
and returning a AddHomeworkCommand
object with Homework
as the parameter.
Step 5: LogicManager
would use AddHomeWorkCommand#execute()
to add the
ModuleCode
and Homework
into the Model
which is handled by ModelManager
Step 6: AddHomeworkCommand
would return a CommandResult
to the LogicManager
which would then
be return back to the user.
The image below illustrates the scenario of when the user executes add-hw mc/CS1101S hw/Tutorial 1
d/01/05/2019
:
add-hw
4.2. Editing and Saving a note : edit-note
save-note
These two feature allows the user to edit existing note and save them after editing. |
4.2.1. Overview
The edit-note
command helps the user to open the selected notes to allow the user to start editing its content
by displaying all the content on the NotesManagerMainPanel
which is a text field. It requires the need of the
save-note
command to help save the user’s edits
Below is an activity diagram of how the users use edit-note
and save-note
to facilitate adding contents to
their existing notes:
edit-note
and save-note
Step 1: User will key in edit-note INDEX
on the command line
Step 2: System will do a validation check to see if INDEX
of note exist in the list of notes in the Model
.
If note does not exist, it will throw a ParserException
to the user. Else note will be opened and proceed to
step 3.
Step 3: Once it is opened, NotesManagerMainPanel
will be enabled, allowing the user to start typing their
notes in the text field.
Step 4: When the user is done editing, he/she can use save-note
in the command line to save the edited
content to the opened note.
Step 5: Upon successful save, NotesManagerMainPanel
will be disabled and user will not be able to type
anything on NotesManagerMainPanel
4.2.2. Design Considerations
Options |
Pro |
Cons |
1. Users to type their content on the command line |
- Easy implementation |
- Not user friendly |
2. Users to type their content on the |
- User friendly |
- Two sources of input, Command Line and TextField |
Option 2 is being selected and implemented as we focus on the users convenience and the ability to edit their notes easily. Separation of command line and notes text field would reduce the number of commands the user has to remember and there will be lesser confusion of command line mode or text input mode.