Projet App gestion réservations train en C++

Conception d'une application console pour gérer les réservations, annulations et historiques de voyages en TGV.

Admin

11/1/20241 min read

Conception d'une application console pour gérer les réservations, annulations et historiques de voyages en TGV. Dans le cadre du B2 ECE Paris.

🎯 Objectif

Développer une application robuste permettant aux utilisateurs de réserver, annuler et consulter des billets de train, avec gestion persistante des données et interface intuitive. Mon rôle : architecte logiciel et développeur full-stack (conception des classes, gestion des fichiers, UI/UX console).

💻 Réalisation technique

Stack utilisée

  • Langage : C++17 (programmation orientée objet, gestion des exceptions).

  • Persistance des données : Fichiers texte structurés (trains.txt, passagers.txt, etc.).

  • Outils : GCC pour la compilation, Git pour le versionnement, Doxygen pour la documentation.

Fonctionnalités clés

  • Réservation intelligente :

    • Sélection de trains via un menu interactif avec filtrage par date et destination.

    • Calcul automatique du prix en fonction de la distance (ex: 0.10€/km en 2nde classe, 0.15€/km en 1ère).

  • Gestion des annulations :

    • Recherche de réservations par ID ou nom de passager.

    • Mise à jour en temps réel des places libres et archivage dans l’historique.

  • Calendrier dynamique :

    • Affichage des départs par date avec std::map<std::string, std::vector<Train>>.

🚧 Défis relevés

  • Synchronisation des données :

    • Implémentation d’un système de lock fichier pour éviter les conflits d’écriture.

    • Parsing efficace des fichiers texte avec std::ifstream et std::getline.

  • Gestion des erreurs :

    • Création d’exceptions customisées (ReservationException, FichierCorrompuException).

    • Validation des formats de date (regex \\d{2}/\\d{2}/\\d{4}) et des champs obligatoires.

  • Optimisation mémoire :

    • Utilisation de std::list pour les réservations (insertions/suppressions rapides).

📈 Résultats & Compétences

  • Livrables :

    • Application console fonctionnelle avec 5 scénarios d’usage couverts.

    • Rapport technique détaillant l’architecture et les choix de conception.

  • Compétences clés :

    • POO avancée : Encapsulation, gestion des dépendances entre classes.

    • Algorithmie : Recherche optimisée dans les structures de données (complexité moyenne O(log n)).

    • Gestion de projet : Respect des délais avec un rétroplanning en 4 sprints.