By: Team T09-3 Since: Sep 2018 Licence: NUS

1. Introduction

ClubHub (CH) is for those who prefer to use a desktop app for managing members, inventory, finances and events in their club. More importantly, CH 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, CH can get your club management tasks 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 addressbook.jar here.

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

  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

    • help : opens up this user guide

    • exit : exits the app

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

3. General 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. Viewing help

Opens up this user guide Format: help

3.2. Listing all persons

Shows a list of all persons in the ClubHub.
Format: list

3.3. Selecting a person

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

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

3.4. Listing entered commands

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.5. Undoing previous command

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

Undoable commands: those commands that modify ClubHub’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.6. Redoing the previously undone command

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.7. Undoing all previous commands

Restores ClubHub to the state before all previous undoable commands were executed.
Format: undoAll

Examples:

  • deleteItem 1
    deleteItem 2
    undoAll (reverses both the deleteItem 1 and deleteItem 2 commands)

3.8. Redoing all previously undone commands

Reverses all undo commands.
Format: redoAll

  • deleteItem 1
    deleteItem 2
    undo (reverses the deleteItem 2 command)
    undo (reverses the deleteItem 1 command)
    redoAll (reapplies both the deleteItem 1 and deleteItem 2 commands)

  • deleteItem 1
    redoAll
    The redoAll command fails as there are no undo commands executed previously.

  • deleteItem 1
    addItem n/Ball q/1 l/Storeroom
    undoAll (reverses the deleteItem 1 and addItem n/Ball q/1 l/Storeroom commands)
    redoAll (reapplies the deleteItem 1 and addItem n/Ball q/1 l/Storeroom commands)

3.9. Clearing all entries

Clears all entries from ClubHub.
Format: clear

3.10. Exiting the program

Exits the program.
Format: exit

3.11. Saving the data

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

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

{explain how the user can enable/disable data encryption}

4. Main Features

4.1. Members

4.1.1. Adding a member: addmember

Adds a person to the ClubHub
Format: addmember n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS c/POSTALCODE m/MAJOR [t/TAG]…​

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

Examples:

  • addmember n/John Doe p/98765432 e/johnd@example.com a/311, Clementi Ave 2, #02-25 c/609653 m/Computer engineering t/friends t/owesMoney

4.1.2. Editing a member : editmember

