Nous proposons ici de créer un outil Web écrit
complété de express, côté serveur qui permet de présenter aux personnes qui se connectent un QCM, préparé par avance.
L'utilisateur peut remplir le QCM, le valider, obtient alors son score, et ce score peut être enregistré pour une consultation ultérieure.
Ce travail regroupe plusieurs tâches:
Nous allons détailler chaque tâche en donnant quelques pistes…
Le programme final sera utile s'il peut servir n'importe quel QCM. Dans ce cas, une solution est d'indiquer au programme où trouver la description du QCM qu'il soit servir. Le QCM doit alors être décrit dans un fichier, et la première tâche est :
Une description possible pour un QCM est par exemple :
Entraînement level 1 Quelle est la couleur du cheval blanc d'Henri 4 ? @Blanc Rouge Bleu Le produit 4x5 est plus grand que : @10 @5 25 30 45
La première ligne contient le titre du QCM. Chaque question est séparée des suivantes par une ligne blanche.
Chaque question tient sur une seule ligne. Puis suivent les réponses, une seule par ligne, les réponses justes étant préfixées par @
.
Cette description de QCM peut faire l'affaire, mais on peut aussi en trouver une autre plus appropriée à nos propres besoins.
La lecture d'un tel fichier texte ne pose pas de problème particulier. L'intégralité d'un fichier peut être lu, le résultat étant une liste de chaînes, chaque élément représentant une ligne du fichier :
// Code Javascript var fs = require('fs'); fs.readFile('file.txt', function(err, data) { var lignes = data.toString().split("\n"); for(i in lignes) { console.log(lignes[i]); } });
# Code Python with open('monfichier.txt', 'r') as f: lignes = f.readlines() print(lignes)
Pour écrire simplement et efficacement un serveur Web, le plus simple est d'utiliser un framework approprié. Node.js en possède plusieurs dont : Express qui a pour avantage d'être le plus utilisé et simple à utiliser.
Pour écrire simplement et efficacement un serveur Web, le plus simple est d'utiliser un framework approprié. Python en possède de nombreux dont : Django, Pyramid, Flask, Bottle, Cherrypy… Bottle a pour avantage d'être simple à utiliser et simple à installer (un seul fichier). Un tutoriel sur l'utilisation de bottle est disponible ici : Utiliser Bottle pour faire un serveur Web en Python
L'enregistrement des scores peut, ou non, être nécessaire. On peut choisir d'enregistrer la réponse donnée à chaque question, ou au contraire, la note obtenue à tout le QCM.
Les données pourront être enregistrées dans un simple fichier texte, dans un format exploitable par ailleurs (un fichier csv par exemple). On pourra aussi utiliser le module ''sqlite3'' de Python pour enregistrer ces informations dans une base de données Sqlite.
On veillera à mélanger l'ordre des réponses. Selon les besoins, on pourra aussi mélanger l'ordre des questions (une fois pour toutes, ou différemment pour chaque utilisateur)