Examen 1 Bases de données (FoxPro) - LAMSADE

Transcription

Examen 1 Bases de données (FoxPro) - LAMSADE
Université Paris–Dauphine
DEUG GEA 2ème année
UV47
Année 2004–2005
Examen
Session de Février 2005
Durée 2h
Documents, calculettes et téléphones interdits
1 Bases de données (FoxPro)
Vous travaillez pour un centre d’art contemporain et avez pour mission d’améliorer le système de billeterie
et de tarification mis en place il y a quelques années sur le site. Le système rudimentaire que l’on vous
présente fonctionne de la manière suivante: l’entrée du bâtiment est reliée à un système informatique, et
chaque demi-heure une table est mise à jour en indiquant combien de personnes sont entrées et sorties
pendant ce laps de temps. L’exemple suivant illustre l’état de la table correspondant à l’entrée après une
heure et demi d’ouverture du centre.
Horaire
table Entrée 1
2
3
Entrées
1000
300
300
Sorties
123
598
51
Le champ Horaire est un moyen de référencer de manière unique chaque tranche horaire (demi-heure),
et le champ Entrées (resp. Sorties) indique le nombre de personnes ayant pénétré (resp. quitté) le centre
durant cette demi-heure. Cette table est journalière (elle est réinitialisée chaque matin).
Question 1. Indiquez les commandes permettant d’ouvrir la table Entrée dans la zone 1, ainsi que
d’initialiser cette table (i.e. effacer tous les enregistrements).
Question 2. Ecrire une fonction NbreVisiteurs qui prend en paramètre le numéro d’une tranche horaire et
renvoie le nombre de visiteurs présents dans le centre à la fin de la tranche donnée en paramètre.
Question 3. En utilisant la fonction précédente, écrire une procédure Visiteurs qui affiche à l’écran le
nombre de personnes présentes dans le centre actuellement (i.e selon les dernières données disponibles).
Le centre permet à des personnes de s’abonner pour bénéficier de tarifs préférentiels. Vous disposez
donc d’une table (Abonnés), qui répertorie les abonnés et contient: un code permettant de les identifier de
manière unique (NumAbonné), ainsi que leur nom (Nom) et adresse (Adresse). On suppose que cette table
est déjà ouverte en zone 2.
NumAbonné
table Abonnés 001
047
109
Nom
Momo
Jojo
Jaja
Adresse
Paris
Marseille
Pantin
Question 4. Ecrire une procédure NouvelAbonné permettant d’enregistrer un nouvel abonné en saisissant
son nom, son adresse, ainsi qu’un numéro d’abonné (dont on vérifiera l’unicité).
Question 5. Ecrire une fonction NomAmbigu prenant en paramètre un nom et renvoyant un booléen
indiquant si ce nom est ambigu ou non (c’est-à-dire si plus d’un abonné porte ce nom ou non).
1
Afin d’agrémenter les visites des amateurs d’art, le centre a décidé de mettre en place des animations/spectacles. Chacun de ces spectacles dure une heure (donc deux tranches horaires consécutives)
et n’est présenté qu’une fois par jour. Le programme de chaque journée est présenté dans une table Programme (rendue disponible au début de la journée), comme illustré dans la table suivante (qui ne contient
ici pour des raisons de place que le programme des deux premières heures).
Horaire
1
table Programme 2
3
4
RefSpectacle
sp27
sp27
sp19
sp19
Les abonnés effectuent en début d’année une sélection des spectacles, sur la base d’un prospectus présentant tous les spectacles, qui reste valable toute l’année. Une dernière table (Sélection) met donc en relation
les abonnés et les spectacles sélectionnés (par le biais de NumAbonné et RefSpectacle). Il est important de
noter que les abonnés sélectionnent un spectacle mais pas un horaire précis: un spectacle donné peut être
présenté des jours différents à des horaires différents (mais pas deux fois le même jour, rappelons le), et
l’abonné pourra librement choisir le jour et l’horaire qui lui conviennent.
NumABonné
001
table Selection 001
002
003
RefSpectacle
sp27
sp19
sp27
sp06
Question 6. Ecrire une procédure SuperSpectacle qui permet d’écrire à l’écran la référence du spectacle
pour lequel on constate (sur une journée) le plus grand nombre d’entrées pendant l’heure durant laquelle il
a été présenté.
Question 7. Ecrire une fonction Verif qui prend en paramètre une tranche horaire et un numéro d’abonné,
et renvoie vrai ou faux selon que cet abonné a réservé ou non pour le spectacle donné à cet horaire-là.
Question 8. On s’intéresse maintenant au calcul du prix d’un billet d’entrée. Un visiteur non-abonné
devra payer dans tous les cas 10 euros. Pour les abonnés, le tarif appliqué par le centre dépendra du
spectacle qui sera donné dans la prochaine demi-heure (on suppose ici encore que la tranche horaire actuelle
correspond à la dernière répertoriée dans la table Entrée): un abonné qui n’a pas sélectionné le spectacle
en question payera 8 euros, tandis qu’un abonné ayant sélectionné ce spectacle pourra entrer gratuitement.
Ecrire une procédure Prix qui (i) demande à l’utilisateur son nom, (ii) si le nom est ambigu demande le
numéro abonné, et (iii) en fonction de ces informations indique le prix à payer.
2 Traitement statistique (Maple)
On dispose dans un fichier texte visiteurs.txt de données représentant le nombre de visiteurs présents
dans le centre à la fin de chaque tranche horaire, pour une journée particulière.
Question 9. Indiquer la commande Maple permettant de stocker ces données dans une liste.
Question 10. Indiquer les commandes Maple permettant d’obtenir une représentation graphique de ces
données sous forme d’histogramme.
2