User Guide
CanoE-COACH is a desktop app for managing training schedules for secondary school canoe teams, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical Interface (GUI). If you can type fast, CanoE-COACH can get your training scheduling done faster than traditional GUI apps.
- Quick start
-
Features
- Viewing help:
help
- Adding a student:
add
- Editing a student :
edit
- Delete student:
delete
- Find :
find
- Common Time :
common-time
- Create Training :
training
- Delete Training :
delete-training
- Add Student to Training :
ts-add
- Add All Available Students to Training :
ts-addall
- Delete Student from Training :
ts-delete
- Find training :
find-training
- Mark/Unmark a student’s attendance for a training :
mark-attendance
,unmark-attendance
- Find all students with a bad attendance record:
find-bad-students
- Clearing all entries:
clear
- Exiting the program:
exit
- Viewing help:
- FAQ
- Command summary
- Glossary
Quick start
-
Ensure you have Java
11
or above installed in your computer. -
Download the latest
CanoE-COACH.jar
from here. -
Copy the file to the folder you want to use as the home folder for your CanoE-COACH.
-
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 students and trainings. -
add
n/Steven Soo p/98665432 e/stev@example.com ay/2
: Adds a student namedSteven Soo
to the student list. -
training
2021-08-26 1500
: Adds a training scheduled on the 26th of August, 2021, with a start time of 1500 to the training list. -
delete
3
: Deletes the 3rd student shown in the student list. -
clear
: Deletes all students and trainings. -
exit
: Exits the app.
-
-
Refer to the Features below for details of each command.
Features
Notes about the 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 in square brackets are optional.
e.gn/NAME [t/TAG]
can be used asn/John Doe t/treasurer
or asn/John Doe
. -
Items with
…
after them can be used multiple times including zero times.
e.g.[t/TAG]…
can be used as ` ` (i.e. 0 times),t/treasurer
,t/treasurer t/EXCO
etc. -
Parameters can be in any order.
e.g. if the command specifiesn/NAME p/PHONE_NUMBER
,p/PHONE_NUMBER n/NAME
is also acceptable. -
Take note of the difference between
STUDENT_INDEX
andSTUDENT_ID
-
STUDENT_INDEX
refers to the index displayed on the GUI (this will change depending on how the GUI is filtered) -
STUDENT_ID
refers to the unique index given to each student, as reflected in the GUI by Id: 1 (This will not change even if the GUI is filtered.)
-
Viewing help: help
Shows a summarised list of available commands.
Format: help
Adding a student: add
Adds a student to the student list. The student will be auto-assigned a unique id
.
Format: add n/NAME p/PHONE_NUMBER e/EMAIL ay/ACADEMIC_YEAR [d1/HHmm d2/HHmm d3/HHmm d4/HHmm d5/HHmm] [t/TAG]
Prefix | Representation |
---|---|
d1/ | Monday's Dismissal Time |
d2/ | Tuesday's Dismissal Time |
d3/ | Wednesday's Dismissal Time |
d4/ | Thursday's Dismissal Time |
d5/ | Friday's Dismissal Time |
- Academic year ranges from
1
to5
and represents Secondary 1 to 5. -
d1/ d2/ d3/ d4/ d5/
corresponds to the dismissal times on different days. They are optional fields. - The default dismissal time is 1500. If the user inputs
d1/1700 d5/1200
, then the record will be equivalent tod1/1700 d2/1500 d3/1500 d4/1500 d5/1200
Be careful of adding duplicates:
- We allow for duplicate details in our student list, but two students should not share the same name AND academic year AND (phone number OR email address).
Examples:
add n/Benjamin p/12345678 e/littleicemaiden@rocket.com ay/3 d1/1330 d2/1730 d3/1600 d4/1200 d5/1100
add n/Sarah p/56781234 e/sa.rah@googoo.com ay/1 d1/1700 d3/1430
Editing a student : edit
Edits an existing student in the student list.
Format: edit STUDENT_INDEX [n/NAME] [p/PHONE] [e/EMAIL] [ay/ACADEMIC_YEAR] [d1/HHmm d2/HHmm d3/HHmm d4/HHmm d5/HHmm] [t/TAG]…
- Edits the student at the specified
STUDENT_INDEX
. The student index refers to the index number shown in the displayed student list. The student 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 student will be removed i.e adding of tags is not cumulative.
- You can remove all of the student’s tags by typing
t/
without specifying any tags after it. - Take note that editing the details of a student will also propagate the changes on the training panel.
- Be careful when editing dismissal times, as this might automatically remove students from scheduled trainings if the updated dismissal time on the same day of the week is now later than the start time of any of the student’s upcoming scheduled trainings. Past trainings will not be affected.
Examples:
-
edit 1 p/91234567 e/johndoe@example.com d1/1600
Edits the phone number and email address of the 1st student in the displayed student list to be91234567
andjohndoe@example.com
respectively. This also changes his Monday’s dismissal time to 1600. -
edit 2 n/Betsy Crower t/
Edits the name of the 2nd student to beBetsy Crower
and clears all existing tags.
Delete student: delete
Deletes the specified student from the student list.
Format: delete STUDENT_INDEX
- Deletes the student at the specified
STUDENT_INDEX
. - The student index refers to the index number shown in the displayed student list. (This is different from the unique ID of each student.)
- The index must be an positive integer 1, 2, 3, …
- This will remove the student from all of his/her scheduled training sessions (both past and present).
Examples:
-
delete 2
deletes the 2nd student in the displayed student list.
Find : find
Find students based on specified fields.
Format: find [n/KEYWORDS] [p/PHONE_VALUE] [ay/ACADEMIC_YEAR] [e/EMAIL] [d1/HHmm d2/HHmm d3/HHmm d4/HHmm d5/HHmm] [id/STUDENT_ID]
- At least one field needs to be filled
- Name
- 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 full words will be matched e.g.
Han
will not matchHans
- Students matching at least one keyword will be returned (i.e. OR search). e.g.
Hans Bo
will returnHans Gruber
,Bo Yang
- The search is case-insensitive. e.g
- Phone Number
- Value will match exactly. e.g.
98765432
will not match987654
but will match98765432
- The phone value query must be a valid phone number. e.g.
p/1
is invalid,p/111
is valid - Only one phone number can be searched for at any one time
- Value will match exactly. e.g.
- Email
- Emails containing the search word will be returned. e.g.
meow
will matchmeow@domain.com
,emailer@meow.com
- Only one email address can be searched for at any one time
- Emails containing the search word will be returned. e.g.
- Academic Year
- Value will match exactly. e.g.
2
will match2
but not1
- The academic year value query must be a valid academic year. e.g.
ay/6
is invalid,ay/4
is valid
- Value will match exactly. e.g.
- Dismissal Time (
d1
tod5
)-
Students with dismissal times equal OR before the query time will be matched
e.g.
d1/1500
will match1500
and1200
, but not1530
on Monday -
The dismissal time value query must be a valid dismissal time
-
- Id
- Student with the same
id
value will be matched. - The id value query must be a valid id. e.g.
id/abc
is invalid,id/2
is valid - Due to the nature of id being unique, only one student will be matched.
- Student with the same
-
Searching by more than one field
- Find command will return student(s) that matches all the fields provided. e.g.
n/Alex p/123
will returnAlex Yeoh
only if his phone number matches123
- Order in which fields are written does not matter. e.g.
find n/alex e/meow@gmail.com
is the same asfind e/meow@gmail.com n/alex
- Find command will return student(s) that matches all the fields provided. e.g.
Examples:
-
find n/alex david
returnsAlex Yeoh
,David Li
-
find n/alex david p/123
returnsAlex Yeoh
since his phone number is123
-
find n/Alex d2/1600
returnsAlex Yeoh
, provided his dismissal time on Tuesday falls at or before1600
-
find ay/1
returns all students who are of Academic Year 1 -
find id/3
returns the student with the student Id 3 -
find d4/1700
returns all students who have their Thursday dismissal time equal to or before 1700 -
find d2/1500 ay/2
returns all Academic Year 2 students with Tuesday dismissal time equal to or before 1500
Common Time : common-time
Returns the latest dismissal times on each day for all of the students in the specified subgroup. This would display the earliest time possible to schedule a training for all students in the sub group.
Format: common-time [n/KEYWORDS] [ay/ACADEMIC_YEAR]
- At least one field needs to be filled
- Name
- 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 full words will be matched e.g.
Han
will not matchHans
- Students matching at least one keyword will be checked (i.e. OR search). e.g.
Hans Bo
will matchHans Gruber
,Bo Yang
- The search is case-insensitive. e.g
- Academic Year
- Value will match exactly. e.g.
2
will match2
but not1
- The academic year value query must be a valid academic year. e.g.
ay/6
is invalid,ay/4
is valid
- Value will match exactly. e.g.
-
Searching by more than one field
- Common Time command will return student(s) that matches any of the fields provided.
Examples:
-
common-time n/alex ay/1
returns the latest dismissal times for all students with names containing the whole wordalex
, OR who are in Academic Year 1. -
common-time ay/1
returns the latest dismissal times for all the students in the student list who are in Academic Year 1. -
common-time n/Alex Jane Mary
returns the latest dismissal times for all students with names Alex, Jane or Mary. Take note the rules above for matching applies.
Create Training : training
Creates a new training at the specified date and time.
Format: training yyyy-MM-dd HHmm
- Take note of the format of the date and time.
- Only one date time can be specified with each command.
Examples:
-
training 2021-10-10 1500
will create a training on the 10th of October, 2021, with 1500 as the training start time.
Delete Training : delete-training
Deletes an existing training from the training list.
Format: delete-training TRAINING_INDEX
- Deletes the training at the specified
TRAINING_INDEX
. - Training index refers to the index of the training in the displayed training list.
- The index must be an positive integer 1, 2, 3, …
- All students inside of the training to be deleted will have the training removed from their training schedules.
Examples:
-
delete-training 2
removes the training with index 2 in the displayed training list.
Add Student to Training : ts-add
Adds students to a training.
Format: ts-add TRAINING_INDEX id/STUDENT_ID...
- Training index refers to the index of the training in the displayed training list.
- Multiple students can be added with the same command by inputing multiple student indexes separated with a comma.
- Only one training index can be specified at a time.
- Each student can only be added to a SINGLE training on the same date regardless of time.
- Student’s dismissal time for the same day should also be equal or earlier than the time of the training. (i.e. Student’s dismissal time for Monday should be equal or earlier than the time of a training that falls on a Monday for him/her to be successfully added.)
Note: Training schedules can also be viewed on the student list panel and they will update as you add students to trainings. Students will be displayed in lexicographic order in each Training Session.
Examples:
-
ts-add 2 id/1,2,3
adds students with student id values 1, 2, 3 to training 1.
Add All Available Students to Training : ts-addall
Adds all available students to a training.
Format: ts-addall TRAINING_INDEX
- Training index refers to the index of the training in the displayed training list.
- All students displayed in the student list will be added to the training if they can be added.
- A student can be added to the training if and only if:
- They are available for the training’s date-time based on their dismissal times
- They do not have an existing training at that date-time
- The training does not already contain that student
- Students that are not available will be ignored.
Note: Training schedules can also be viewed on the student list panel and they will update as you add students to trainings.
Examples:
-
ts-addall 1
adds all available students from the displayed student list to training 1.
Delete Student from Training : ts-delete
Deletes students from a training.
Format: ts-delete TRAINING_INDEX id/STUDENT_ID...
- Training index refers to the index of the training in the displayed training list.
- Multiple students can be deleted with the same command by listing multiple student Ids separated with a comma.
- Only one training index can be specified at a time.
Note: Training schedules can also be viewed on the student list panel and it will update as you delete students from trainings.
Examples:
-
ts-delete 2 id/1,2,3
deletes students with student id values 1, 2, 3 from training 2.
Find training : find-training
Finds training based on specified fields.
Format: find-training [id/STUDENT_ID] [dt/DATETIME]
- At least one field must be specified.
- Only ONE student id can be specified in the same command
- Only ONE date-time can be specified in the same command
- Date-time must be in the form
yyyy-MM-dd HHmm
(i.e. 2021-08-26 1800) - Date-time specified will be matched with the date-time (start time) of trainings in order to return a matched training.
- If only the student id is specified, the command will return all of the scheduled trainings (past, ongoing and upcoming) of the matching student.
- If only the date-time is specified, the command will return all of the students scheduled for that matching training on the student panel.
- If both parameters are specified, the command will return only the single matching training on the training panel and the matching student on the student panel.
- If there are no matches, an error message will appear requesting you to check your student Id and/or date-time to make sure they exist.
Examples:
-
find-training id/1
filters the student and training panel to show only the student with student id value 1 and all of his past, ongoing and future trainings on the training panel. -
find-training dt/2021-08-26 1800
filters the student and training panel to show only the matching training that falls on2021-08-26 1800
and all of the students scheduled for the training on the student panel
Mark/Unmark a student’s attendance for a training : mark-attendance
, unmark-attendance
Marks/Unmarks a student’s attendance for a training.
Format: mark-attendance TRAINING_INDEX id/STUDENT_ID...
- You will only be able to mark/unmark the attendance of a training that has already passed/ongoing.
- Training index refers to the index of the training in the displayed training list.
- Only ONE training index can be specified in the same command.
- Multiple student ids can be specified in the same command.
- If the student’s attendance has already been marked,
mark-attendance
would still execute successfully, but there will be no changes reflected. The converse is true as well forunmark-attendance
. - Student card will reflect the specified attendance as marked (tick) should the
mark-attendance
command be successfully executed. - Student card will reflect the specified attendance as unmarked (cross) should the
unmark-attendance
command be successfully executed.
Format: mark-attendance TRAINING_INDEX id/STUDENT_ID...
, unmark-attendance TRAINING_INDEX id/STUDENT_ID...
Examples:
-
mark-attendance 2 id/1,4,7
will indicate that students with student ids of 1, 4 and 7 have their attendance associated with training session 2 marked. -
unmark-attendance 2 id/1,4,7
will indicate that students with student ids of 1, 4 and 7 have their attendance associated with training session 2 unmarked.
Find all students with a bad attendance record: find-bad-students
Finds all students that have missed more than 3 training sessions.
- No parameters required for this command.
- Displays a list of students that have missed more than 3 prior training sessions.
Format: find-bad-students
Clearing all entries: clear
Clears the student and training list of all existing students and trainings.
Format: clear
Note: Be careful, this deletes all data stored inside of the program, including student and training records. All sample data will be cleared too.
Exiting the program: exit
Exits the program.
Format: exit
FAQ
Q: When does a training get classified as “past”?
A: A training will be classified as “past” once the time tagged to it (start time) has passed. You will need to execute the list
command to observe the update.
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 CanoE-COACH home folder.
Command summary
Action | Format, Examples |
---|---|
Add Student |
add n/NAME p/PHONE_NUMBER e/EMAIL ay/ACADEMIC_YEAR [t/TAG]… [d1/MONDAY] [d2/TUESDAY] [d3/WEDNESDAY] [d4/THURSDAY] [d5/FRIDAY] e.g., add n/James Ho p/22224444 e/jamesho@example.com ay/1 t/friend
|
Clear | clear |
Delete Student |
delete STUDENT_INDEX e.g., delete 3
|
Edit Student |
edit STUDENT_INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [t/TAG]… [d1/MONDAY] [d2/TUESDAY] [d3/WEDNESDAY] [d4/THURSDAY] [d5/FRIDAY] e.g., edit 2 n/James Lee e/jameslee@example.com
|
Find Student |
find [n/KEYWORDS] [p/PHONE_NUMBER] [ay/ACADEMIC_YEAR] [e/EMAIL] [d1/HHmm d2/HHmm d3/HHmm d4/HHmm d5/HHmm] [id/ID] e.g., find n/James Jake ay/2
|
Find Common Time |
common-time [n/KEYWORDS] [ay/ACADEMIC_YEAR] e.g., common-time n/alex ay/1
|
Create Training |
training yyyy-MM-dd HHmm e.g., training 2021-01-20 1800
|
Delete Training |
delete-training TRAINING_INDEX e.g., delete-training 1
|
Add Student To Training |
ts-add TRAINING_INDEX id/STUDENT_ID... e.g., ts-add 1 id/1,2,3
|
Add All Students To Training |
ts-addall TRAINING_INDEX e.g., ts-addall 1
|
Delete Student From Training |
ts-delete TRAINING_INDEX id/STUDENT_ID... e.g., ts-delete 1 id/1,2,3
|
Find Training |
find-training [id/STUDENT_ID] [dt/DATETIME] e.g., find-training id/1
|
Mark Attendance |
mark-attendance TRAINING_INDEX id/STUDENT_ID... e.g., mark-attendance 2 id/1,4,7
|
Unmark Attendance |
unmark-attendance TRAINING_INDEX id/STUDENT_ID... e.g., unmark-attendance 2 id/1,4,7
|
Find Bad Students | find-bad-students |
List | list |
Help | help |
Glossary
-
Dismissal Time: The time when a student is dismissed from his classes. He would be able to attend trainings scheduled only on or after his dismissal time.
-
Training: A training session organised by the coach (the user), and attended by the students.
-
Available Student: A student who is available to attend the training. A student is available to attend a training if his dismissal time is equal to or before training start time, and if he is not already attending a training on the same day.
-
Attendance: Indicates the training session that a particular student is going to attend.
-
“Mark” Attendance: A marked attendance indicates that a particular student had attended the training session, and it is only possible to mark attendance for a training that has already passed. A marked attendance can be unmarked to indicate absence / yet to attend.
-
“Bad” student: A bad student is a student who has more than 3 unmarked attendances for trainings that have already passed. (However, this is only in the context of this application. In the real world, even if you do miss many trainings, you could be a perfectly fine and good student.)