Projet

Général

Profil

Gestion de l'évaluation

L'affichage pour l'utilisateur

A la fin d'un exercice )

L'exercice peut avoir pris fin de deux façons :
  • soit parce que la bonne réponse a été trouvée (le clic sur le bouton Vérifier, si la réponse est correcte, rend le bouton Suite accessible)
    Une "tête" est décidée en fonction du nombre de clics sur le bouton Vérifier, elle est enregistrée pour le message de fin d'exercice et mise dans la boite à têtes au numéro correspondant.
    Cela implique que, à ce niveau, même si l'exercice a été fait plusieurs fois, seule la dernière tête sera prise en compte
    La tête sera Très bien s'il n'y a eu qu'un seul clic (réussite du premier coup), Bien s'il y a eu 2 ou 3 clics, Moyen s'il y a eu 4 ou 5 clics, Mal au delà de 5 clics.
    Le message qui l'accompagne tiendra compte aussi du nombre de clics.
  • soit parce que l'utilisateur a "abandonné" et demandé la solution
    Le nombre de clics sert uniquement à personnaliser le message, puisque la tête affectée est Rien
    Puis le nombre de clics est mis à -1, pour indiquer qu'il s'agit d'un "abandon"

Le numéro d'exercice et le nombre de clics sont enregistrés dans la variable membre QList<QPair<int, int> > m_resultats, qui stocke donc une liste de couples d'entiers, le premier représentant le numéro de l'exercice (plusieurs fois le même éventuellement) et le nombre de clics effectués (avec -1 si "abandon").

A la fin d'une séquence slotBilanSequenceEntered()

On parcourt la variable m_resultat.
On utilise l'AbulEduExerciceWidgetMessageV1. Il faut donc générer le code HTML qui va afficher notre évaluation.

QString("<table cellpadding=\"4\" cellspacing=\"0\" border=\"0\" align=\"center\" valign=\"middle\"><tr><td>") + trUtf8("Exercice N°")+QString::number(m_resultats[numExercice].first + 1)+ QString("</td>")

auquel j'ajoute la ou les têtes correspondant au m_resultats[numExercice].second tant que m_resultats[numExercice].first n'a pas changé...
Par contre si le m_resultats[numExercice].first change, il faut que j'insère une nouvelle ligne, et que je fasse pareil ensuite.

Les logs

La réponse soumise par l'utilisateur et la réponse attendue sont enregistrées à chaque clic sur le bouton Vérifier

m_answers.append(QPair<QVariant,QVariant>(reponseDonnee.join(","),reponseAttendue.join(",")));

Le pourcentage d'erreur est calculé dans la fonction setAbeTeteForResult

m_percent = setAbeTeteForResult(nbreponsesFausses,m_listeCellulesVides.count());

A chaque clic sur les boutons Vérifier ou Solution, une ligne de log est construite grâce à la fonction setAbeLineLog()

Les logs sont envoyés au serveur dans slotBilanSequenceEntered()

Redmine Appliance - Powered by TurnKey Linux