PROJECT: TutorHelper
By CS2103 W13-4
Overview
TutorHelper is a desktop administration application intended for Tutors who would like to organise their students' information. TutorHelper uses CLI(command-line interface) as its main form of inputs: where tutors issues commands in the form of successive line of text. Having multiple students at once can be a hassle to deal with, especially with each student having his own curriculum, tuition timing, and payments. Our team of five decided to create TutorHelper by building upon the existing AddressBook Level 4 application. TutorHelper offers an easy way to keep track of the tutor schedule and keep tabs on the students, allowing him to efficiently plan ahead. Some of the new main features include : grouping, payment, earnings, add/edit/delete/mark syllabus, and add/delete/copy subject.
This project portfolio consists of the contributions I have made to TutorHelper.
Summary of contributions
-
Major enhancement: added the ability to manipulate state of syllabus within subjects as well as copy a subject from one student to another.
-
What it does: User can add, remove, or mark syllabus from the specified subject. User can also copy a whole subject, along its contents, to another student.
-
Justification: Tutors need to differentiate between subjects of different levels or schools. Allowing manipulation of syllabus provides greater amount of flexibility and details of each subject. However, in the case where multiple students who actually studies the same content,
copysub
command allow users to easily manage the subjects. -
Highlights: Copying can lead to duplicated syllabus and subjects which needs to be addressed.
-
-
Minor enhancement:
-
Add syllabus into TutorHelper (Pull request #7)
-
Allow students to have multiple subjects (Pull request #35)
-
Converts subjects to enumeration for easier management of code (Pull request #65)
-
Data writing into storage of subject and its syllabus (Pull request #46)
-
Re-implementation of BrowserPanel into its current fxml implementation (Pull request #226)
-
-
Code contributed:
The following link contains the summary of my code contribution to the project.
-
Other contributions:
-
Project management:
-
Assign issues to group members and labels on Github
-
-
Enhancements to existing features:
-
Documentation:
-
Community:
-
Review other PRs
-
Reported bugs and suggestions for other teams in the class
-
-
Contributions to the User Guide
Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users. |
Valid Inputs
Index
Index should always be an integer. It has a maximum range of 0 (exclusive) to 2,147,483,647 (inclusive). Any index outside of this range will automatically make any command an invalid input.
Name
Name should only contain alphabetical characters and spaces, and should not be blank.
Phone
Phone numbers should only be 8 digits long and should not contain spaces.
-
Emails should be of the format
local-part@domain
-
The local-part should only contain alphanumeric characters and these special characters, excluding the parentheses, (!#$%&'*+/=?`{|}~^.-) .
-
This is followed by a '@' and then a domain name. The domain name must:
-
be at least 2 characters long
-
start and end with alphanumeric characters
-
consist of alphanumeric characters, a period or a hyphen for the characters in between, if any.
-
Subjects
Valid subjects are limited to only the following subjects:
Mathematics
, Biology
, Chemistry
, Physics
, Economics
, Geography
, History
, English
, Art
, Music
,
Computing
, Chinese
, Malay
, Tamil
, French
, German
, Japanese
, Literature
-
In order to be valid subjects, the input must be a full substring match of length 3 or more with any of the valid subjects. This is to avoid too short of keyword matching.
-
The match must start at the beginning of the subject name. This is to avoid confusion and multiple matching.
-
Input must be a single word. This is to avoid cases where both invalid and valid keyword are input by user.
-
Matching is case insensitive.
Examples:
-
Biology
,Bio
, orbio
will match withBiology
. -
iology
will not match willBiology
as the match does not start from the beginning. -
Ma
will not matchMathematics
because the length of subtring is shorter than three. -
phy
will only matchPhysics
and will not matchGeography
as matching is done from the beginning of the string. -
Maths
will not matchMathematics
as it is not a full substring match. -
History Literature
will not match anything as it contains more than 1 word.
TuitionTiming
The days of the week are case sensitive and the valid inputs are:
Monday
, Tuesday
, Wednesday
, Thursday
, Friday
, Saturday
, Sunday
-
The time should follow the 12-hour clock (e.g. 12:00pm)
Copy Subject : copysub
Copies a subject and all its syllabus topics from a specified student to specified target student. Duplicate syllabus topics will not be added.
Format: copysub SOURCE_STUDENT_INDEX SUBJECT_INDEX TARGET_STUDENT_INDEX
Use find command to display both the source and target student on the list.
|
Examples:
-
copysub 1 1 2
Copies the first subject from the first student to the second student. -
copysub 1 2 3
Copies the second subject from the first student to the third student.
Add Syllabus Topic : addsyll
Adds new syllabuses topic for a specified student and subject.
Format: addsyll STUDENT_INDEX SUBJECT_INDEX sy/SYLLABUS, [MORE SYLLABUSES…]
|
Examples:
-
addsyll 1 2 sy/Integration
Adds a syllabus topic "Integration" to the second subject of the first student. -
addsyll 3 2 sy/Poisson Distribution
Adds a syllabus topic "Poisson Distribution" to the second subject of the third student.
Remove Syllabus Topic : deletesyll
Removes a syllabus topic for a specified student and subject.
Format: deletesyll STUDENT_INDEX SUBJECT_INDEX SYLLABUS_INDEX
Examples:
-
deletesyll 1 1 2
Removes the second syllabus topic from the first subject of the first student. -
deletesyll 3 1 1
Removes the first syllabus topic from the first subject of the third student.
Mark Syllabus Topic : mark
Toggles the state of a specified syllabus topic for a specified student and subject.
Format: mark STUDENT_INDEX SUBJECT_INDEX SYLLABUS_INDEX
Examples:
-
mark 1 1 3
Marks the third syllabus topic of the first subject of the first student. -
mark 2 1 2
Marks the second syllabus topic of the first subject of the second student.
Contributions to the Developer Guide
Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project. |
Copy Subject Feature
Current Implementation
The copy subject command operates by making a duplicate of the selected subject of the student and adds it the other student.
If the other student already has the same subject, append the content of the subject instead. State of each syllabus is also copied. Duplicate syllabus will not be added. |
Classes related to copy command and its functionality are listed below:
-
TutorHelperParser
— Creates CopySubCommandParser which parses the input from user. -
CopySubCommandParser
— Parses user’s input into proper argument and creates CopySubCommand -
CopySubCommand
— Updates the target student based on the argument -
SubjectsUtil
— Manage the finding and copying aspect of copysub command.
Given below is an example usage scenario with 2 possible outcomes and how to copy function addresses each case.
Step 1. The user launches the application for the first time.
Step 2. Assuming that the application isn’t empty, the user executes copysub 1 2 4
.
Step 3. Assuming that each argument given is a valid input, the system will perform the copysub command.
Step 4. The system will locate the first student from the student list, and make a separate copy of the second subject stored under the student data.
Step 5. The system will locate the fourth student from the student list, and make a decision.
-
Step 5a. If the same subject as second subject in Step 4, system will append the content of subject of second subject into the fourth student.
-
Step 5b. If there is no subject same as second subject in Step 4, system will add the second subject as a new subject under the fourth student.
The process is described with sequence diagram below: