Skip to content

shivammmmg/ConferenceRoomSchedulerYorkU

Repository files navigation

Java JavaFX Maven Testing Architecture

🏒 Conference Room Scheduler – York University

A JavaFX-based conference room scheduling system designed to simulate a real-world university room booking platform. The application enables students, faculty, staff, and partners to securely book rooms, manage reservations, process payments, and track real-time room status using sensor-powered check-ins.


πŸŽ₯ UI Walkthrough

Conference Room Scheduler UI Walkthrough

A short walkthrough showcasing the landing page, authentication flow, room booking interface, and administrative dashboard.


🎯 Project Objective

The goal of this project was to design and implement a robust, extensible, and well-tested room booking platform that demonstrates:

  • Object-Oriented Design principles
  • Proper use of software design patterns
  • Clean layered architecture
  • Comprehensive testing and quality assurance
  • A polished, real-world graphical user interface

🧩 Key Features

πŸ‘€ User & Account Management

  • User registration with email validation and strong password rules
  • Support for multiple user roles:
    • Student
    • Faculty
    • Staff
    • Partner
  • University account verification for @yorku.ca / @my.yorku.ca emails
  • Secure login, logout, and profile management
  • Password recovery support

πŸ“… Room Booking & Scheduling

  • Search and book available conference rooms
  • Conflict detection to prevent overlapping bookings
  • Role-based hourly pricing:
    • Students β€” $20/hr
    • Faculty β€” $30/hr
    • Staff β€” $40/hr
    • Partners β€” $50/hr
  • Edit or cancel bookings before start time
  • Extend bookings if the next time slot is available

πŸ’³ Payments & No-Show Handling

  • One-hour deposit charged upfront
  • Deposit applied toward final cost upon valid check-in
  • Automatic no-show detection
    • Deposit forfeited if no check-in within 30 minutes
  • Supported payment methods:
    • Credit Card
    • Debit Card
    • Institutional / Partner Billing

πŸ›° Sensor Simulation & Live Room Status

  • Simulated occupancy sensors and badge-based check-ins
  • Automatic room state transitions:
    • AVAILABLE β†’ IN_USE β†’ NO_SHOW
  • Real-time UI updates when room status changes

πŸ›  Administrative Controls

  • Chief Event Coordinator can auto-generate admin accounts
  • Admins can:
    • Add new rooms
    • Enable / disable rooms
    • Place rooms under maintenance
  • System-wide updates reflected instantly across the application
  • Administrative dashboards for system monitoring

πŸ–₯ User Interface

🏠 Main Page

Landing Page

πŸ” Login Screen

Login Screen

πŸ“… User Dashboard & Booking

Room Booking

πŸ›  Admin Dashboard

Admin Dashboard


πŸ–₯ Technology Stack

  • Language: Java 23
  • GUI Framework: JavaFX
  • Build Tool: Maven
  • Data Persistence: CSV files (file-based storage)
  • Testing: JUnit, Randoop, PIT (Mutation Testing)
  • IDE: IntelliJ IDEA

🧠 System Architecture

The system follows a three-layered architecture:

1️⃣ Application Layer (UI)

  • Authentication UI
  • Booking UI
  • Admin UI
  • Navigation & routing

2️⃣ Core Logic Layer

  • UserManager
  • BookingManager
  • RoomStatusManager
  • PaymentContext & payment strategies
  • SensorSystem

3️⃣ Infrastructure Layer

  • CSV repositories
  • File resolver
  • CSV helper utilities

This design enforces high cohesion, low coupling, and strong separation of concerns.


🧩 System Flow & Architecture Diagrams

The Conference Room Scheduler was designed using a clear, layered architecture with well-defined responsibilities across components.

The following diagrams are included in the repository to document system behavior and design decisions:

  • Use Case Diagrams β€” user and admin interactions
  • Activity Diagrams β€” booking, payment, and check-in flows
  • Sequence Diagrams β€” scenario-based system interactions
  • Class Diagram β€” object relationships and design patterns
  • Component Diagram β€” high-level system decomposition

πŸ“ All diagrams can be found in the /Diagrams directory.

πŸ— Design Patterns Used

Design Pattern Purpose
Singleton Ensures a single shared instance of repositories and managers
Builder Safe and flexible construction of User and Booking objects
Strategy Interchangeable payment processing algorithms
Observer Real-time room and booking status updates
Factory Centralized creation of UI components and rooms
Facade Simplified interaction with sensor and room-status subsystems

Each pattern was chosen deliberately and justified based on system requirements.


▢️ How to Run the Application

βœ… Recommended (Maven – No JavaFX Setup Needed)

mvn javafx:run

Requirements:

  • Java 23
  • Maven

Maven automatically:

  • Downloads JavaFX
  • Configures module paths
  • Launches the application

⚠️ Manual Run (Optional – IntelliJ)

If running directly from IntelliJ:

  • Install JavaFX SDK

  • Add the following VM options:

    --module-path /path/to/javafx/lib --add-modules javafx.controls,javafx.fxml


⚠️ Error Handling & Edge Cases

The system explicitly handles a wide range of edge cases to ensure correctness and robustness:

  • Duplicate email registrations are rejected
  • Weak passwords fail validation with clear feedback
  • Overlapping room bookings are prevented
  • No-show bookings automatically forfeit deposits
  • Room extensions are blocked if the next slot is occupied
  • Disabled or maintenance rooms cannot be booked
  • Late check-ins after the grace period are rejected
  • Invalid payment attempts do not confirm bookings

These cases are enforced consistently across the UI and backend logic.

πŸ§ͺ Testing & Quality Assurance

βœ… Manual JUnit Tests (Non-GUI)

  • Class Coverage: 100%
  • Method Coverage: 98%
  • Line Coverage: 95%
  • Tests Passed: 844 / 844

Fully covers:

  • User management
  • Booking logic
  • Payment strategies
  • Sensor simulation
  • Room status management
  • Core models and utilities

πŸ€– Randoop (Automated Testing)

  • Class Coverage: ~50%
  • Method Coverage: 100%
  • Line Coverage: ~86%

Used to explore unexpected execution paths and stress-test backend logic.


🧬 Mutation Testing (PIT)

  • Mutation Coverage: ~32%
  • Test Strength: ~90%

Lower mutation coverage is due to intentionally excluded infrastructure classes.
Manual tests successfully killed most mutants where applied.


πŸŽ₯ Demo Video

πŸ“Ί YouTube Demo:
https://www.youtube.com/watch?v=2ehBNyhx8fY


πŸ‘₯ Team & Contributions

  • Shivam Gupta (Lead Developer & System Integration)

    • Core system integration
    • User authentication & profile management
    • Sensor simulation & room status logic
    • Check-in and no-show handling
    • Project documentation
  • Kartik Sharma (Booking & Payments Developer)

    • Room booking workflow
    • Payment interface
    • UI development and refinement
  • Sharwin Verma (Administration Features Developer)

    • Administrative dashboard
    • Room management functionality
    • Admin workflow testing and documentation
  • Himanshi Verma (Design Diagrams & Testing Support)

    • Component and class diagrams
    • Testing support for occupancy, maintenance, and admin features
  • Meem Morshed (Testing & Sensor Validation)

    • Sensor and occupancy testing
    • Automated test generation (Randoop)
    • Project demonstration video

⚠️ Academic Disclaimer

This project was developed as part of EECS 3311 – Software Design at York University.
It is shared for educational and portfolio purposes only.


⭐ If you find this project interesting, feel free to explore the code and documentation.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors