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
HairdresserClasses: Designed and createdAdd,Edit,DeleteandListcommands forHairdresser(Pull request #85, #101)- What it does: The CRUD features allows the user to manage the
hairdresserdata. Also Encapsulates the logic that makes changes to theModelandStorageclasses whenever hairdressers are manipulated in HairStyleX. - Justification: These commands are essential to ensuring that
hairdressersare stored and saved correctly in HairStyleX whenever a user manipulates them. - Highlights:
- CRUD for
hairdresserwas one of the first CRUD operations built forHairStyleX. This set a direction for adding features and tweakingmodel,logicandstoragepackages 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,
Specialisationclass was refactored to usingenum(#160), as the types of specialisations for hairdressers are rather fixed and abstracting toenumremoves possibility of duplicates and increases accuracy forhairdresserdata.
- CRUD for
- What it does: The CRUD features allows the user to manage the
- Create
Printcommand for exportation of data: Designed and createdPrintcommand. (Pull request #202, #261)- What it does: The
Printcommand allows the user to export the data ofhairdresser,clientandappointmentinto.csvfiles. - Justification: The command gives the users an option to save data into an easy-to-read and easy-to-operate format.
- Highlights:
Printcommand allows the all three lists ofhairdresser,clientandappointmentto be exported into.csvformat with user input of one single command, together with timestamp of time of creation written inside the files.Printcommand allows the concurrent exportation of the three lists usingexecuterand multi-thread, thus reducing the overall runtime for potential large list exportation.
- Credit: the idea of
Printis 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
Clients,Hairdressers andAppointments by their uniqueIdinstead of the default list index that is shown in AddressBook-3. - Justification: The
Idclasses are designed and created by James. Integration of theIdclasses intohairdresserandclientand enhancement toIdCounterrelated classes are done later. - Highlights:
- Integrated the
PersonIdandPersonIdCounterclasses intohairdresserandclientclasses and ensured thatIds are stored and saved correctly in HairStyleX whenever a user manipulates them. (#111) IdCounter#reset()function was designed and implemented so that the storedinstancefor the singleton classIdCountercan be cleared and reset (#278 (under IdCounter.java)). This is especially useful for testing purposes, where multipleModels will be created and tested.- Validation for
IdCounteris 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