Can you do it loll
GESTION DES VOLS D'UNE CIE AÉRIENNE (LAB #5) Page 1 de 4 DIRECTION DE L'ENSEIGNEMENT DE SERVICE EN INFORMATIQUE (DESI) TRAVAIL PRATIQUE #1 Directives pour la remise : Il faut remettre la version électronique. On n'accepte pas des fichiers envoyés par courriel. Note : Le travail en équipe de deux est permis. Vous ne remettez alors qu'un seul travail par équipe. Objectifs La POO en C++, listes chaînées, polymorphisme, gestion de la mémoire, … Sujet Dans ce TP1 vous avez les grandes lignes de ce qu’il faut faire. Vous devez utiliser maintenant toutes vos connaissances en POO pour les appliquer à ce travail pratique. C’est la façon dont vous utilisez les différentes notions que sera aussi considérée dans la correction de ce travail pratique. C’est une synthèse de la POO. On vous engage afin de réaliser un projet de gestion des vols d'une compagnie aérienne. Votre projet sera utilisé par différentes compagnies aériennes. Chaque compagnie dispose d’un fichier (des vols déjà existants) dont le nom est celui du nom de la compagnie suivie de l’extension .txt Chaque enregistrement des fichiers contient : - Le numéro du vol - La destination du vol - La date de départ du vol - Le nombre total des réservations à date On ne connait pas le nombre d’enregistrements qu’il y a dans les fichiers. Dans votre projet, le fichier qui contiendra le « main » devra faire afficher un menu : par exemple, pour la compagnie « Cie Air Relax » nous aurons le menu suivant Cie Air Relax N’oubliez pas de produire un message d’erreur si le choix n’est pas entre 0 et 5 Page 2 de 4 Travail à faire Votre projet va comporter un certain nombre de classes classes dont chacune sera définie dans un fichier à part. 1. La classe Date ayant les attributs entiers jour, mois, annee, le constructeur par défaut et celui avec 3 paramètres, les méthodes « get » et la méthode afiicherDate qui retourne la chaîne contenant les attributs séparés par "/" et en plus les attributs jour et mois dans le format décimal "00" 2. Créer une classe Avion avec comme attributs : type d’avion, nombre de places, avions de ligne classés selon leur rayon d'action : court-courrier, moyen-courrier, long-courrier. Classes : la première classe, la classe affaires, et finalement la classe économique. 3. Votre classe Vol va définir en général ce qu’est commun à tous les vols : - attributs d’instances : numéro du vol, sa destination, la date de départ (objet de la classe Date) et le nombre total de réservations à date (ne pourra pas dépasser le nombre de places de l’avion). - le constructeur permettant d’initialiser les attributs d’instances avec les valeurs reçues en paramètres - les méthodes « set » pour seulement le total des réservations et la date de départ - les méthodes « get » pour tous les attributs - la méthode afficherVol( ) qui retourne une chaîne contenant les attributs séparés par des "\t" 4. Vous allez créer quatre autres classes qu’héritent de la classe Vol mais qui sont des spécifications précises d’un vol, soit VolRegulier, VolBasPrix, VolCharter et VolPrive. Ces classes auront des attributs propres comme (vous pouvez y ajouter d’autres) : type d’avion qu’est une instance de la classe Avion, repas fourni ou pas, pouvoir réserver son siège ou pas, service de bar ou pas, système divertissement ou pas, services payants ou pas, prise d’alimentation ou Wi-Fi, etc. Vous pouvez y ajouter d’autres. 5. Vous allez créer une classe ListeVols pour gérer une liste chaînée (symétrique ou pas) de vols. Cette classe devrait avoir minimalement comme attributs un pointeur au début et un pointeur de fin de liste, le nombre de vols dans la liste 6. Vous allez utiliser, lorsque nécessaire et justifié, les notions d’interface et/ou classes abstraites. 7. La classe Compagnie dont les caractéristiques sont : - attributs d’instances : - le nom de la compagnie, - une instance de la classe ListeVols que représente les vols de cette compagnie. - le constructeur qui permet d’initialiser le nom de la compagnie. De plus, le constructeur par appel à une fonction chargerVols() va faire l’ouverture et la lecture du fichier (Cie Air Relax.txt situé dans Studium) de façon à créer des instances des classes de spécialisation mais la liste est une liste de Vol, la généralisation. Le fichier Cie Air Relax.txt est déjà trié par les numéros de vol. Le parcours se fait par un pointer comme par exemple Vol *pt (c’est un itérateur), ce que nous amène à la notion de polymorphisme. Ensuite, elle ferme le fichier. - La méthode d’instance insererVol doit s’assurer qu’il reste de la place par rapport à la capacité de l’avion sinon prévoir un message d’erreur. S’il reste de la place, elle permet de saisir le numéro du nouveau vol Page 3 de 4 . Elle fera appel à la rechercherVol (une méthode privée de la classe Compagnie) qui reçoit en paramètre le numéro du vol, car pour pouvoir ajouter un nouveau vol, le numéro du vol ne doit pas déjà exister (prévoir un message d’erreur approprié si ce n’est pas le cas). Si le numéro est accepté, saisir alors la destination, la date de départ, mettre à 0 le total des réservations et insérer le vol au bon endroit dans la liste pour maintenir celle-ci triée par le numéro vu vol. - La méthode d’instance retirerVol permet de saisir le numéro du vol Elle fera appel à rechercherVol car pour pouvoir retirer un vol, le numéro du vol doit être existant (prévoir un message d’erreur approprié si ce n’est pas le cas). Si le numéro existe, faire afficher sa destination, sa date et le total des réservations et demander la confirmation du retrait : « Désirez-vous vraiment retirer ce vol (O/N) ? » Si oui, retirer le vol de la liste des vols et ne pas oublier de diminuer le nombre de vols actifs. - La méthode d’instance modifierDate permet de saisir le numéro du vol dont on veut modifier la date (avant afficher le titre MODIFICATION DE LA DATE DE DÉPART ). Elle fera appel à rechercherVol. Si le numéro n’existe pas prévoir le message d’erreur approprié, sinon afficher sa destination, sa date de départ actuelle et demander l’entrée de la nouvelle date (dans la forme JJ/MM/AAAA). - La méthode d’instance reserverVol permet de saisir le numéro du vol que le client désire réserver , (avant afficher le titre RÉSERVATION D'UN VOL). Elle fera appel à rechercherVol. Si le numéro n’existe pas prévoir le message d’erreur approprié, sinon s’il reste de la place dans l’avion faire afficher sa destination, sa date de départ, le nombre de places restantes dans l'avion et demander l’entrée du nombre de places que le client désire réserver et faites la réservation. S’il n’y a plus de place, faire afficher le message adéquat. - La méthode d’instance listeVols qui fait afficher la liste des vols existants comme par exemple : Cie Air Relax - La méthode d’instance ecrireFichier qui ouvre le fichier de la compagnie en écriture et écrit chaque objet du tableau dans le fichier selon le format 19012;Nouvelle-Orléans;03;07;2021;250 (ceci est un exemple, par exemple l’objet dans le tableau à la position 2). Vos classes de spécialisation ont d’autres attributs aussi. - La méthode privée insere( ) dont le seul paramètre est un objet Vol (celui à insérer) Page 4 de 4 8. Par la suite, le menu doit s’afficher tant et aussi longtemps que l’usager n’aura pas fait le choix 0. Lorsqu’il fait le choix 0, on fera appel à ecrireFichier en ouvrant celui-ci en mode création pour supprimer le contenu et parcourir la liste des vols pour y enregistrer les données de chaque vol. 9. Comme vous avez 4 classes de différentes catégories de vols, alors pour l’option 1 faudra lister tout ou lister selon la catégorie de vol, pour l’option 2 faudra demander pour quelle catégorie de vol (régulier, bas prix, charter ou privé) pour pouvoir créer des instances de la bonne classe. Critères de correction Fonctionnement complet de chacune des options du menu 60% (10% par option. Si non fonctionnel alors maximum de 5% pour le code si celui-ci dans son ensemble est correct) Ergonomie des interfaces utilisateur 5% Respect des consignes 5% Commentaires du code inclus Gestion des listes chaînées 15% Bonne utilisation de la POO à tous les niveaux 15% Déposer votre travail dans Studium.