Programmation Avancée en JAVA Master Science et Ingénierie de Données Projet Fi

Programmation Avancée en JAVA Master Science et Ingénierie de Données Projet Final Édition de tickets de caisse L’objectif de ce projet est de modéliser l’activité d’encaissement d’un supermarché, plus précisément l’édition des tickets de caisse et la comptabilisation des encaissements réalisés. 1. Description fonctionnelle En entrant dans le supermarché, le client emprunte un caddie dans lequel il peut ajouter (ou enlever) les articles qu’il souhaite acheter. Une fois sa sélection d’articles réalisée, il passe en caisse. Le caissier passe les articles devant le scanner de la caisse. Le code barre de l’article est lu et la référence de l’article est décodée. Cette référence permet d’accéder à la base des articles qui contient les informations sur l’article correspondant (libellé et prix). Dans ce projet, nous allons modéliser le caddie du client, la base des articles et la caisse enregistreuse. Les principales classes de cette application sont données dans le diagramme de classes de la figure 1. Le caddie est simplement modélisé comme une séquence de références. Le client peut ajouter une nouvelle référence dans son caddie ou enlever une référence. Bien entendu, plusieurs références identiques peuvent apparaître dans le caddie. Ceci signifie que le client a décidé d’acheter plusieurs fois le même article. La base des articles contient les informations sur les articles proposés à la vente dans le supermarché, c’est-à-dire leur libellé et leur prix. Le supermarché propose deux types d’articles : les articles vendus à l’unité et les lots. Un lot regroupe plusieurs exemplaires d’un même article (par exemple un pack de 6 litres de lait). Le prix du lot doit être inférieur ou égal au prix des articles achetés à l’unité. La caisse enregistreuse permet de scanner les références d’un caddie et d’éditer le ticket de caisse correspondant. Les références sont scannées dans l’ordre de leur ajout dans le caddie. Un exemple de ticket de caisse est donné figure 2. Il fait apparaître le numéro du ticket (ce numéro correspond au nombre de tickets édités depuis la mise en route de la caisse enregistreuse), le détail des articles achetés, le nombre total d’articles et le prix total à payer. Le détail d’un article acheté doit faire apparaître le libellé et le prix de cet article. Dans le cas où plusieurs références consécutives sont identiques, l’édition se fait sur deux lignes. La première indique le libellé. La seconde indique la quantité, le prix unitaire et le prix total à payer pour ces articles identiques. La caisse enregistreuse conserve le total des tickets édités ce qui permet de connaître le chiffre d’affaires réalisé sur une caisse. 2. Contraintes de réalisation Les contraintes de réalisation à respecter impérativement sont les suivantes : 1. Ce projet est un travail individuel. 2. La documentation des classes devra être fournie dans le source du programme en utilisant les commentaires de documentation (javadoc). 3. L’application sera définie dans un paquetage appelé supermarche. Les classes qui concernent la base des articles et donc les articles devront être placées dans un sous- paquetage appelé articles. 4. Une référence sera représentée par une chaîne de caractères. 5. Les prix seront représentés par le type long. 6. La solution proposée doit respecter le diagramme de classe de la figure 1. Bien entendu, toutes les classes du paquetage supermarche.articles ne sont pas dessinées sur ce diagramme. 7. Par rapport au diagramme de classe, seules des méthodes privées peuvent être ajoutées dans les classes dont le détail apparaît sur le diagramme de classe. Bien sûr, toutes les méthodes du diagramme doivent être présentes. 8. Les signatures des méthodes et les attributs du code fourni ne doivent pas être modifiés. 9. La relation entre BaseArticles et Article (figure 1) sera réalisée en utilisant un tableau associatif (qui correspond à l’interface java.util.Map dans les API Java). 10. Les méthodes supprimer et article de BaseArticles lèveront une exception non contrôlée par le compilateur appelée supermarche.articles.ReferenceInconnueException si la référence n’est pas présente dans la base. 11. La méthode enregistrer de BaseArticles permet d’enregistrer un nouvel article dans la base à partir de sa référence ou de remplacer l’article associé à une référence. 12. La classe Caddie permet d’itérer sur les références du caddie (voir java.lang.Iterable). 13. La méthode imprimerReferencesInconnues() de la classe Caisse affiche sur le terminal les références scannées depuis le démarrage de la caisse et qui n’ont pas été reconnues. Ceci permettra de corriger la base d’articles en ajoutant ces nouvelles références. Cette dernière partie n’est pas gérée par le programme qui se contente de lister les références inconnues. Attention, pour faciliter la tâche du gestionnaire, les références inconnues doivent être affichées dans l’ordre alphabétique et sans redondance. 14. La classe TicketBuilder permet de collecter toutes les informations nécessaires à l’élaboration du ticket qui peut ensuite être obtenu grâce à la méthode getTicket(). Les classes TicketBuilder et Ticket ne doivent pas être modifiées. 15. La classe ExempleSujet doit créer une base d’article, remplir un caddie et le scanner à la caisse pour imprimer le ticket de caisse qui est donné comme exemple à la figure 2. 3. Documents à fournir Vous devez impérativement rendre les éléments suivants : I. Le code source de vos programmes qui doit comprendre les commentaires de documentation (javadoc). II. Un fichier texte LISEZ-MOI.txt qui contient des informations sur les choix réalisés et les informations jugées utiles pour comprendre le travail fait. uploads/Finance/ projet-final-java-avancee-master-msid.pdf

  • 14
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Apv 06, 2021
  • Catégorie Business / Finance
  • Langue French
  • Taille du fichier 0.2889MB