View Report

Project Overview

During my third semester, my teammate Prathwik and I built a Java-based Classroom Management System. The core focus of this application was to solve scheduling conflicts by allowing professors to view the timetables of all classes, identify free periods, and book available classrooms. Any booking made is immediately reflected for all other staff, ensuring a single source of truth.

Unlike previous projects where I focused heavily on writing code, my primary responsibility in this project was System Design and Documentation. This shift allowed me to deeply explore Object-Oriented Programming (OOP) concepts, software architecture, and the importance of a structured development lifecycle.

Key Features

  • Centralized Timetable Viewing: Professors can easily browse the complete daily or weekly schedule for any class or room.
  • Free Slot Detection: The system automatically highlights unoccupied periods based on the master schedule.
  • Conflict-Free Booking: Staff can book a free period for extra classes or events. The system locks the slot and updates the view globally to prevent double-booking.
  • Data Persistence: Reliable storage and synchronization of timetable and booking data.

Team & Contributions

Pranav R

Pranav R

Documentation Lead
  • Managed comprehensive project documentation, including the Software Requirements Specification (SRS).
  • Established an organized project workflow, bridging the gap between planning and coding.
Prathwik Shetty

Prathwik Shetty

System Architect & Core Developer
  • Architected the system using core OOP principles (Inheritance, Polymorphism, Encapsulation).
  • Drafted comprehensive UML diagrams including Use Case, Class, and Sequence diagrams.
  • Developed the core Java application logic, including the timetable scheduling algorithm and booking synchronization.

System Design & Architecture

A major challenge in software development is translating real-world relationships into code. By leading the system design, I mapped out the entities of a classroom environment into a robust Java class structure.

Classroom Management System UML Class Diagram
The Class Diagram detailing the relationships between Professors, Classrooms, Timetables, and Booking objects.

Applying OOP Principles

  • Inheritance: Created a base User class containing common attributes (ID, Name, Contact) which was inherited by staff and admin classes to reduce code duplication.
  • Encapsulation: Protected sensitive data like booking statuses and schedule arrays using private variables accessed only via controlled getter and setter methods to prevent accidental overwrites.
  • Polymorphism: Implemented overridden methods for dashboard initialization, allowing the system to display different interfaces based on the logged-in user's role.

Challenges & Engineering Solutions

  • Concurrency & Double-Booking: Ensuring two professors couldn't book the same free period simultaneously.
    Solution: Designed the booking logic with strict state validation, ensuring the timetable updates synchronously and rejects conflicting requests.
  • Complex Timetable Mapping: Structuring data for days, periods, classrooms, and bookings was highly multi-dimensional.
    Solution: Designed an efficient relational object model using nested Java Collections (like HashMaps and ArrayLists) to quickly traverse and query free slots.

Academic Context & Guidance

This project was made for the subject OBJECT ORIENTED PROGRAMMING (Course Code: CS2002-1), under the expert guidance of:

Ms. Anusha N

Ms. Anusha N

Designation: Assistant Professor Gd.I

Institution: NMAM Institute of Technology (NMAMIT), Nitte

Email: anusha24@nitte.edu.in

Impact & Learning Outcomes

Taking on the role of System Designer was a pivotal learning experience. It shifted my perspective from merely "writing scripts" to "engineering software." I learned that investing time in proper architecture, documentation, and UML planning drastically reduces bugs during the coding phase and makes team collaboration seamless.