GitHunt
MA

maxim-francesco/task-management-system-java-swing

Java Swing desktop application for managing employee tasks, using OOP principles, layered architecture, and data persistence via serialization โ€“ Assignment 1 for Fundamental Programming Techniques.

โœ… Task Management System โ€“ Java Swing (PT Assignment 1)

This project is a Java Swing GUI-based application developed for the Fundamental Programming Techniques course (Assignment 1), focused on managing tasks assigned to employees in a software company.

๐Ÿ“Œ Features

  • Add employees
  • Add tasks: SimpleTask (with duration), or ComplexTask (nested tasks)
  • Assign tasks to employees
  • View employees and their tasks
  • Modify task status (Completed/Uncompleted)
  • Statistics and filtering:
    • Total duration worked per employee (only completed tasks)
    • Filter employees working more than 40h
    • Number of completed/uncompleted tasks per employee

๐Ÿงฑ Technical Highlights

  • OOP Design: Uses inheritance, polymorphism, sealed classes (Task)
  • Design Pattern: Composite Pattern for nested ComplexTasks
  • GUI: Developed using Java Swing
  • Persistence: Java Serialization to save/load employees and tasks
  • Layered Architecture: Separation of concerns between models, services, and UI
  • Code Quality: Methods under 30 lines, naming conventions respected

๐Ÿ—‚๏ธ Project Structure

src/
โ”œโ”€โ”€ model/
โ”‚   โ”œโ”€โ”€ Employee.java
โ”‚   โ”œโ”€โ”€ Task.java (sealed)
โ”‚   โ”œโ”€โ”€ SimpleTask.java
โ”‚   โ””โ”€โ”€ ComplexTask.java
โ”œโ”€โ”€ service/
โ”‚   โ”œโ”€โ”€ TaskManagement.java
โ”‚   โ””โ”€โ”€ Utility.java
โ”œโ”€โ”€ ui/
โ”‚   โ””โ”€โ”€ MainWindow.java
โ”œโ”€โ”€ data/
โ”‚   โ””โ”€โ”€ serialized files
โ””โ”€โ”€ diagrams/
    โ”œโ”€โ”€ use_case.drawio
    โ”œโ”€โ”€ class_diagram.drawio
    โ””โ”€โ”€ package_diagram.drawio

๐Ÿ“š Technologies Used

  • Java 17+ (for sealed classes)
  • Java Swing
  • Serialization (java.io)
  • draw.io for UML diagrams

๐Ÿงช What I Learned

  • How to implement a multi-layered architecture in Java
  • Using Composite Pattern to model complex tasks
  • Creating user interfaces in Java Swing
  • Managing data using serialization
  • Writing reusable utility methods for filtering and aggregation
  • Applying sealed classes and following Java coding standards

๐Ÿ“ Grade

โœ… 10/10 โ€“ Full implementation of all functional and technical requirements.

๐Ÿง‘โ€๐Ÿ’ป Author

Maxim Francesco
University: Technical University of Cluj-Napoca
Course: Fundamental Programming Techniques
Email: maaximfrancesco@gmail.com
LinkedIn: linkedin.com/in/francescomaxim

maxim-francesco/task-management-system-java-swing | GitHunt