KeyContacts allows you to
KeyContacts is optimized for use via keyboard commands while still being aesthetically pleasing and easy to use. If you type fast, you can complete your contact management tasks much faster with KeyContacts than with mouse-based apps.
17
or above installed in your Computer.
keycontacts.jar
file from our releases page here.
keycontacts.jar
.Open a command terminal of your preference (e.g. Command Prompt on Windows, Terminal on Mac) from your home folder.
Open in Terminal
.Services
, then New Terminal at Folder
.Run the command: java -jar keycontacts.jar
.
You will see the app appear, filled with sample data:
Type a command in the command box and press Enter to execute it.
Example: Typing help
and pressing Enter will open the help window.
Some example commands you can try:
list
: Lists all students.add n/John Doe p/98765432 a/John street, block 123, #01-01 gl/ABRSM 3
: Adds a student named John Doe
to the student directory.schedule 2 d/mon st/08:00 et/10:00
: Schedules a weekly recurring lesson for the 2nd student on Monday from 8am to 10am.delete 3
: Deletes the 3rd student shown in the current list.clear
: Deletes all students.undo
: Undoes the last update to the student directory.exit
: Exits the app.Tip:
Refer to the Command Summary for a table containing the full list of commands.
The commands you can use in KeyContacts are split into 3 different types:
Let's walk you through some basics of the command format.
Each command consists of a command word, and zero or more parameters.
Words in UPPER_CASE
are the parameters to be supplied by you.
Example: In add n/NAME
, NAME
is a parameter which can be used as add n/John Doe
.
The parameter INDEX
(e.g. in the command format delete INDEX
) specifies the student to perform the operation on.
INDEX
refers to the index number shown in the displayed student list (at the top left of each student card). INDEX
must be a positive integer, i.e. 1, 2, 3...
Parameters in square brackets are optional.
Example: [g/GROUP]
can be omitted or used as g/Group One
.
Parameters with …
after them can be used multiple times.
Example: pn/PIECE…
can be used as pn/Moonlight Sonata
, pn/Moonlight Sonata pn/Ode to Joy
etc.
Parameters can be in any order (excluding INDEX
, which must follow the command word).
Example: If the command specifies n/NAME p/PHONE_NUMBER
, p/PHONE_NUMBER n/NAME
is also acceptable.
Extraneous parameters for commands that do not take in parameters (i.e help
, list
, undo
, redo
, exit
and clear
) will be ignored.
Example: If the command specifies help 123
, it will be interpreted as help
.
Caution:
If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines. This is because some space characters surrounding line-breaks may be omitted when copied over.
A student has a name, phone number, address, grade level and optionally, a group.
Students with
the same group name (case-insensitive) will have synced lessons.
Note:
Students with the same name (case-insensitive) and phone number will be counted as duplicate students.
Action | Format, Examples |
---|---|
Add | add n/NAME p/PHONE_NUMBER a/ADDRESS gl/GRADE_LEVEL [g/GROUP] e.g. add n/James Ho p/22224444 a/123, Clementi Rd, 1234665 gl/LCM 1 |
Delete | delete INDEX e.g. delete 3 |
Edit | edit INDEX [n/NAME] [p/PHONE_NUMBER] [a/ADDRESS] [gl/GRADE_LEVEL] [g/GROUP] e.g. edit 2 n/James Lee p/81234567 |
Assign | assign INDEX pn/PIECE_NAME... e.g. assign 1 pn/Moonlight Sonata pn/Canon in D |
Unassign | unassign INDEX [pn/PIECE_NAME]... e.g. unassign 1 pn/Moonlight Sonata pn/Canon in D |
add
Adds a student to the student directory.
Format: add n/NAME p/PHONE_NUMBER a/ADDRESS gl/GRADE_LEVEL [g/GROUP]
g/
), the student will not be assigned to any group.Examples:
add n/John Doe p/98765432 a/John street, block 123, #01-01 gl/LCM 1
adds a student named John Doe
with phone number 98765432
, address John Street, block 123, #01-01
, grade level LCM 1
, and no group.add n/Mary Sue p/87654321 a/Mary avenue, block 51, #10-10 gl/ABRSM 1 g/Jack's Group
adds a student named Mary Sue
with phone number 87654321
, address Mary avenue, block 51, #10-10
, grade level ABRSM 1
and group Jack's Group
. Mary Sue will have Jack's Group
's lessons.Tip:
Does the app keep telling you that you are trying to insert a duplicate student? Check that you are not entering a student that already exists in the directory! See our definition of duplicate students here.
delete
Deletes the specified student from the student directory.
Format: delete INDEX
INDEX
.Examples:
delete 2
deletes the 2nd student.Tip:
If you accidentally deleted the wrong student, you can use the undo command to revert your action.
edit
Edits an existing student in the student directory.
Format: edit INDEX [n/NAME] [p/PHONE] [a/ADDRESS] [gl/GRADE_LEVEL] [g/GROUP]
INDEX
.g/
), the student will be removed from any existing group.Examples:
edit 1 n/Jane Doe p/91234567
edits the name and phone number of the 1st student to be Jane Doe
and 91234567
respectively.edit 1 n/Penelope g/
removes the 1st student from their group, while also editing their name to be Penelope
.edit 2 g/Jack's Group
moves the 2nd student into the group Jack's Group
. The 2nd student will also be updated to have Jack's Group
's lessons.assign
Assigns piano pieces to a student in the student directory.
Format: assign INDEX pn/PIECE_NAME...
INDEX
.Examples:
assign 1 pn/Etude pn/Moonlight Sonata
adds Etude
and Moonlight Sonata
to the 1st student's piano pieces.unassign
Unassigns piano pieces from a student in the student directory.
Format: unassign INDEX [pn/PIECE_NAME]...
INDEX
.Examples:
unassign 1 pn/Etude pn/Moonlight Sonata
removes Etude
and Moonlight Sonata
from the 1st student's piano pieces.unassign 2
clears all the 2nd student's piano pieces.
Each student can have one regular lesson in the same timeslot every week. You can also create make-up lessons and cancel lessons for each student.
Note:
We mentioned earlier that students in the same group have synced lessons. So, all commands in this section will apply to the entire group of the targeted student.
Tip:
Our app helps prevent scheduling mishaps by not allowing overlapping lessons. If you try to schedule clashing lessons, we’ll catch it and notify you right away!
Listed below are the currently supported lesson commands.
Action | Format, Examples |
---|---|
Schedule | schedule INDEX d/DAY st/START_TIME et/END_TIME e.g. schedule 1 d/Monday st/12:00 et/14:00 |
Makeup | makeup INDEX dt/DATE st/START_TIME et/END_TIME e.g. makeup 1 dt/25-12-2022 st/12:00 et/14:00 |
Cancel | cancel INDEX dt/DATE st/START_TIME e.g. cancel 1 dt/14-10-2024 st/12:00 |
Uncancel | uncancel INDEX dt/DATE e.g. uncancel 1 dt/14-10-2024 |
schedule
Schedules a weekly recurring regular lesson for the specified student in the student directory.
Format: schedule INDEX d/DAY st/START_TIME et/END_TIME
INDEX
.DAY
must be a day of the week (e.g. Monday, Tuesday etc.) or its 3-letter abbreviation (e.g. Mon, Tue etc.). This parameter is case-insensitive.START_TIME
and END_TIME
must be in 24-hour format (HH:MM
), and START_TIME
must be before END_TIME
.Example:
schedule 1 d/Tuesday st/16:00 et/18:00
schedules a regular lesson every Tuesday, 4-6pm for the 1st student.makeup
Schedules a makeup lesson for the specified student in the student directory.
Format: makeup INDEX dt/DATE st/START_TIME et/END_TIME
INDEX
. The index refers to the index number shown in the displayed student list. The index must be a positive integer 1, 2, 3, …DATE
must be a valid date in the format DD-MM-YYYY
.START_TIME
and END_TIME
must be in 24-hour format (HH:MM
) and START_TIME
must be before END_TIME
.Examples:
makeup 1 dt/25-12-2024 st/12:00 et/14:00
schedules a makeup lesson on 25th December 2024, 12-2pm for the 1st student.cancel
Cancels a lesson for the specified student in the student directory.
Format: cancel INDEX dt/DATE st/START_TIME
INDEX
, on the specified DATE
that starts at the specified START_TIME
.DATE
must be a valid date in the format DD-MM-YYYY
.DATE
must match the student's lesson DATE
, and START_TIME
must match the student's lesson START_TIME
.START_TIME
must be in 24-hour format (HH:MM
).Example:
cancel 1 dt/15-10-2024 st/16:00
cancels a lesson on 15th Oct 2024, starting at 4pm for the 1st student.Note:
The cancel command supports cancelling both regular and makeup lessons!
Cancelled makeup lessons will be removed, while cancelled regular lessons appear as a list of dates in the student card.
uncancel
Uncancels a cancelled lesson for the specified student in the student directory.
Format: uncancel INDEX dt/DATE
INDEX
.DATE
must be a valid date in the format DD-MM-YYYY
.DATE
must match the student's cancelled lesson DATE
.Example:
uncancel 1 dt/20-10-2024
uncancels a regular lesson on 20th Oct 2024 for the 1st student.Tip:
The uncancel
command only supports uncancelling of regular lessons. To uncancel a makeup lesson, simply reschedule it with the makeup command.
Listed below are the currently supported general commands.
Action | Format, Examples |
---|---|
Help | help |
List | list |
View | view [dt/DATE] e.g. view dt/01-10-2024 |
Find | find [n/NAME_KEYWORD] [p/PHONE_KEYWORD] [a/ADDRESS_KEYWORD] [gl/GRADE_LEVEL_KEYWORD] [g/GROUP_KEYWORD] e.g. find n/James gl/ABRSM |
Sort | sort [n/ASC or DESC] [p/ASC or DESC] [a/ASC or DESC] [gl/ASC or DESC] [g/ASC or DESC] e.g. sort g/ASC n/DESC |
Clear | clear |
Undo | undo |
Redo | redo |
Exit | exit |
help
Shows a message explaining how to access the help page.
Format: help
list
Shows a list of all students in the student directory.
Format: list
view
Displays the lesson schedule for the specified week.
Format: view [dt/DATE]
DATE
must be in the format DD-MM-YYYY
.Examples:
view
displays the schedule for the current week.view dt/01-11-2024
displays the schedule for 28 Oct 2024 (Monday) to 3 Nov 2024 (Sunday).Note:
The schedule will exclude lessons that are cancelled for that week.
find
Finds students whose personal details match inputs.
Format: find [n/NAME_KEYWORD] [p/PHONE_KEYWORD] [a/ADDRESS_KEYWORD] [gl/GRADE_LEVEL_KEYWORD] [g/GROUP_KEYWORD]
hans
will match Hans
.ng
will match huang
.AND
search).
e.g. n/Hans p/98765432
will return Hans Gruber; 98765432
, but not Hans Goretzka; 12345678
.Examples:
find n/John
returns all students with John
in their name, such as john
and Johnny Doe
.find n/will p/8765
returns all students with will
in their name and phone number containing 8765
, such as william; 87654321
but not will; 12341234
.Tip:
You can use the list command to clear the previous find results and display all students again!
sort
Sorts students based on personal details.
Format: sort [n/ASC or DESC] [p/ASC or DESC] [a/ASC or DESC] [gl/ASC or DESC] [g/ASC or DESC]
ASC
(ascending) or DESC
(descending), and is case-insensitive.To clear the sorting conditions, use the command sort clear
.
Examples:
sort n/ASC
sorts the students by name in ascending order.sort gl/DESC n/ASC
sorts the students by grade level in descending order, and tie-breaks using name in ascending order.Note:
All sorting is performed in ASCII order, meaning lower-cased letters come after all upper-cased letters.
e.g "A" comes before "B", but "a" comes after "B".
clear
Clears all entries from the student directory.
Format: clear
Tip:
Accidentally used the clear
command? No need to worry! You can use the undo
command to revert your action!
Do NOT exit out of the application before you undo, as you will lose your data permanently.
undo
Undoes the last command that modified the student directory.
Format: undo
Note:
Undo only affects commands that modify student entries.
For example, if you ran the command delete 1
to delete student Alex Yeo
, followed by the command find Bernice
, running undo
will restore student Alex Yeo
.
You can undo multiple commands in a row that modified the student directory.
redo
Restores any changes that were previously undone using the undo
command.
Format: redo
Note:
If you make another change to student entries after an undo
command, you can no longer revert that undo
command.
For example, if you ran delete 2
, then undo
, then delete 1
, you can no longer redo
the delete 2
command.
You can redo multiple changes in a row.
exit
Exits the program.
Format: exit
How do I save my data?
Student directory data is saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
Help, why does it keep telling me that my date needs to be a valid date?
Firstly, make sure that your date exists (take note of the 29th of February on non-leap years).
Next, make sure that your date is following the DD-MM-YYYY
format (pay attention to the hyphens in between).
Example: 30-10-2024
is allowed, while 30/10/2024
is not allowed.
Can I edit the saved data file manually?
Student directory data is saved automatically as a JSON file at [JAR file location]/data/studentdirectory.json
.
Advanced users are welcome to update data directly by editing that data file.
How do I transfer my data to another computer?
You can do so by copying the data file over to the other computer as follows:
studentdirectory.json
file in the data folder over to the other computer.data
folder containing a sample studentdirectory.json
file.preferences.json
file created by the application before running the application again.help
command (or use the Help
menu, or the keyboard shortcut F1
) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.Action | Format, Examples |
---|---|
Add | add n/NAME p/PHONE_NUMBER a/ADDRESS gl/GRADE_LEVEL [g/GROUP] e.g. add n/James Ho p/22224444 a/123, Clementi Rd, 1234665 gl/LCM 1 |
Delete | delete INDEX e.g. delete 3 |
Edit | edit INDEX [n/NAME] [p/PHONE_NUMBER] [a/ADDRESS] [gl/GRADE_LEVEL] [g/GROUP] e.g. edit 2 n/James Lee p/81234567 |
Assign | assign INDEX pn/PIECE_NAME... e.g. assign 1 pn/Moonlight Sonata pn/Canon in D |
Unassign | unassign INDEX [pn/PIECE_NAME]... e.g. unassign 1 pn/Moonlight Sonata pn/Canon in D |
Schedule | schedule INDEX d/DAY st/START_TIME et/END_TIME e.g. schedule 1 d/Monday st/12:00 et/14:00 |
Makeup | makeup INDEX dt/DATE st/START_TIME et/END_TIME e.g. makeup 1 d/25-12-2022 st/12:00 et/14:00 |
Cancel | cancel INDEX dt/DATE st/START_TIME e.g. cancel 1 dt/14-10-2024 st/12:00 |
Uncancel | uncancel INDEX dt/DATE e.g. uncancel 1 dt/14-10-2024 |
Help | help |
List | list |
View | view [dt/DATE] e.g. view dt/01-10-2024 |
Find | find [n/NAME_KEYWORD] [p/PHONE_KEYWORD] [a/ADDRESS_KEYWORD] [gl/GRADE_LEVEL_KEYWORD] [g/GROUP_KEYWORD] e.g. find n/James gl/ABRSM |
Sort | sort [n/ASC or DESC] [p/ASC or DESC] [a/ASC or DESC] [gl/ASC or DESC] [g/ASC or DESC] e.g. sort g/ASC n/DESC |
Clear | clear |
Undo | undo |
Redo | redo |
Exit | exit |