Projet scolaire

Système de gestion de location de voitures par liste chaînée

Un système de gestion en ligne de commande écrit en C++11 qui n'utilise aucun conteneur de la bibliothèque standard : véhicules, clients et locations sont tous organisés en listes simplement chaînées, les données sont persistées dans des fichiers binaires, et le programme offre des synthèses statistiques, des histogrammes ASCII et un journal des opérations.

Aperçu du projet

Le système s'articule autour de sept modules — informations sur les véhicules, clients, location et retour, requêtes, statistiques et paramètres système. Chaque structure de données est une liste simplement chaînée écrite à la main ; aucun vector ni map n'est utilisé. Les données sont écrites sur disque dans un format binaire personnalisé qui se restaure intégralement après redémarrage.

À propos de ce projet

Objectif

Mettre les listes chaînées, la manipulation de fichiers et la conception modulaire du cours dans un scénario métier réaliste, et vérifier si ces fondamentaux peuvent réellement porter un système complet.

Organisation

Le programme s'articule autour de car_rent.cpp, qui rassemble toutes les constantes, structures, opérations sur listes et logique métier, tandis que sept modules de menu fournissent les points d'entrée. Les sous-modules sont inclus via #include, si bien que la compilation ne traite que main.cpp comme unité de traduction.

Outils utilisés

C++11 avec constexpr et nullptr, dépendant uniquement de cstdio, cstdlib, cstring et ctime ; les builds Make et CMake sont pris en charge ; l'interface et les commentaires sont en chinois, encodés en UTF-8.

Portée et limites

Il s'agit d'un projet de cours en ligne de commande, et les données résident dans des fichiers locaux plutôt que dans une base de données. L'accès concurrent et les scénarios multi-utilisateurs sortent de son périmètre.

Sept modules fonctionnels

De la maintenance des données aux transactions métier, en passant par les statistiques et l'administration, les modules sont reliés par des données de liste partagées.

Gestion des véhicules

Créer, modifier, supprimer et consulter les fiches de véhicules, en tenant à jour les données de base des voitures louables.

Gestion des clients

Tenir à jour les informations des locataires, auxquelles les opérations de location et de retour se réfèrent ensuite.

Location et retour

Traiter les opérations de location et de retour, en validant l'état du véhicule et en mettant à jour les deux côtés de l'enregistrement.

Recherche d'informations

Les requêtes catégorielles et la recherche floue localisent rapidement les enregistrements par véhicule, client ou critère de transaction.

Synthèses statistiques

Grouper et synthétiser par dimension, restitué en histogrammes ASCII pour que la distribution des données saute aux yeux.

Paramètres système

Gestion du mot de passe et de la connexion, export de rapports, journal des opérations et effacement des données complètent l'administration.

Deux choix d'implémentation assumés

Le projet fait des compromis réfléchis sur les structures de données et la persistance.

Listes simplement chaînées de bout en bout

Chaque nœud est alloué avec new et libéré avec delete ; l'insertion, la suppression et le parcours sont écrits à la main, ce qui constitue un exercice complet sur les listes et les pointeurs.

Persistance en fichier binaire

Les données sont écrites dans un agencement binaire personnalisé et restaurées selon le même agencement à la lecture, ce qui évite le coût et l'ambiguïté de l'analyse textuelle.

Validation des entrées et tolérance aux erreurs

Les dates, identifiants et enregistrements en double sont vérifiés, afin qu'une saisie invalide ne puisse corrompre la structure de liste ni les statistiques.

Unité de traduction unique

La logique centrale tient dans un seul fichier cpp, les sous-modules étant inclus par #include, ce qui facilite une lecture ligne à ligne lors de l'évaluation du cours.

Visualisation en ASCII

Les histogrammes sont dessinés avec de simples caractères plutôt qu'avec une bibliothèque graphique, si bien que les statistiques s'affichent même en environnement purement textuel.

Journal des opérations

Les actions clés laissent une trace, ce qui facilite la traçabilité des modifications de données.

Retour aux projets