Projet-location
README.md

🚗 Projet Gestion d'Agence de Location de Voitures

Ce projet a été réalisé dans le cadre d'un mini-projet ING3 à l'ECE. Il consiste en la modélisation et l'implémentation d'un système complet de gestion d'une agence de location de véhicules, développé en Java orienté objet, avec une interface interactive en ligne de commande.


🎯 Objectifs du Projet

  • Modéliser une agence de location de véhicules à l'aide des principes de la programmation orientée objet (héritage, encapsulation, polymorphisme).
  • Gérer l'ensemble du cycle de vie d'une location : création, suivi, retour, annulation et pénalités de retard.
  • Offrir une interface console interactive permettant de gérer clients, véhicules et locations de manière intuitive.
  • Produire des statistiques sur l'activité de l'agence en temps réel.

🛠️ Fonctionnalités Implémentées

1. Gestion des Clients

  • Ajout, modification et suppression de clients.
  • Recherche par identifiant ou par nom.
  • Affichage formaté de la fiche client (nom, prénom, téléphone, email, numéro de permis).

2. Gestion des Véhicules

  • Trois types de véhicules supportés :
    • 🚘 Voiture : nombre de portes, type de carburant.
    • 🏍️ Moto : cylindrée, type de moto.
    • 🚚 Utilitaire : charge maximale, volume de cargo.
  • Ajout, suppression et recherche par ID ou par marque.
  • Affichage de la disponibilité en temps réel.
  • Tri par prix, marque ou année.

3. Gestion des Locations

  • Création d'une location avec sélection du véhicule, du client et des dates.
  • Calcul automatique du prix total basé sur la durée et le tarif journalier.
  • Gestion des retards avec calcul de pénalité (×1.5 par jour de retard).
  • Retour de véhicule avec mise à jour automatique du statut.
  • Annulation de location.
  • Consultation des locations en cours et de l'historique par client.

4. Statuts de Location

Chaque location est associée à l'un des quatre statuts suivants :

Statut Description
EN_COURS Location active
TERMINEE Véhicule rendu dans les délais
EN_RETARD Véhicule rendu avec retard
ANNULEE Location annulée avant le retour

5. Tableau de Bord Statistique

  • Nombre total de véhicules et taux de disponibilité.
  • Nombre de locations effectuées.
  • Taux d'occupation de la flotte.
  • Revenu total généré (hors annulations).
  • Véhicule le plus loué et client le plus fidèle.

📐 Architecture du Projet

src/
├── Main.java              ← Interface console (menus et sous-menus)
├── AgenceLocation.java    ← Classe centrale de gestion
├── Client.java            ← Gestion des clients
├── Vehicule.java          ← Classe abstraite véhicule
├── Voiture.java           ← Sous-classe voiture
├── moto.java              ← Sous-classe moto
├── Utilitaire.java        ← Sous-classe utilitaire
├── Location.java          ← Modèle d'une location
├── StatutLocation.java    ← Enumération des statuts
└── Statistiques.java      ← Calcul et affichage des stats

Diagramme UML simplifié

AgenceLocation
  ├── ArrayList<Vehicule>
  │     ├── Voiture
  │     ├── moto
  │     └── Utilitaire
  ├── ArrayList<Client>
  └── ArrayList<Location>
        ├── Vehicule
        ├── Client
        └── StatutLocation

🚀 Technologies Utilisées

  • Langage : Java 21+
  • Bibliothèques : Java standard uniquement (java.util, java.time)
  • Paradigme : Programmation Orientée Objet (héritage, polymorphisme, encapsulation)
  • Interface : Console (ligne de commande)

▶️ Comment Lancer le Projet

Prérequis

Étapes

  1. Clonez le dépôt :

    git clone https://github.com/votre-repo/projet-location.git
    cd projet-location
    
  2. Compilez les sources :

    javac --enable-preview --release 21 -d out src/*.java
    
  3. Lancez le programme :

    java --enable-preview -cp out Main
    
  4. Naviguez dans les menus :

    ╔══════════════════════════════════════╗
    ║   SYSTÈME DE LOCATION DE VOITURES    ║
    ╠══════════════════════════════════════╣
    ║  1. Gestion des clients              ║
    ║  2. Gestion des véhicules            ║
    ║  3. Gestion des locations            ║
    ║  4. Statistiques                     ║
    ║  0. Quitter                          ║
    ╚══════════════════════════════════════╝
    

📧 Contact

Pour toute question ou suggestion, veuillez contacter l'un des membres de l'équipe :


Projet réalisé dans le cadre du cours ING3 — ECE 🎓