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
11or above installed in your Computer. -
Download the latest
TAB.jarfrom 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
helpand pressing Enter will open the help window.
Some example commands you can try:-
list: Lists all contacts. -
addn/John Doe p/98765432 e/johnd@example.com pos/Student a/John street, block 123, #01-01 t/CS2103T-T17: Adds a contact namedJohn Doeto TAB. -
delete3: 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_CASEare the parameters to be supplied by the user.
e.g. inadd n/NAME,NAMEis 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/Jurongor asn/John Doe. -
Parameters can be in any order.
e.g. if the command specifiesn/NAME p/PHONE_NUMBER,p/PHONE_NUMBER n/NAMEis 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/56785678will be taken. - Extraneous parameters for commands that do not take in parameters (such as
help,list,exitandclear) 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-T17add 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,AdvisororUnassigned
TA:
- Availability:
AvailableorUnavailable
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 3shows 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.comedits the phone number and email address of the 1st person to be91234567andjohndoe@example.comrespectively. -
edit 2 n/Betsy Croweredits 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 TAedits the remark field of the 1st person to beInterested to be a TA. -
remark 2 r/remark_one r/remark_twoedits the remark field of the 2nd person to beremark_twoand 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/13edits 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/40adds 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/15will 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/80edits the grade of the 1st assignment of the 2nd person (whose position is student) to be68/80. -
grade 1 assignment/1 grade/68/80will 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/Availableedits 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/Coordinatoredits 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.
hanswill matchHans - The order of the keywords does not matter. e.g.
Hans Bowill matchBo Hans - Only the name is searched.
- Only full words will be matched e.g.
Hanwill not matchHans - Persons matching at least one keyword will be returned (i.e.
ORsearch). e.g.Hans Bowill returnHans Gruber,Bo Yang
Examples:
-
find JohnreturnsjohnandJohn Doe -
find alex davidreturnsAlex 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-t17will matchCS2103T-T17 - Only full word will be matched. e.g.
CS2103Twill not matchCS2103T-T17
Examples:
-
filter CS2103T-T17returns persons with the tagCS2103T-T17 -
filter CS2103Treturns 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:
-
listfollowed bydelete 2deletes the 2nd person in the TAB. -
find Betsyfollowed bydelete 1deletes the 1st person in the results of thefindcommand.
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_NAMEonly accepts alphanumeric, ‘-‘ and ‘_’ characters.
Example:
-
rename cs2103trenames 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
datadirectory, delete the.jsonfile you like to remove
- From the
- Step 2:
- From the
preferences.json, delete the same.jsonfile from theallAddressBookFilePathparameter.
- From the
Case By Case Basis:
- Step 3: (Only if
"addressBookFilePath"has the same name as the TAB you want to delete)- If the
.jsonfile is alsoaddressBookFilePath, swap it for the first TAB underallAddressBookFilePathand setaddressBookIndexto 0
- If the
Example:
Here I would like to delete a TAB named addressbook
- Step 1:
Go intodatafolder 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 INDEXe.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/REMARKe.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 TAGe.g., filter CS2103T-T17
|
| Delete |
delete INDEXe.g., delete 3
|
| Clear | clear |
| New | new |
| Swap | swap |
| Rename |
rename {NEW_NAME}e.g., rename CS2103T
|
| Exit | exit |