DAIGL – Développement - TD/TP – Structures de données
TD/TP – Structures de données
Contexte
La société HolaGames.fr filiale de Boa Global est spécialisée dans le test de jeux vidéos. Le site web de
cette société sera bientôt mis en ligne, mais HolaGames souhaite mettre à disposition de ses futurs clients
une application multiplate-formes (Windows, Linux, Mac OS X) basée sur le langage libre Python et la
bibliothèque graphique wxWidgets (wxPython). L'élaboration de ce logiciel est confié au service
informatique. Au vu du travail que vous avez réalisé sur l'application HolaMovies, le projet HolaGames vous
est confié.
1- Interface Utilisateur
L'interface présentée ci-dessus reprend les mêmes principes que ceux exploités dans l'application
HolaMovies.
2.1. Panneau "Visualiser"
Variable Classe Commentaire
b_rafraichir wx.Button Déclencher le "rafraîchissement" de la liste des jeux en cas de
modification de la liste.
g_jeux wx.grid.Grid Visualiser la liste des jeux
2.2. Panneau "Rechercher"
Cette page permet de visualiser les jeux disponibles pour une plate-forme donnée. Sélectionner un des jeux
dans la liste affiche plus de détails sur ce jeu dans le cadre inférieur.
Variable Classe Commentaire
c_plateforme wx.Choice Déclencher la recherche des jeux dont la plate-forme est celle
choisie.
lb_jeux wx.ListBox Visualiser l'ensemble des jeux de la plate-forme sélectionnée.
tc_info wx.TextCtrl Visualiser l'ensemble des informations sur le jeu sélectionné.
b_rechercher wx.Button Déclencher la recherche des jeux dont le genre est sélectionné
b_annuler wx.Button RAZ de tous les champs.
page 1
DAIGL – Développement - TD/TP – Structures de données
2.3. Panneau "Insérer"
Variable Classe Commentaire
b_inserer wx.Button Déclencher l'insertion d'un nouveau film dans la liste.
b_annuler wx.Button RAZ de tous les champs de saisies.
tc_nom wx.TextCtrl Saisir le titre du nom.
c_plateforme wx.Choice Sélectionner la plate-forme du jeu.
cb_reseau wx.CheckBox Indiquer si le jeux est jouable en réseau.
c_genre wx.Choice Sélectionner le genre du jeu.
tc_prix wx.TextCtrl Saisir le prix du jeu.
tc_date wx.TextCtrl Saisir la date de sortie du jeu.
Plate-formes autorisées : Wii, PS3, PS2, PS1, Xbox 360, Xbox, PSP, DS
Genres autorisés : Action, Aventure, Combat, Course, FPS, MMO, Plates-formes, Réflexion, Simulation,
Sport, Wargame.
3- Organisation et persistance des données
Vous avez décidé de simuler la base de données recensant l'ensemble des jeux dont les fiches sont
consultables sur le site web, par un fichier texte nommé par défaut jeux.txt. Au lancement de
l'application, la fonction lireBase() retourne le contenu du fichier jeux.txt qui est recopié dans la
variable globale nommée Jeux (voir déclaration ci-après), et en fin d'exécution, le contenu de cette variable
est recopiée dans le fichier jeux.txt (nom par défaut) par appel à la procédure écrireBase().
Après recopie des données en mémoire vive, le tableau Jeux est à l'image du fichier jeux.txt (une ligne
du fichier pour un élément structuré du tableau). Ce tableau pouvant ne pas être rempli, la variable globale
nb_jeux nous permet de connaître à tout instant, le nombre de films mémorisés. Il faut donc prévoir la
gestion de cette variable dans les différents algorithmes qui constituent l'application (exemple : incrémenter
la valeur de nb_jeux lors de l'insertion d'un nouveau jeu).
Déclaration des variables globales :
Constante :
NB_JEUX = 10000
Variables globales :
Jeux[NB_JEUX] : Jeu
nb_jeux : Entier
Chaque jeu est mémorisé dans le fichier jeux.txt (nom par défaut) sous la forme d'une chaîne de
caractères respectant le format "nom:plate-forme:réseau:genre:date-de-sortie". Le champ
réseau a pour valeurs 0 (Faux) ou 1 (Vrai). Le champ date-de-sortie est structuré sous la forme
"JJ/MM/AAAA".
4- Développement de l'application
4.1. Structure des données
4.1.1. Rechercher la déclaration du type Date.
4.1.2. Quel type de donnée Python sera utilisé pour représenter une date ?
4.1.3. A partir des captures d'écran de l'application, rechercher le type Jeu permettant d'enregistrer dans le
tableau Jeux les informations concernant un jeu vidéo.
4.1.4. Quel type de donnée Python sera utilisé pour représenter un jeu ?
page 2
DAIGL – Développement - TD/TP – Structures de données
4.1.5. Rechercher l'algorithme de la fonction ChaîneVersDate() dont le rôle est de retourner une donnée
de type Date initialisée avec les informations extraites de la chaîne de caractères passée en paramètre
(chaîne au format "JJ/MM/AAAA").
4.1.6. Rechercher le code Python de la fonction ChaineVersDate().
4.1.7. Rechercher l'algorithme de la fonction DateVersChaîne() dont le rôle est de retourner une chaîne
de caractères au format "JJ/MM/AAAA" initialisée avec les valeurs des champs de la donnée de type Date
passée en paramètre.
4.1.8. Rechercher le code Python de la fonction DateVersChaine().
4.1.9. Rechercher l'algorithme de la fonction ChaîneVersJeu() dont le rôle est de retourner une donnée
de type Jeu initialisée avec les informations extraites de la chaîne de caractères passée en paramètre
(chaîne au format "nom:plate-forme:réseau:genre:date-de-sortie").
4.1.10. Rechercher le code Python de la fonction ChaineVersJeu().
4.1.11. Rechercher l'algorithme de la fonction JeuVersChaîne() dont le rôle est de retourner une chaîne
de caractères au format "nom:plate-forme:réseau:genre:date-de-sortie" initialisée avec les
valeurs des champs de la donnée de type Jeu passée en paramètre.
4.1.12. Rechercher le code Python de la fonction JeuVersChaine().
4.1.13. Rechercher l'algorithme de la procédure LignesVersJeux() dont le rôle est d'initialiser la variable
globale Jeux à partir des informations présentes dans les chaînes mémorisées dans le tableau passé en
paramètre. Chaque élément de ce tableau représente un jeu sous la forme d'une chaîne de caractères au
format "nom:plate-forme:réseau:genre:date-de-sortie". De plus, la chaîne de caractères vide
représente la marque de fin de ce tableau.
4.1.14. Rechercher le code Python de la fonction LignesVersJeux().
4.1.15. Rechercher l'algorithme de la procédure JeuxVersLignes() dont le rôle est d'initialiser le tableau
de chaînes de caractères passé en paramètre avec les valeurs des champs des différents jeux recensés
dans la variable globale Jeux. Chaque élément du tableau créé représente un jeu sous la forme d'une
chaîne de caractères au format "nom:plate-forme:réseau:genre:date-de-sortie". De plus, la
chaîne de caractères vide représente la marque de fin de ce tableau.
4.1.16. Rechercher le code Python de la fonction JeuxVersLignes(). Attention... le tableau de chaînes à
générer n'est pas passé en paramètre mais est retourné par la fonction.
4.2. Visualisation
4.2.1. Donner le nom de la classe du widget permettant d'afficher les informations sous la forme d'un tableau
(grille) ?
4.2.2. Donner le nom de la méthode associée au widget référencé par la variable g_jeux dont le rôle est
d'affecter une valeur à une cellule.
4.2.3. Donner le nom de la méthode associée au widget référencé par la variable g_jeux dont le rôle est
d'insérer une nouvelle ligne en fin de tableau.
4.2.4. Donner le nom de la méthode associée au widget référencé par la variable g_jeux dont le rôle est de
forcer le "rafraichissement" du tableau.
4.2.5. Rechercher le code Python de la méthode Rafraichir() de la classe panelVisualiser.
page 3
DAIGL – Développement - TD/TP – Structures de données
4.3. Recherche
4.3.1. Donner le nom de la méthode associée à un widget de classe wx.Choice dont le rôle est de
positionner la sélection sur le premier item de la liste.
4.3.2. Donner le nom de la méthode de la classe wx.ListBox dont le rôle est d'effacer le contenu du
widget.
4.3.3. Donner le nom de la méthode de la classe wx.TextCtrl dont le rôle est d'affecter une valeur au
widget.
4.3.4. Rechercher le code Python de la méthode annulerRechercher() (positionner le choix de la plate-
forme sur le premier item et effacer le contenu des deux de visualisation) de la classe panelRechercher.
4.3.5. Donner le nom de la méthode associée au widget référencé par la variable c_plateforme dont le
rôle est de "récupérer" la valeur sélectionnée.
4.3.6. Donner le nom de l'événement associé au choix d'une plate-forme à l'aide du widget référencé par la
variable c_plateforme.
4.3.7. Compléter le code Python du constructeur (__init__()) de la classe panelRechercher de façon à
lier l'événement de sélection d'une plate-forme à la méthode listerJeux().
4.3.8. Rechercher l'algorithme de la procédure JeuxParPlateforme() dont le rôle est d'initialiser le
tableau de chaînes de caractères passé en premier paramètre avec le nom des jeux dont la plate-forme
associée correspond à celle passée en second paramètre. La chaîne de caractères vide est utilisée comme
marque de fin dans le tableau passé en paramètre.
4.3.9. Rechercher le code Python de la fonction JeuxParPlateforme(). Attention... le tableau de chaînes
à générer n'est pas passé en paramètre mais est retourné par la fonction.
4.3.10. Donner le nom de la méthode de la classe wx.ListBox dont le rôle est d'insérer une chaîne de
caractères à la fin de la liste affichée dans le widget.
4.3.11. Rechercher le code Python de la méthode listerJeux() de la classe panelRechercher.
4.3.12. Compléter le code Python du constructeur (__init__()) de la classe frmHolaGames de façon à
déclencher l'exécution de la méthode listerJeux() de la classe panelRechercher.
4.3.13. Donner le nom de la méthode de la classe wx.ListBox dont le rôle est de "récupérer" la valeur de
l'item sélectionné dans le widget.
4.3.14. Rechercher l'algorithme de la fonction indiceJeu() dont le rôle est de retourner la position dans la
variable globale Jeux, du jeu dont le nom et la plate-forme sont passés en paramètres. Si le jeu n'est pas
recensé, la fonction retourne la valeur -1.
4.3.15. Recherche le code Python de la fonction indiceJeu().
4.3.16. Rechercher le code Python la méthode rechercherJeu() de la classe panelRechercher dont le
rôle est d'afficher dans le widget de la classe wx.TextCtrl, les différentes informations associées au jeu
sélectionné.
page 4
DAIGL – Développement - TD/TP – Structures de données
4.4. Insertion
4.4.1. Donner le nom de la méthode de la classe wx.CheckBox dont le rôle est de modifier l'état de la case
à cocher.
4.4.2. Rechercher le code Python de la méthode annulerInserer() de la classe panelInserer dont le
rôle est d'affecter une chaîne de caractères vide au champ Nom, de positionner les champs Plate-forme
et Genre sur le premier item, d'affecter la valeur 0.00 au champ Prix, de décocher le champ Réseau et
d'affecter la valeur 01/01/2010 au champ Date de sortie.
4.4.3. Rechercher l'algorithme de la fonction estPrix() dont le rôle est d'indiquer si la chaîne de
caractères passée en paramètre représente un prix.
4.4.4. Rechercher le code Python de la fonction estPrix().
4.4.5. Rechercher l'algorithme de la fonction dateValide() dont le rôle est d'indiquer si la donnée de type
Date passée en paramètre correspond à une date valide.
4.4.6. Donner le nom de la méthode de la classe wx.CheckBox dont le rôle est de connaître l'état de la
case à cocher.
4.4.7. Donner l'instruction permettant de créer une boîte de dialogue dont le rôle est d'afficher un message
d'erreur (la boîte de dialogue est référencée par la variable dlg_erreur).
4.4.8. Donner le nom de la méthode de la classe wx.MessageDialog dont le rôle est d'afficher une boîte
de dialogue.
4.4.9. Donner le nom de la méthode de la classe wx.MessageDialog dont le rôle est de fermer et de
détruire une boîte de dialogue.
4.4.10. Donner l'instruction permettant de déclencher l'exécution de la méthode rafraichir() de la classe
panelVisualiser (cette instruction doit se trouver dans la méthode insererJeu() de la classe
panelInserer).
4.4.11. Rechercher le code Python de la méthode insererJeu() de la classe panelInserer.
4.5. Fin de l'application
4.5.1. Modifier le code de la thode quitterApplication() de la classe frmHolaGames de façon à
enregistrer les modifications réalisées sur la base d'informations.
4.5.2. Modifier le code de la thode quitterApplication() de la classe frmHolaGames de façon à
demander confirmation à l'utilisateur à l'aide d'une boîte de dialogue.
5- Pour approfondir...
Proposer une page permettant de modifier les informations concernant un jeu.
Proposer un menu Jeu avec un item Insérer Plate-forme dont le rôle est de permettre à
l'utilisateur d'insérer une nouvelle plate-forme à l'aide d'une boîte de dialogue.
page 5
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !