By: CS2113-AY1819S1-T13-1 Since: September 2018 Licence: MIT

1. Introduction

Student Planner (SP) is for a one stop desktop app for students to manage their schedule. More importantly, SP is optimized for those who prefer to work with a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, you can use SP for all your daily scheduling done faster than traditional GUI apps. Interested? Jump to the Section 2, “Quick Start” to get started. Enjoy!

2. Quick Start

  1. Ensure you have Java version 9 or later installed in your Computer.

  2. Download the latest studentplanner.jar here.

  3. Copy the file to the folder you want to use as the home folder for your Student Planner.

  4. Double-click the file to start the app. The GUI should appear in a few seconds.

    Ui
  5. 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.

  6. Some example commands you can try:

    • list : lists all contacts

    • taskn/Attend Post Modern Jukebox concert b/hyped s/18/09_2000 e/18/09_2200 p/HIGH t/concert on 18 September 2018 at 8pm with HIGH priority to the Address Book.

    • delete3 : deletes the 3rd contact shown in the current list

    • exit : exits the app

  7. Refer to Section 3, “Features” for details of each command.

3. Features

Command Format

  • Words in UPPER_CASE are the parameters to be supplied by the user e.g. in add n/NAME, NAME is a parameter which can be used as add n/John Doe.

  • Items in square brackets are optional e.g n/NAME [t/TAG] can be used as n/John Doe t/friend or as n/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/friend, t/friend t/family etc.

  • Parameters can be in any order e.g. if the command specifies n/NAME d/DATE, d/DATE n/NAME is also acceptable.

3.2. Adding a person: add

Adds a person to the address book
Format: add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​

A person can have any number of tags (including 0)

Examples:

  • add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01

  • add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal

3.3. Listing all persons : list

Shows a list of all persons in the address book.
Format: list

3.4. Editing a person : edit

Edits an existing person in the address book.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​

  • 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.

  • When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.

  • You can remove all the person’s tags by typing t/ without specifying any tags after it.

Examples:

  • edit 1 p/91234567 e/johndoe@example.com
    Edits the phone number and email address of the 1st person to be 91234567 and johndoe@example.com respectively.

  • edit 2 n/Betsy Crower t/
    Edits the name of the 2nd person to be Betsy Crower and clears all existing tags.

3.5. 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 match Hans

  • The order of the keywords does not matter. e.g. Hans Bo will match Bo Hans

  • Only the name is searched.

  • Only full words will be matched e.g. Han will not match Hans

  • Persons matching at least one keyword will be returned (i.e. OR search). e.g. Hans Bo will return Hans Gruber, Bo Yang

Examples:

  • find John
    Returns john and John Doe

  • find Betsy Tim John
    Returns any person having names Betsy, Tim, or John

3.6. Locating contacts by address: findaddress

Finds contacts whose address or body contain any of the given keywords.
Format: findaddress KEYWORD [MORE_KEYWORDS]

  • The search is case insensitive. e.g college will match College

  • The order of the keywords does not matter. e.g. Ave College will match College Ave

  • Only the address and body is searched.

  • Only full words will be matched e.g. Colle will not match College

  • Contacts matching at least one keyword will be returned (i.e. OR search). e.g. College Tampines will return all contacts with address containing any of the keywords college or tampines

Examples:

  • findaddress College
    Returns college and College ave e

  • findaddress college lorong tampines
    Returns any contacts having an address or body that contains college, lorong, or tampines

3.7. Locating contacts by name: findname

Finds contacts whose name or body contain any of the given keywords.
Format: findname KEYWORD [MORE_KEYWORDS]

  • The search is case insensitive. e.g mario will match Mario

  • The order of the keywords does not matter. e.g. Gonzalez Mario will match Mario Gonzalez

  • Only the name and body is searched.

  • Only full words will be matched e.g. Gonza will not match Gonzalez

  • Contacts matching at least one keyword will be returned (i.e. OR search). e.g. Hans Bo will return Hans Gruber, Bo Yang

Examples:

  • findname Mario
    Returns mario and Mario Gonzalez

  • findname mario alex david
    Returns any contacts having names or body that contains mario, alex, or david

3.8. Locating contacts by phone: findphone

Finds contacts whose phone number or body contain any of the given keywords.
Format: findname KEYWORD [MORE_KEYWORDS]

  • Only the phone number and body is searched.

  • Only full phone numbers will be matched e.g. 98835 will not match 98835761

  • Contacts matching at least one keyword will be returned (i.e. OR search). e.g. `98835761 87438807 ` will return the contacts with phone number 98835761 or 87438807.

