By: Team 10-2 Since: Jan 2020 Licence: MIT

1. Introduction

Cardi Buddy (CardiB) is for students who prefer to use a desktop app to store their revision materials as flashcards. More importantly, CardiB 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, CardiB can help you to store revision materials quickly. The self-testing features will definitely help you to ace your examinations as opposed to traditional ways of revision by re-reading lecture notes. Interested? Jump to Section 2, Section 2, “Quick Start” to get started. Enjoy!

2. Quick Start

  1. Ensure you have Java 11 or above installed in your Computer.

  2. Download the latest addressbook.jar here.

  3. Copy the file to the folder you want to use as the home folder for your Address Book.

  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

    • addn/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 : adds a contact named John Doe 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 p/PHONE_NUMBER, p/PHONE_NUMBER n/NAME is also acceptable.

3.1. Basic Features

3.1.1. Viewing help : help

Lists all the available commands that a user can enter.
Format: help

3.1.2. Saving data

The data is automatically saved into the hard disk after the user enters any command that changes the data

There is no need to save manually.

3.1.3. Exiting program: exit

Exits the program. Format: exit

3.2. Adding

3.2.1. Adding a deck: add deck

Creates a new deck to be added to the library. Format: add deck n/TITLE [t/TAG]…

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

Examples:

  • add n/cs2103T
    Returns a new deck titled cs2103T

  • add n/cs1101s t/Hard t/CS
    Returns a new deck titled cs1101s with the tags Hard and CS

3.2.2. Adding a card: add card

Creates a new card to be added to the deck. Format: add card n/DECK_TITLE n/CARD_TYPE

  • The variable CARD_TYPE can only take the values of ‘MCQ’, ‘True/False’ or ‘Short Answer’ or ‘Matching’. Any other values will cause the application to display an error message.

  • When a card is created, the question field of the card will be set to the default value of ‘Please type your question here’.

  • Depending on the CARD_TYPE inputted by the user, the answer field of the card will be set to different default values.

  • For ‘MCQ’, the answer field will contain 4 options labelled ‘A’, ‘B’, ‘C’ and ‘D’, and an additional label that reads ‘You can also enter your answer in the command field’.

  • For ‘True/False’, the answer field will contain 2 options labelled ‘True’ and ‘False’, and an additional label that reads ‘You can also enter your answer in the command field’.

  • For ‘Short Answer’, the answer field will contain a label that reads ‘You can also enter your answer in the command field’.

Examples:

  • add card n/cs1101s n/MCQ
    Returns a new card belonging to the deck cs1101s and of the type MCQ

3.3. Editing

3.3.1. Editing a deck: edit deck

Edits an existing deck in the library. Format: edit deck INDEX [ n/TITLE] [t/TAG]…

  • Edits the decks at the specified INDEX. The index refers to the index number shown in the complete list of decks. 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 deck will be removed i.e adding of tags is not cumulative.

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

Examples:

  • edit 1 n/cs2103T
    Edits the title of the 1st deck to be cs2103T.

  • edit 2 n/cs2040 t/
    Edits the title of the 2nd deck to be cs2040 and clears all existing tags.

3.3.2. Editing a card: edit card

Edits an existing card in the deck. Format: edit card INDEX [q/QUESTION] [a/ANSWER] [t/TAG]…

  • Edits the card at the specified INDEX. The index refers to the index number shown in the complete list of decks. 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 card will be removed i.e adding of tags is not cumulative.

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

Examples:

  • edit card 1 q/What does MVC stand for?
    Edits the question of the 1st card to be What does MVC stand for?.

  • edit card 2 a/cs2040 t/
    Edits the answer of the 2nd card to be cs2040 and clears all existing tags.

3.4. Listing

3.4.1. Listing all decks: list decks

Shows a list of all the decks in the library.
Format: list decks

3.4.2. Listing all cards in a deck: list cards

Shows a list of all the cards in a particular deck. This command is only valid after you enter a deck. Format: list cards

3.5. Clearing