Edits an existing person in the ClubHub.
Format: editmember INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [c/POSTALCODE] [m/MAJOR] [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:

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

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

4.1.3. Locating members 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

4.1.4. Locating members by major: findmajor

Finds persons whose names contain any of the given keywords.
Format: findmajor KEYWORD [MORE_KEYWORDS]

  • The search is case insensitive. e.g computer will match Computer

  • The order of the keywords does not matter. e.g. Engineering computer will match Computer engineering

  • Only the name is searched.

  • Majors matching at least one keyword will be returned e.g ` Computer Engineering` will be listed when Engineering is searched

  • Only full words will be matched e.g. Compute will not match Computer

Examples:

  • findmajor Computer Engineering
    Returns member whose major is Computer Engineering

  • findmajor Engineering
    Returns members whose major contains the keyword Engineering

4.1.5. Locating members by phone number: findphone

Finds persons whose names contain any of the given keywords.
Format: findphone KEYWORD [MORE_KEYWORDS]

  • The order of the keywords does not matter.

  • Only the phone number is searched.

  • Only full numbers will be matched e.g. 9723 will not match 97233234

Examples:

  • findphone 97233234
    Returns member whose phone number is 97233234

  • findphone 97233234 84280511
    Returns members whose phone numbers are`97233234 or 84280511'

4.1.6. Locating members by postalcode: findpostalcode

Finds persons whose names contain any of the given keywords.
Format: findpostalcode KEYWORD [MORE_KEYWORDS]

  • The order of the keywords does not matter.

  • Only the postalcode is searched.

  • Only full numbers will be matched e.g. 609 will not match 609653

Examples:

  • findpostalcode 609653
    Returns member whose postalcode is 609653

  • findpostalcode 609653 555555
    Returns members whose postalcodes are 609653 or 555555

4.1.7. Deleting a member : delete

Deletes the specified person from ClubHub.
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 ClubHub.

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

4.2. Accounts

The accounts features a ledger column to record the spending of the club on any date in the form of DD/MM. There are 4 basic commands allowing the user to add or delete a ledger, and to credit or debit money from any date in the list of records.

4.2.1. Adding a ledger: addLedger

Adds a ledger to the ledger column.
Format: addLedger d/[DD/MM]

Example: addLedger d/ 10/10

4.2.2. Deleting a ledger: deleteLedger

Deletes a ledger from the log.
Format: deleteLedger d/[DD/MM]

Example: deleteLedger d/ 10/10

4.2.3. Crediting a ledger: credit

Increase the balance of a ledger on a date indicated.
Format: credit d/[DD/MM] b/[NUM]

Example: credit d/ 10/10 b/ 100

4.2.4. Debiting a ledger: debit

Decrease the balance of a ledger on a date indicated.
Format: debit d/[DD/MM] b/[NUM]

Example: debit d/ 10/10 b/ 100

4.3. Calendar

4.3.1. List events: listEvent

Lists all the events sorted by date.
Format: listEvent

Example: * listEvent List all the events in the ClubHub.

4.3.2. Adding an event: addEvent

Adds an event to the calendar.
Format: addEvent n/EVENT_NAME v/VENUE D/DESCRIPTION d/EVENT_DATE

The Event name cannot be the same as an existing one (Two events are regarded as the same when they have the same name and date).

Example:

  • `addEvent n/Basketball training v/MPSH3 D/Bring your own basketball d/10/12

4.3.3. Editing an event: editEvent

Edits an existing event in the ClubHub.
Format: editEvent INDEX n/EVENT_NAME v/EVENT_VENUE D/EVENT_DESCRIPTION d/EVENT_DATE

  • Edits 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, …​

  • At least one of the optional fields must be provided.

  • Existing values will be updated to the input values.

Example:

  • editEvent 1 n/Basketball training v/Sports Center D/bring your own basketball d/12/12 Edit the venue and the date of the 1st event to Sports Center and 12/12 respectively.

4.3.4. Deleting event: deleteEvent

Deletes an existing event from the ClubHub.
Format: deleteEvent [INDEX].

Example:

  • deleteEvent 1 Delete the event who’s index is 1. === ItemList

4.3.5. Adding an item: addItem

Adds a item to the ItemList
Format: addItem n/ITEM_NAME q/ITEM_QUANTITY l/ITEM_LOCATION

Examples:

  • addItem n/Basketball q/7 l/Storeroom

  • addItem n/Chairs q/2 l/Clubroom

4.3.6. Deleting an item: deleteItem

Deletes the specified item from ItemList.
Format: deleteItem INDEX

  • Deletes the item at the specified INDEX.

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

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

Examples:

  • deleteItem 2
    Deletes the 2nd item in ItemList.

  • deleteItem 13
    Deletes the 13th item in ItemList.

4.3.7. Edit an item: editItem

Edits an existing item in the ItemList. Format: editItem INDEX [n/ITEM_NAME] [q/ITEM_QUANTITY] [l/ITEM_LOCATION]

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

Examples:

  • editItem 2 l/Cabinet
    Edits the location of the 2nd item to be Cabinet.

  • editItem 1 n/Soccer Balls q/4
    Edits the name and quantity of the 1st item to be Soccer Balls and 6 respectively.

4.3.8. Increase quantity of an item: increaseItem

Increases the quantity of existing item in the ItemList. Format: increaseItem INDEX q/ITEM_QUANTITY

  • Increases the quantity of the item at the specified INDEX. The index refers to the index number shown in the displayed item list. The index must be a positive integer 1, 2, 3, …​

  • Input quantities will be added to the existing quantities.

Examples:

  • increaseItem 2 q/1
    Increases the quantity of the 2nd item by 1.

4.3.9. Decrease quantity of an item: decreaseItem

Decreases the quantity of existing item in the ItemList. Format: decreaseItem INDEX q/ITEM_QUANTITY

  • Decreases the quantity of the item at the specified INDEX. The index refers to the index number shown in the displayed item list. The index must be a positive integer 1, 2, 3, …​

  • Existing quantities will be subtracted by the input quantities.

  • Input quantities must be lower than the existing quantities.

Examples:

  • decreaseItem 2 q/1
    Decreases the quantity of the 2nd item by 1.

4.3.10. Locating items by name: findItem

Finds items whose names contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]

  • The search is case insensitive. e.g Balls will match balls

  • The order of the keywords does not matter. e.g. Soccer Balls will match Balls Soccer

  • Only the name is searched.

  • Only full words will be matched e.g. Ball will not match Balls

  • Items matching at least one keyword will be returned (i.e. OR search). e.g. Soccer Balls will return Soccer Boots, Tennis Balls

