A command-line based quiz management system for programming education, built with Python. This system allows teachers to create and manage quizzes, while students can take quizzes and track their progress.
-
User Authentication
- Separate login systems for teachers and students
- Secure password management
- Role-based access control
-
Teacher Features
- Create and manage quizzes
- Add questions with multiple choice options
- Generate unique quiz codes
- View student performance and statistics
- Manage question bank
-
Student Features
- Take quizzes using unique quiz codes
- View quiz results and performance
- Track progress over time
-
Database Management
- MySQL database integration
- Data initialization and management tools
- Data viewing and clearing capabilities
- Python 3.x
- MySQL Server
- Required Python packages (listed in requirements.txt)
-
Clone the repository:
git clone https://github.com/Daksh-Maahor/ProgrammingQuiz.git cd ProgrammingQuiz
-
Create a virtual environment (recommended):
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install required packages:
pip install -r text-mode/requirements.txt
-
Set up the database:
- Create a MySQL database
- Configure your database credentials in a
.env
file - Run the initialization script:
python text-mode/init_sql.py
text-mode/
main_module.py
- Main entry pointquiz_module.py
- Quiz management functionalitystudents_module.py
- Student-related operationsteachers_module.py
- Teacher-related operationscommon_login_module.py
- Authentication systeminit_sql.py
- Database initializationview_data.py
- Data viewing utilitiesadd_questions.py
- Question managementclear_data_module.py
- Data management utilitiesgenerate_qcodes.py
- Quiz code generation
-
Start the application:
python text-mode/main_module.py
-
Follow the on-screen prompts to:
- Log in as a teacher or student
- Create or take quizzes
- Manage questions and view results
- python-dotenv==1.1.0
- mysql-connector-python==9.3.0
- colorama==0.4.6
- termcolor==2.4.0
- prettytable==3.16.0
The project has potential for expansion to include a GUI-based version alongside the current text-mode implementation. A gui-mode/
folder could be added to the project structure to house a graphical user interface that provides the same functionality as the text mode but with a modern, user-friendly interface.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.