Logo
Fab.Magalhães

Software Engineer

Java Schedule System: Building a Course Scheduler in Java using Object-Oriented Principles

November 15, 2024Software Development, Project, Course, Learning, Object-Oriented Programming
MacBook Mockup Background
https://mackgame4-portfolio.vercel.app
Technologies

Java, MySQL, JDBC, MVC, DAO Pattern

Team

Fábio Magalhães, Filipe Fernandes, João Macedo, André Pinto

Timeline & Status

Delivered Jan 22, 2025

Source

https://github.com/Mackgame4/UM-GestorHorariosJava

Overview

This project was developed for the "Desenvolvimento de Sistemas de Software (DSS)" course at the "Universidade do Minho" as part of a Software Engineering degree. Made a comprehensive Java-based schedule management system built for university courses, featuring MySQL integration and a complete TUI for managing and generating academic schedules.

Schedule Management System: A Java Enterprise Solution

During my Software Systems Development (DSS) course at University of Minho, I developed a comprehensive schedule management system that demonstrates advanced Java programming concepts, database integration, and software architecture principles. This project showcases the practical application of object-oriented design patterns and enterprise-level development practices.

Schedule Management System Interface
Schedule Management System InterfacePNG

PROJECT OVERVIEWA robust Java application designed to streamline academic schedule management with enterprise-grade architecture. Built using Java with MySQL database integration, this system provides comprehensive CRUD operations for managing courses, schedules, and academic resources through an intuitive graphical interface.

Technical Foundation

The system was architected using modern Java development practices, emphasizing clean code principles and maintainable design patterns. The application leverages the power of object-oriented programming to create a scalable solution for academic schedule management.

// Core Schedule Management Class Structure public class ScheduleManager { private DatabaseConnection dbConnection; private CourseService courseService; private UserAuthenticationService authService; public ScheduleManager() { this.dbConnection = new DatabaseConnection(); this.courseService = new CourseService(dbConnection); this.authService = new UserAuthenticationService(); } public boolean authenticateUser(String username, String password) { return authService.validateCredentials(username, password); } }

Key Features & Functionality

The schedule management system incorporates several sophisticated features that demonstrate advanced programming concepts:

System Features
Core CapabilitiesThe application provides comprehensive functionality for academic schedule management.
Complete CRUD operations for course creation, modification, and deletion with validation and conflict detection.
Intelligent scheduling algorithms that prevent conflicts and optimize resource allocation across time slots.
Secure login system with role-based access control (though simplified for demonstration purposes).
Robust MySQL integration with connection pooling and transaction management for data integrity.

Architecture & Design Patterns

The project demonstrates several important software engineering principles and design patterns that are essential in enterprise development:

Model-View-Controller (MVC) Architecture: Clear separation between data models, user interface, and business logic ensures maintainability and testability.

Data Access Object (DAO) Pattern: Abstracted database operations through dedicated DAO classes, providing clean separation between business logic and data persistence.

Factory Pattern: Used for creating database connections and service instances, promoting loose coupling and easy testing.

// Example of DAO Pattern Implementation public interface CourseDAO { List getAllCourses(); Course getCourseById(int courseId); boolean insertCourse(Course course); boolean updateCourse(Course course); boolean deleteCourse(int courseId); } public class CourseDAOImpl implements CourseDAO { private Connection connection; public CourseDAOImpl(Connection connection) { this.connection = connection; } @Override public List getAllCourses() { // Implementation with proper exception handling // and resource management } }

Development Challenges & Solutions

Technical ChallengesKey obstacles encountered during development and the solutions implemented.

Authentication System Simplification: Due to time constraints, implemented a simplified authentication system with hardcoded passwords for imported data (default: "password"). In a production environment, this would include proper password hashing and user management.

Database Initialization: Created comprehensive SQL scripts for database setup and initial data population, ensuring easy deployment and testing across different environments.

Schedule Conflict Resolution: Implemented algorithms to detect and prevent scheduling conflicts, ensuring data integrity and optimal resource utilization.

Technology Stack

The project utilizes a robust technology stack that demonstrates proficiency with industry-standard tools:

  • Backend: Java (Object-Oriented Programming)
  • Database: MySQL with JDBC connectivity
  • GUI Framework: Java Swing for desktop interface
  • Architecture: MVC pattern with DAO implementation
  • Development Tools: Standard Java development environment

Learning Outcomes

This project served as an excellent opportunity to apply theoretical knowledge from the DSS course in a practical context. Key learning outcomes include:

  • Enterprise Architecture: Understanding how to structure large-scale applications using proven design patterns
  • Database Integration: Practical experience with JDBC, connection management, and SQL optimization
  • Software Engineering Principles: Application of SOLID principles and clean code practices
  • Project Management: Experience with milestone-based development and documentation

Future Enhancements

While the current implementation provides a solid foundation, several enhancements could further improve the system:

  • Enhanced Security: Implementation of proper password hashing, session management, and role-based permissions
  • Web Interface: Migration to a web-based interface using Spring Boot for better accessibility
  • Advanced Scheduling: Integration of AI-powered optimization algorithms for complex scheduling scenarios
  • Reporting System: Addition of comprehensive reporting and analytics capabilities
  • Mobile Support: Development of mobile applications for on-the-go schedule management

Conclusion

The Schedule Management System represents a comprehensive exploration of Java enterprise development, showcasing the practical application of software engineering principles in an academic context. The project successfully demonstrates the ability to design, implement, and deploy a complex system while adhering to industry best practices and maintaining code quality standards.

View Project Repository

This project was developed as part of the Software Systems Development course at University of Minho, showcasing practical application of enterprise Java development concepts and database integration techniques.

Login Screen
Login ScreenPNG
Sign-Up as Student
Sign-Up as StudentPNG
Sign-Up as Teacher
Sign-Up as TeacherPNG
Teacher Menu
Teacher MenuPNG
Listing Loaded Students From Dataset
Listing Loaded Students From DatasetPNG
Student Menu
Student MenuPNG