Skip to content

Latest commit

 

History

History
84 lines (65 loc) · 3.91 KB

File metadata and controls

84 lines (65 loc) · 3.91 KB

Advanced Work Scheduler

Project Overview

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.

Original Project

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

Enhanced Version

To challenge myself and create a more realistic application, I developed this enhanced version with the following improvements:

  1. User Account Creation: New employees can now create their own accounts, improving scalability and user management.
  2. Enhanced Security: Implemented password masking during input, significantly improving security and user privacy.
  3. 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
  4. 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.

Technical Highlights

  • 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.

Metrics

Code Statistics:

  • Lines of code: ~1,500

Learning Outcomes

This project provided valuable insights and learning experiences:

  1. Deepened understanding of OOP principles and their practical applications
  2. Gained experience in refactoring and enhancing existing codebases
  3. Developed skills in algorithm design for real-world problems
  4. Improved understanding of user experience considerations in software development
  5. Enhanced ability to implement security features in applications

Future Enhancements

  • 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.