Skip to content

Latest commit

Β 

History

History
488 lines (377 loc) Β· 12.1 KB

File metadata and controls

488 lines (377 loc) Β· 12.1 KB

πŸ“‘ File Index - Complete Project Reference

Quick reference to all files in the Online Quiz System project.


πŸ“„ Documentation Files

File Description Lines Purpose
README.md Main documentation ~400 Complete project overview, setup, usage
SETUP_GUIDE.md Installation guide ~300 Step-by-step setup instructions
NETWORK_CONCEPTS.md Concept explanations ~500 Detailed network concept documentation
QUICK_START.md Quick reference ~250 Fast setup and command reference
PROJECT_SUMMARY.md Project overview ~400 High-level project summary
FILE_INDEX.md This file ~150 Complete file listing and reference

πŸ”§ Configuration Files

File Description Purpose
pom.xml Maven configuration Dependencies, build settings, project info
.gitignore Git ignore rules Exclude build files, IDE files from version control
src/main/resources/application.properties App configuration Server ports, logging, application settings

πŸš€ Launcher Scripts

File Platform Description
run-server.bat Windows Start the quiz server
run-client.bat Windows Start a quiz client

β˜• Java Source Files

Main Application

File Package Description Network Concept
QuizApplication.java com.quiz Spring Boot main class -

Model Classes (Data Structures)

File Package Description Key Features
Question.java com.quiz.model Quiz question model Serializable, contains options
Player.java com.quiz.model Player data model Synchronized score updates
QuizMessage.java com.quiz.model Message protocol Enum types, JSON serialization

Service Layer (Business Logic)

File Package Description Network Concept
QuizService.java com.quiz.service Quiz logic & state Synchronization ⭐

Key Methods:

  • addPlayer() - Synchronized player addition
  • checkAnswer() - Thread-safe score update
  • getLeaderboard() - Sorted player list

Server Components

File Package Description Network Concept
QuizServer.java com.quiz.server Main server TCP Socket ⭐ + Multithreading ⭐
ClientHandler.java com.quiz.server Client thread handler Multithreading ⭐
UDPBroadcaster.java com.quiz.server UDP broadcaster UDP Broadcasting ⭐

QuizServer.java Features:

  • TCP ServerSocket on port 5000
  • Thread pool (ExecutorService)
  • Client connection management
  • Quiz flow control

ClientHandler.java Features:

  • Implements Runnable
  • Handles individual client
  • Manages client lifecycle
  • Sends/receives messages

UDPBroadcaster.java Features:

  • DatagramSocket
  • Broadcast address (255.255.255.255)
  • Sends final results

Client Components

File Package Description Network Concept
QuizClient.java com.quiz.client Client application Client-Server ⭐
UDPResultsListener.java com.quiz.client UDP receiver UDP Broadcasting ⭐

QuizClient.java Features:

  • TCP Socket connection
  • Console-based UI
  • Message handling
  • Answer submission

UDPResultsListener.java Features:

  • Implements Runnable
  • Listens on UDP port 5001
  • Receives broadcast messages
  • Displays final results

Controller Layer (REST API)

File Package Description Endpoints
QuizController.java com.quiz.controller REST API /api/quiz/info, /api/quiz/leaderboard, /api/quiz/players

🌐 Web Frontend Files

File Location Description Technology
index.html src/main/resources/static/ Main web page HTML5
styles.css src/main/resources/static/ Styling CSS3
script.js src/main/resources/static/ Frontend logic JavaScript (ES6)

index.html Features:

  • Server status display
  • Leaderboard view
  • Network concepts showcase
  • Instructions

styles.css Features:

  • Modern gradient design
  • Responsive layout
  • Card-based UI
  • Animations

script.js Features:

  • API calls
  • Auto-refresh (5s)
  • Dynamic leaderboard
  • Error handling

πŸ“Š File Statistics

By File Type

Type Count Purpose
Java Files 11 Application logic
Documentation 6 Project documentation
Configuration 3 Build & app config
Web Files 3 Frontend UI
Scripts 2 Launchers
Total 25 Complete project

By Network Concept

