Zhang Yifan's Project Portfolio Page
Project: HairStyleX
HairstyleX helps managers for budding neighborhood hair salons to manage clients, hairdressers, and appointments. It is optimized for CLI users so that frequent tasks can be done faster by typing in commands. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 20 kLoC.
Summary of Contributions
Code contributed
Access my RepoSense link to view the code that I have contributed.
Enhancements implemented
- Create CRUD for
Hairdresser
Classes: Designed and createdAdd
,Edit
,Delete
andList
commands forHairdresser
(Pull request #85, #101)- What it does: The CRUD features allows the user to manage the
hairdresser
data. Also Encapsulates the logic that makes changes to theModel
andStorage
classes whenever hairdressers are manipulated in HairStyleX. - Justification: These commands are essential to ensuring that
hairdressers
are stored and saved correctly in HairStyleX whenever a user manipulates them. - Highlights:
- CRUD for
hairdresser
was one of the first CRUD operations built forHairStyleX
. This set a direction for adding features and tweakingmodel
,logic
andstorage
packages while morphing the original AddressBook-3 into a multi-entity application, to ensure that the data will be handled in the correct and orderly manner. - Improvements for better OOP are made along the way. For instance,
Specialisation
class was refactored to usingenum
(#160), as the types of specialisations for hairdressers are rather fixed and abstracting toenum
removes possibility of duplicates and increases accuracy forhairdresser
data.
- CRUD for
- What it does: The CRUD features allows the user to manage the
- Create
Print
command for exportation of data: Designed and createdPrint
command. (Pull request #202, #261)- What it does: The
Print
command allows the user to export the data ofhairdresser
,client
andappointment
into.csv
files. - Justification: The command gives the users an option to save data into an easy-to-read and easy-to-operate format.
- Highlights:
Print
command allows the all three lists ofhairdresser
,client
andappointment
to be exported into.csv
format with user input of one single command, together with timestamp of time of creation written inside the files.Print
command allows the concurrent exportation of the three lists usingexecuter
and multi-thread, thus reducing the overall runtime for potential large list exportation.
- Credit: the idea of
Print
is inspired by Warenager.
- What it does: The
- Integration and enhancement to
Id
(Pull request #111, #278 (under IdCounter.java), #284)- What is does: Enforces the user to identify
Client
s,Hairdresser
s andAppointment
s by their uniqueId
instead of the default list index that is shown in AddressBook-3. - Justification: The
Id
classes are designed and created by James. Integration of theId
classes intohairdresser
andclient
and enhancement toIdCounter
related classes are done later. - Highlights:
- Integrated the
PersonId
andPersonIdCounter
classes intohairdresser
andclient
classes and ensured thatId
s are stored and saved correctly in HairStyleX whenever a user manipulates them. (#111) IdCounter#reset()
function was designed and implemented so that the storedinstance
for the singleton classIdCounter
can be cleared and reset (#278 (under IdCounter.java)). This is especially useful for testing purposes, where multipleModel
s will be created and tested.- Validation for
IdCounter
is enforced while constructingHairStyleX
(#284).
- Integrated the
- What is does: Enforces the user to identify
- Testing: Create tests for hairdresser related commands and classes that increased coverage by 19.85%. (Pull request #123, #278)
Contributions to the User Guide
- Provided a detailed guide supplemented with screenshots and examples for hairdresser management commands, including
add_hairdresser
,list_hairdresser
,edit_hairdresser
,delete_hairdresser
,filter_hairdresser
. (Pull request #190)
Contributions to the Developer Guide
- Added implementation details of the Hairdresser classes (Pull request #168) and the Print classes (Pull request #261)
- Recreated existing diagrams and updated implementation details for Storage Component (Pull request #168)
- Added value proposition (Pull request #65)
Contributions to the team-based tasks
- Set up github page and CI for the team repo
- Set up project boards used by the team in the early stages
- Created and uploaded releases for v1.2 and v1.4, and uploaded video for v1.2 demo
- Fixed miscellaneous bugs (#211), updated UI (#317)
Review/mentoring contributions
- PRs reviewed (with non-trivial review comments): #255
- Guided team members on the basic git workflow for team collaboration
Contributions beyond the project team
- Reported 10 bugs in group W11-4’s tP during mock PE