Énoncé
Transcription
Énoncé
625 – Programmation TABLE Commande − Cette table contient les informations de commandes (de clients) qui sont en attente. Ces informations ont été récoltées par un site Internet d'achat en ligne. L'ordre des lignes de cette table est quelconque. Travaux pratiques – Série 12 Objectifs − La table comprend une ligne par article (celui d'identifiant NoMateriel) commandé par un client (celui d'identifiant NoClient) ; la quantité est mémorisée dans la colonne Quantite. • Mettre en œuvre les concepts implantés par les classes de bibliothèque du package java.sql. • Employer des outils fournis pour développer une application. • Développer une application accédant à une base de données. − Les informations enregistrées dans la table sont valides, c'est-à-dire que les numéros de client et d'article existent dans leurs tables respectives. Vous ne devez donc pas vérifier cet état de fait, car cette validité est garantie. EXEMPLE D'OCCURRENCE DE Commande Contexte Une entreprise de vente de matériel informatique désire automatiser sa gestion des factures et des commandes. Voici un exemple d'occurrence de la table Commande ; à noter que cette table peut être vide, c'est-à-dire ne contenir aucune ligne. Considérons le MCD ci-dessous qui modélise le système de gestion des factures : Modèle physique Access : DONNÉES Problèmes − Le fichier FactureS12.mdb qui contient la base de données Access avec un jeu de test. 1. Écrire un programme qui, à partir d'un numéro de facture, affiche cette facture selon le modèle de la page 4. − Avec l'outil Panneau de configuration – Outil d'administration – Source de données ODBC, définir une source utilisateur Access nommée FactureS12 (ou tout autre nom de votre choix – c'est simplement le nom par lequel vous désignerez la base de données avec les outils JDBC). Une table Commande, dans laquelle sont enregistrées des commandes de clients qui sont en attente, a été ajoutée à cette base. Cette table a la structure décrite ci-dessous et n'a pas de lien avec les autres tables. 2. Concevoir et rédiger une méthode statique créerFact() dont l'effet est de créer les factures correspondant aux commandes enregistrées dans la table Commande. Contraintes − Une seule facture est créée pour chacun des clients référencés par la table. Ainsi, pour l'occurrence de Commande représentée ci-dessus, on créera une facture pour le client 10078 et une facture pour le client 10079. − L'identifiant attribué à la facture créée est obtenu en ajoutant 1 à la valeur retournée par la méthode OutilsDivers.getLastKeyFact() fournie. − La date de la facture est la date du jour. − Les articles apparaissant dans la facture d'un client d'identifiant X sont définis par l'ensemble des lignes de la table Commande dont la colonne NoClient a la valeur X. 625 Programmation - Peter DAEHNE -1- Version 2.2 – 28.11.2008 625 Programmation - Peter DAEHNE -2- Version 2.2 – 28.11.2008 − Les Exceptions susceptibles de survenir pendant l'exécution de la méthode créerFact() ne sont pas traitées par créerFact() ; celles-ci sont transmises à la méthode appelante. − À l'issue de l'exécution de la méthode créerFact(), l'ensemble des lignes de la table Commande sont effacées. Factures générées (La sortie produite par l'exécution du programme de test sur la base originale) Facture n°1021 Genève, le 5 décembre 2008 − La connexion avec la source de données ODBC ainsi que la génération des identifiants pour les factures créées sont effectuées en employant les outils fournis par la classe OutilsDivers. CORGNIER Michel Römerstrasse 14 4512 BELLACH À faire 0. Définir la base de données fournie comme source de données ODBC nommée FactureS12. 1. Créer un programme complet d'affichage des factures ; le numéro de facture à afficher sera fourni en paramètre de ce programme. 2. Compléter la méthode créerFact() de la classe CréerFactures fournie de telle sorte qu'elle respecte les spécifications. Sont fournis Dans \\Heg-04\Data\_cours\08-09\IG\M625-M626\ÉnoncésTP\625\S12\Fourni.zip : − Le dossier Base contenant : la base de données Access dans le fichier FactureS12.mdb ; FactureS12Ok.mdb, un backup de la base de donnée ; un fichier de commandes !RestoreBase.bat dont l'exécution a pour effet de rétablir la base de données originale à partir du backup. − Sous forme binaire, la classe OutilsDivers, constituée des fichiers : FactureInexistante.class, OutilsDivers.class et OutilsDivers$FormatLig.class. Nous avons le plaisir de vous adresser la facture ci-dessous. Qté Libellé 8 1 1 1 4 4 4 8 4 2 Prix unitaire Pentium II Asus P2L97S ATX & AGP ARISTO VX 512 Ko Cache Lucky Star VIA VP3 512 Ko Cache AGP !! ARISTO Triton TX 512 Ko Cache Pentium II ASUS P2L97 ATX & AGP AMD K6 233 MMX + Refroidisseur Actif Lucky Star VIA VPX 512 Ko PCI / ISA AMD K6 166 MMX + Refroidisseur Actif Intel Pentium 166 MMX + Refroidisseur Actif Intel Pentium 200 MMX + Refroidisseur Actif Total à payer 440.00 130.00 190.00 150.00 320.00 350.00 110.00 210.00 180.00 230.00 9'970.00 Payable à 30 jours avec nos remerciements. − La classe OutilsDivers fournit les services suivants : connectODBC() qui établit une connexion avec une source ODBC et retourne cette connexion ; getLastKeyFact() qui retourne la valeur du dernier identifiant utilisé pour la table Facture ; afficher() qui affiche une facture sur la console Java – ce service n'est employé que par le programme de test et vous n'aurez pas à l'utiliser. Remarque : l'effet de cette méthode est identique à celui de la méthode principale du programme que vous avez développé en 1. − Le dossier Documentation contenant : la documentation des classes fournies en binaire ; un double-clic sur le fichier index.html permet d'afficher la documentation. Facture n°1022 SERGENT Catherine Böllerainstrasse 13 8106 ADLIKON B. REGENSDORF Nous avons le plaisir de vous adresser la facture ci-dessous. − Le fichier CréerFactures.java qui est la classe Java source que vous devez compléter. Celle-ci comprend une méthode main() qui effectue le test de la méthode créerFact() que vous devez développer ; ce test consiste en l'invocation de la méthode créerFact() suivi de l'affichage des deux factures que celle-ci a créées. − Attention, avant chaque exécution d'un nouveau test, il est nécessaire de rétablir la base de données dans son état original au moyen de la procédure décrite plus haut. En effet, un fonctionnement correct de la méthode créerFact() a pour effet de supprimer toutes les lignes de la table Commande. Qté Libellé 2 4 4 2 4 1 2 1 8 Total à payer 470.00 440.00 180.00 210.00 230.00 130.00 290.00 110.00 320.00 8'140.00 Payable à 30 jours avec nos remerciements. Remarque : ce TP compte pour 2 dans le décompte final. -3- Prix unitaire Pentium II Klamath 233 Mhz Pentium II Asus P2L97S ATX & AGP Intel Pentium 166 MMX + Refroidisseur Actif AMD K6 166 MMX + Refroidisseur Actif Intel Pentium 200 MMX + Refroidisseur Actif ARISTO VX 512 Ko Cache AMD K6 200 MMX + Refroidisseur Actif Lucky Star VIA VPX 512 Ko PCI / ISA Pentium II ASUS P2L97 ATX & AGP Délai : le mardi 16 décembre 2008 à 13h00. 625 Programmation - Peter DAEHNE Genève, le 5 décembre 2008 Version 2.2 – 28.11.2008 625 Programmation - Peter DAEHNE -4- Version 2.2 – 28.11.2008