Examples:

  • findphone 98835761
    Returns 98835761 and the contact with that phone number

  • findphone 98835761 87438807
    Returns any contacts having phone number or body that contains 98835761, or 87438807

3.9. Deleting a person : delete

Deletes the specified person from the address book.
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
    delete 2
    Deletes the 2nd person in the address book.

  • find Betsy
    delete 1
    Deletes the 1st person in the results of the find command.

3.10. Selecting a person : select

Selects the person identified by the index number used in the displayed person list.
Format: select INDEX

  • Selects the person and loads the Google search page 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
    select 2
    Selects the 2nd person in the address book.

  • find Betsy
    select 1
    Selects the 1st person in the results of the find command.

3.11. Listing entered commands : history

Lists all the commands that you have entered in reverse chronological order.
Format: history

Pressing the and arrows will display the previous and next input respectively in the command box.

3.12. Undoing previous command : undo

Restores the address book to the state before the previous undoable command was executed.
Format: undo

Undoable commands: those commands that modify the address book’s content (add, delete, edit and clear).

Examples:

  • delete 1
    list
    undo (reverses the delete 1 command)

  • select 1
    list
    undo
    The undo command fails as there are no undoable commands executed previously.

  • delete 1
    clear
    undo (reverses the clear command)
    undo (reverses the delete 1 command)

3.13. Redoing the previously undone command : redo

Reverses the most recent undo command.
Format: redo

Examples:

  • delete 1
    undo (reverses the delete 1 command)
    redo (reapplies the delete 1 command)

  • delete 1
    redo
    The redo command fails as there are no undo commands executed previously.

  • delete 1
    clear
    undo (reverses the clear command)
    undo (reverses the delete 1 command)
    redo (reapplies the delete 1 command)
    redo (reapplies the clear command)

3.14. Adding an expense: addExpense

Adds an expense to the expense book
Format: addExpense c/CATEGORY v/VALUE d/DATE [t/TAG]…​

An expense can have any number of tags (including 0)

The expense book is sorted by date, followed by value, and lastly the category.
The sorted expense book will be displayed once the user adds the expense.

Examples:

  • addExpense c/taobao v/1111.11 d/11/11/2018

  • addExpense c/Lunch v/6.66 d/10/10/2018 t/nomorecaipng t/fishtooexpensive

3.15. Editing an expense : editExpense

Edits an existing expense in the Expense book.
Format: edit INDEX [c/CATEGORY] [v/VALUE] [d/DATE] [t/TAG]…​

  • Edits the expense at the specified INDEX. The index refers to the index number shown in the displayed expense 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.

  • When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.

  • You can remove all the expense’s tags by typing t/ without specifying any tags after it.

The expense book is sorted by date, followed by value, and lastly the category.
The sorted expense book will be displayed once the user edits the expense.

Examples:

  • `editExpense 1 v/998.00
    Edits the value of expense of the 1st expense

  • editExpense 2 c/food t/lunch
    Edits the category of the 2nd person to be food, remove the existing tags and add new tag.

3.16. Deleting an expense : deleteExpense

Deletes the specified expense from the expense book.
Format: deleteExpense INDEX

  • Deletes the expense at the specified INDEX.

  • The index refers to the index number shown in the displayed expense list.

  • The index must be a positive integer 1, 2, 3, …​

Examples:

  • delete 2
    Deletes the 2nd expense in the expense book.

3.17. Undoing previous command : undoExpense

Restores the expense book to the state before the previous undoable command was executed.
Format: undoExpense

Undoable commands: those commands that modify the expense book’s content (addExpense, deleteExpense, editExpense and clearExpense).

Examples:

  • deleteExpense 1
    undoExpense (reverses the deleteExpense 1 command)

  • expenseTrend
    undoExpense
    The undoExpense command fails as there are no undoable commands executed previously.

  • deleteExpense 1
    clearExpense
    undoExpense (reverses the clearExpense command)
    undoExpense (reverses the deleteExpense 1 command)

3.18. Redoing the previously undone command : redoExpense

Reverses the most recent undoExpense command.
Format: redoExpense

Examples:

  • deleteExpense 1
    undoExpense (reverses the deleteExpense 1 command)
    redoExpense (reapplies the deleteExpense 1 command)

  • deleteExpense 1
    redoExpense
    The redoExpense command fails as there are no undoExpense commands executed previously.

  • deleteExpense 1
    clearExpense
    undoExpense (reverses the clearExpense command)
    undoExpense (reverses the deleteExpense 1 command)
    redoExpense (reapplies the deleteExpense 1 command)
    redoExpense (reapplies the clearExpense command)

3.19. Clearing all expense entries : clearExpense

Clears all entries from the expense book.
Format: `clearExpense

