Project: PetCode
- New Feature: Extended the add person command to three categories: add buyer, deliverer command and supplier command.
- What it does: allows the user to add persons according to their roles.
- Justification: This feature is the core feature of this app since all other features are based on it. The user
cannot do further manipulation of data without adding it.
- Highlights: This enhancement defines the paradigm of operations on contacts. That is, every person category has
its
own command word extension for every command, such as
add-s
and delete-b
. It guides subsequent implementations
of other commands.
- New Feature: Added the add order command and add pet command.
- What it does: allows the user to add an order to a buyer and add a pet to a supplier. Even more convenient, the
user
can choose to add as many orders as possible when adding a buyer, or add as many pets as possible when adding a
supplier.
- Justification: This helps the user organise his/her business by keeping track of orders placed and pets available
for sale.
- Highlights: There are a tremendous number of prefixes and attributes to handle, which was not easy.
- New Feature: Added the match command.
- What it does: allow user to find out which pet for sale is the best fit for an order placed by a buyer.
- Justification: To maximise utility and profit, the user needs to find out the most suitable pet to sell to a buyer
according to the buyer’s demand.
- Highlights: The algorithm is a score evaluation algorithm that involves some complex calculations. The weight of
each field is carefully chosen.
- Functionality: Implemented many parser utility methods.
- What it does: provides convenient utility methods to parse strings to other objects and validate data by a variety
of rules.
- Justification: Many commands rely on and make use of these methods for convenience, such as the add commands, the
edit commands, the find commands and the filter commands.
- Highlights: There are many constraints to consider. For example, some data cannot be negative, some can only be
alphanumeric, and some cannot be blank. Multiplicity should be well considered too.
- Functionality: Wrote data models.
- What it does: these data models, such as
Pet
, Age
, UniqueOrderList
, and DateOfBirth
abstract real-world
objects and provide computational paradigms to mimic their interactions.
- Justification: Without these data models, it would be extremely troublesome to manipulate data.
- Highlights: The SOLID principles and OOP were employed thoroughly.
- Functionality: Added the unique ID system.
- Functionality: Discovered a variety of bugs and fixed them. For
examples, #308
, #304
, #299
, #296
- Code
contributed: RepoSense link
- Project management:
- Managed releases
v1.2
- v1.3(trial)
(2 releases) on GitHub.
- Assigned teammates to different issues and kept track of their progress.
- Maintained and updated the official and unofficial meeting minutes after every meeting.
- Managed milestones, changed their due dates, and closed them to wrap-up.
- Did final submission of the JAR file, the UG, the DG, and the PPP.
- Enhancements to existing features:
- Let the GUI window fit different screen sizes (Pull
requests #296)
- Deleted useless classes like
AddCommandParser
and decoupled some classes for higher robustness.
- Documentation:
- User Guide:
- Adding a buyer, Adding a deliverer, Adding a supplier, Adding a pet to a supplier, Adding an order to a buyer,
Prefix Summary, FAQs, Other miscellaneous parts and proofreading
- Developer Guide:
- Target user profile, Value proposition, User stories, Use cases, Match command implementation, Unique ID
implementation, Other miscellaneous parts and proofreading
- Community:
- Created the team’s organization and team repo
- Managed issues and allocated tasks to members
- Set up CodeCov repo
- PRs reviewed (with non-trivial review comments): #145
, #174
- Contributed to forum discussions (examples: #153
, #73)
- Reported bugs and suggestions for other teams in the class (
examples: #183
, #187
, #176
, #172)
- Tools:
- Used JavaFX to develop the UI.