Concept Files Lines
TCP Socket 2 ~300
Multithreading 2 ~250
Synchronization 2 ~200
UDP Broadcasting 2 ~150
Client-Server 11 ~800

Code Statistics

Category Files Approx. Lines
Java Source 11 ~1,500
Documentation 6 ~2,000
Web Frontend 3 ~500
Configuration 3 ~100
Total 23 ~4,100

πŸ—‚οΈ Directory Structure

MCQ spring/
β”‚
β”œβ”€β”€ πŸ“š Documentation (Root Level)
β”‚   β”œβ”€β”€ README.md
β”‚   β”œβ”€β”€ SETUP_GUIDE.md
β”‚   β”œβ”€β”€ NETWORK_CONCEPTS.md
β”‚   β”œβ”€β”€ QUICK_START.md
β”‚   β”œβ”€β”€ PROJECT_SUMMARY.md
β”‚   └── FILE_INDEX.md
β”‚
β”œβ”€β”€ βš™οΈ Configuration (Root Level)
β”‚   β”œβ”€β”€ pom.xml
β”‚   β”œβ”€β”€ .gitignore
β”‚   β”œβ”€β”€ run-server.bat
β”‚   └── run-client.bat
β”‚
β”œβ”€β”€ πŸ“ src/main/
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“ java/com/quiz/
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ πŸ“„ QuizApplication.java
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ πŸ“ model/
β”‚   β”‚   β”‚   β”œβ”€β”€ Question.java
β”‚   β”‚   β”‚   β”œβ”€β”€ Player.java
β”‚   β”‚   β”‚   └── QuizMessage.java
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ πŸ“ service/
β”‚   β”‚   β”‚   └── QuizService.java
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ πŸ“ server/
β”‚   β”‚   β”‚   β”œβ”€β”€ QuizServer.java
β”‚   β”‚   β”‚   β”œβ”€β”€ ClientHandler.java
β”‚   β”‚   β”‚   └── UDPBroadcaster.java
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ πŸ“ client/
β”‚   β”‚   β”‚   β”œβ”€β”€ QuizClient.java
β”‚   β”‚   β”‚   └── UDPResultsListener.java
β”‚   β”‚   β”‚
β”‚   β”‚   └── πŸ“ controller/
β”‚   β”‚       └── QuizController.java
β”‚   β”‚
β”‚   └── πŸ“ resources/
β”‚       β”œβ”€β”€ application.properties
β”‚       └── πŸ“ static/
β”‚           β”œβ”€β”€ index.html
β”‚           β”œβ”€β”€ styles.css
β”‚           └── script.js
β”‚
└── πŸ“ target/ (Generated by Maven)
    └── online-quiz-system-1.0.0.jar

πŸ” Quick File Lookup

Need to modify...

Server port? β†’ src/main/resources/application.properties

Questions? β†’ src/main/java/com/quiz/service/QuizService.java (line ~30)

Client connection settings? β†’ src/main/java/com/quiz/client/QuizClient.java (line ~20)

Web UI appearance? β†’ src/main/resources/static/styles.css

Web UI content? β†’ src/main/resources/static/index.html

API endpoints? β†’ src/main/java/com/quiz/controller/QuizController.java

Thread pool size? β†’ src/main/resources/application.properties (quiz.server.max.clients)

Message protocol? β†’ src/main/java/com/quiz/model/QuizMessage.java


πŸ“– Reading Order for New Developers

1. Start Here (Understanding)

  1. README.md - Project overview
  2. QUICK_START.md - Quick setup
  3. NETWORK_CONCEPTS.md - Concept details

2. Setup (Getting Started)

  1. SETUP_GUIDE.md - Installation
  2. pom.xml - Dependencies
  3. application.properties - Configuration

3. Code (Implementation)

  1. QuizApplication.java - Entry point
  2. QuizMessage.java - Protocol
  3. QuizServer.java - Server logic
  4. QuizClient.java - Client logic
  5. QuizService.java - Business logic

4. Frontend (Web UI)

  1. index.html - Structure
  2. styles.css - Styling
  3. script.js - Interactivity

🎯 Files by Team Member