3.20. Displaying expense trend : expenseTrend

Displays a bar chart of the monthly expense value occurred the past 6 months in a new window
Format: expenseTrend

3.21. Displaying monthly expense : monthlyExpense

Displays a pie chart of the expense value for each category occurred in the selected month in a new window
format: monthlyExpense MM/YYYY

  • Displays the monthly expense for the specified MM/YYYY.

  • The month must be a valid month and in MM/YYYY format 01/0001, 10/2018 …​

Examples:

  • monthlyExpense 11/2018
    Displays the monthly expense data for November 2018 in a new window

3.22. Adding a task: task

Adds a task to the schedule planner
Format: task n/NAME b/BODY s/START_DATETIME e/END_DATETIME [t/TAG]…​ p/PRIORITY

  • The BODY field contains details or remarks of a task.

  • A task can only have its start DATE (without specific TIME, format: DD/MM(_HH:mm)).

  • But its end valid DataTime should contain DATE & TIME (format: DD/MM_HH:mm).

  • We only accept February 28th as a valid date, i.e. 28/2 valid, 29/2 invalid.

  • Task priority can only be HIGH/high, MED/med or LOW/low,

A task can have any number of tags (including 0).
By default, the tasks are listed by descending order of priority i.e. HIGH, MED, LOW.

Examples:

  • task n/Submit Assignment b/CG2027 Assign2 s/18/10 e/25/10_14:00 p/HIGH t/Hardcopy

  • task n/Submit Quiz b/MA1508E Quzi11 s/29/10_00:00 e/4/11_22:00 p/MED t/IVLE

3.23. Listing all tasks : listTask

Shows a list of all tasks from task book in the student planner according to the deadline (end DateTime).
Format: listTask

3.24. Editing a task : updateTask

Update an existing task in the student planner.
Format: updateTask INDEX [n/NAME] [b/BODY] [s/START_DATETIME] [e/END_DATETIME] [t/TAG]…​ [p/PRIORITY]

  • Edits the task at the specified INDEX. The index refers to the index number shown in the displayed task 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.

  • When editing tags, the existing tags of the task will be removed i.e adding of tags is not cumulative.

  • You can remove all the task’s tags by typing t/ without specifying any tags after it.

Examples:

  • updateTask 1 b/Need two pens
    Edits the body of the 1st task to be Need two pens.

  • updateTask 2 t/
    Edits the 2nd task by clearing all existing tags.

3.25. Deleting a task : deleteTask

Deletes the specified task from the task book in the student planner.
Format: deleteTask INDEX

  • Deletes the task at the specified INDEX.

  • The index refers to the index number shown in the displayed task list.

  • The index must be a positive integer 1, 2, 3, …​

Examples:

  • listTask
    deleteTask 2
    Deletes the 2nd task from the task book.

3.26. Adding an event : addEvent

Adds an event to the event book
Format: addEvent n/NAME s/EVENT DATE t/EVENT TIME [c/CONTACT]…​

  • NAME can contain any number of alphanumeric characters and spaces.

  • DATE must be of the format DD/MM/YYYY.

  • TIME must be 4 digits long in the 24-Hour format, eg. 1030.

  • A new event will be added to the bottom of the event book, and displayed at the bottom of the events panel.

An event can have any number of contacts (including 0).

Examples: * addEvent n/Dinner s/11/11/2018 t/1900 c/Alex * `addEvent n/Secondary school meetup s/24/10/2018 t/1200 `

3.27. Deleting an event : deleteEvent

Deletes an event from the event book
Format: deleteEvent INDEX

  • Deletes the event at the specified INDEX.

  • The index refers to the index number shown in the displayed event list.

  • The index must be a positive integer 1, 2, 3, …​

Examples: * deleteEvent 1

3.28. Clearing the event book : clearEvent

Clears the entire event book
Format: clearEvent

  • Clears the entire event book and creates a new instance of event book with no entries

3.29. Editing an event : editEvent

Edits specific details of the event
Format: editEvent INDEX [n/EVENT NAME] [s/EVENT DATE] [t/EVENT TIME] [c/EVENT CONTACTS]…​

  • Edits an event at the specified INDEX

  • The index refers to the index number shown in the displayed event list.

  • The index must be a positive integer 1, 2, 3, …​

An edit must consist of at least 1 parameter to edit.

Examples: * editEvent 2 t/1900 * editEvent 1 n/Watch The Incredibles t/1800

3.30. Saving the data

Schedule planner data are saved in the hard disk automatically after any command that changes the data.
There is no need to save manually.

3.31. Backup data : backup

Allow user to backup data locally or to online services.

