Home
TP Qt : QCM
Contents
1. QCM o une question est pos e et la r ponse est choisir parmi un ensemble de propositions A QCM version 1 Qui pose des questions stupides Continuer Question 3 3 les sondages Score 1 3 La version 1 On va d velopper l application en 4 it rations e it ration n 1 la r alisation de la GUI Graphical User Interface e t ration n 2 la sauvegarde du r sultat au format CSV e t ration n 3 la lecture d un questionnaire au format XML e it ration n 4 une bo te de lancement permettant de choisir 1 examen et l affichage d un chronom tre Remarque un d veloppement it ratif s organise en une s rie de d veloppement tres courts de dur e fixe nomm e it rations Le r sultat de chaque it ration est un syst me partiel ex cutable test et int gr mais incomplet On tiendra compte des contraintes initiales suivantes e une seule bonne r ponse possible par question e les questions n auront pas toutes le m me nombre de propositions TP Qt QCM 2 18 2012 tv lt tvairalfree fr gt MANIPULATIONS On d finit une structure QCM comprenant quatre champs e un champ question cha ne de caract res qui contiendra la question poser e un champ reponses tableau de taille variable de cha ne de caract res contenant les propositions e un champ solution entier qui contient le num ro de la bonne r ponse dans le champ reponses e un champ point entier qui attribue u
2. solution 6 point 1 QString fromUtf8 Qui pose ndes questions jstupides clear push_back le prof de math push_back mon copain ma copine push_back moi push_back le prof d info push_back personne _ i1l n y a pas de question stupide push_back les sondages _examen push_back q IX ete a return _examen Code 2 creer examen Documentation STL Containers vector www cplusplus com reference stl vector TP Qt QCM 4 18 2012 tv lt tvaira free fr gt TRAVAIL DEMAND Travail demand It ration 1 Dans cette premi re it ration on s attachera cr er sa propre bo te de dialogue en cr ant une nouvelle classe QCMDialog qui h ritera de la classe QDialog Une instance de cette classe repr sentera pour l instant la fen tre de l application Hinclude lt QtGui gt include QCMDialog h Hinclude QCM h using namespace std int main int argc char rargvl QApplication app argc argv Examen examen creer examen QCMDialog dialog examen dialog show return app exec Examen creer_examen Code 3 main cpp Le code source de cette classe sera r parti en deux fichiers QCMDialog h et QCMDialog cpp QDialog Cette bo te de dialogue com MX QCM version 1 prendra les widgets suivants dE Qui pose des questions stupides QLa bel deux QLabel un QGroupBox qui H c
3. un l ment de la liste lt libelle gt Laquelle des expressions suivantes est un prototype de fonction lt libelle gt Acc s au contenu d un l ment Pour acc der au contenu textuel la partie comprise entre la balise ouvrante et la balise fermante d une balise lt libelle gt contenu textuel lt libelle gt on utilisera tag text Il est videmment possible de convertir ce texte en entier en utilisant la m thode toInt ou en r el en utilisant toDouble lt proposition libelle int f 0 gt Acc s un attribut d un l ment Pour acc der l attribut Libelle d une balise proposition on utilisera tag attribute libelle Question 7 Modifier le fichier de projet pro pour ajouter le support xml Question 8 Coder la m thode priv e lireExamen de la classe QCMDialog Question 9 Fabriquer l application version 3 et tester TP Qt QCM 15 18 2012 tv lt tvaira free fr gt TRAVAIL DEMAND It ration 4 Dans cette derni re it ration on va ajouter deux fonctionnalit s e une bo te de dialogue de lancement permettant le choix du QCM ex cuter e un chronom tre analogique permettant de mesurer la dur e pour r pondre aux questions Lorsque l utilisateur ex cute l application dans cette version il voit Ms OCM version 4 TX appara tre une bo te de dialogue de lancement lui permettant de al A Nom d utilisateur saisir son nom et de charger l
4. fichier au format CSV contenant les r sultats obtenus par l utilisateur aux ques tions pos es Cela permettra d exploiter ce fichier dans un logiciel de type tableur Remarque si vous ne connaissez pas ce format vous devez lire au moins l article disponible sur Wikipedia fr wikipedia org wiki Comma separated_ values On enregistrera tout au long du QCM les informations suivantes e colonne Question le num ro de la question e colonne R ponse le num ro de la proposition choisie e colonne Point le nombre de point affect cette question e colonne Score le nombre de point obtenu par l utilisateur puis une fois le QCM termin on ajoutera le total obtenu dans la colonne Score On prendra comme d limiteur de champ le point virgule et on utilisera la virgule pour repr senter les nombres d cimaux standard francais Pour mettre en oeuvre cet ajout de fonctionnalit vous utiliserez la classe QFile fournie par Qt Comme les fichiers CSV sont de simples fichiers textes vous pouvez utiliser la classe QTextStream pour crire un flux dans le fichier lt lt Question Reponse Point Score ESOO OIDO Po Us ONES 50 5533300 Code 6 Exemple de fichier CSV produit TP Qt QCM 10 18 2012 tv lt tvaira free fr gt TRAVAIL DEMAND Exemple d criture dans un fichier texte outfile new QFile sample csv if outfile gt open QFile WriteOnly QlODevice Text QT
5. question la fin du QCM en affichant le r sultat obtenu ce questionnaire e le bouton Quitter permet de terminer l application Cette bo te de dialogue g rera trois slots priv s e enableValiderButton qui est appel des qu il y aura un clic sur un des boutons Radio et qui permettra d activer le bouton Valider si une proposition a t choisie e continuerClicked qui est invoqu lorsque l utilisateur clique sur le bouton Continuer e validerClicked qui est invoqu lorsque l utilisateur clique sur le bouton Valider Le bouton Valider sera le bouton par d faut c est dire celui qui est press quand l utilisateur appuie sur la touche Entr e Il sera aussi d sactiv par d faut La bo te de dialogue sera ferm e lorsque l utilisateur cliquera sur le bouton Quitter TP Qt QCM 6 18 2012 tv lt tvairalfree fr gt TRAVAIL DEMAND Une zone de la bo te de dialogue est r serv e au suivi du questionnaire en r alisant Question 3 3 e l affichage en bleu du num ro de la question courante sur le nombre total de Score 1 3 questions l affichage en vert du nombre de points obtenus sur le total possible pour ce QCM Pour personnaliser l g rement les affichages dans la bo te de dialogue la question sera affich e en bleu et la bonne r ponse en rouge Le manuel d utilisation pour cette version est d crit ci dessous La bo te de dialogue appara t en affichant la A QCM version 1 pre
6. TP Qt QCM 2012 tv lt tvairaOfree fr gt v 1 0 le 8 mars 2012 Sommaire Manipulations 2 HA DS den te NS ou ee oo ne 2 SE GA y ci la yori de A A A A e a Ii ie 2 Travail demand 5 Morao AE 5 raon A ropero a A re ea a e aA R aa AAA 10 MP ORo ayr a e A A A Bs a a E A CU 12 TO a aaa a a a a a ATA 16 Lonea ade des dir a e Do a A r a e A GO E AAA t 18 Listings 1 ON E EE E E E 3 2 o io III 4 3 PAROLES SRE a er EA AA Dre dd deb oo 5 4 COMM NOT eras nn 2 A A A AA E 8 5 D MOS CPE a le os o ETA DAL RE AN A ARE Na et 9 6 Exemple deihier CSN Podul s icon A A AN a TER e rd 10 En UT OMR ON eras a a a da sd ns 11 3 MA IIA E de 12 9 EXD GC her Milos aed a aa a a AA ARA as 12 10 Ek mpl d ouverture d unhicmer XML e 5 454 e e id A a a a 13 11 Exemple de parecours d un temer XME sn RELAIS ES NAN EN ea CARRE 14 12 Exemple de parcours d une liste de noeuds 14 13 Exemple d acc s un l ment de la liste 14 MANIPULATIONS Manipulations Objectifs Les objectifs de ce TP sont e cr er des bo tes de dialogue personnalis es et utiliser les bo tes de Qt e manipuler les types structur s et vector de la STL e g rer des fichiers au format CSV Comma Separated Values et XML Extensible Markup Language e utiliser les fonctions de dessin de QPainter Mise en situation Dans ce TP il s agit de r aliser un programme d examen sous forme de questionnaire choix multiple
7. core 0 2 TP Qt QCM 7 18 2012 tv lt tvaira free fr gt TRAVAIL DEMAND Il clique sur Continuer et le r sultat obtenu 4 Information s affiche car c tait la derni re question Le QCM est termin Votre score 0 OK Ce questionnaire est maintenant termin il peut x QCM version 1 Juitter l application gt Qui pose des questions stupides les Per se nda See Le constructeur de la classe QCMDialog a la charge d initialiser les attributs et d afficher la premi re question du QCM La seule difficult prendre en compte est la contrainte suivante les questions n auront pas toutes le m me nombre de propositions Cela implique que le nombre de QRadioButton instancier va varier en fonction de la question Par contre les autres widgets sont communs toutes les questions et pourront tre conserv s pour chaque affichage Seuls les contenus des QLabel et l tat des boutons seront mis jour Il y a plusieurs fa ons de g rer un nombre variable d objets 1 un tableau dynamique de pointeurs sur des objets de type QRadioButton 2 un conteneur d objets de type QRadioButton Comme la STL Qt fournit un ensemble de conteneur pr t l emploi QList lt T gt QLinkedList lt T gt QQueue lt T gt QVector lt T gt QMap lt Key T gt Vous tes libre d utiliser la technique qui vous convient Question 1 Compl ter la d claration de la classe QCMDialog ifndef MYWIDGET_H d
8. e et le temps TP Qt QCM 17 18 2012 tv lt tvaira free fr gt TRAVAIL DEMAND Pour r aliser le chronom tre analogique on se basera sur eee l exemple Analog Clock fourni par Qt doc qt nokia com widgets bi E analogclock html Il faudra tout de m me le modifier graphiquement 5 pour visualiser l aiguille des secondes E Pour la base de temps on utilisera un QTimer r gl au dixieme de secondes Question 10 Cr er la bo te de dialogue de lancement et modifier l application existante Question 11 Int grer la gestion et l affichage du chronom tre analogique Question 12 Fabriquer l application version 4 et tester Liens e Documentation Qt Reference en francais http qt developpez com doc e Documentation Qt Reference en anglais doc qt nokia com e Documentation STL Containers vector www cplusplus com reference stl vector e Documentation QFile developer qt nokia com doc qfile html e Documentation QTextStream developer qt nokia com doc qtextstream html e Documentation XML Processing developer qt nokia com doc xml processing html e XML fr wikipedia org wiki Xml e CSV fr wikipedia org wiki Comma separated_ values TP Qt QCM 18 18 2012 tv lt tvaira free fr gt
9. efine MYWIDGET_H Htinclude lt QtGui gt class QCMialog public QDialog Q_OBJECT private 7 p blic QCMDialog const Exameng examen QDialog parent 0 QCMDialog private slots les slots validerClicked continuerClicked et enableValiderButton Je Hendif Code 4 QCMDialog h TP Qt QCM 8 18 2012 tv lt tvaira free fr gt TRAVAIL DEMAND Question 2 Compl ter la d finition de la classe QCMDialog Htinclude lt QtGui gt tinclude QCMDialog h QCMialog QCMDialog const Examen amp examen QDialog parent QDialog parent TODO setWindowTitle tr QCM version 1 QCMialog QCMDialog ir void QCMialog validerClicked TODO void QCMDialog continuerClicked TODO void QCMDialog enableValiderButton bool checked TODO Code 5 QCMDialog cpp Question 3 Fabriquer l application version 1 et tester TP Qt QCM 9 18 2012 tv lt tvaira0free fr gt TRAVAIL DEMAND It ration 2 Cette version int gre une modification de la version 1 et un ajout de fonctionnalit QCM version 2 Qui pose des questions stupides Continuer Quitter Question 3 3 Score 6 5 10 les sondages Il serait int ressant de pouvoir g rer des demi points 0 5 dans le bar me des questions Vous devez assurer les modifications pour prendre en compte cette demande On d sire pouvoir r cup rer un
10. examen de son choix Pour la r alisation de cette bo te on va cr er une nouvelle classe ExamenDialog qui CPES h ritera de QDialog Cette bo te sera affich e partir du main Quitter Remarque le bouton Charger un examen sera valide seulement si l utilisateur a saisi un nom Puis l utilisateur clique sur le bouton Charger un examen et une MS QCM version 4 O X bo te de dialogue Qt du type QFileDialog s affichera lui permettant e se Nom d utilisateur de choisir le fichier xml de l examen Charger un examen e Open File A a Lo EY 4C mum Q U Q Fe tv Documents Cours IlUT_Arles DUT_Arles qt tp TP qcm qcmdialog chrono v e T l chargements Network A ll qem 2 xml Root Trash R serv au syste DATA 48 7 GiB Hard Drive 205 4 GiB Hard Dri 10 6 GiB Hard Drive 15 4 GiB Hard Drive o Elements a SAMSUNG o_ 7 5 GIB Removabl Name E Open Filter Fichier examen v 0 Cancel On appliquera un filtre sur les fichier d extension xml Apr s avoir cliqu sur Open l examen d marre avec l affichage d un chronom tre Cela revient instancier un objet de type QCMDialog en lui passant en param tre e le nom du fichier xml QString e le nom de Putilisateur QString Ces deux informations permettront de cr er le fichier r sultat suivant nomExamen nomUtilisateur csv Par contre la bo te de dialogue QCMDialog devra tre modale pour bloquer l util
11. extStream out outfile out lt lt Question Reponse Point Score lt lt endl outfile gt close Code 7 Ecriture au format CSV Documentation QFile developer qt nokia com doc qfile html Documentation QTextStream developer qt nokia com doc qtextstream html Question 4 Modifier l application pour g rer les demi points Question 5 Ajouter la fonctionnalit d enregistrement des r sultats au format CSV Question 6 Fabriquer l application version 2 et tester TP Qt QCM 11718 2012 tv lt tvaira free fr gt TRAVAIL DEMAND It ration 3 On va maintenant doter le programme de la facult de lire depuis un fichier xml le QCM soumettre l utilisateur On modifiera le main de l application afin de passer en argument de la classe QCMDialog le nom du fichier contenant l examen Hinclude lt QtGui gt include QCMDialog h Hinclude QCM h int main int argc char argv l QApplication applargc argv QCMDialog dialog qcm 2 correspond au fichier qcm 2 xml dialog show return app exec Code 8 main3 cpp Le format d un fichier XML a lire est le suivant lt xml version 1 0 encoding UTF 8 7 gt lt questions gt lt question gt lt libelle gt Laquelle des expressions suivantes est un prototype de fonction lt libelle gt lt propositions gt lt proposition libelle int 0 gt lt proposition libelle int f int 0 gt lt proposition libelle
12. int f int i gt lt proposition libelle int f i gt lt propositions gt lt solution gt 3 lt solution gt lt point gt 1 5 lt point gt lt question gt lt question gt lt libelle gt Qui pose des questions stupides lt libelle gt lt propositions gt lt proposition libelle le professeur de math gt lt proposition libelle mon copain ma copine gt lt proposition libelle moi gt lt proposition libelle le professeur d info gt lt proposition libelle personne _il n y ya pas de question jstupide gt lt proposition libelle les jsondages gt lt propositions gt lt solution gt 6 lt solution gt lt point gt 1 lt point gt lt question gt lt questions gt Code 9 Exemple de fichier XML TP Qt QCM 12 18 2012 tv lt tvaira free fr gt TRAVAIL DEMAND Remarque si vous ne connaissez pas ce format vous devez lire au moins l article disponible sur Wikipedia fr wikipedia org wiki Xml La premi re modification apporter se trouve dans le fichier de projet pro en ajoutant le support xml Pour cela il faut ajouter cette ligne Maintenant il faut ajouter une m thode priv e la classe QCMDialog bool lireExamen Cette m thode va lire et d coder le fichier xml et cr er un Examen Elle remplace la fonction creer _ examen utilis e jusqu maintenant Le support xml de Qt fournit de nombreuses classes pour le travail effectuer ici QDomDocument q
13. isateur dans la r alisation de son QCM Une fois termin on reviendra la bo te de lancement pour Quitter ou Charger un nouvel examen TP Qt QCM 16 18 2012 tv lt tvaira free fr gt TRAVAIL DEMAND Le manuel d utilisation pour cette version sera le suivant w QCM version 4 nn a QCM version 4 rm pu Nom d utilisateur Nom d utilisateur toto Charger un examen Charger un examen Quitter Quitter L cran de d marrage s affiche L utilisateur saisit son nom puis il charge un examen Open File mo e Places gt 4 CCE Q L R Be tv Documents Cours IUT_Arles DUT_Arles at tp TP qgcm qcmdialog chrono v e 3 gcm 0 xml gem 2 xml T l chargements Network E Root Trash R serv au syst DATA 48 7 GiB Hard Drive 205 4 GiB Hard Dri 10 6 GiB Hard Drive 15 4 GiB Hard Drive Elements 2 SAMSUNG a 7 5 GIB Removabl Name H Open Filter Fichier examen v 0 cancel Il choisit alors le fichier Examen charger Ax Chron gi N QCM version 4 y 1 1 l j f r E k Laquelle des expressions suivantes est un prototype de fonction valider iaa _ continuer _ int F 0 2 int fint 0 int Flint i int Fi Question 1 2 2 int F i Score 0 2 5 _ Terminer Information Le QCM est termin Votre score 1 2 5 Votre temps 00 01 15 7 Une fois termin on affiche le r sultat en indiquant le scor
14. mi re question de l Examen Laquelle des expressions suivantes est un prototype de fonction Valider R ponse Continuer int F 0 Quitter L int int 0 2 int Flint i int Fi Question 1 2 LA Score 0 2 L utilisateur doit choisir une proposition ou M BEMVEESIDIIS LA sinon quitter l application gt Laquelle des expressions suivantes est un prototype de Fonction Valider R ponse Continuer gt int F 0 ikiii int fint 0 a int Flint i int Fi Question 1 2 PA Score 0 2 Il peut maintenant valider son choix et obtenir 3 gt Laquelle des expressions suivantes est un prototype de Fonction salida e resultat a cette question Valider R ponse Continuer J int Fo int fint 0 2 Int Flint 1 DE Efit Question 1 2 int ri Score 0 2 Il clique sur Continuer pour afficher la question suivante Qui pose des questions stupides Valider R ponse Continuer H PE i le prof de math m L utilisateur choisit une proposition et moncopain ma copine a moi valide son choix e y personne il n y a pas de question stupide PET Question 2 2 les sondages Score 0 2 La bonne r ponse s affiche et son score est mis jour gt Qui pose des questions stupides Valider R ponse _ continuer _ J le prof de math J mon copain ma copine _ Quiter 3 moi le prof d info personne il n v a pas de question stupide Question 2 2 les sondages S
15. n nombre de points pour avoir trouver la bonne r ponse On cherche maintenant faire un examen de plusieurs questions On d finit pour cela un type Examen comme un tableau dynamique de structures QCM en utilisant le type vector de la STL Ces d finitions sont regroup es dans le fichier header QCM h fourni ifndef QCM H define QCM H Hinclude lt iostream gt tinclude lt QString gt Hinclude lt vector gt using namespace std struct QCM QString question vector lt QString gt reponses unsigned int solution unsigned int point J typedef vector lt QCM gt Examen Examen creer_examen endif QCM_H Code 1 QCM h TP Qt QCM 3 18 2012 tv lt tvaira free fr gt MANIPULATIONS Pour cr er un Examen un ensemble de questions choix multiple et pour nous un vector de structures QCM on utilisera dans le main cpp une fonction creer_examen seulement pour les it rations 1 et 2 Examen creer_examen QCM q Examen _examen q Q Q Q Q Q Q question QString fromUtf8 Laquelle des expressions suivantes est un prototypeude fonction 2 reponses reponses reponses reponses reponses solution 3 point 1 clear push_back int f 0 push_back int f nt 0 push_back int f intui push_back int f i _examen push_back q Q 200 0 Q Q Q Q Q question reponses reponses reponses reponses reponses reponses reponses
16. ontiendra n QRadioButton et trois QPushButton QGroupBox Continuer i __ Quitter QPushButton Qlabel Question 3 3 J Score 1 3 QRadioButton les sondages TP Qt QCM 5 18 2012 tv lt tvaira free fr gt TRAVAIL DEMAND Le positionnement de ces widgets respectera le plan suivant QGroupBox IM QPushButton QRadioButton TE TE El ment d espacement QRadioButton QRadioButton QLabel mainLayout leftLayout boxLayo ut rightLayout L instanciation des widgets et leur positionnement se fera en partie dans le constructeur de la classe QCMDialog voir Code 5 Les l ments d espacement s obtiennent en appelant la m thode addStretch du layout concern Pour assurer ce positionnement il vous faudra utiliser le principe des conteneurs layout offert par Qt pour organiser les diff rents widgets dans la bo te de dialogue Voici les quatre layout mettre en oeuvre mainLayout QHBoxLayout leftLayout QVBoxLayout rightLayout QVBoxLayout et boxLayout gt QVBoxLayout La classe QCMDialog devra utiliser la macro Q_OBJECT n cessaire pour toutes les classes qui d finissent des signaux et ou des slots Le r le des trois boutons est le suivant e le bouton Valider valide la proposition choisie et d clenche l valuation de la r ponse fournie e le bouton Continuer d clenche le passage la question suivante ou si c est la derni re
17. turn false file close Code 10 Exemple d ouverture d un fichier XML Ensuite on parcourt le document XML en acc dant successivement aux noeuds le composant QDomElement racine examenXML documentElement QDomNode noeud racine firstChild QDomElement tagQuestion while noeud isNull tagQuestion noeud toElement est ce la balise question if tagQuestion tagName question une question a traiter noeud noeud nextSibling y Code 11 Exemple de parcours d un fichier XML L lement question contient d autres noeuds c est d la structure arborescente d un document XML Pour obtenir et parcourir cette liste de noeuds on fera QDomNodeList childNodes childNodes tagQuestion childNodes for unsigned int i 0 i lt childNodes length i Code 12 Exemple de parcours d une liste de noeuds Lorsqu on parcourt cette liste de noeuds on utilise le m me principe que pr c demment pour acc der aux l ments ou balises QDomElement tag QDomNode item for unsigned int i 0 i lt childNodes length i item childNodes item i tag item toElement est ce la balise libelle if tag tagName libelle TP Qt QCM 14 18 2012 tv lt tvaira free fr gt TRAVAIL DEMAND qDebud lt lt tag text affiche le contenu textuel de la balise est ce la balise Code 13 Exemple d acc s
18. ui repr sente un document XML QDomElement qui repr sente un lement de l arbre DOM Document Object Model QDomNode et QDomNodeList qui repr sentent un noeud et une liste de noeuds Il est for tement conseill de lire la documentation Qt ce sujet developer qt nokia com doc xml processing html Exemple de d composition d un document XML QAle filelnom xml j SxemenXML i lt libeller lLaquelle des expressions suivantes est un prototype de fonction flibelle gt O tpropositions gt attribute libelle proposition lib lle ant f 0 gt proposition libelle int int 0j gt proposition libelle int f int is gt proposition libelle int f 1 gt lt propositions gt i lt solution 3 lt solution gt Sous Qt l ouverture d un fichier XML sera r alis de la mani re suivante QString nom examen 1 QFile file nom xml QDomDocument examenXML if file open QlODevice ReadOnly QMessageBox critical this Erreur QString fromUtf8 Le fichier nom QString fromUtf8 xml n est pasjaccessible QMessageBox 0Dk 0 return false T TP Qt QCM 13 18 2012 tv lt tvaira free fr gt TRAVAIL DEMAND if lexamenXML setContent amp file file close QMessageBox critical this Erreur QString fromUtf8 Le fichier nom QString fromUtf8 xml n est pas valide QMessageBox 0k 0 re
Download Pdf Manuals
Related Search
Related Contents
CI4000 , User Guide and Installation Manual 2 - Koenig Stratos®Pro A2... CC User Manual iDream Digital Photo Frame DPF151 Copyright © All rights reserved.
Failed to retrieve file