Overview
NUS Hangs is a desktop Schedule Manager application. It has a GUI but most of the user interactions happen using a CLI (Command Line Interface). It is a Java application written by developers of F11-4, to target small/mid-size interest/study groups in NUS.
Summary of contributions
-
Major enhancement: Enhance person features to fit requirements of NUS Hangs:
-
add
: Add a person to NUS Hangs with optional inputs.
This feature improves the product accessibility because the user has the option to leave out certain inputs. -
find
: Find all persons in NUS Hangs, provided by prefix(es).
This feature allows users to find any persons in Nus Hangs, with improved prefix search to widen/narrow search results. -
Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.
-
-
Code contributed: [Functional and Test code]
-
Other contributions:
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. |
Person
Adding a person: add
(ZhiWei)
Short form/Alias: a
Adds a person to NUS Hangs
Format: add n/NAME [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…
-
Inputs in square brackets are optional
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
-
add n/Nancy t/friend t/neighbour
-
add n/James t/friend e/james@example.com t/classmates
-
a n/Joji t/Singer
Finding a person : find
(ZhiWei)
Short form/Alias: f
Finds all persons in NusHangs, whose contain keywords provided by prefix(es).
Format: find [n/NAME…] [p/PHONE_NUMBER…] [e/EMAIL…] [a/ADDRESS…] [t/TAG…]
Inputs in square brackets are optional |
Examples:
-
find n/alex
Returns any person having names withalex
-
find n/Betsy Tim John
Returns any person having namesBetsy
,Tim
, orJohn
-
find n/alex bernice t/friends
Returns any person havingalex
andbernice
in name andfriends
in tags -
find a/tampines p/12345678 87654321
Returns any person havingTampines
in address and12345678
&87654321
in phone
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. |
Person Feature
The 'Person' class extends the Entity
abstract class and it is contained within Model
.
Person
feature make use of Timetable
and Group
class to assign respective information to each instance of a person.
Current Implementation
The current person implementation are:
-
add
— add any person with the choice of adding address, phone, email and tags -
find
— finds all persons in NUSHangs, whose contain keywords provided by prefix(es)
Reasons for Implementation
The ability to add and find members with flexibility improves the user’s experience of the application.
The add
command allows users to include or omit particulars of any member.
-
This is helpful as the user may not always have all of the particulars of its members.
-
This also promotes flexibility as to how users want to control the information, which can be useful for organising events.
The find
command allows users to find members based on certain particulars.
-
This is useful for interest groups as they can find members based on certain particulars.
-
For example, organisers can find and group users by level of proficiency to perform an event; or
-
The organisers can find based on address to get people who stays close to school to reach earlier to perform certain setup
Activity & Sequence Diagram: An example to FindCommand
Given below is the Sequence Diagram for interactions within the Logic component for the - execute("find n/alex") API call.
The following activity diagram shows how 'find' feature works:
Design Considerations
Aspect: How should each specific find
feature work
Alternative 1 (Current Choice) : Use prefixes for specific search (e.g. find n/alex bernice t/friends)
Pros: Higher flexibility. Greater control of search range.
Cons: Harder to implement.
Alternative 2 : Create a class for each information (e.g. find_address)
Pros: Easy to implement, with specific search focus.
Cons: Repetitive code base with less flexibility.
Aspect: How should add
feature work
Alternative 1 (Current Choice) : Allow optional prefix (e.g. add n/alex t/friends)
Pros: Higher flexibility. Allow users to gain greater control over particulars.
Cons: Harder to implement.
Alternative 2 : Only name input is required (e.g. add alex)
Pros: Simple command for users.
Cons: Unable to utilize or classify information when needed.