Hu Jiajun's Project Portfolio Page
Introduction
This page serves to document my contributions to the project ezFoodie under NUS module CS2103T in AY21/22 semester 1.
Project: ezFoodie
ezFoodie is a desktop application that helps restaurants keep track of their ever-growing list of members. Restaurant managers and staffs can easily view and update member status (e.g. personal information, tier, reservation, transaction, etc.) to manage and analyze members. Restaurant managers and staffs interact with ezFoodie using a Command Line Interface (CLI), and has a Graphical User Interface (GUI) created with JavaFX.
It is written in Java, and has about 35 kLoC, of which I contributed about 10 kLoC.
Given below are my contributions to the project.
-
Code contributed: RepoSense link
- New Model: Created the
Accountmodel to support implementingloginandlogoutfeatures as a manager. #74- What it does: stores the
Accountinformation for the manager tologin. - Justification: This model is essential, since some advanced features such as
deleteandsortare required the manager permission. It is a bridge between the staff and manager. - Highlights: This enhancement requires understanding on how
hashworks. The implementation was challenging as theAccountinformation need to be hashed when it is storing in the file for the purpose of high security.
- What it does: stores the
- New Feature: Added the ability to
loginas a manager #74- What it does: allows the manager to
loginas a manager. - Justification: The staff and manager should not have the full permission to control the application. Some advanced features such as
deleteandsortshould only be accessed by manager.
- What it does: allows the manager to
- New Feature: Added the ability to
logoutas a manager #72- What it does: allows the manager to
logoutas a manager. - Justification: The manager should be able to
logoutthe application to prevent the staff from operating the advanced features such asdeleteandsortthat it should only be accessed by manager.
- What it does: allows the manager to
- New Feature: Added the ability to
editTransactionbyTransaction ID#75, #112- What it does: allows the staff and manager to
editTransactionbyTransaction ID. - Justification: The staff and manager should be able to correct any accidental mistakes conveniently when he/she adds some incorrect
Transactionrecords. - Highlights: This enhancement requires understanding on how polymorphism works and implement it so that the application will use Object-oriented programming (OOP) sufficiently. The implementation was challenging as the
EditCommandneed to be abstracted, and inheritEditCommandbyEditCommandPrefixParser, and further inheritEditCommandPrefixParserbyEditTransactionCommand. Similarly, theEditCommandParseralso need to be abstracted, and inherit it withEditTransactionCommandParser.
- What it does: allows the staff and manager to
- New Feature: Added the ability to
editReservationbyReservation ID#114- What it does: allows the staff and manager to
editReservationbyReservation ID. - Justification: The staff and manager should be able to correct any accidental mistakes conveniently when he/she adds some incorrect
Reservationrecords. - Highlights: This enhancement requires understanding on how polymorphism works and implement it so that the application will use Object-oriented programming (OOP) sufficiently. The implementation was challenging as the
EditCommandneed to be abstracted, and inheritEditCommandbyEditCommandPrefixParser, and further inheritEditCommandPrefixParserbyEditReservationCommand. Similarly, theEditCommandParseralso need to be abstracted, and inherit it withEditReservationCommandParser.
- What it does: allows the staff and manager to
- New Feature: Added the ability to
deleteMemberbyMember ID#77- What it does: allows the manager to
deleteMemberbyMember ID. - Justification: This feature is essential, since the
TransactionandReservationis based on each member, it is necessary to useMember IDto identify theMemberso that his/herTransactionandReservationcan be identified properly as well (Currently the application is usingMember ID+Transaction IDto retrieve theTransaction, so isReservation).
- What it does: allows the manager to
- New Feature: Added the ability to
deleteTransactionbyTransaction ID#101- What it does: allows the manager to
deleteTransactionbyTransaction ID - Justification: This feature is essential, since each
Transactionhas its ownID, and the application is not able to list all theTransactions, it is impossible todeleteTransactionbyIndex. Therefore, theTransaction IDis the only attribute to identify theTransaction. - Highlights: This enhancement requires understanding on how polymorphism works and implement it so that the application will use Object-oriented programming (OOP) sufficiently. The implementation was challenging as the
DeleteCommandneed to be abstracted, and inheritDeleteCommandbyDeleteCommandPrefixParser, and further inheritDeleteCommandPrefixParserbyDeleteTransactionCommand. Similarly, theDeleteCommandParseralso need to be abstracted, and inherit it withDeleteTransactionCommandParser.
- What it does: allows the manager to
- New Feature: Added the ability to
sortMemberbyCredit#79- What it does: allows the manager to
sortMemberbyCredit. - Justification: This feature improves the product significantly because the manager can formulate promotional strategies by analyzing the member data like how many credit the member has earned.
- Highlights: This enhancement requires understanding on how
javafx.collectionspackage works. The implementation was challenging as it requires combining and synchronizing the object of theFilteredListand theSortedListso that data will not be messed up when thefindorsortfeature is called.
- What it does: allows the manager to
- New Feature: Added the ability to
retrievehistory commands #113- What it does: allows the staff and manager to
retrieveprevious commands usingup/downkeys. - Justification: This feature improves the product significantly because the staff and manager can execute the similar commands much faster without retyping.
- What it does: allows the staff and manager to
- New Feature: Added the ability to escape
summary,showandhelpwindow #194- What it does: allows the staff and manager to escape
summary,showorhelpwindow usingesckey. - Justification: This feature is helpful to improve the use efficiency because the staff and manager do not need to use the mouse to exit the window.
- What it does: allows the staff and manager to escape
- New Feature: Updated a neater and better UI for the
showfeature #194- What it does: allows the staff and manager to view the member details more clearly.
- Justification: This feature improves the product significantly because the manager will be very easy to view the member details, such as transactions and reservations records.
- Enhancements to existing models:
- Updated the
AddressBookto theezFoodie#45 - Updated the
Personmodel to theMembermodel #48 - Added the
IDfor theMembermodel so that the staff and manager can do operations based on theMember ID#51 - Added the
IDfor theTransactionmodel so that the staff and manager can do operations based on theTransaction ID#100 - Added the
Timestampfor theMembermodel andTransactionmodel so that the application can record down the registrationTimestampof theMemberand the paymentTimestampof theTransaction#59 - Added the
Creditfor theMembermodel so that the application can record down theCreditthat theMemberhas earned. #79 - Added the
Tierfor theMembermodel so that the application can show theTierof theMemberbased on his/herCredit. #81
- Updated the
- Enhancements to existing features:
- Project management:
- Maintained the issues, milestones and projects
- Managed releases
v1.2.1,v1.3,v1.4(3 releases) on GitHub
- Documentation:
- index:
- Fixed hyperlink bugs #89
- README:
- Updated formats #42
- User Guide:
- Developer Guide:
- Updated
Product scope,User stories,Use cases,Non-Functional Requirements,Glossary#24 - Added documentation for the features
findandsort#89 - Updated all diagrams and descriptions including sequence diagram, class diagram, activity diagram, etc.
- Updated
User storiesandUse cases#204 - Added
Appendix 3: EffortandAppendix 4: Limitations and Future improvements#207
- Updated
- About Us:
- Updated formats #43
- index:
- Community:
- PRs reviewed (with non-trivial review comments): #46, #52, #56, #69, #71, #102, #103, #120
- Contributed to forum discussions: #12, #13, #24, #45, #50, #65, #109, #141, #160, #200, #203, #209
- Reported bugs and suggestions for other teams in the class: #1, #2, #3, #4, #5, #6, #7, #8, #9, #10, #11, #12, #13, #14, #15, #16, #17, #18, #19, #20, #21