Format: backup | [GITHUB ACCESS_TOKEN]

  • For GitHub online backup, a personal access token must be provided in ACCESS_TOKEN

  • Proceed to Github Settings and create a token under Personal Access Token, allow the gist scope to allow Gists Creation. The create token is your authentication token

gettoken
Sample to show how to obtain Github Authentication Token

Examples:

  • backup
    Creates a local backup to the backup paths in preferences.json.

  • backup github ACCESS_TOKEN_HERE
    Creates an online backup to GitHub Gists using the provided personal access token.

3.32. Restore data : restore

Allow user to restore data backups locally or from online services.

Format: restore | [Service ACCESS_TOKEN_IF_REQUIRED]

  • For GitHub online restore, access token is not required! It is only required to create the secret gist during backup process

Examples:

  • restore
    Restores Student Planner data using local backups in backup paths inside preferences.json.

  • restore github
    Restores Student Planner data on GitHub Gists.

  • An failure message will be shown if no prior backups were made before restore command is used

  • If that happens, do proceed to first create a backup using backup command.

3.33. Clearing all entries : clear

Clears all entries from the schedule planner.
Format: clear

3.34. Exiting the program : exit

Exits the program.
Format: exit

3.35. Configure backup and restore settings [coming in v2.0]

Allow user to configure backup settings (configure and save cloud services authentication tokens like GitHub gists or Google Drive, backup location) by calling backup doctor

3.36. Encrypting data files [coming in v2.0]

Allow user to enable encryption by calling encrypt p/PASSWORD
Application will prompt for decryption password if encryption is enabled

4. 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 schedule planner folder. Alternatively you can perform a backup to a supported online service like GitHub and restore form another computer after changing the relevant gist ids in your preferences.json file

5. Command Summary

  • Add add n/NAME [b/BODY] [s/START_DATETIME] [e/END_DATETIME] [t/TAG]…​ [p/PRIORITY]
    e.g. add n/Attend PostModern JukeBox concert e/180918_2000 p/HIGH

  • Clear : clear

  • Delete : delete INDEX
    e.g. delete 3

  • Edit : edit INDEX [n/NAME] [b/BODY] [s/START_DATETIME] [e/END_DATETIME] [t/TAG]…​ [p/PRIORITY]
    e.g. edit 2 n/Buy fruits e/010119_0700

  • Find : find KEYWORD [MORE_KEYWORDS]
    e.g. find pen Apple

  • List : list

  • Help : help e.g.select 2

  • History : history

  • Undo : undo

  • Redo : redo

  • Backup : backup | [GITHUB ACCESS_TOKEN] e.g. backup GITHUB MY_ACCESS_TOKEN

  • Restore : restore | [SERVICE ACCESS_TOKEN] e.g. restore GITHUB

  • AddExpense : addExpense c/CATEGORY v/VALUE d/DATE [t/TAG]…​
    e.g. addExpense c/Food v/11.11 d/11/11/2018 t/KFC t/lunch t/fat

  • ClearExpense : clearExpense

  • DeleteExpense : deleteExpense INDEX
    e.g. deleteExpense 3

  • EditExpense : editExpense INDEX [c/CATEGORY] [v/VALUE] [d/DATE] [t/TAG]…​
    e.g. editExpense 2 c/Travel v/998.00

  • UndoExpense : undoExpense

  • RedoExpense : redoExpense

  • ExpenseTrend : expenseTrend

  • MonthlyExpense : monthlyExpense MM/YYYY
    e.g. monthlyExpense 11/2018

  • AddTask : task n/NAME b/BODY s/START_DATETIME e/END_DATETIME [t/TAG]…​ p/PRIORITY
    e.g. task n/Submit Assignment b/CG2027 Assign2 s/18/10 e/25/10_14:00 p/HIGH t/Hardcopy

  • ListTask : listTask

  • EditTask : updateTask INDEX [n/NAME] [b/BODY] [s/START_DATETIME] [e/END_DATETIME] [t/TAG]…​ [p/PRIORITY]
    e.g. updateTask 2

  • DeleteTask : deleteTask INDEX
    e.g. `deleteTask 2 `

  • AddEvent : addEvent n/NAME s/EVENT DATE t/EVENT TIME [c/EVENT CONTACTS]…​
    e.g. addEvent n/Movie s/18/10/2018 t/1800 c/John

  • DeleteEvent : deleteEvent e.g. deleteEvent 1

  • EditEvent : editEvent INDEX [n/NAME] [s/EVENT DATE] [t/EVENT TIME] [c/EVENT CONTACTS]…​
    e.g. editEvent 1 t/1800

  • ClearEvent : clearEvent
    e.g. clearEvent