Overview
Clubhub is a desktop application for managing members, inventory, finances and events in a club. The main targets for this application are student clubs and groups in University and it includes features (i.e. majors) that are more relatable to University setting. Using Clubhub, users can create, edit and delete club information through the command-line interface (CLI). Graphical user interface (GUI) is also available to display these informations neatly and clearly. The development of Clubhub was team-based and the task was divided among the 4 team members. Each member developed one of the components of the application individually while code integration and documentations were done together as a team. Java programming language was used for the development. For the integrated development environment (IDE) and version control software (VCS), IntelliJ and Github were used respectively.
Summary of contributions
-
Major enhancement: reformatted and refactored existing
Person
code base in the AB4 asMember
to fit the context of the Clubhub and added new additional attributes to each member object.-
The following attributes were added to Clubhub:
-
Major
-
Postal code
-
-
What it does: It allows the user to add information about each member’s major and postal code in the Clubhub.
-
Justification: These additional attributes allow the user to store more information about the club member such as major and postalcode. Ability to store each member’s major is relevant in a University club context as each club member is a student studying a particular major in the university. Furthermore, storing of each member’s home postal code as a separate attribute from home address will allow easier mailing procedure.
-
Highlights: This enhancement required modification in the add and edit function of the club member as they had to be adjusted to taken in the two new arguments. New models also had to be created for these new member attributes.
-
-
Major enhancement: created new
Find
features that allows the user to search for club members by major, phone number and postal code.-
The following commands were added to Clubhub:
-
findmajor
-
findphone
-
findpostalcode
-
-
What it does: These additions enable the user to find the club members by their majors, phone numbers and postal codes. After filtration, the graphical user interface will display the members that have the searched information.
-
Justification: There are many situations when managing a University club whereby a quick advanced search is needed to look for member with a particular attribute. With the help of the new find features, the user can now search the club members not only by their names but also their majors, phone numbers and postal codes.
-
Highlights: This enhancement required creation of
MajorContainsKeywordsPredicate
,PhoneContainsKeywordsPredicate
andPostalcodeContainsKeywordsPredicate
models together with the corresponding sets of parsers and commands.
-
-
Minor enhancement: changed the duplicate check feature to fit the University context of the Clubhub better.
-
Originally, it is recognized as unique only if the
new name
is added or same name with differentphone number
andemail address
is added. -
Now, it is recognized as unique only if the
new name
is added or same name with differentphone number
andmajor
is added
-
-
Code contributed: [RepoSense]
-
Other contributions:
-
Project management:
-
Managed releases
v1.2
-v1.4
(3 releases) on GitHub
-
-
Enhancements to existing features:
-
Version 2.0 Feature
-
Thought of a potential integration feature [Records] for version 2.0 and updated the User guide accordingly
-
-
Reported bugs and suggestions for other teams in the class (Issues: #162, #164, #170, #173, #179)
-
Contributions to the User Guide
Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users. |
Members
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
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]…
Examples:
-
editmember 1 p/91234567 e/johndoe@example.com
Edits the phone number and email address of the 1st person to be91234567
andjohndoe@example.com
respectively. -
editmember 2 n/Betsy Crower t/
Edits the name of the 2nd person to beBetsy Crower
and clears all existing tags.
Locating members by name: find
Finds persons whose names contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]
Examples:
-
find John
Returnsjohn
andJohn Doe
-
find Betsy Tim John
Returns any person having namesBetsy
,Tim
, orJohn
Locating members by major: findmajor
Finds persons whose names contain any of the given keywords.
Format: findmajor KEYWORD [MORE_KEYWORDS]
Examples:
-
findmajor Computer Engineering
Returns member whose major isComputer Engineering
-
findmajor Engineering
Returns members whose major contains the keywordEngineering
Locating members by phone number: findphone
Finds persons whose names contain any of the given keywords.
Format: findphone KEYWORD [MORE_KEYWORDS]
Examples:
-
findphone 97233234
Returns member whose phone number is97233234
-
findphone 97233234 84280511
Returns members whose phone numbers are`97233234 or 84280511'
Locating members by postalcode: findpostalcode
Finds persons whose names contain any of the given keywords.
Format: findpostalcode KEYWORD [MORE_KEYWORDS]
Examples:
-
findpostalcode 609653
Returns member whose postalcode is609653
-
findpostalcode 609653 555555
Returns members whose postalcodes are609653 or 555555
Deleting a member : delete
Deletes the specified person from ClubHub.
Format: delete INDEX
Examples:
-
list
delete 2
Deletes the 2nd person in ClubHub. -
find Betsy
delete 1
Deletes the 1st person in the results of thefind
command.
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
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
Contributions to the Developer Guide
Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project. |
Member
-
As of V1.4, the commands related to the member component that are fully functional are: addmember, editmember, find, findmajor, findphone, findpostalcode and delete.
Add/Remove/Edit member feature
The add/remove mechanism is facilitated by VersionedAddressBook
. It extends AddressBook
model with an Addmember, Editmember and
Delete
method.
-
AddressBook#addPerson()
— Adds a member object to the UniquePersonList. -
AddressBook#removePerson()
— Removes a member object from the UniquePersonList.
These operations are exposed in the Model
interface as Model#addPerson
and Model#deletePerson
respectively.
Below is a scenario of how a user adds a member into Clubhub.
Step 1. The user inputs the command addmember n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS c/POSTALCODE m/MAJOR [t/TAG] into the command box.
Step 2. The commandBox ui will then create a Logic object which parses the command to ascertain that it is an addmember command.
Step 3. The AddressBookParser will then parse the command to create a new addmemberParser object.
Step 4. This AddCommandParser will parse the arguments of the command line and create a new AddPerson object.
Step 5. This will then be put into the model, into the versioned address book.
The Member class creates an object that instantiates name, phone, email, postalcode, major, email and tag objects. These multiple member objects created will be stored in a UniquePersonList, where the uniqueness of every member depends on their names, phone number and email address. It will detect the entry as unique if it has different name or different phone number or email address.
This uniqueness check is obtained through the use of the object getName()
, getPhone()
and getEmail()
method in Person
Remove and edit member uses the similar concept and procedure but starts with looking for the Member in the UniquePersonList instead.
Find by name, major, phone and postalcode feature
Similarly to the add/remove/edit member features, is facilitated by VersionedAddressBook
. It then extends
AddressBook
model to find, findmajor, findphone and finddpostalcode methods.
These operations are exposed in the Model
interface as Model#updatePerson
.
Below is a scenario of how a user finds a member into Clubhub.
Step 1. The user inputs the command find [Valid Parameter] into the command box.
Step 2. The commandBox ui will then create a Logic object which parses the command to ascertain that it is an findmember command
Step 3. The AddressBookParser will then parse the command to create a new findmemberParser object.
Step 4. This findmemberParser will parse the arguments of the command line.
Step 5. By making use of the PersonContainsKeywordsPredicate, the members that has matching details would be found.
Step 5. This will then be put into the model, into the versioned address book.