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
Account
model to support implementinglogin
andlogout
features as a manager. #74- What it does: stores the
Account
information for the manager tologin
. - Justification: This model is essential, since some advanced features such as
delete
andsort
are required the manager permission. It is a bridge between the staff and manager. - Highlights: This enhancement requires understanding on how
hash
works. The implementation was challenging as theAccount
information 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
login
as a manager #74- What it does: allows the manager to
login
as a manager. - Justification: The staff and manager should not have the full permission to control the application. Some advanced features such as
delete
andsort
should only be accessed by manager.
- What it does: allows the manager to
- New Feature: Added the ability to
logout
as a manager #72- What it does: allows the manager to
logout
as a manager. - Justification: The manager should be able to
logout
the application to prevent the staff from operating the advanced features such asdelete
andsort
that it should only be accessed by manager.
- What it does: allows the manager to
- New Feature: Added the ability to
edit
Transaction
byTransaction ID
#75, #112- What it does: allows the staff and manager to
edit
Transaction
byTransaction ID
. - Justification: The staff and manager should be able to correct any accidental mistakes conveniently when he/she adds some incorrect
Transaction
records. - 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
EditCommand
need to be abstracted, and inheritEditCommand
byEditCommandPrefixParser
, and further inheritEditCommandPrefixParser
byEditTransactionCommand
. Similarly, theEditCommandParser
also need to be abstracted, and inherit it withEditTransactionCommandParser
.
- What it does: allows the staff and manager to
- New Feature: Added the ability to
edit
Reservation
byReservation ID
#114- What it does: allows the staff and manager to
edit
Reservation
byReservation ID
. - Justification: The staff and manager should be able to correct any accidental mistakes conveniently when he/she adds some incorrect
Reservation
records. - 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
EditCommand
need to be abstracted, and inheritEditCommand
byEditCommandPrefixParser
, and further inheritEditCommandPrefixParser
byEditReservationCommand
. Similarly, theEditCommandParser
also need to be abstracted, and inherit it withEditReservationCommandParser
.
- What it does: allows the staff and manager to
- New Feature: Added the ability to
delete
Member
byMember ID
#77- What it does: allows the manager to
delete
Member
byMember ID
. - Justification: This feature is essential, since the
Transaction
andReservation
is based on each member, it is necessary to useMember ID
to identify theMember
so that his/herTransaction
andReservation
can be identified properly as well (Currently the application is usingMember ID
+Transaction ID
to retrieve theTransaction
, so isReservation
).
- What it does: allows the manager to
- New Feature: Added the ability to
delete
Transaction
byTransaction ID
#101- What it does: allows the manager to
delete
Transaction
byTransaction ID
- Justification: This feature is essential, since each
Transaction
has its ownID
, and the application is not able to list all theTransactions
, it is impossible todelete
Transaction
byIndex
. Therefore, theTransaction ID
is 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
DeleteCommand
need to be abstracted, and inheritDeleteCommand
byDeleteCommandPrefixParser
, and further inheritDeleteCommandPrefixParser
byDeleteTransactionCommand
. Similarly, theDeleteCommandParser
also need to be abstracted, and inherit it withDeleteTransactionCommandParser
.
- What it does: allows the manager to
- New Feature: Added the ability to
sort
Member
byCredit
#79- What it does: allows the manager to
sort
Member
byCredit
. - 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.collections
package works. The implementation was challenging as it requires combining and synchronizing the object of theFilteredList
and theSortedList
so that data will not be messed up when thefind
orsort
feature is called.
- What it does: allows the manager to
- New Feature: Added the ability to
retrieve
history commands #113- What it does: allows the staff and manager to
retrieve
previous commands usingup
/down
keys. - 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
,show
andhelp
window #194- What it does: allows the staff and manager to escape
summary
,show
orhelp
window usingesc
key. - 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
show
feature #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
AddressBook
to theezFoodie
#45 - Updated the
Person
model to theMember
model #48 - Added the
ID
for theMember
model so that the staff and manager can do operations based on theMember ID
#51 - Added the
ID
for theTransaction
model so that the staff and manager can do operations based on theTransaction ID
#100 - Added the
Timestamp
for theMember
model andTransaction
model so that the application can record down the registrationTimestamp
of theMember
and the paymentTimestamp
of theTransaction
#59 - Added the
Credit
for theMember
model so that the application can record down theCredit
that theMember
has earned. #79 - Added the
Tier
for theMember
model so that the application can show theTier
of theMember
based 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
find
andsort
#89 - Updated all diagrams and descriptions including sequence diagram, class diagram, activity diagram, etc.
- Updated
User stories
andUse cases
#204 - Added
Appendix 3: Effort
andAppendix 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