Foo Kai En | Project Portfolio Page
Project: McScheduler
Developed during a Software Engineering introductory module, the McScheduler is a desktop application, targeted at McDonald’s managers for easy shift and worker management. The McScheduler is optimized for use via a CLI, while still having benefits of a GUI, created with JavaFX. This project is written in Java in OOP style, and has about 10 kLoC.
Given below are my contributions to the project.
- New feature: Added the ability to maintain a master list of valid roles in the system
- What it does:
- Allows the user to add, edit and delete roles which can be taken on by workers in a McDonald’s outlet
- Ensures that any role added to the list of roles that a worker is able to take on is a valid role in the system
- Ensures that any role added to the list of roles that need to be filled in a shift is a valid role in the system
- Justification:
- Provides a convenient way for the user to rename or delete all instances of a role with a single command
- Helps the user ensure the consistent naming of a role throughout the system
- Alerts the user when there is a typo
- Highlights:
- The implementation was challenging as it required adding checks to many existing commands to ensure that all roles in the app, which include the list of roles that a worker is able to take on and those that need to be filled in a shift, are valid in the master list of roles
- What it does:
- New feature: Added the ability to assign/unassign a worker to/from a shift
- What it does:
- Allows the user to assign a worker to a role in a shift, as well as delete an existing assignment
- Ensures that the role in the assignment is a role the worker is fit for
- Ensures that the role in the assignment is required and has yet to be filled in the shift
- What it does:
- Justification:
- Fulfils the fundamental purpose of the McScheduler, which is to allow the user to schedule workers for shifts
- Helps the user ensure an assignment is valid (i.e. the worker is fit for the role and the shift has not been filled)
- Highlights:
- The feature required an in-depth analysis of design alternatives to avoid unintended effects of a cyclic
dependency between the
Worker
andShift
classes
- The feature required an in-depth analysis of design alternatives to avoid unintended effects of a cyclic
dependency between the
- Notes:
- This feature has since been enhanced by my teammates to:
- Check if the worker is available and not on leave for the shift
- Allow the mass assigning/unassigning of multiple workers to/from a shift with a single command
- This feature has since been enhanced by my teammates to:
- Enhancements to existing features:
-
Code contributed: RepoSense
- Documentation:
- User Guide:
- Added documentation for the
assign
/unassign
feature - Added documentation for the
role-add
/role-edit
/role-delete
feature - Updated notes about the command format and did cosmetic tweaks in general (PR #114)
- Added documentation for the
- Developer Guide:
- Added implementation details and UML diagrams for the
assign
/unassign
feature - Updated user stories
- Added implementation details and UML diagrams for the
- User Guide:
- Project management:
- Updated the Java CI and codecov badges on the product website to reflect our team’s progress
- Community:
- PRs reviewed (with non-trivial review comments): #107 #112 #113 #189
- Reported bugs and suggestions for other teams in the class
- Contributed to the class forum