A distributed quiz web application demonstrating advanced Java programming concepts including:
- Servlets for web layer
- RMI (Remote Method Invocation) for distributed processing
- JDBC with MySQL for database operations
- Networking with sockets for real-time communication
- Multithreading for concurrent user handling
- Collections & Generics for data management
-
User Roles
- Students: Take quizzes, view results
- Teachers: Create quizzes, manage questions, view analytics
- Admin: User management, system monitoring
-
Quiz System
- Real-time quiz taking
- Multiple question types (MCQ, True/False)
- Timer-based quizzes
- Instant scoring
-
Distributed Architecture
- RMI services for quiz processing
- Socket communication for live updates
- Load balancing with multiple servers
- Backend: Java 8, Servlets, JSP, RMI, JDBC
- Frontend: HTML5, CSS3, JavaScript
- Database: MySQL 8.0
- Server: Apache Tomcat 9+
- Build Tool: Maven 3.6+
The application uses environment variables for secure configuration, especially when deployed to cloud platforms like Render.
| Variable | Description | Default |
|---|---|---|
DB_URL |
JDBC Connection URL | From database.properties |
DB_USERNAME |
Database Username | From database.properties |
DB_PASSWORD |
Database Password | From database.properties |
ADMIN_USERNAME |
Initial Admin Username | ------- |
ADMIN_PASSWORD |
Initial Admin Password | ---n--- |
ADMIN_EMAIL |
Initial Admin Email | admin@quizapp.com |
Note: The system automatically creates the first ADMIN user on startup if none exists. After that, the admin account is managed through the database.
- Clone/Download the project
- Install MySQL and create database
- Configure database.properties
- Build with Maven:
mvn clean package - Deploy WAR file to Tomcat
- Start RMI registry
- Access at: http://localhost:8080/QuizWebApp
- users (id, username, password, role, email, created_at)
- quizzes (id, title, description, duration, created_by, created_at)
- questions (id, quiz_id, question_text, question_type, options, correct_answer)
- results (id, user_id, quiz_id, score, total_questions, taken_at)
- answers (id, result_id, question_id, user_answer, is_correct)
- Developer: [CSE , Group 1 and 2 students //2018]
- Student ID: [ Name Id 1, ermias nigussie ugr/34318/16 2, 3 4 5
]
- Course: Advanced Programming
- University: Adama Science and Technology University
- Object-Oriented Programming
- Client-Server Architecture
- Distributed Computing with RMI
- Database Programming with JDBC
- Web Development with Servlets
- Concurrent Programming
- Network Programming
- Design Patterns
Educational Project - Made by computer science and engineering students at adama science and technology university