Skip to content

CLI work scheduler. Create employees, automate scheduling

Notifications You must be signed in to change notification settings

BlackTechWarrior/JavaWorkScheduler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 

Repository files navigation

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.

About

CLI work scheduler. Create employees, automate scheduling

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages