This repository contains an advanced version of a Work Scheduler application, originally developed as a final project for an Object-Oriented Programming course. The project demonstrates the practical application of OOP concepts and showcases significant enhancements over the original version.
The initial project was a collaborative effort with two classmates, resulting in a terminal-based Work Scheduler application. Key features included:
- User roles: Manager and Employee
- Manager functionalities:
- Add/remove date times
- Create and view schedules
- Employee functionalities:
- View personal schedules
- Notify managers of schedule conflicts or time-off requests
To challenge myself and create a more realistic application, I developed this enhanced version with the following improvements:
- User Account Creation: New employees can now create their own accounts, improving scalability and user management.
- Enhanced Security: Implemented password masking during input, significantly improving security and user privacy.
- Automated Scheduling: Replaced manual schedule editing with an intelligent auto-assign feature:
- Employees can input their availability and also update it later on
- Schedules are automatically generated based on employee availability
- Implemented a constraint to ensure no more than two team leads are scheduled simultaneously
- Improved User Experience: The application now more closely emulates real-life work scheduling systems, making it more intuitive and user-friendly.
One example would be through "pings". Employees can "ping" a manager and wait for a response.
- Object-Oriented Programming: Utilized classes, inheritance, and polymorphism to create a robust and maintainable codebase.
- Data Structures: Implemented efficient data structures for managing employee information and schedules.
- Algorithm Design: Developed a custom algorithm for auto-assigning schedules while respecting constraints.
- Input Validation: Incorporated comprehensive input validation to ensure data integrity and improve user experience.
- Lines of code: ~1,500
This project provided valuable insights and learning experiences:
- Deepened understanding of OOP principles and their practical applications
- Gained experience in refactoring and enhancing existing codebases
- Developed skills in algorithm design for real-world problems
- Improved understanding of user experience considerations in software development
- Enhanced ability to implement security features in applications
- Implement a graphical user interface (GUI) for improved usability
- Integrate with external calendar systems
- Develop a mobile/ web application version
- Make pings more robust by separating chat logs on employees side to keep it private.
This can be some sort of simulated chat, where one can follow up as well. - Give managers more functionality with the schedule, edit it, remove or add employees etc.
This project demonstrates the evolution from a basic course assignment to a more sophisticated, real-world application, showcasing both technical skills and an understanding of practical software development considerations.