Overview
TutorAid is a software build by a team of 5 Computer Science Software Engineering Student. I were tasked to implement the features of Notes for our software engineering project. We chose to morph the addressbook 3 to a teaching assistant assisting software which is called TutorAid. TutorAid is an imporved version of addressbook 3 which allows teaching assistant record student attandence, module management, earning management and notes taking.
This is how TutorAid looks like:
Role
My main role was to design the Notes features which allows teaching assistant to record their notes based on the module and the type of class they are teaching. Notes consists a variety of functions which allow great flexibility for teaching assitant which is addnote, editnote, deletenote, findnote and also listnote. The list of functions allows teaching assistant to create note, make an amendment from the note, delete the note or find the desire the note from the list of notes. Besides, I also wrote all sort of test cases to ensure that all the code that I wrote has reached the expected quality and reduce the chance of errors in the code.
Summary of contributions
This sections will show my contribution to the team project which consists of my code, documentation and other helpful informations.
Enhancement added: Added the Notes features with addnote, editnote, deletenote, findnote and listnote commands.
-
What it does: allow user to
addnotethe desire notes,editnoteto make amend to the note that want to change,deletenotethe desire note,findnotethe specific note from the list of notes and last but not leastlistnotedown all the notes that previously have save in TutorAid. -
Justification: Notes is a very important features in TutorAid as it provides a great flexibility to teaching assistant. With the
addnotefunctions, teaching assistant will be able to add the note based on the module he/she teaches and the type of class that they teach with any content of the note. However, when mistake is made on the note amendment is needed. Hence,editnotefunctions is added which allow teaching assistant to edit the note either on module, class type or the content. Therefore, there is no need to worry about getting worry of typing error while taking note. Besides,deletenotefunction allow teaching assistant to remove the notes that are unwanted. When the notes save getting more, it is very difficult to find the notes that desire. Hencefindnotefunction is implemented to aid this problem. It allows to search for any related keywords such as the module code, class type or the content itself. Last but not least,listnotefunction. This is significantly important as after the searching of notes, viewing the list of notes allow teaching assistant to check all the notes that are save. -
Credits: The Note features is inspired by AddressBook 3 and 4, however, notes features has a great complexity when come to implementation.
Minor Enhancement: Delete button is added to allow user to delete note easily.
Code contributed: [All Commits] [Project Code Dashboard]
Other contributions
-
Project Management:
-
Enhancements to existing features:
-
Documentation:
-
Community:
-
Tools:
-
setup Netlify for team repository
-
setup Travis for team repository
-
Contributions to User Guide
Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users. |
Notes
Add Note: addnote
Adds Note to the list of notes.
Format: addnote c/MODULE_CODE type/CLASS_TYPE note/NOTE_CONTENT
Examples:
-
addnote c/CS2103T type/lab note/Check for project submission date
Only tutorials/ tut / lab / consultations / c / sectionals / s
arguments are allowed for TYPE.
|
Edit Note: editnote
To provide a great flexibility, editing of the notes is allowed.
Update any Note in the list of notes.
Format: editnote INDEX c/MODULE_CODE type/CLASS_TYPE note/NOTE_CONTENT
Examples:
-
editnote 1 c/CS2103T -
editnote 2 type/lab -
editnote 3 note/check for meeting time -
editnote 1 c/CS2103 type/tut note/update project content
Delete Note: deletenote / deletebutton
Let’s say that if you would like to delete the note from the list there are two option available.
Option 1:
Delete Note in the list of notes.
Format: deletenote INDEX
Option 2: Delete Note with DeleteButton.
Examples:
-
deletenote 1 -
press the
xdelete button to delete the desire notes.
Find Note: findnote
In order to find the desire note, finding with keyword such as the module_code, class_type or note_content is allow.
Delete Note in the list of notes.
Format: findnote KEYWORD
Examples:
-
findnote CS2103T
Listing all note : listnote
To view the list of note. Type listnote to view the full list of note.
List all note.
Format: listnote
Contributions to Developer Guide
Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users. |
Notes Features
Add Notes
The addnote command allows for tutors to add their notes into TutorAid.
The format for the addnote command is as follows:
addnote c/<MODULE_CODE> type/<CLASS_TYPE> note/<NOTE_CONTENT>
Overview
The add claim addnotes mechanism is facilitated by AddNotesCommand and AddNotesCommandParser, taking in the
following input from the user: Module_Code, Class_Type and Note_Content, which will construct Notes objects.
The AddNotesCommand implements Parser with the following operation:
-
AddNotesCommandParser#parse()- This operation will take in aStringinput from the user and create individual objects based on the prefixesc/,type/andnote/. TheStringvalue after the respective prefixes will create the respective objects. A validation check will be done to ensure that the strings that are entered by the user is entered correctly. If any of the strings entered are invalid, an error will be shown to the user to enter the correct format of the respective objects.-
cwould useParserUtil#parseClassId()to ensure that the module code entered by the user is in the correct format of CSXXXX. -
typewould useParserUtil#parseClassType()to ensure that the class typed input by the user is in the correct format of CSXXXX. -
notewould useParserUtil#parseContent()to ensure that the content typed in by the user is in not empty.
-
-
After validation of the individual objects, a
Notesobject would be created with the parameterscode,typeandcontent. -
AddNotesCommandParserwould then return aAddNotesCommandobject with the parameter,Notesobject.
The following activity diagram summarizes what happens when a user executes a new command.
Example Scenerio
-
Step 1: The user enters
addnote c/CS2103T type/tut note/Update Projectto add a note for teaching classes. This adds aNotesobject that the user has added to record what needs to be done for the class. -
Step 2:
LogicManagerwould useTutorAidParser#parse()to parse input from the user. -
Step 3:
TutorAidParserwould match the command word given by the user with the correct command. In this example, the given command isaddnote, thus,AddNotesCommandParserobject would be created with the user’s input. -
Step 4:
AddNotesCommandParserperforms a validation check on each of the respective objects throughAddNotesCommandParser#parse(). In this case, it would useParserUtil#parseClassId(),ParserUtil#parserClassType()andParserUtil#parseContent(). It would then return aAddNotesCommandobject with anNotesobject. -
Step 5:
LogicManagerwould executeAddNotesCommand#execute. In this particular method, theNotesobject will be check with the rest of the priorNotesobject, to ensure that there is no duplicateNotesobject. If there are no similarNotesobject with the same parameters created previously, it would then be added into the notes list. -
Step 6:
AddNotesCommandwould then return aCommandResulttoLogicManager, which would show the user that the newNotesobject have been successfully added.