MCQ-App is an interactive application designed to offer Multiple Choice Question (MCQ) quizzes with comprehensive user management and progress tracking. It includes both GUI and console modes to enhance user accessibility and flexibility. The app also features an admin panel for managing quizzes, categories, and users.
- User Management:
- Role-based system: Admins and Students.
- Users can register, log in, and view their quiz history.
- Quizzes:
- Multiple-choice quizzes with categories and difficulty levels (easy, medium, hard).
- Automatic feedback on answers with final scores.
- Admin Panel:
- Admins can manage users, questions, and categories.
- Add, edit, or delete questions within categories .
- History Tracking:
- Students can view detailed history of their quizzes, including correct answers and performance summaries.
- Results are exported to CSV files.
- Difficulty-Based Timers:
- Timer durations adapt based on the quiz difficulty level.
- Export Results:
- Admins can export quiz results and question statistics for analysis.
- Error Handling:
- Graceful handling of invalid inputs and missing data in both GUI and console modes.
- Python 3.9 or higher.
- Required Python packages:
CustomTkinterrich
- Clone this repository:
git clone https://github.com/Abdou-bnm/MCQ-App)
- Navigate to the project directory:
cd MCQ-App - Install the required dependencies:
pip install requirements.txt
-
GUI Mode:
python src/GUI/main.py
-
Console Mode:
python src/Console/main.py
Ensure you have installed all dependencies before running the application:
pip install requirements.txtThe project is organized as follows:
├── data/
│ ├── questions_1.json # Stores all questions, categories, and levels
│ ├── users.json # Stores user profiles and history
│ └── results/ # Folder for exported results (CSV files)
├── src/
│ ├── Console # Console mode implementation
│ │ ├── main.py # Entry point for console mode
│ │ ├── Quiz.py # Handles quiz logic in console mode
│ │ ├── user_management.py
│ │ └── ...
│ ├── GUI/ # GUI mode implementation
│ │ ├── main.py # Entry point for GUI mode
│ │ ├── Admin_Panel.py
│ │ └── ...
│ └── tests/
│ ├── test_questions.py
│ └── test_users.py
│ └── ...
├── README.md # Documentation for the project
├── requirements.txt # Dependencies for the project
└── .gitignore # Files to ignore in version control
- Log In or Register:
- Log in using an existing username or register as a new user.
- Take a Quiz:
- Choose a category and difficulty level.
- Answer the multiple-choice questions within the time limit.
- View History:
- Access detailed history of past quizzes, including scores and correct answers.
- Log In as Admin:
- Use an admin account to access the Admin Panel.
- Manage Questions ,Categories and Users:
- Add, edit, or delete categories and questions.
- Export Results:
- Export student quiz results and question statistics to CSV files.
- Ensure all dependencies are installed correctly to avoid module import errors.
- Compatibility may vary with Python versions below 3.9.
- JSON files must maintain valid syntax to prevent application crashes.
- 🐍 Python
- 🖼️ CustomTkinter (GUI)
- ⚡ Rich Library (Console UI)
- 📄 JSON (Data storage)
- 📄 CSV (Data storage)
⚠️ Ensure all dependencies are installed to avoid runtime errors.
- 🍴 Fork the repository.
- 🌿 Create a new branch (
feature/YourFeature). - 💾 Commit your changes (
git commit -m 'Add new feature'). - 📤 Push to the branch (
git push origin feature/YourFeature). - 🔀 Open a Pull Request.