User Guide
Introduction
NewAddressBook is a desktop app built for Singapore secondary school teachers that are handling large classes. It helps them manage the contacts of their students and colleagues efficiently. It also supports keeping track of upcoming meetings and recording the medical histories of students.
- Introduction
- Quick start
- Overview
- Glossary
-
Features
-
Managing Student Contacts
- Add a student :
student - Clear student contacts :
clearStudent - Copying fields from students :
copyStudent - Delete a student :
deleteStudent - Edit a student :
editStudent - Find students by name :
findStudent - Filter students :
filterStudent - List all students :
listStudent - Modify medical history of a student :
medical - View the full medical history of a student :
showMedical
- Add a student :
- Managing Teacher Contacts
- Managing Meetings
- General
-
Managing Student Contacts
- NewAddressBook Data File
- FAQ
Quick start
-
Ensure you have Java
11or above installed on your computer. -
Download the latest
newaddressbook.jarfrom here. -
Copy the file to the folder you want to use as the home folder for NewAddressBook.
-
Double-click the file to start the app. The GUI similar to the below should appear in a few seconds. Note how NewAddressBook already contains some sample data. (Depending on your OS, you may need to launch the jar file using the
java -jar newaddressbook.jarcommand)

-
Type a 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:
-
listStudent: Lists all students. -
student n/John Doe p/98765432 e/johnd@example.com g/M a/311, Clementi Ave 2, #02-25 f/3E1 em/999 i/Math class t/naughty: Adds a student named “John Doe” to NewAddressBook. -
deleteStudent 3: Deletes the 3rd student shown in the currently displayed student list. -
clearStudent: Deletes all displayed students. -
exit: Exits the app.
Refer to the Overview section for a summary of commands available and the Features section for details of each command.
data folder, delete newaddressbook.json
and try launching again.
Overview
User Interface (UI)
The following shows the different parts of NewAddressBook’s main application window:

- The Command Box is where the user types in commands for execution.
- The Result Box displays the result of the commands executed.
- The Student List displays the list of students stored in the app.
- The Teacher List displays the list of teachers stored in the app.
- The Data Source displays information about where the app saves data.
Individual Student Display
The following image shows the various aspects that describe a student:

showMedical command.
Individual Teacher Display
The following image shows the various aspects that describe a teacher:

Meeting Window
Meetings are not displayed in the main window. Instead, they are displayed in a separate window, called the Meeting window.
The meeting window pops up when the user enters the showMeeting command in the main window’s input box. Alternatively, the user may opt to click on the Show Meeting button in the menu bar.
The following image shows the meeting window:

The meeting window has its own input box, result box, and a list displaying all meetings.
Individual Meeting Display
The various fields that describe a meeting are as follows:

