Bases de données depuis Qt
Mise en situation
On désire réaliser une application GUI Qt qui s’interface avec la base de donnés SQLite — utilisée dans l’activité Bases de SQL — qui recense les coureurs et équipes du tour de France 2012.
On veut pouvoir afficher la constitution des équipes et les détails sur chaque coureur.
L’application doit être codée avec une architecture MVC qui met l’accent sur une séparation entre la logique métier et l’affichage.
La conception a mené au diagramme de classes suivant :
Les points clés du diagramme sont :
-
Architecture MVC/3-tiers :
-
App: Contrôleur principal (logique métier) -
MainUIetInfoUI: Vues (interfaces utilisateur) -
EquipeDAOetCoureurDAO: Couche d’accès aux données (DAO pour Data Access Object) -
Pattern Singleton* pour
ConnexionBDDde façon à partager la connexion à la BDD par toutes les classes devant y faire accès
-
-
Communication par signaux Qt.
updateInfosetshowDetailsconnectent l’IHM au contrôleur. -
Utilisation de structures C++ (
infosEquipe_t,infosCoureur_tetdetailsCoureur_t) pour transférer les données issues de la BDD vers les vues
Codage de l’application
On vous demande de compléter le code source de l’application présent dans l’archive fournie.
🎯 Travail à faire :
-
Extraire l’archive du projet à compléter (QTourDeFrance-eleves.zip
) sur votre machine
-
Ouvrir le projet Qt (→
QTourDeFrance-eleves.pro) dans QtCreator -
Le compiler et copier la bdd
db-tour-de-france-2012.sqlite3présente dans les fichiers du projet dans le répertoire de compilation (normalement../build-QTourDeFrance-eleves-Desktop-Debug/)Le fichier est déjà présent dans le dossier mais il est vide.
⇒ le système va vous demander si vous voulez l’écraser. Répondre Oui.
-
Exécuter l’application pour constater qu’elle fonctionne même si son IHM est désespérément vide.
-
Compléter les méthodes des codes source où le commentaire
// A COMPLETERapparait en procédant dans l’ordre suivant :-
EquipeDAO::getAllNames()→ Récupération des noms des équipes dans la BDD
-
App::run()→ Renseignement de la combobox de l’IHM avec le nom des équipes
-
EquipeDAO::getInfosByEquipe()→ Récupération dans la BDD du nom et du code CIO du pays dans lequel une équipe a été enregistrée administrativement
-
CoureurDAO::getInfosByEquipe()→ Récupération dans la BDD des dossards, noms et prénoms des coureurs d’une équipe
-
App::onIhmUpdateInfos()→ Slot Qt qui affiche le détail d’une équipe (nom, code CIO, coureurs) lorsque celle-ci est sélectionnée dans la combobox de l’IHM.
-
CoureurDAO::getDetailsByDossard()→ Récupération de la decription détaillée d’un coureur (nom, prénom, date et pays de naissance, taille, poids) depuis la BDD
-
App:onShowDetails()→ Slot Qt qui affiche les détails sur un coureur suite à l’appui sur son bouton Détails dans l’IHM
-
InfoUI::afficherDetailsCoureur()→ Affichage des détails d’un coureur. Seul l’affichage de la date de naissance est à coder de façon à l’afficher tel qu’on le fait en France (→ "25/09/1973) et non comme elle est stockée dans la BDD (→ "1973-09-25").
-
Évolution de l’application
🎯 Travail à faire :
-
Faire évoluer l’application pour qu’elle rappelle dans le détail d’un coureur à quelle équipe il appartient.
🞄 🞄 🞄