By: CS2103-AY1819S1-T13-1
Since: Aug 2018
Licence: MIT
- 1. Introduction
- 2. Quick Start
- 3. Features
- 3.1. Viewing help :
help
- 3.2. Adding a person:
add
- 3.3. Editing a person :
edit
- 3.4. Listing all persons :
list
- 3.5. Adding tuition time of a student :
addTime
- 3.6. Edit certain class time of certain student:
exchangeTime
- 3.7. Deleting tuition time of a student :
deleteTime
- 3.8. Deleting grade of a student :
deleteGrade
- 3.9. Locating persons by name:
find
- 3.10. Locating persons by address:
find/a
- 3.11. Locating persons by email address:
find/e
- 3.12. Locating persons by phone number:
find/p
- 3.13. Deleting a person :
delete
- 3.14. Selecting a person :
select
- 3.15. Filter students by tuition fee:
filterByFee
- 3.16. Filter students by educational level:
filterByEducation
- 3.17. Filter students by grade:
filterByGrade
- 3.18. Filter students by time slot:
filterByTime
- 3.19. Give Suggestions to students:
suggestion
- 3.20. Give Suggestions to students:
suggestionByIndex
- 3.21. Listing entered commands :
history
- 3.22. Grades attribute
- 3.23. Promote students stored in TutorPal :
promote
- 3.24. Analyzing grades commands
[coming in v2.0]
- 3.25. Retrieving earnings
- 3.26. Undoing previous command :
undo
- 3.27. Redoing the previously undone command :
redo
- 3.28. Clearing all entries :
clear
- 3.29. Exiting the program :
exit
- 3.30. Saving the data
- 3.31. Encrypting data files
[coming in v2.0]
- 3.1. Viewing help :
- 4. FAQ
- 5. Command Summary
TutorPal is for private tutors who prefer to use a desktop app for managing students information. More importantly, TutorPal is optimized for those who prefer to work with a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). TutorPal is a great tool to track students' academic performance and schedule. Jump to the Section 2, “Quick Start” to get started. Enjoy!
-
Ensure you have Java version
9
or later installed in your Computer. -
Download the latest
Tutor Pal.jar
here. -
Copy the file to the folder you want to use as the home folder for your Tutor Pal.
-
Double-click the file to start the app. The GUI should appear in a few seconds.
-
Type the command in the command box and press Enter to execute it.
e.g. typinghelp
and pressing Enter will open the help window. -
Some example commands you can try:
-
list
: lists all contacts -
add
add n/John Doe p/98765432 e/[email protected] a/311, Clementi Ave 2, #02-25 el/Primary 4 g/Y1819S1_Mid 89 t/friends t/owesMoney
: adds a contact namedJohn Doe
to the Address Book. -
delete
3
: deletes the 3rd contact shown in the current list -
exit
: exits the app
-
-
Refer to Section 3, “Features” for details of each command.
Command Format
-
Words in
UPPER_CASE
are the parameters to be supplied by the user.
e.g. inadd n/NAME
,NAME
is a parameter which can be used asadd n/John Doe
. -
Items,Grades in square brackets are optional.
e.gn/NAME [t/TAG]
can be used asn/John Doe t/friend
or asn/John Doe
. -
Items,Grades with
…
after them can be used multiple times including zero times.
e.g.[t/TAG]…
can be used ast/friend
,g/midterm 100
,t/friend t/family
,g/test1 100 g/test2 99
etc. -
Grade consists of two parts, exam name and exam score.
-
The name and score should be separated by space.
-
Score should be between 0 and 100.
-
Considering the grades are just some records, the APP didn’t implement the delete function temporarily. If you input a wrong exam name, use undo to fix it.
-
-
Parameters can be in any order.
e.g. if the command specifiesn/NAME p/PHONE_NUMBER
,p/PHONE_NUMBER n/NAME
is also acceptable.
Adds a person to the student list
Format: add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS el/EDUCATIONAL_LEVEL [g/GRADE]… [t/TAG]…
-
If the student added has exactly the same name as an existing student in the student list, new student cannot be added.
-
EDUCATIONAL_LEVEL
must bePrimary
,Secondary
orJC
.
e.g.… el/Primary …
is valid; however,… el/primary …
,… el/University …
or other inputs like these are invalid -
The format of
GRADE
isexam name
+exam score
.
e.g.… g/mid-test 100 …
💡
|
|
Examples:
-
add n/John Doe p/98765432 e/[email protected] a/311, Clementi Ave 2, #02-25 el/Primary 4
Add a person without grade and tag. -
add n/John Doe p/98765432 e/[email protected] a/311, Clementi Ave 2, #02-25 el/Primary 4 g/Y1819S1_Final 100 g/Y1819S1_Mid 89 t/friends t/owesMoney
Add a person with one or more than one grades and tags.
Edits an existing person in the student list.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [el/EDUCATIONAL_LEVEL] [g/GRADE] [t/TAG]…
-
Edits the person at the specified
INDEX
. The index refers to the index number shown in the displayed person list. The index must be a positive integer 1, 2, 3, … -
At least one of the optional fields must be provided.
-
Existing values will be updated to the input values.
-
When editing tags, the existing tags of the person will be removed.
i.e adding of tags is not cumulative. -
You can remove all the person’s tags by typing
t/
without specifying any tags after it. -
Edit grade will not delete the previous grades as the tap attribute. If the exam name exists already, it will cover the previous one and edit the score only.
Examples:
-
edit 1 p/91234567 e/[email protected]
Edits the phone number and email address of the 1st person to be91234567
and[email protected]
respectively. -
edit 2 n/Betsy Crower t/
Edits the name of the 2nd person to beBetsy Crower
and clears all existing tags. -
edit 5 el/Secondary 1
Edits the educational level of the 5th student to Secondary 1. -
`edit 2 g/Y1819S1_Mid 100 `
Change the score of an exam. -
edit 1 g/test1 100 g/test2 99
Add more new grade records for a student.
ℹ️
|
By editing the educational level of any student using this command will remove any "Graduated" |
Adds a tuition timing for a student in Tutor Pal.
Format: addTime INDEX ts/TIME
-
Adds tuition timing
TIME
for a student at the specified INDEX. The index refers to the index number shown in the displayed person list. The index must be a positive integer 1, 2, 3, … -
TIME
must not clash with any other tuition timings already in Tutor Pal.
Example:
-
addTime 1 ts/mon 1300 1500
Adds the tuition timing that is on Monday which starts on 1300hour and ends on 1500hour for the 1st person shown in the displayed person list in Tutor Pal.
Exchange class time between two students who are in the same grade of same education level
Format: exchangeTime A_TIME_SLOT_ORDINAL_NUMBER B_TIME_SLOT_ORDINAL_NUMBER n/NAME_A n/NAME_B
-
exchange result: exchanged the time between the given students with given time found by the ordinal number.
Examples:
-
exchangeTime 0 0 Alice Bob
Exchange Alice first time slot and Bob first time slot.
ℹ️
|
The reason this command exists is that when two student want to swap time it cannot only use edit because the existing time-slot will crush. If the two students are not in the same grade of same education level It will be considered as invalid command. The ordinal number of the time is 0 base. If the the corresponding time-slot doesn’t exit based on the ordinal number, then return invalid input. |
Deletes a tuition timing for a student in Tutor Pal.
Format: deleteTime INDEX ts/TIME
-
Deletes tuition timing
TIME
for the student at the specified INDEX. The index refers to the index number shown in the displayed person list. The index must be a positive integer 1, 2, 3, … -
TIME
must already exist for the student’s tuition timings in Tutor Pal.
Example:
-
deleteTime 1 ts/mon 1300 1500
Deletes the tuition timing that is on Monday which starts on 1300hour and ends on 1500hour for the 1st person shown in the displayed person list in Tutor Pal.
Deletes a grade record for a student in the address book.
Format: deleteGrade INDEX NAME_OF_EXAM
-
NAME_OF_EXAM
must already exist in the student’s grade records. -
The student with the index
INDEX
will have the grade namedNAME_OF_EXAM
deleted.
Example:
-
deleteGrade 1 Y1819S1_Mid
Deletes grade record named "Y1819S1_Mid" for the first person in the display panel.
Finds persons whose names contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]…
-
The search is case insensitive.
e.g.hans
will matchHans
-
The search allows fuzzy matching when the length of the keyword is greater than 3 (with Levenshtein Distance < 3).
e.g.challotto
will matchCharlotte
-
If the length of the keyword you type in is smaller or equal to 3, the keyword must be exactly the same to expected (but still case insensitive).
e.g.Lo
will not matchLi
-
The order of the keywords does not matter.
e.g.Hans Bo
will matchBo Hans
-
Only the name is searched.
-
Persons matching at least one keyword will be returned (i.e.
OR
search).
e.g.Hans Bo
will returnHans Gruber
,Bo Yang
Examples:
-
find John
Returnsjohn
andJohn Doe
-
find challotto
ReturnsCharlotte Oliveiro
-
find David Roy John
Returns any person having namesDavid
,Roy
, orJohn
Finds persons whose addresses contain all the given keywords.
Format: find/a KEYWORD [MORE_KEYWORDS]…
-
The search will search for persons whose addresses contain all the keywords.
e.g.Clementi
will find personJohn Doe
whose address is311, Clementi Ave 2, #02-25
-
If the keywords match more than one person, all of these person will be returned.
e.g.Serangoon
will return the persons whose addresses containSerangoon
, who areBernice Yu
andDavid Li
-
The search is case insensitive.
e.gcLeMenTi
is same asClementi
, andcLeMenTi
can also be used to find personJohn Doe
whose address is311, Clementi Ave 2, #02-25
-
The search allows fuzzy matching on long keywords (long keyword means the keyword whose length is greater than 3).
e.g.clenti
will be fuzzy matched withClementi
, and will find the personJohn Doe
whose address is311, Clementi Ave 2, #02-25
-
The search will not support fuzzy matching when the keywords are too short (≤ 3) or contain numbers.
e.g.Clementi Avo
does not matchClementi Ave
because keywordAvo
is short and will not be allowed to use fuzzy matching, therefore, no person will be found -
The order of the keywords does not matter.
e.g.Ave Clementi 2, 311, #02-25
will match311, Clementi Ave 2, #02-25
, and will find the personJohn Doe
whose address is311, Clementi Ave 2, #02-25
-
Only the address is searched.
Examples:
-
find/a B311, Clementi Ave 2, #02-25
ReturnsJohn Doe
-
find/a B311, CLEMENTI Ave 2, #02-25
ReturnsJohn Doe
(case insensitive) -
find/a #02-25, Ave 2 Clementi, B311
ReturnsJohn Doe
(the order of the keywords does not matter) -
find/a serangoon
Returns person whose addresses containing the keywordSerangoon
, i.e.Bernice Yu
andDavid Li
-
find/a srangon
Returns persons whose addresses containing the keywordSerangoon
, i.e.Bernice Yu
andDavid Li
(fuzzy matching)
Finds a person through his/her email address.
Format: find/e EMAIL [MORE_EMAILS]…
-
The search is case insensitive.
e.g[email protected]
will match[email protected]
, and will find personDavid Li
whose email is[email protected]
-
The search allows fuzzy matching (with Levenshtein Distance < 4).
e.g.[email protected]
will match[email protected]
, and will find personDavid Li
whose email is[email protected]
-
Only the email is searched.
-
Person matching the email will be returned.
Examples:
-
find/e [email protected]
ReturnsJohn Doe
whose email address is[email protected]
-
find/e [email protected]
ReturnsDavid Li
whose email address is[email protected]
(case insensitive) -
find/e [email protected]
ReturnsDavid Li
whose email address is[email protected]
(fuzzy matching)
Finds a person through his/her phone number.
Format: find/p PHONE_NUMBER [MORE_PHONE_NUMBER]…
-
Only the phone number is searched.
-
The search allows fuzzy matching (with Levenshtein Distance < 3).
e.g.123456
will match12345678
,12435678
will match12345678
-
Person matching the phone number will be returned.
Examples:
-
find/p 98765432
ReturnsJohn Doe
whose phone number is98765432
-
find/p 9876543
ReturnsJohn Doe
whose phone number is98765432
(fuzzy matching) -
find/p 98765433
ReturnsJohn Doe
whose phone number is98765432
(fuzzy matching)
Deletes the specified person from the student list.
Format: delete INDEX
-
Deletes the person at the specified
INDEX
. -
The index refers to the index number shown in the displayed person list.
-
The index must be a positive integer 1, 2, 3, …
Examples:
-
list
delete 2
Deletes the 2nd person in the student list. -
find Betsy
delete 1
Deletes the 1st person in the results of thefind
command.
Selects the person identified by the index number used in the displayed person list.
Format: select INDEX
-
Selects the person and loads the Google search page the person at the specified
INDEX
. -
The index refers to the index number shown in the displayed person list.
-
The index must be a positive integer
1, 2, 3, …
Examples:
-
list
select 2
Selects the 2nd person in the student list. -
find Betsy
select 1
Selects the 1st person in the results of thefind
command.
List all the students whose tuition fee is greater or equal to the input fee.
Format: filterByFee FEE
-
filter result: list all the students whose tuition fee is greater or equal to the input fee.
Examples:
-
filterByFee 24
returns a list of students whose tuition fee is greater or equals to $24/hour.
ℹ️
|
If no students qualify the filter criteria, an empty list is returned along with a system message which says that no such students can be found. |
List all the students with given educational level
Format: filterByEducation EDUCATIONAL_LEVEL
-
filter result: list all the students whose education level is the same as input.
Examples:
-
filterByEducation Secondary
returns a list of students whose Education level is Secondary.(no matter which year he or she is in) -
filterByEducation JC
returns a list of students whose Education level is JC.(no matter which year he or she is in)
ℹ️
|
If no students qualify the filter criteria, an empty list is returned along with a system message which says that no such students can be found. The input of the education level must be "JC" "Secondary" or "Primary". Other input will be considered invalid input. |
List all the students whose grades fall between the minimum and maximum grade(both inclusive).
Format: filterByGrade MINIMUM_GRADE MAXIMUM_GRADE
-
filter result: A list containing students with grades which fall between the minimum and maximum grade.
Examples:
-
filterByGrade 50 100
returns a list of students whose has grade within 50 and 100 (both 50 and 100 are inclusive).
ℹ️
|
If the input minimal grade is larger than maximal grade, then it will be regarded as the range between maximal and minimal grade. If no students qualify the filter criteria, an empty list is returned along with a system message which says that no such students can be found. |
List the student who has class at the given time.
Format: filterByTime ts/TIME_SLOT
-
filter result: A student who has a lesson at the given time slot.
Examples:
-
filterByTime ts/mon 1300 1400
returns the student whose has tuition time in monday 1300-1400.
ℹ️
|
The time must be followed as format like "mon 1300 1400" and only "mon" "tue" "wed" "thu" "fri" "sun" "sat" are considered valid date. If no students qualify the filter criteria, an empty list is returned along with a system message which says that no such students can be found. |
Give Suggestions to students
Format: suggestion NAME
-
result: show the suggestions.
Examples:
-
suggestion Alice
Show the suggestion to Alice according to her performance.
ℹ️
|
If the student has not taken any exam before No suggestion gonna be shown. |
Give Suggestions to students
Format: suggestion index (base 1)
-
result: show the suggestions.
Examples:
-
suggestion 1
Show the suggestion to the first student in the list according to his or her performance.
ℹ️
|
If the student has not taken any exam before No suggestion gonna be shown. |
Lists all the commands that you have entered in reverse chronological order.
Format: history
ℹ️
|
Pressing the ↑ and ↓ arrows will display the previous and next input respectively in the command box. |
Grade attribute consists of two parts, exam name and exam score.
ℹ️
|
|
Add grade:
You can add some grades record for a student, both using add command and edit command.
Example
add g/mid-test 100 [other part]
edit 1 g/mid-test 100
ℹ️
|
Edit grade will not delete the previous grades as tap attribute. |
Change grade:
if you need to change the score of a exam, you can use edit as well.
Promotes educational grade of the selected student(s)
Format: promote [INDEX]…
-
Promotes the educational grade of the students specified by their index.
-
There can be more than one INDEX provided.
ℹ️
|
Multiple indexes should be separated by a space. |
Format: promote all
-
Promotes all students stored in TutorPal, including those who are not displayed on the panel.
Examples
-
promote 1 2 4 12
Promotes the first, second, fourth and twelfth student. -
promote all
Promotes all students in TutorPal.
-
The promote function does not promote students across educational levels
i.e. from Primary to Secondary. For such changes, kindly refer to Section 3.3, “Editing a person :edit
”. -
For students advancing to Secondary 5, please also refer to Section 3.3, “Editing a person :
edit
”. -
For students in their final year (Primary 6, Secondary 4/5, JC 2),
the promote function automatically adds a tag "Graduated" to indicate that the student has graduated. -
The "Graduated" tag is automatically removed when command: edit is used to
edit the student’s educational level and/or grade. -
Users can choose to delete graduated students or edit their educational level/grade
according to their needs.
Analyze the grades of students
Format: grades ACTION [parameters]
-
grades sort: list the details of students sorting by grades.
ℹ️
|
Regard the mark of the student who doesn’t have a grade as 0. |
Retrieve the total earnings from tuition fees from all students between a range of date in the current year.
Format: earnings START_DATE END_DATE
-
START_DATE
andEND_DATE
should be given in the format of DDMM. -
The beginning and ending dates are included in the calculation of tuition fees.
-
The year field is not required as TutorPal assumes current calender year by default.
-
To calculate the amount of money earned within a day, input the same
START_DATE
andEND_DATE
. -
Graduated students and students without tuition time slot(s) are ignored by the earnings function.
-
Due to the lack of built-in attendance taking capability in TutorPal, the earnings function:
-
Follows a standard one lesson per week schedule and does not account for cancelled or ad-hoc lessons.
-
Should only be used to calculate tuition fees that will be earned in the future.
-
Does not account for the tuition fees of graduated students.
-
ℹ️
|
While the use of earnings command for dates before the current date is not prohibited, it is not encouraged as the values calculated will be inaccurate if tutorPal contains either graduated students and/or students whom had their time slot(s) changed before. |
Example:
-
earnings 0204 2506
This command returns the total amount of tuition fees earned between 2 April 2018 to 25 June 2018 inclusive. A warning message will be displayed to remind the user on the useage of past dates. -
earnings 1212 1212
This command will return the total amount of tuition fees to be earned on 12 December.
Restores the address book to the state before the previous undoable command was executed.
Format: undo
ℹ️
|
Undoable commands: those commands that modify the address book’s content ( |
Examples:
-
delete 1
list
undo
(reverses thedelete 1
command) -
select 1
list
undo
Theundo
command fails as there are no undoable commands executed previously. -
delete 1
clear
undo
(reverses theclear
command)
undo
(reverses thedelete 1
command)
Reverses the most recent undo
command.
Format: redo
Examples:
-
delete 1
undo
(reverses thedelete 1
command)
redo
(reapplies thedelete 1
command) -
delete 1
redo
Theredo
command fails as there are noundo
commands executed previously. -
delete 1
clear
undo
(reverses theclear
command)
undo
(reverses thedelete 1
command)
redo
(reapplies thedelete 1
command)
redo
(reapplies theclear
command)
Address book data are saved in the hard disk automatically after any command that changes the data.
There is no need to save manually.
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 Tutor Pal folder.
-
Add :
add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS el/EDUCATIONAL_LEVEL [g/GRADE]… [t/TAG]…
e.g.add n/James Ho p/22224444 e/[email protected] a/123, Clementi Rd, 1234665 el/JC 1 g/FinalExam 85
-
Add time :
addTime INDEX ts/TIME
e.g.addTime 1 ts/mon 1300 1500
-
Clear :
clear
-
Delete :
delete INDEX
e.g.delete 3
-
Delete time :
deleteTime INDEX ts/TIME
e.g.deleteTime 1 ts/mon 1300 1500
-
Earnings :
earnings START_DATE END_DATE
-
Promote :
promote all
-
Promote :
promote INDEX…
e.g.promote 1 2 5 13
-
Edit :
edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [el/EDUCATIONAL_LEVEL] [a/ADDRESS] [t/TAG]…
e.g.edit 2 n/James Lee e/[email protected] el/JC 1
-
Edit time :
editTime n/NAME ts/OLD_TIME_SLOT ts/NEW_TIME_SLOT
e.g.editTime n/Alice ts/mon 1300 1400 ts/tue 1300 1400
-
Exchange time :
exchangeTime NAME_A A_TIME_SLOT_ORDINAL_NUMBER NAME_B B_TIME_SLOT_ORDINAL_NUMBER
e.g.ExchangeTime Alice 0 Bob 0
-
Filter by fee :
filterByFee FEE
e.g.filterByFee 24
-
Filter by educational level :
filterByEducation EDUCATIONAL_LEVEL
e.g.filterByEducation Secondary
-
Filter by grade :
filterByGrade MINIMUM_GRADE MAXIMUM_GRADE
e.g.filterByGrade 50 100
-
Filter by time :
filterByFee TIME_SLOT
e.g.filterByTime mon 1300 1400
-
Find :
find KEYWORD [MORE_KEYWORDS]
e.g.find James Jake
-
Find by address :
find/a ADDRESS
e.gfind/a serangoon
-
Find by phone number :
find/p PHONE
e.gfind/p 12345678
-
Find by email :
find/e EMAIL
e.gfind/e [email protected]
-
Help :
help
-
History :
history
-
List :
list
-
Redo :
redo
-
Select :
select INDEX
e.g.select 2
-
Suggestion :
suggestion NAME
e.g.suggestion Alice
-
Undo :
undo