Application de quiz interactive développée en Python avec une architecture orientée objet (OOP) et une interface Streamlit.
- Génération de quiz dynamique par domaine (tags)
- Questions à choix unique (radio buttons) et choix multiple (multiselect)
- Scoring proportionnel pour les questions à choix multiple
- Visualisation des résultats par domaine (Matplotlib/Seaborn)
- Persistance des données via
st.session_state - Réinitialisation du quiz
Quiz-app-streamlit/
│
├── app.py # Interface Streamlit (QuizView)
├── models.py # Logique métier (4 classes OOP)
├── quiz_dataset.json # Dataset de questions en JSON
├── requirments.txt # Dépendances Python
├── Diagramme_UML.pdf # Diagramme de classes UML
│
└── IMAGES/ # Captures d'écran de l'application
| Classe | Rôle |
|---|---|
Question |
Représente une question (énoncé, choix, réponse, tags) |
QuestionDataset |
Singleton - charge le JSON une seule fois |
QuizGenerator |
Génère un quiz aléatoire filtré par domaine |
QuizCorrector |
Évalue les réponses et calcule les scores |
Choix unique : 1 point si correct, 0 sinon.
Choix multiple (score proportionnel) :
# Cloner le dépôt
git clone https://github.com/EKOURAOGO/Quiz-app-streamlit.git
cd Quiz-app-streamlit
# Installer les dépendances
pip install -r requirments.txt
# Lancer l'application
streamlit run app.py- Sélectionner un ou plusieurs domaines dans la sidebar
- Cliquer sur "Générer le quiz"
- Répondre aux questions (radio ou multiselect)
- Soumettre pour voir le score détaillé par question
- Visualiser les performances par domaine en graphique