3.5.1. Clearing all decks: clear decks

Clears all entries (both decks and cards) from the library.
Format: clear decks

3.5.2. Clearing all cards in a deck: clear cards

Clears all the cards from the specified deck. Format: clear cards n/DECK_TITLE

Examples:

  • clear cards n/cs2105
    Clears all the cards in the deck cs2105

3.6. Deleting

3.6.1. Deleting a deck: delete deck

Deletes the specified deck from the library. Format: delete deck INDEX

  • Deletes the deck at the specified INDEX.

  • The index refers to the index number shown in the complete list of decks.

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

Examples:

  • list decks
    delete deck 2
    Deletes the 2nd deck in the library.

  • search deck cs2030
    delete deck 1
    Deletes the 1st deck in the results of the search command.

3.6.2. Deleting a card: delete card

Deletes the specified card from a specific deck. Format: delete INDEX n/DECK_TITLE

  • Deletes the card at the specified INDEX of the deck.

  • The index refers to the index number shown in the complete list of flashcards in the deck.

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

Examples:

  • list cards
    delete card 2 n/2030
    Deletes the 2nd flash card in the cs2030 deck.

  • search card java
    delete card 1
    Deletes the 1st card in the results of the search card command.

3.7. Searching

3.7.1. Searching for a deck: search deck

Searches for the decks with titles that contain any of the given keywords. Format: search deck KEYWORD [MORE_KEYWORDS]

  • The search is case insensitive. e.g cs2040 will match CS2040

  • The order of the keywords does not matter. e.g. Science Module will match Module Science

  • Only the title is searched.

  • The keyword does not need to match a word within the deck’s title exactly . e.g. cs will match with cs2030

  • Decks with titles that match at least one of the keywords will be returned. e.g. Java notes will return Java notes, Javascript notes, C++ notes.

Examples:

  • search deck cs2106
    Returns cs2106

  • search deck cs2040 cs2030
    Returns cs2040 and cs2030

3.7.2. Searching for a card: search card

Finds the cards with a question that contain any of the given keywords. Format: search card KEYWORD [MORE_KEYWORDS]

  • The search is case insensitive. e.g programming will match Programming.

  • The order of the keywords does not matter. e.g. Javascript programming language will match with programming language Javascript.

  • Both the question and the answer can be searched. As long as the flashcard has a question or answer that contains the keyword, that flashcard will be returned.

  • The keyword does not need to match a word within the question or answer exactly. e.g. Java will match with Javascript.

  • Flashcards with questions or answers that match at least one of the keywords will be returned. e.g. searching the word programming will return object-oriented programming… and Java programming language…

Examples:

  • search card cs2106
    Returns cs2106

  • search deck cs2040 cs2030
    Returns cs2040 and cs2030

3.8. Replacing image

3.8.1. Replacing a deck image: replace deck image

Replaces the photo of an existing deck in the library. By default, all decks will have a default logo as shown in our wireframe. Format: replace deck photo INDEX n/PHOTO_PATH

  • Replaces the photo of the deck at the specified INDEX. The index refers to the index number shown in the complete list of decks. The index must be a positive integer 1, 2, 3, …

  • The application will display a text label that reads ‘You can enter the path of your image into the command field or drag and drop your image into the command field.’

Examples:

  • replace deck image 1 n/src/resources/images/img.PNG.
    Replaces the photo of the 1st deck to the photo that the file path directs to.

3.8.2. Replacing a card image: replace card image

Replaces the photo of an existing card in a specified deck. By default, all cards will have a default image as shown in our wireframe. Format: replace card image n/DECK_TITLE INDEX n/PHOTO_PATH

  • Replaces the photo of the card belonging to the deck with that DECK_TITLE, whereby the card is at the specified INDEX. The index refers to the index number shown in the complete list of decks. The index must be a positive integer 1, 2, 3, …

  • The application will display a text label that reads ‘You can enter the path of your image into the command field or drag and drop your image into the command field.’

