User Guide
Teacher’s Address Book (TAB) is a desktop app made for teachers, teaching assistants(TA) and professors for managing contacts of each other, as well as their students, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, TAB can get your contact management tasks done faster than traditional GUI apps.
TAs and Professors are now taking on more roles in different modules. As such, TAB allows the creation of multiple addressbooks which can be used to store the contact information of each specific module, which leads to neater organisation of contacts.
- Quick start
-
Features
- Viewing help :
help
- Adding a person:
add
- Listing all persons :
list
- Displaying the details of a person :
show
- Editing a person :
edit
- Adding a remark :
remark
- Editing the attendance of a student :
attendance
- Adding assignments to all students :
assignments
- Editing the grade of a student :
grade
- Editing the availability of a TA :
avail
- Editing the roles of a Professor :
roles
- Locating persons by name:
find
- Filtering persons by tag:
filter
- Deleting a person :
delete
- Clearing all entries :
clear
- Creating new TAB :
new
- Swapping between TABs :
swap
- Renaming the data file :
rename
- Saving the data
- Editing the data file
- Exiting the program :
exit
- Viewing help :
- FAQ
- Command summary
Quick start
-
Ensure you have Java
11
or above installed in your Computer. -
Download the latest
TAB.jar
from here. -
Copy the file to the folder you want to use as the home folder for your TAB.
-
Double-click the file to start the app. The GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.
-
Type the command in the command box and press Enter to execute it. e.g. typing
help
and pressing Enter will open the help window.
Some example commands you can try:-
list
: Lists all contacts. -
add
n/John Doe p/98765432 e/johnd@example.com pos/Student a/John street, block 123, #01-01 t/CS2103T-T17
: Adds a contact namedJohn Doe
to TAB. -
delete
3
: Deletes the 3rd contact shown in the current list. -
clear
: Deletes all contacts. -
exit
: Exits the app.
-
-
Refer to the Features below for details of each command.
Features
Notes about the command format:
- All commands are case sensitive
- All tokenizers are case sensitive
-
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 in square brackets are optional.
e.g.edit INDEX [n/NAME] [p/PHONE] [e/EMAIL]
can be used asedit 1 n/John Doe a/Jurong
or asn/John Doe
. -
Parameters can be in any order.
e.g. if the command specifiesn/NAME p/PHONE_NUMBER
,p/PHONE_NUMBER n/NAME
is also acceptable. -
If a parameter is expected only once in the command, but you specified it multiple times, only the last occurrence of the parameter will be taken.
e.g. if you specifyp/12341234 p/56785678
, onlyp/56785678
will be taken. - Extraneous parameters for commands that do not take in parameters (such as
help
,list
,exit
andclear
) will be ignored.
e.g. if the command specifieshelp 123
, it will be interpreted ashelp
.
Viewing help : help
Launches the user guide in a browser window.
Format: help
Adding a person: add
Adds a person to TAB.
Format: add n/NAME p/PHONE_NUMBER e/EMAIL pos/POSITION a/ADDRESS t/MODULE-GROUP
Tip: A teaching assistant or professor can have more than one tag. A student can only have one tag. Format of parameters:
-
NAME
: Alphanumerical -
PHONE_NUMBER
: Numerical -
Email
: local-part@domain- local-part: Alphanumerical and the following special characters, excluding the parentheses, (+_.-)
- domain: The domain name must:
- end with a domain label at least 2 characters long
- have each domain label start and end with alphanumeric characters
- have each domain label consist of alphanumeric characters, separated only by hyphens, if any.
-
Position
:Student
,TA
, orProfessor
(case-insensitive) -
Address
: Any value, but cannot be blank -
Tags
: {Alphanumeric Module}-{Alphanumeric Tutorial group}
Adds a new contact with the provided details. Required fields include name, phone number, address, email, position, and tag. Tags represent the module and tutorial group a person is associated with and must be in the format of module-tutorial group.
Examples:
add n/Alex Yeoh p/87438807 e/alexyeoh@example.com pos/Student a/Blk 30 Geylang Street 29, #06-40 t/CS2103T-T17
add n/Betsy Crowe p/92498754 e/betsycrowe@example.com pos/TA a/Blk 30 Lorong 3 Serangoon Gardens, #07-18 t/CS2103T-T17
Listing all persons : list
Shows a list of all persons in TAB.
Format: list
Displaying the details of a person : show
Shows the detailed information of a person.
General displayed information are:
- Name
- Position
- Phone
- Tags
- Address
- Remarks
There are also additional information unique to each role
Professors:
- Roles:
Coordinator
,Tutor
,Lecturer
,Advisor
orUnassigned
TA:
- Availability:
Available
orUnavailable
Student
- Attendance: represented as a fraction e.g. 9/10
- Grade: represented as a fraction. This grade is the overall grade calculated from the list of already graded Assignments.
-
Graph containing each Assignment and their scores(only if their grade has been updated) Format:
show INDEX
- Shows the detailed information of 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:
-
show 3
shows the detailed information of the 3rd person in TAB.
Editing a person : edit
Edits an existing person in TAB.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL]
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.
- Editing of Tags and Position are not allowed.
Examples:
-
edit 1 p/91234567 e/johndoe@example.com
edits the phone number and email address of the 1st person to be91234567
andjohndoe@example.com
respectively. -
edit 2 n/Betsy Crower
edits the name of the 2nd person to beBetsy Crower
Adding a remark : remark
Adds or edits a remark of an existing person in TAB.
Format: remark INDEX r/REMARK
Modifies a remark of a 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, …
- A person can have at most 1 remark.
- When editing remark, the existing remark of the person will be removed i.e. adding of remarks is not cumulative.
- You can remove the person’s remark field by typing
r/
without specifying any message after it.
Examples:
-
remark 1 r/Interested to be a TA
edits the remark field of the 1st person to beInterested to be a TA
. -
remark 2 r/remark_one r/remark_two
edits the remark field of the 2nd person to beremark_two
and notremark_one
. -
remark 3 r/
clears the remark field of the 3rd person.
Editing the attendance of a student : attendance
Edits the attendance of an existing student in TAB.
Format: attendance INDEX attendance/ATTENDANCE
Edits the attendance of the person (whose position must be 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, …
Examples:
-
attendance 1 attendance/10/13
edits the attendance of the 1st person to be10/13
.
Adding assignments to all students : assignments
Adds assignments to all students in the TAB.
Format: assignments assignments/ ASSIGNMENT_1 w/ASSIGNMENT_1_WEIGHTAGE, ASSIGNMENT_2 w/ASSIGNMENT_2_WEIGHTAGE…
- The assignments are added to all students in the TAB. Students that are added to the TAB afterwards will automatically be instantiated with the assignments.
- There must at least be one student inside TAB when running this command. The command will fail otherwise.
- The weightage of the assignments must be integers that add up to 100%. The command will fail otherwise.
- At most 10 assignments can be added.
Examples:
-
assignments assignments/ Assignment 1 w/15, Assignment 2 w/15, Midterms w/30, Finals w/40
adds Assignment 1: 15% weightage, Assignment 2: 15% weightage, Midterms: 30% weightage, and Finals: 40% weightage to all students in the TAB. -
assignments assignments/ Assignment 1 w/20 Finals w/15
will fail as the weightage does not add up to 100%.
Editing the grade of a student : grade
Edits a student’s grade of an assignment of in TAB.
Format: grade INDEX assignment/INDEX grade/GRADE
Edits the grade of an assignment of the person (whose position must be student) at the specified INDEX
. The first index refers to the index number shown in the displayed person list. The second index refers to the index of the assignment to be edited as shown in the assignment list of the specified student. Grade must follow the format [integer]/[integer]
The indices must be positive integers 1, 2, 3, …
- The grade shown on the detail page of a student represent the overall grade that the student has achieved, calculated based on the grade and weightage of each assignment.
Examples:
-
grade 2 assignment/1 grade/68/80
edits the grade of the 1st assignment of the 2nd person (whose position is student) to be68/80
. -
grade 1 assignment/1 grade/68/80
will fail if the position of the 1st person in the displayed person list is not a student.
Editing the availability of a TA : avail
Edits the availability of an existing TA in TAB. Availabilities are case-insensitive.
Format: avail INDEX avail/AVAILABILITY
Edits the availability of the person (whose position must be TA) 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:
-
avail 1 avail/Available
edits the availability of the 1st person to beAvailable
.
Editing the roles of a Professor : roles
Edits the roles of an existing professor in TAB.
Format: roles INDEX roles/ROLE
Edits the roles of the person (whose position must be professor) 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, …
Roles are case-insensitive
- Each professor may only have 1 role
Examples:
-
roles 1 roles/Coordinator
edits the roles of the 1st person(must be a professor) to beCoordinator
.
Locating persons by name: find
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 order of the keywords does not matter. e.g.
Hans Bo
will matchBo Hans
- Only the name is searched.
- Only full words will be matched e.g.
Han
will not matchHans
- 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 alex david
returnsAlex Yeoh
,David Li
Filtering persons by tag: filter
Filters persons with the specified tag.
Format: filter TAG
- The search is case-insensitive. e.g.
cs2103t-t17
will matchCS2103T-T17
- Only full word will be matched. e.g.
CS2103T
will not matchCS2103T-T17
Examples:
-
filter CS2103T-T17
returns persons with the tagCS2103T-T17
-
filter CS2103T
returns no result.
Deleting a person : delete
Deletes the specified person from the TAB.
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
followed bydelete 2
deletes the 2nd person in the TAB. -
find Betsy
followed bydelete 1
deletes the 1st person in the results of thefind
command.
Clearing all entries : clear
Clears all entries from the TAB.
Format: clear
Creating new TAB : new
Creates a new TAB and automatically swaps to the newly created data file.
There can be a maximum of 5 books.
Format: new
File
- New Book
Swapping between TABs : swap
Swaps between existing TABs.
Format: swap
File
- Swap Book
Renaming the data file : rename
Renames the current data file.
Format: rename {NEW_NAME}
Renames the current data file as the NEW_NAME
in lowercase
-
NEW_NAME
only accepts alphanumeric, ‘-‘ and ‘_’ characters.
Example:
-
rename cs2103t
renames the current data file ascs2103t.json
Saving the data
TAB data is saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
Editing the data file
TAB data is saved as a JSON file [JAR file location]/data/addressbook.json
. Advanced users are welcome to update data directly by editing that data file.
Exiting the program : exit
Exits the program.
Format: exit
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 TAB home folder.
Q: Why is editing of Position restricted?
A: TAB depicts the addressbook of a certain module at a certain period of time. Positions within TAB should be consistent in that time frame. For example, it would not make sense for a Student to become a Professor.
Q: Why is editing of Tags restricted?
A: AB depicts the addressbook of a certain module at a certain period of time. Tags represent the module and tutorial group of a students. If a student were to drop the module halfway, he should be removed from TAB instead using the delete feature.
Q: Why should there be only Persons from one module in each addressbook? This is a big limitation!
A: Not really. By only allowing Persons from one module in each addressbook, it ensures that your TAB is neat and streamlined. If you want to keep contacts across modules, please create a new TAB by using our new
and swap
features.
Q: I just created a new book and nothing changed?
A: The new TAB’s name appears at the bottom left corner.
Q: How do I properly delete a TAB once I created it?
A: To delete a created TAB here are the steps to follow:
clear
command instead!
- Step 1:
- From the
data
directory, delete the.json
file you like to remove
- From the
- Step 2:
- From the
preferences.json
, delete the same.json
file from theallAddressBookFilePath
parameter.
- From the
Case By Case Basis:
- Step 3: (Only if
"addressBookFilePath"
has the same name as the TAB you want to delete)- If the
.json
file is alsoaddressBookFilePath
, swap it for the first TAB underallAddressBookFilePath
and setaddressBookIndex
to 0
- If the
Example:
Here I would like to delete a TAB named addressbook
- Step 1:
Go intodata
folder and deleteaddressbook.json
Before:
After:
Step 2:
- Open
preferences.json
- Remove
, "data\\addressbook.json"
from"allAddressBookFilePath"
Before:
After:
Save the file and you are done!
Case By Case Basis:
Step 3: (if "addressBookFilePath"
has the same name as the TAB you want to delete):
- Remove both
addressbook.json
Before:
After:
- Copy the first TAB name from
"allAddressBookFilePath"
, paste into"addressBookFilePath"
and change"addressBookIndex"
to 0.
It should look something like this. (Note the changes in green)
Save the file and you are done!
Command summary
Action | Format, Examples |
---|---|
Help | help |
Add |
add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS pos/ POSITION [t/TAG]… e.g., add n/Alex Yeoh p/87438807 e/alexyeoh@example.com pos/Student a/Blk 30 Geylang Street 29, #06-40 t/CS2103T-T17
|
List | list |
Show |
show INDEX e.g., show 2
|
Edit |
edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS]… e.g., edit 2 n/James Lee e/jameslee@example.com
|
Remark |
remark INDEX r/REMARK e.g., remark 1 r/Interested to be a TA
|
Attendance |
attendance INDEX attendance/ATTENDANCE e.g., attendance 1 attendance/10/13
|
Assignments |
assignments assignments/ASSIGNMENT_1 w/ASSIGNMENT_1_WEIGHTAGE, ASSIGNMENT_2 w/ASSIGNMENT_2_WEIGHTAGE… e.g., assignments assignments/Assignment 1 w/15, Assignment 2 w/15, Midterms w/30, Finals w/40
|
Grade |
grade INDEX assignment/INDEX grade/GRADE e.g., grade 2 assignment/1 grade/68/80
|
Availability |
avail INDEX avail/AVAILABILITY e.g., avail 1 avail/Available
|
Roles |
roles INDEX roles/ROLE e.g., roles 1 roles/Coordinator
|
Find |
find KEYWORD [MORE_KEYWORDS] e.g., find James Jake
|
Filter |
filter TAG e.g., filter CS2103T-T17
|
Delete |
delete INDEX e.g., delete 3
|
Clear | clear |
New | new |
Swap | swap |
Rename |
rename {NEW_NAME} e.g., rename CS2103T
|
Exit | exit |