Member 1: Server Developer (TCP Socket)

Primary Files:

  • QuizServer.java - Main server implementation
  • application.properties - Port configuration

Reference:

  • README.md - TCP socket documentation
  • NETWORK_CONCEPTS.md - TCP explanation

Member 2: Manager (Multithreading)

Primary Files:

  • ClientHandler.java - Thread implementation
  • QuizServer.java - Thread pool management

Reference:

  • NETWORK_CONCEPTS.md - Multithreading section
  • QuizService.java - Shared resource usage

Member 3: Client Developer (Client-Server)

Primary Files:

  • QuizClient.java - Client implementation
  • QuizMessage.java - Message protocol

Reference:

  • NETWORK_CONCEPTS.md - Client-server section
  • README.md - Communication flow

Member 4: Score Manager (Synchronization)

Primary Files:

  • QuizService.java - Synchronized methods
  • Player.java - Score management

Reference:

  • NETWORK_CONCEPTS.md - Synchronization section
  • README.md - Thread safety

Member 5: Broadcaster (UDP)

Primary Files:

  • UDPBroadcaster.java - UDP sender
  • UDPResultsListener.java - UDP receiver

Reference:

  • NETWORK_CONCEPTS.md - UDP section
  • README.md - Broadcasting explanation

πŸ”— File Dependencies

Core Dependencies

QuizApplication.java
    └── QuizServer.java
            β”œβ”€β”€ QuizService.java
            β”œβ”€β”€ ClientHandler.java
            └── UDPBroadcaster.java

Client Dependencies

QuizClient.java
    β”œβ”€β”€ QuizMessage.java
    └── UDPResultsListener.java

Model Dependencies

QuizService.java
    β”œβ”€β”€ Question.java
    β”œβ”€β”€ Player.java
    └── QuizMessage.java

Web Dependencies

index.html
    β”œβ”€β”€ styles.css
    └── script.js
            └── QuizController.java (REST API)

πŸ“ File Modification History

Version 1.0.0 (Initial Release)

βœ… All files created
βœ… All features implemented
βœ… Documentation complete
βœ… Ready for deployment


πŸŽ“ For Instructors/Reviewers

Key Files to Review

Network Concepts:

  1. QuizServer.java - TCP + Multithreading
  2. QuizService.java - Synchronization
  3. UDPBroadcaster.java - UDP Broadcasting
  4. QuizClient.java - Client-Server Communication

Documentation Quality:

  1. README.md - Completeness
  2. NETWORK_CONCEPTS.md - Depth
  3. Code comments - Clarity

Code Quality:

  1. Package structure - Organization
  2. Error handling - Robustness
  3. Thread safety - Correctness

πŸ“ž Quick Access Commands

View Specific File

# Documentation
cat README.md
cat SETUP_GUIDE.md
cat NETWORK_CONCEPTS.md

# Configuration
cat pom.xml
cat src/main/resources/application.properties

# Java Source
cat src/main/java/com/quiz/QuizApplication.java
cat src/main/java/com/quiz/server/QuizServer.java
cat src/main/java/com/quiz/client/QuizClient.java

# Web Files
cat src/main/resources/static/index.html

Search in Files

# Find all synchronized methods
grep -r "synchronized" src/

# Find all socket operations
grep -r "Socket" src/

# Find all thread operations
grep -r "Thread" src/

βœ… File Checklist

Documentation βœ…

  • README.md
  • SETUP_GUIDE.md
  • NETWORK_CONCEPTS.md
  • QUICK_START.md
  • PROJECT_SUMMARY.md
  • FILE_INDEX.md

Configuration βœ…

  • pom.xml
  • application.properties
  • .gitignore

Java Source βœ…

  • QuizApplication.java
  • Model classes (3)
  • Service classes (1)
  • Server classes (3)
  • Client classes (2)
  • Controller classes (1)

Web Files βœ…

  • index.html
  • styles.css
  • script.js

Scripts βœ…

  • run-server.bat
  • run-client.bat

Total Files: 25
Status: βœ… COMPLETE
Ready for: Deployment & Demonstration


This index provides a complete reference to all project files.