Anne-Lucie Vion (pouse Cosse) - Licence 3 Miage (2011-2012)
[email protected] CONCEPTION ET IMPLEMENTATION D'UN SYSTEME
BASIQUE DE GESTION D'INSCRIPTION A UN GALA Rapport
Le projet que j'ai ralis sous le nom d'iGala a t pens et conu
l'aide de mthodes agiles . tant membre du comit d'organisation de
l'Agile Tour Bordeaux depuis deux ans, et ayant expriment ces
mthodes du point de vue du management, je voulais raliser mon
premier projet complexe de programmation de manire agile :
notamment avec TDD (Test Driven Development : criture de tests
unitaires avant mme l'implmentation). L'utilisation de ces mthodes
m'a ainsi permis d'crire mon code de manire propre et de tester
l'ensemble de mon application de manire automatique et
pertinente.
Fonctionnalits implmentesGnralits L'interface utilisateur
comprend une succession de menus en ligne de commande pour guider
les utilisateurs du programme. Chaque lment du menu principal est
dtaill en sous-menus. tout moment, l'utilisateur peut revenir au
menu prcdent en tapant retour , et quitter l'application en tapant
quitter . Persistance des donnes Pour conserver toutes les
inscriptions et rservations faites par les utilisateurs mme lorsque
le programme est arrt puis relanc, j'ai mis en place un systme de
sauvegarde & de chargement des informations dans un mme
fichier.
Gestion des inscriptionsNouvelle inscription (annexe 1) iGala
permet de grer l'inscription de 100 invits (ce nombre peut tre
chang aisment). Ces invits peuvent tre de diffrentes natures
(appeles qualit ) : tudiants, jeunes diplms, membres du corps
enseignant (une procdure interne de la rservation des tables permet
d'inscrire un ou plusieurs invits). A l'inscription, il est demand
au participant de renseigner son nom, son prnom et son adresse e
mail (pour les tudiants, il est galement demand de renseigner la
promotion (L3, M1, M2). L'inscription ncessite le paiement d'un
prix unique fix 24 ; ainsi l'application demande l'utilisateur
d'inscrire un numro de carte bancaire (16 chiffres), une date de
validit (MM/AAAA) et un cryptogramme (3 chiffres). Une fois que
l'utilisateur a renseign les critres ci dessus, et valid leur
inscription, l'application retourne un numro d'inscription utile
pour accder au reste des fonctionnalits.
Annulation d'une inscription Pour se dsinscrire l'utilisateur
doit renseigner son numro d'inscription puis confirmer l'annulation
en renseignant le nom associ au numro (pour viter les annulations
frauduleuses). L'utilisateur n'est alors plus connu en tant que
participant, et peut demander le remboursement de ses frais
d'inscription (non gr). Son numro d'inscription ne sera toutefois
pas r-attribu une futur nouvel inscrit. Recherche d'informations
(annexe 2) L'utilisateur peut, par le biais de l'interface,
demander l'affichage d'une liste rcapitulative du nombre
d'inscrits, du nombre d'inscrits par promotion et la liste des
participants (Nom et Prnoms).
Gestion de rservation de tablesiGala permet de grer la
rservation des 10 tables du GalaMiage. Chaque table compte 8
chaises. Rservation & gestion des invits (annexe 3) En tout
premier lieu, l'application demande l'utilisateur de renseigner son
numro d'inscription (condition obligatoire pour accder aux
diffrentes fonctionnalits de rservation (bus et tables). Aprs avoir
confirm son identit, le participant renseigne le nombre d'externe
qu'il souhaite inviter (dans la limite autoris 1 pour les tudiants
et les enseignants, 3 pour les jeunes diplms). Le participant
renseigne le nom, le prnom et l'email de ses invits ; cette
procdure permet de les inscrire automatiquement. L'utilisateur peut
consulter la liste des tables et le nombre de places disponibles
correspondant chacune (n'apparaissent disponibles uniquement les
tables o le nombre de place(s) disponible(s) est suprieur ou gal au
nombre de personnes placer (utilisateur + invits)). L'utilisateur
fait son choix. La rservation ncessite un paiement. Son montant se
calcule simplement : le montant des frais d'inscription des invits
+ le prix de la rservation pour chaque personne. Le tarif appliqu
est diffrent suivant la qualit de chacun 20 par jeune tudiant, 25
par tudiant , 32 pour les invits et le corps enseignant. Une fois
le paiement effectu (suivant la mme mthode que pour le rglement des
frais dinscription), l'application renvoi un rcapitulatif contenant
: le numro de rservation du participant le numro de la table et de
la/des chaise(s) choisies. Gestion des priorits Un jeune diplm est
prioritaire sur un tudiant L3, M1 et M2. Si toutes les places sont
rserves, l'application annule automatiquement la rservation d'un ou
plusieurs tudiant(s) (L3, puis M1, puis M2) pour permettre au jeune
diplm de rserver pour lui mme et ses invits. Annulation de la
rservation Un participant peut choisir d'annuler sa rservation
ainsi que celle de ses invits. Il reste toutefois inscrits au Gala.
Attention, un participant ne peut annuler sa rservation que sept
jours aprs la confirmation (paiement) de sa rservation, et dix
jours avant le dbut du Gala (par dfaut 01/06/2012). Consultation du
plan de table
A tout moment, le participant peut afficher une liste
rcapitulative du plan d'occupation des tables (numro de table,
numro de chaise et occupant).
Gestion de rservation de busRserver une place de bus (annuler
une rservation) (annexe 4) L'utilisateur peut rserver pour lui et
ses invits, une place de bus. Toutefois, il est ncessaire d'tre
inscrit et d'avoir rserv une table (participants + invits) pour
avoir accs cette fonction. De la mme manire qu'il rserve une table,
le participant rserve sa place de bus (gratuit). Il ne peut choisir
son bus, ni son sige : les places sont attribues par ordre de
rservation (premier arriv premier servi). la fin de la rservation,
le participant voit la place et le bus qui lui ont t attribus, lui
ainsi qu' ses invits. Il peut galement afficher le rcapitulatif
complet des places rserves.
Ides d'amliorationJe n'ai pas eu le temps de grer la prsence
d'accent dans l'affichage. Pour un meilleur confort d'utilisation
et de lecture, cette amlioration gagnerait tre implmente. De mme,
il sera judicieux de mettre les tarifs en double.
Choix de conception Architecture de l'applicationClasse Gala La
classe Gala chapeaute la plupart des autres classes puisqu'elle
contient une liste de participants, de tables et de bus (map).
C'est dans la classe Gala que sont implmentes toutes les fonctions
phares du programme : inscrire, rserver un bus, une table etc Cette
faon de procder se justifie par le fait qu'un Gala contient la fois
des tables, des bus et des participants (condition ncessaire la
tenue dudit Gala). Classe Participant La classe Participant
reprsente un individu qui peut tre inscrit au Gala. Deux sortes de
participants : les Miage (qui peuvent s'inscrire directement) et
les Externes (qui ne peuvent tre inscrits que par des Miage par le
biais de la procdure de rservation des tables). Ces deux classes
hritent donc de la classe Participant (et de ses mthodes et
attributs). Classe Miage Les classes tudiants, JeunesDiploms et
Enseignants hritent de la classe Miage, de ses mthodes et
attributs. J'ai du utiliser le masquage pour certaines mthodes :
ainsi par exemple, la mthode maxInvite() qui renvoie le nombre
maximum d'invits par utilisateur (contenue dans Participant) a t
masque pour que les jeunes diplms puissent inviter jusqu' trois
personnes, les tudiants une, et le corps enseignant et les
externes, aucune. Classe Table et Bus La classe Table et la classe
Bus hritent de la classe EspaceDeReservation. En effet j'ai
identifi un comportement identique entre les tables et les bus.
Tous deux contiennent des chaises qui peuvent tre ou non occupes
par des participants. La seule diffrence rside dans la quantit de
chaise qui varient pour une Table ou pour un
Bus ainsi que la mthode d'attribution des places. Cependant
comme j'ai plac cette rgle de gestion dans la classe Gala, je n'ai
pas l'implmenter ni dans Table ni dans Bus. La classe Table
contient une liste de chaises (map) La classe Bus contient une
liste de chaises (map) que nous nommerons siges Le Systme de
rservation table/bus est ainsi simplifi. Classe Action Afin de
faciliter la navigation dans les menus et sous-menus de l'interface
graphique, j'ai mis au point une classe abstraite Action qui peut
possder des sous-actions (map numro action Action). S'il n'y a pas
d'actions alors on pourra effectuer un traitement (mthode traiter).
Lenchanement des actions lors d'un traitement se fait en utilisant
des tapes . A chaque donne saisie par l'utilisateur, je regarde si
les donnes sont valides ou non. Si elles sont valides alors on
change d'tape, sinon on effectue un traitement spcifique.
Classe MapPour la gestion des inscriptions et des rservations,
j'avais besoin de crer diverses listes : une liste de participants
(inscrits) une liste de tables une liste de bus une liste de
chaises/siges Les lments de ma liste ne devaient pas ncessairement
tre tris, mais devaient tre associs des cls ; les doublons n'taient
pas autoriss et les cls et les valeurs devaient tre spares : j'ai
donc choisi d'utiliser des map, qui font parti des classes
standards. L'utilisation de cette bibliothque m'a permis
d'optimiser la recherche d'information sans avoir parcourir chaque
requte l'intgralit des mes tableaux et d'apprhender avec clart
l'ajout/suppression d'lments dans mes tableaux .
Classe donnesCette classe permet d'assurer la persistance des
donnes, l'enregistrement et le chargement.
Bonus : Les testsJe dfinis l'avance comment je dois utiliser mes
mthodes ainsi que leur comportement attendu. Je lance les tests qui
seront en chec puisque je n'ai pas encore crit l'implmentation de
ces mthodes. Dernire tape, faire passer mes tests au vert en
ralisant une implmentation correcte. L'norme bnfice que j'en retire
c'est que cette technique m'a permis de tester en permanence, de
faon automatique et rapide l'intgralit des fonctionnalits d'iGala.
Je n'avais donc nul besoin de tester manuellement une une mes
nouvelles implmentations. Je m'assurais ainsi de la non rgression
du code. Pour lancer les tests de mon application il suffit d'aller
dans le dossier iGala et de lancer la commande : $ make test Le
rsultat des tests s'affichera dans la console. Vous pouvez
consulter le code des tests dans le fichier tests/GalaTest.cpp
Annexes
menu principal de l'application
S'inscrire au Gala
Afficher la liste/nombre des inscrits
Rserver une table
Voir le plan de table
Rserver une place de bus