An open API service indexing awesome lists of open source software.

https://github.com/blacktechwarrior/javaworkscheduler

CLI work scheduler. Create employees, automate scheduling
https://github.com/blacktechwarrior/javaworkscheduler

oop

Last synced: about 1 year ago
JSON representation

CLI work scheduler. Create employees, automate scheduling

Awesome Lists containing this project

README

          

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.