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