Commands Summary
undo command.
The other commands work either in the main application window or the meeting window, but not both.
The Window column of the table below indicates which window the command is compatible with.
| Action | Format | Window |
|---|---|---|
| Add student | student n/NAME p/PHONE e/EMAIL g/GENDER a/ADDRESS f/FORM_CLASS em/EMERGENCY_CONTACT i/INVOLVEMENT [t/TAG]… |
Main |
| Clear students | clearStudent |
Main |
| Copy a field from students | copyStudent c/FIELD_TO_COPY |
Main |
| Delete a student | deleteStudent INDEX |
Main |
| Edit a student | editStudent INDEX [n/NAME] [p/PHONE] [e/EMAIL] [g/GENDER] [i/INVOLVEMENT] [a/ADDRESS] [f/FORM_CLASS] [em/EMERGENCY_CONTACT] [t/TAG]… |
Main |
| Find a student by name | findStudent KEYWORD [MORE_KEYWORDS] |
Main |
| Filter a student | filterStudent [INVOLVEMENT] [t/TAG]… |
Main |
| List all students | listStudent |
Main |
| Record a student’s medical history | medical INDEX m/MEDICAL_HISTORY |
Main |
| Show a student’s full medical history | showMedical INDEX |
Main |
| Add teacher | teacher n/NAME p/PHONE e/EMAIL g/GENDER o/OFFICE_TABLE_NUMBER i/INVOLVEMENT [t/TAG]… |
Main |
| Copy a field from teachers | copyTeacher c/FIELD_TO_COPY |
Main |
| Clear teachers | clearTeacher |
Main |
| Delete a teacher | deleteTeacher INDEX |
Main |
| Edit a teacher | editTeacher INDEX [n/NAME] [p/PHONE] [e/EMAIL] [g/GENDER] [i/INVOLVEMENT] [o/OFFICE_TABLE_NUMBER] [t/TAG]… |
Main |
| Find a teacher by name | findTeacher KEYWORD [MORE_KEYWORDS] |
Main |
| Filter a teacher | filterTeacher [INVOLVEMENT] [t/TAG]… |
Main |
| List all teachers | listTeacher |
Main |
| Exit | exit |
Main |
| View help | help |
Main |
| Open meetings window | showMeeting |
Main |
| Add meeting | meet r/TITLE d/DATE_TIME v/VENUE w/ATTENDEE_TYPE |
Meetings |
| Remove meeting | deleteMeeting INDEX |
Meetings |
| Clear all meetings | clearMeeting |
Meetings |
| Close meetings window | quitMeeting |
Meetings |
| Undo | undo |
Both |
Glossary
-
Involvement: refers to how the user is involved with the student/teacher contact. This is a broad term describing why the user would even want to bother storing the student/teacher in NewAddressBook in the first place. For example, a math teacher might store the involvement of a student in their class as
in my math class. A CCA teacher might store the involvement of a student in his badminton CCA asbadminton. A teacher involved in an overseas CIP trip might want to store the involvement of students going along with him asCIP trip. -
Currently displayed list: For students, for example, there are two lists that are maintained by the application. One is the full list of students. The other is the list which the user currently sees on screen. For various reasons, the list the user sees may not be the same as the full list of students (perhaps the user executed a
findStudentcommand). When we say “currently displayed list” we mean the list that is currently shown to the user.
Features
Notes about the command format:
-
Words in
UPPER_CASEare the parameters to be supplied by the user.
e.g. instudentcommand,NAMEundern/NAMErepresents the student’s name that you should provide. For instance, if the student’s name is “John Doe”, you should inputn/John Doein thestudentcommand. -
Items in square brackets are optional.
e.gn/NAME [t/TAG]can be used asn/John Doe t/friendor asn/John Doe. -
Items with
… after them can be used multiple times including zero times.
e.g.[t/TAG]…can be used ast/friend,t/friend t/familyetc. -
For most commands except
filterStudentandfilterTeacher, parameters can be in any order.
e.g. if the command specifiesn/NAME p/PHONE,p/PHONE 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,quitMeeting,list,exitandclearStudent/clearTeacher) will be ignored.
e.g. for thehelpcommand, if you specifyhelp 123, it will be interpreted ashelp. For other commands that require parameters, the input format must be as stated in the user guide. -
For all prefixes (except the first), the user should ensure they are preceded by a space for the parser to recognise it as a new prefix, instead of a parameter in the previous prefix. For example,
editStudent 1 i/e/hello@example.comparsers the parameter fori/ase/hello@example.com, and does not detect any input for thee/field. On the other hand, for the commandeditStudent 1 i/ e/hello@example.com,i/is detected to have no arguments, whilee/hashello@example.comas an argument. As such, the second command will not succeed since thei/field is blank. -
For all parameters, extraneous spaces within the input values will not be trimmed. e.g.
n/john doeis considered different fromn/john doe -
All parameters and commands, unless specified, are case-sensitive.
The commands offered can be roughly split into 4 categories: those involving students, teachers, meetings, and general commands.
Managing Student Contacts
Add a student : student
Adds a student to NewAddressBook.
Format: student n/NAME p/PHONE e/EMAIL g/GENDER a/ADDRESS f/FORM_CLASS em/EMERGENCY_CONTACT
i/INVOLVEMENT [t/TAG]…
Parameters:
-
NAMEThe name of the student- should not be blank
- should only contain alphanumeric characters and spaces
-
PHONEThe phone number of the student- should only contain numbers, and it should be at least 3 digits long
-
EMAILThe email of the student- should not be blank
- should be of the format
local-part@domain -
local-partshould only contain alphanumeric characters and these special characters, excluding the parentheses, (+_.-) -
domainshould be at least 2 characters long, start and end with alphanumeric characters, and only contain alphanumeric characters, periods and hyphens
-
GENDERThe gender of the student- must be one of the following:
M(Male),F(Female) orN(Non-binary) - case-insensitive
- must be one of the following:
-
ADDRESSThe address of the student- should not be blank
-
FORM_CLASSThe form class that the student belongs to- should not be blank
- should be of the format
|LEVEL|STRING|[ALPHANUMERIC]| -
LEVELmust be a digit from 1 to 5 -
STRINGshould not be blank and can only contain alphabets -
ALPHANUMERICis optional and can only contain alphanumeric characters - For example,
4E1is allowed but42is not allowed
-
INVOLVEMENTThe user’s main involvement with the student- should not be blank
-
EMERGENCY_CONTACTThe emergency contact number of the student- should only contain numbers, and it should be at least 3 digits long
-
TAGA tag associated with the student- should only contain alphanumeric characters
- if the tag field is specified, it cannot be empty
t/cat t/cat,
only one will be displayed as they are considered the same.
INVOLVEMENT is intended to be used in the glossary.
FORM_CLASS:
While the format allowed for FORM_CLASS caters to most secondary schools in Singapore, we understand that some schools
have other naming conventions for their classes. We will work on this in future versions of NewAddressBook to allow for more flexibility.
Examples:
student n/James p/94629424 e/j77@example.com a/George street, block 123, #01-01 f/3A2 g/M i/Math class em/92696977student n/Betsy Crowe p/83958294 e/bc33@example.com a/Adams road, block 8, #03-05 f/3C1 g/F i/Bio rep em/96122134 t/President t/exco
Clear student contacts : clearStudent
Clears all currently displayed students from NewAddressBook. If the currently displayed list is empty, the application warns the user that the list is empty and nothing is cleared.
Format: clearStudent
listStudent command.
Example:
-
listStudentfollowed byclearStudentclears all students from NewAddressBook. -
filterStudent t/smartfollowed byclearStudentclears all students with the “smart” tag from NewAddressBook.
Copying fields from students : copyStudent
Copy specified data from all students in the currently displayed student list. The fields that can be copied are:
- phone numbers
- name
Format: copyStudent c/FIELD_TO_COPY
-
FIELD_TO_COPYcan only be one of the three:phone,emailorname. They are case sensitive.
Example:
-
listStudentfollowed bycopyStudent c/emailcopies the emails of all students in NewAddressBook to the user’s clipboard. -
findStudent Betsyfollowed bycopyStudent c/phonecopies the phones of students whose name matches Betsy. The definition of “matches” here uses the definition in thefindStudentcommand.
Delete a student : deleteStudent
Deletes the specified student from NewAddressBook.
Format: deleteStudent INDEX
- Deletes the student at the specified
INDEX. -
INDEXrefers to the index number shown in the currently displayed student list. - The index must be a positive integer 1, 2, 3, … not exceeding the size of the currently displayed student list.
Examples:
-
listStudentfollowed bydeleteStudent 2deletes the 2nd student in NewAddressBook. -
findStudent Betsyfollowed bydeleteStudent 1deletes the 1st student in the results of thefindStudentcommand.
Edit a student : editStudent
Edits an existing student in NewAddressBook.
Format: editStudent INDEX [n/NAME] [p/PHONE] [e/EMAIL] [g/GENDER] [i/INVOLVEMENT] [a/ADDRESS]
[f/FORM_CLASS] [em/EMERGENCY_CONTACT] [t/TAG]…
- Edits the student at the specified
INDEX. -
INDEXrefers to the index number shown in the currently displayed student list. The index must be a positive integer 1, 2, 3, … not exceeding the size of the currently displayed student list. - 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 student will be removed i.e adding of tags is not cumulative.
t/ without specifying any tags after it.
Examples:
-
editStudent 1 f/4Donkey e/johndoe@example.comEdits the form class and email address of the 1st student in the currently displayed student list to be4Donkeyandjohndoe@example.comrespectively. -
editStudent 2 em/901941341Edits the emergency contact number of the 2nd student in the currently displayed student list to be 901941341.
Find students by name : findStudent
Finds students whose names contain any of the given keywords.
Format: findStudent 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 - Students matching at least one keyword will be returned (i.e.
ORsearch). e.g.Hans Bowill returnHans Gruber,Bo Yang
Examples:
-
findStudent JohnreturnsjohnandJohn Doe -
findStudent alex YureturnsAlex Yeoh,Bernice Yu
Filter students : filterStudent
The user can filter students by:
- tag(s)
- involvement
filterStudent command differs from the findStudent in that findStudent only finds students by name, whereas the filterStudent command allows the user to filter out students based on tag(s) and/or involvement.
Format:filterStudent [INVOLVEMENT] [t/TAG]…
- It allows filtering by either
TAGorINVOLVEMENTor both. - Either
INVOLVEMENTorTAGmust be present. - The search for both tag and involvement is case-insensitive. e.g
hanswill matchHans. - The search for both tag and involvement matches substrings, e.g
hanwill matchHans. - Involvement searches are broken up. That is, if the command was
filterStudent One Two,One Twobe broken up into two stringsOneandTwoand it will search for involvement that contains bothOneandTwo. Similarly, if the user executesfilterStudent one one, then the command treats it as though a singleonewas put in. Similarly, an input witht/tag1 t/tag1is treated as though the user had put in a singlet/tag1. - Students matching all of the search will be returned (i.e.
ANDsearch). For example, if the search wasfilterStudent chess club t/member, only students whose involvement has bothchessandclubin it and has tags containingmemberwill be returned. - Only alphanumeric tag parameters in the search are allowed.
- Involvement must come before tag. e.g.
filterStudent chess club t/memberis allowed butfilterStudent t/member chess clubis not.
Examples:
-
filterStudent class t/rep- will return all students with the involvement containingclassand has at least one tag containingrep. -
filterStudent math class- will return all students with the involvement containingmath class. -
filterStudent t/banana t/phone- will return all students with tags containing “banana” and “phone”.
List all students : listStudent
Shows a list of all students stored in NewAddressBook.
Format: listStudent
Modify medical history of a student : medical
Format: medical INDEX m/MEDICAL_HISTORY
- Adds the medical history to the student at the specified
INDEX. -
INDEXrefers to the index number shown in the displayed student list. - The index must be a positive integer 1, 2, 3, … not exceeding the size of the displayed student list.
How this command works:
- Adds a medical history to an existing student if the student does not have any existing medical history.
- Overwrites the medical history of a student if the student already has an existing medical history.
- Removes the medical history of a student if the student already has an existing medical history and an empty
MEDICAL_HISTORYis given. - The command does not allow the user to overwrite the current
MEDICAL_HISTORYwith an identicalMEDICAL_HISTORY. In other words, the newMEDICAL_HISTORYmust be different from the existingMEDICAL_HISTORY.
Examples:
-
medical 1 m/ADHDadds ADHD to theMEDICAL_HISTORYof student 1 in the displayed student list. -
medical 1 m/removes theMEDICAL_HISTORYfrom student 1 in the displayed student list.
View the full medical history of a student : showMedical
Displays a pop-up window for the user to view the full medical history of the student in NewAddressBook.
Format: showMedical INDEX
- View the full medical history of the student at the specified
INDEX. -
INDEXrefers to the index number shown in the currently displayed student list. - The index must be a positive integer 1, 2, 3, … not exceeding the size of the displayed student list.
Examples:
showMedical 1
Managing Teacher Contacts
Add a teacher : teacher
Adds a teacher to NewAddressBook.
Format: teacher n/NAME p/PHONE e/EMAIL g/GENDER o/OFFICE_TABLE_NUMBER
i/INVOLVEMENT [t/TAG]…
Parameters:
-
NAMEThe name of the teacher- should not be blank
- should only contain alphanumeric characters and spaces
-
PHONEThe phone number of the teacher- should only contain numbers, and it should be at least 3 digits long
-
EMAILThe email of the teacher- should not be blank
- should be of the format
local-part@domain -
local-partshould only contain alphanumeric characters and these special characters, excluding the parentheses, (+_.-) -
domainshould be at least 2 characters long, start and end with alphanumeric characters, and only contain alphanumeric characters, periods and hyphens
-
GENDERThe gender of the teacher- can only be one of the following:
M(Male),F(Female) orN(Non-binary) - case-insensitive
- can only be one of the following:
-
OFFICE_TABLE_NUMBERThe teacher’s table number in the school office- should only contain numbers. It should have at least 1 digit and at most 5 digits.
- two office numbers are different if all their digits are the same, rather than just being the same number. For example,
001is different from1. This is to provide users with more flexibility.
-
INVOLVEMENTThe user’s involvement with the teacher- should not be blank
-
TAGA tag associated with the teacher- should only contain alphanumeric characters
- if the tag field is specified, it cannot be empty
t/cat t/cat,
only one will be displayed as they are considered the same.
INVOLVEMENT is intended to be used in the glossary.
Examples:
teacher n/Messi p/94629424 e/j77@example.com o/12 g/M i/Math Departmentteacher n/Eden p/83958294 e/bc33@example.com o/15 g/N i/Class 3D Co-form t/buddy t/colleague
Clear teacher contacts : clearTeacher
Clears all currently displayed teachers from NewAddressBook. If the currently displayed list is empty, the application warns the user that the list is empty and nothing is cleared.
Format: clearTeacher
listTeacher command.
Example:
-
listTeacherfollowed byclearTeacherclears all teachers from NewAddressBook. -
filterTeacher t/goodfollowed byclearTeacherclears all teachers with the “good” tag from NewAddressBook.
Copying fields from teachers : copyTeacher
Copy specified data from all teachers in the currently displayed teacher list. The fields that can be copied are:
- phone numbers
- name
Format: copyTeacher c/FIELD_TO_COPY
FIELD_TO_COPY can only be one of three strings: phone, email or name.
Example:
-
listTeacherfollowed bycopyTeacher c/emailcopies the emails of all teachers to the user’s clipboard. -
findTeacher Betsyfollowed bycopyTeacher c/phonecopies the phones of teachers whose name matches Betsy. The definition of “matches” is as per the definition in thefindTeachercommand.
Delete a teacher : deleteTeacher
Deletes the specified teacher from NewAddressBook.
Format: deleteTeacher INDEX
- Deletes the teacher at the specified
INDEX. -
INDEXrefers to the index number shown in the currently displayed teacher list. - The index must be a positive integer 1, 2, 3, … not exceeding the size of the currently displayed teacher list.
Examples:
-
listTeacherfollowed bydeleteTeacher 2deletes the 2nd teacher in NewAddressBook. -
findTeacher Betsyfollowed bydeleteTeacher 1deletes the 1st teacher in the results of thefindTeachercommand.
Edit a teacher : editTeacher
Edits an existing teacher in NewAddressBook.
Format: editTeacher INDEX [n/NAME] [p/PHONE] [e/EMAIL] [g/GENDER] [i/INVOLVEMENT] [o/OFFICE_TABLE_NUMBER] [t/TAG]…
- Edits the teacher at the specified
INDEX. -
INDEXrefers to the index number shown in the currently displayed teacher list. The index must be a positive integer 1, 2, 3, … not exceeding the size of the currently displayed teacher list. - 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 teacher will be removed, ie. adding of tags is not cumulative.
t/ without specifying any tags after it.
Examples:
-
editTeacher 1 p/91234567 e/johndoe@example.comEdits the phone number and email address of the 1st teacher to be91234567andjohndoe@example.comrespectively. -
editTeacher 2 o/5 t/Edits the office table number of the 2nd teacher to be 5 and clears all existing tags.
Find teachers by name : findTeacher
Finds teachers whose names contain any of the given keywords.
Format: findTeacher 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 - Teachers matching at least one keyword will be returned (i.e.
ORsearch). e.g.Hans Bowill returnHans Gruber,Bo Yang
Examples:
-
findTeacher JohnreturnsjohnandJohn Doe -
findTeacher alex YureturnsAlex Yeoh,Bernice Yu
Filter teachers : filterTeacher
The user can filter teachers by:
- tag(s)
- involvement
filterTeacher command differs from the findTeacher in that findTeacher only finds teachers by name, whereas the filterTeacher command allows the user to filter out teachers based on tags and involvement.
Format:filterTeacher [INVOLVEMENT] [t/TAG]…
- It allows filtering by either
TAGorINVOLVEMENTor both. - Either
INVOLVEMENTorTAGmust be present. - The search for both tag and involvement is case-insensitive. e.g
hanswill matchHans. - The search is for both tag and involvement matches substrings, e.g
hanwill matchHans. - Involvement searches are broken up. That is, if the command was
filterTeacher One Two,One Twobe broken up into two stringsOneandTwoand it will search for involvement that contains bothOneandTwo. Similarly, if the user executesfilterTeacher one one, then the command treats it as though a singleonewas put in. Similarly, an input witht/tag1 t/tag1is treated as though the user had put in a singlet/tag1. - Teachers matching all of the search will be returned (i.e.
ANDsearch). For example, if the search wasfilterTeacher chess club t/coordinator, only teachers whose involvement has bothchessandclubin it and has tags containingcoordinatorwill be returned. - Only alphanumeric tag parameters in the search are allowed.
- Involvement must come before tag. e.g.
filterTeacher chess club t/coordinatoris allowed butfilterTeacher t/coordinator chess clubis not.
Example:
-
filterTeacher class t/rep- will return all teachers with the involvement containingclassand has at least one tag containingrep. -
filterTeacher math class- will return all teachers with the involvement containingmath class. -
filterTeacher t/banana t/phone- will return all teachers with tags containingbananaandphone.
List all teachers : listTeacher
Shows a list of all teachers stored in NewAddressBook.
Format: listTeacher
Managing Meetings
NewAddressBook also allows you to keep track of upcoming meetings with parents, teachers or students.
Add a meeting : meet
Format: meet r/TITLE d/DATE_TIME v/VENUE w/ATTENDEE_TYPE
Parameters:
-
TITLEA brief summary of the meeting.- should not be blank
-
DATE_TIMEA valid date and time of the meeting.- should be of the format
YYYY-MM-DD HH:mm - should be a valid date in the future
- should pad the input with zeroes if the year, month or day is not two digits. For example, the date
2045-7-12is invalid, but2045-07-12is valid. - the year should be exactly 4 digits long, month 2 digits, and day 2 digits. Hence, while
12045-01-01is a valid date, it will not be accepted. - the time should be a valid 24h time. Again, the user should pad the time such that the hour and minutes are both exactly 2 digits long. For example,
2:45is invalid, but02:45is valid.
- should be of the format
-
VENUE: The venue of the meeting.- should not be blank
-
ATTENDEE_TYPE: The type of person(s) you are meeting with.- must be one of the following:
S(students),T(teachers),P(parents) - case-insensitive
- must be one of the following:
Example:
meet r/Meeting with Ms.Lee d/2040-07-12 14:08 v/Seminar room 3 w/P
Delete a meeting : deleteMeeting
Deletes the specified meeting from NewAddressBook.
Format: deleteMeeting INDEX
- Deletes the meeting at the specified
INDEX. -
INDEXrefers to the index number shown in the displayed meeting list. - The index must be a positive integer 1, 2, 3, … not exceeding the size of the displayed meeting list.
Examples:
-
deleteMeeting 2deletes the 2nd meeting in NewAddressBook. -
deleteMeeting 0will return an error since the index is not positive.
Clear meetings : clearMeeting
Clears all meetings from NewAddressBook.
Format: clearMeeting
Show meetings window : showMeeting
Pops out the meeting window.
Format: showMeeting
Quit meetings window : quitMeeting
Closes the meeting window.
Format: quitMeeting
General
Exiting the program : exit
Exits the program.
Format: exit
Undo the latest change : undo
Undoes the last change. This command only works for operations that adds, deletes, or edits information.
This means that commands such as filterStudent/filterTeacher and the copyStudent/copyTeacher command cannot be undone. One can undo adding/deleting meetings as well.
Format: undo
undo command works in both the main and meeting window.
undo undoes the last action, no matter which window one executes it from. For example, if one edited a student in the main window, then added a meeting from the meeting window, executing the undo command from the main window will undo the action of adding the meeting, rather than the action of editing the student. Another way of putting it is that the undo command undoes the user’s last action, rather than the user’s last action in that window.
Viewing help : help
Shows a message explaining how to access the help page.

Format: help
NewAddressBook Data File
Saving the data
NewAddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
Editing the data file
NewAddressBook data are saved as a JSON file [JAR file location]/data/newaddressbook.json. Advanced users are welcome to update data directly by editing the data file.
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 NewAddressBook home folder.