Quiz Management & Examination System — architectural layout and system interface preview
SystemsEngineering Case Study

Quiz Management & Examination System

Desktop examination application developed in Java and JavaFX for the Design Patterns Lab Final Project (Mini-SPL) at IIT, University of Dhaka. Implements rigorous GoF patterns, role-based workflows, and SQLite relational persistence.

Desktop Examination Engine (Mini-SPL)
Role & ScopeDeveloper (Mini-SPL Project)
Target DomainSystems · Production
Core RuntimeJava 17, JavaFX 21, SQLite
Operational & Architectural Invariants:
GoF architectural compliance (Strategy, Observer, Factory, State)Asynchronous JavaFX UI thread safetyPolymorphic question schemas across SQLite tables

The Problem

Academic testing systems often suffer from rigid scoring rules, hardcoded question types, and tightly coupled UI and business logic that make codebase maintenance and testing difficult.

Technical Approach

Engineered a modular desktop application in Java 17 and JavaFX 21 applying classic Gang of Four (GoF) object-oriented design patterns to cleanly separate concerns and ensure testability with JUnit 5.

Key Highlights & Architecture

  • Implementation of GoF patterns: Strategy (scoring), State (quiz lifecycle), Factory (questions), Observer (timer/events)
  • Role-based dashboards for Teachers (quiz authoring, question bank, analytics) and Students (exam taking, result review)
  • Support for 4 question types: MCQ, True/False, Fill-in-the-Blank, and Multiple Answer
  • Full SQLite persistence via JDBC with automated schema migration and database seeder

Engineering Challenges

  • Coordinating quiz timer events, countdown warnings, and auto-submission across asynchronous JavaFX application threads.
  • Designing polymorphic database schemas and JDBC queries to support multiple distinct question types.

Key Engineering Decisions

  • Strategy Pattern for Scoring: Allows switching between standard scoring, negative marking, and weighted points without altering exam runner code.
  • State Pattern for Exam Lifecycle: Modeled quiz states (Not Started, In Progress, Paused, Submitted, Graded) to prevent invalid state transitions.
  • Factory Pattern for Questions: Decoupled UI question component instantiation from question data models.
Architecture Decision Records (ADRs)

Trade-Off Analysis & Architectural Rationale

✓
Decision Made

Strategy Pattern for Examination Scoring

✕
Alternative Rejected

Monolithic switch/case scoring logic

Why It Won (Technical Rationale)

Decouples grading algorithms (standard, negative marking, weighted) from exam runner execution.

Trade-Off Accepted

Introduces additional interface and strategy class hierarchies.

✓
Decision Made

Observer Pattern for Exam Timer & UI Sync

✕
Alternative Rejected

Polling thread inside JavaFX controller

Why It Won (Technical Rationale)

Ensures UI countdown and auto-submission events execute safely on the JavaFX Application Thread.

Trade-Off Accepted

Requires explicit listener deregistration to prevent memory leaks.

Result & Outcome

Completed and presented as the final Mini-SPL course project at IIT DU, achieving clean automated test coverage and seamless multi-role examination workflows.

Technologies & Tools

Java 17JavaFX 21SQLiteDesign PatternsJUnit 5Maven