Examples:

  • find Balls
    Returns balls and Soccer Balls

  • find White Soccer Balls
    Returns any item having names White, Soccer, or Balls

4.3.11. Listing all items : listItems

Shows a list of all items in the ClubHub.
Format: listItems

5. Record feature [coming in v2.0]

Record feature allows the user to update many new club information all at once.

For Example:

`Bernice` pays `$100` membership fee, attends `Basketball training on 01/11` and borrows `1 chair`.

In order to record this information on Clubhub, the user just has to enter the following command:

AddRecord M/Bernice d/10/10 b/100 D/01/11 n/chair q/-1

This command will do the following:

  • Look for the name Bernice to see whether it already exists in Clubhub (It will inform the user that the input is invalid if the name does not already exist in Clubhub)

  • Add a ledger in Club Account panel and update the balance accordingly

  • Add a basketball event on 01/11 in Club Calendar

  • Take away 1 chair from the inventory from Club Inventory

Furthermore, there will a panel at the bottom of Clubhub to show history of all the Records added

AddRecordUI
Figure 1. Sample New UI

6. 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 ClubHub folder.

7. Command Summary

  • Help : help

  • Select : select INDEX
    e.g.select 2

  • History : history

  • Undo : undo

  • Redo : redo

  • UndoAll : undoAll

  • RedoAll : redoAll

  • List : list

  • Addmember : addmember n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS c/POSTALCODE m/MAJOR [t/TAG]…​

  • Editmember : editmember INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [c/POSTALCODE] [m/MAJOR] [t/TAG]…​

  • Findbyname : find KEYWORD [MORE_KEYWORDS]

  • Findbymajor : findmajor KEYWORD [MORE_KEYWORDS]

  • Findbyphonenumber : findphone KEYWORD [MORE_KEYWORDS]

  • Findbypostalcode : findpostalcode KEYWORD [MORE_KEYWORDS]

  • Deletemember : delete INDEX

  • AddLedger: addLedger d/[DD/MM]

  • DeleteLedger : deleteLedger d/[DD/MM]

  • Credit: credit d/[DD/MM] b/[NUM]

  • Debit: debit d/[DD/MM] b/[NUM]

  • AddEvent : addEvent n/EVENT_NAME v/VENUE d/DESCRIPTION D/EVENT_DATE

  • EditEvent : editEvent EVENT_NAME to EVENT_NAME EVENT_DATE EVENT_LOCATION EVENT_DESCRIPTION

  • DeleteEvent : deleteEvent n/EVENT_NAME

  • AddItem : addItem n/ITEM_NAME q/ITEM_QUANTITY l/ITEM_LOCATION

  • DeleteItem : deleteItem INDEX

  • EditItem : editItem INDEX [n/ITEM_NAME] [q/ITEM_QUANTITY] [l/ITEM_LOCATION]

  • IncreaseItem : increaseItem INDEX q/ITEM_QUANTITY

  • DecreaseItem : decreaseItem INDEX q/ITEM_QUANTITY

  • FindItem : findItem KEYWORD [MORE_KEYWORDS]

  • ListItem : listItems