Examples:

  • replace card image n/cs3230 1 n/src/resources/images/img.PNG.
    Replaces the photo of the 1st card of the cs3230 deck with the photo that the file path directs to.

3.9. Filtering

3.9.1. Filtering by tag: filter tag

Filters across all decks and only displays the decks with the specific tag. Format: filter tag t/TAG_TITLE

  • Filtering by tag is case insensitive. e.g cs2040 will match CS2040

Examples:

  • filter tag t/Computing
    Returns cs2040, cs3223 and cs1101s.

3.9.2. Filtering by keyword: filter keyword

Filters across all decks and only displays the cards with questions or answers that contain the specific keyword. Format: filter keyword KEYWORD

  • Filtering by keyword is case insensitive. e.g programming will match Programming.

  • The order of the keywords does not matter. e.g. Javascript programming language will match with programming language Javascript.

  • The keyword does not need to match a word within the question or answer exactly. e.g. Java will match with Javascript.

  • Flashcards that match at least one of the keywords will be returned. e.g. searching the word programming will return object-oriented programming… and Java programming language…

Examples:

  • filter keyword language
    Returns all cards that contain the word language in the question, answer or both.

3.10. Prioritising

Cards that the user has answered wrongly to (user input does not match with answer) is automatically moved to the back of the testing session. The user will be able to reattempt the same flashcard again later in the testing session.

There is no need to prioritise manually.

3.11. Testing

3.11.1. Testing deck: test deck

Creates a test session that comprises all the questions of the flash card belonging to the specific deck. Format: test deck INDEX

  • Creates a test session of the deck at the specified INDEX. The index refers to the index number shown in the complete list of decks. The index must be a positive integer 1, 2, 3, …

  • Users are to input the answer in the command line.

  • If the user input does not match the answer of the flashcard, the answer will be marked as ‘WRONG’ and the flash card will be added to the back of the test session.

  • If the user input matches the answer of the flashcard, the answer will be marked as ‘CORRECT’ and the flash card will be removed from the current test session.

  • Test session also comes with an inbuilt timer. If the user is unable to answer all the questions before the timer counts down to 0, the questions that have not been answered will all be marked as wrong. The test session will end and the final grades will be displayed on the screen.

  • Test session data is saved automatically. Even if user quits the test session halfway, the current data will not be lost.

Examples:

  • test deck 1
    Creates a test session for the 1st deck.

3.12. Undo/Redo

3.12.1. Undoing command: undo

Undoes latest command. Format: undo

3.12.2. Redoing command: redo

Redoes latest command. Format: redo

3.13. Detecting duplicates

3.13.1. Detecting duplicate deck

Upon adding a new deck, the application automatically checks if there are any existing decks with the same title. Only decks with unique titles can be successfully added.

3.13.2. Detecting duplicate card

Upon adding a new card to a specific deck, the application automatically checks if there are any existing cards with the same question in that deck. Only cards with unique questions can be successfully added.

If there is a card with the same question but it is in a different deck, the card can still be successfully added.

3.14. Statistics

3.14.1. Displaying all statistics: stats all

Displays the statistics across all decks. Format: stats all

  • Average time spent on each deck, average number of questions completed per week, total number of questions completed for that week and the number of decks associated with each tag.

  • A graphical display in the form of a pie chart will also be used to represent the statistics.

3.14.2. Displaying deck statistics: stats deck

Displays the statistics of a specific deck. Format: stats deck

  • Displayed statistics consists of average time spent on the deck, total number of questions in that deck completed in that week, time spend on the test session for that deck.

  • A graphical display in the form of a pie chart will also be used to represent the statistics.

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 Address Book folder.

5. Command Summary

  • Add add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​
    e.g. add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague

  • Clear : clear

  • Delete : delete INDEX
    e.g. delete 3

  • Edit : edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​
    e.g. edit 2 n/James Lee e/jameslee@example.com

  • Find : find KEYWORD [MORE_KEYWORDS]
    e.g. find James Jake

  • List : list

  • Help : help