Skip to content

SudarshanProCoder/Dynamic-Question-Generator

Repository files navigation

Dynamic Question Generator (B.Tech Final Year Project)

A Flask-based system for Teachers and Students to upload questions (CSV/PDF), generate dynamic MCQ tests, assign them to students, conduct assessments, and view analytics with charts. SQLite is used as the database. The UI features a modern Liquid Glass style with Dark/Light mode.

Features

  • Teacher and Student roles with authentication
  • Upload questions from CSV or PDF (auto BL level/topic/difficulty tagging heuristics)
  • Create tests with filters; large pool per test, per-student randomized question sets
  • Assign tests to students
  • Students take tests; automatic grading and results
  • Analytics on Teacher and Student dashboards with charts
  • Liquid Glassy UI, responsive, Dark/Light mode

Tech Stack

  • Backend: Flask, Flask-SQLAlchemy
  • DB: SQLite
  • NLP/Parsing: pandas, pdfplumber (basic heuristics)
  • Frontend: HTML/CSS/JS, Chart.js

Project Structure

D:\\DQG_Project
├─ app.py
├─ database.py
├─ nlp_processor.py
├─ requirements.txt
├─ README.md
├─ instance\ (created automatically)
├─ uploads\
├─ static\
│  ├─ css\style.css
│  └─ js\main.js
└─ templates\
   ├─ base.html
   ├─ login.html
   ├─ register.html
   ├─ teacher\
   │  ├─ dashboard.html
   │  ├─ upload_questions.html
   │  ├─ create_test.html
   │  ├─ assign_test.html
   │  └─ view_results.html
   └─ student\
      ├─ dashboard.html
      ├─ take_test.html
      └─ results.html

Setup

  1. Python 3.10+
  2. Create venv and install deps:
python -m venv .venv
. .venv/Scripts/activate
pip install -r requirements.txt
  1. Run the app:
python app.py
  1. Open http://localhost:5000

Default teacher account: admin / admin123

Uploading Questions

  • CSV format headers: Question, Option A, Option B, Option C, Option D, Answer, BL Level (optional: Topic, Difficulty)
  • You can use your provided DSA_Questions.csv and Machine_Learning_Questions.csv directly.
  • PDF: basic heuristic extracts question-like lines and generates simple distractors.

Notes

  • Tests create a pool of filtered questions. Each student gets a randomized subset of size num_questions from that pool, ensuring different sets across students.
  • Chart.js is used via CDN.

Security

  • Passwords hashed with Werkzeug.
  • Flask session-based auth; for production, use environment secrets and HTTPS.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published