République Tunisienne
*****
Ministère de l’Enseignement Supérieur et la Recherche Scientifique
*****
Université de Monastir
*****
L'Institut Supérieur d'Informatique et de Mathématiques de Monastir
Mastère professionnelle
Filière : Instrumentation et Génie Industrielle
Compte rendu du 1er TP JAVA
Développement du Système
de location de Voitures
Présenté Par : Encadré Par :
Abdallah Siwar Mme. Sirine Belguith
Mbarki Manar
Année Universitaire 2024 – 2025
1. Introduction
Ce compte rendu présente le développement d’un système de gestion de location de
voitures en Java. L’objectif est de concevoir une solution permettant de suivre le statut
des véhicules (disponible, louée, en maintenance) et de calculer les prix de location.
2. Objectif du TP : Gestion d’une Flotte de Voitures en Java
L’objectif principal est la mise en place d’un programme Java pour gérer une flotte de
voitures de location en mettant en pratique diverses compétences en programmation
orientée objet.
Objectifs pédagogiques :
a. Manipulation des collections Java :
o Utilisation d’ArrayList pour stocker et gérer les informations des véhicules.
b. Interaction avec l'utilisateur :
o Développement d’une interface en ligne de commande permettant aux clients et
gérants d’interagir avec le système.
c.
Gestion des données et algorithmes de recherche :
o Implémentation de méthodes permettant de filtrer et afficher les voitures
disponibles, de modifier leur état et de calculer le coût de location.
2
d. Modularité du code :
o Organisation des fonctionnalités sous forme de méthodes distinctes
(initialiserVoitures(), afficherVoituresDisponibles(), changerStatut(),
calculerPrix()).
o Faciliter la réutilisation et la maintenance du code.
3
e. Gestion des rôles utilisateurs :
o Différencier les interactions entre gérant et client grâce à un menu
interactif.
o Assurer un accès restreint à certaines fonctionnalités (ex. seul le
gérant peut changer l’état d’une voiture).
4
3. Développement du Code Java
Le programme repose sur la classe Car, qui structure la gestion des véhicules et propose
les fonctionnalités suivantes :
Initialisation des voitures : Création d’une liste avec les immatriculations,
états, dates de mise en service et tarifs journaliers.
Affichage des voitures disponibles : Présentation des véhicules en état «
Disponible » avec leurs caractéristiques.
Modification du statut : Permet de mettre à jour l’état d’un véhicule en
saisissant son immatriculation.
Calcul du prix de location : Détermination du coût total en fonction du
nombre de jours loués.
Interface utilisateur : Menu permettant aux gérants de modifier les
informations et aux clients de consulter les disponibilités et calculer un prix.
5
4. Discussions
a. Fonctionnalités implémentées :
Le programme fonctionne conformément aux attentes : gestion efficace des voitures,
affichage des données pertinentes et calcul précis des coûts de location.
b. Observations techniques :
L’utilisation d’ArrayList permet une gestion dynamique des véhicules.
L’interface en ligne de commande est simple mais efficace pour interagir avec le
programme.
5. Conclusion : Compétences développées
✅ Maîtrise des ArrayList pour la gestion des données dynamiques.
✅ Développement d’une interface utilisateur interactive via la console.
✅ Application des structures conditionnelles (if-else) et des boucles (for).
✅ Utilisation de la classe Scanner pour gérer les entrées utilisateur.
✅ Écriture d’un code structuré, modulaire et réutilisable.
6. Résultat
6
7. Annexe
Code Java :
package test;
import [Link];
import [Link];
public class Car {
static ArrayList<String> immat = new ArrayList<>();
static ArrayList<String> etat = new ArrayList<>();
static ArrayList<String> dateServiceList = new ArrayList<>();
static ArrayList<Double> prixParJour = new ArrayList<>();
static void initialiserVoitures() {
[Link]("AB-123-CD");
[Link]("Disponible");
[Link]("15/06/2020");
[Link](75.0);
[Link]("XY-456-ZT");
7
[Link]("Louée");
[Link]("02/11/2019");
[Link](60.0);
[Link]("CD-789-EF");
[Link]("En maintenance");
[Link]("25/03/2021");
[Link](90.0);
[Link]("GH-321-JK");
[Link]("Disponible");
[Link]("10/09/2018");
[Link](65.0);
[Link]("KL-258-MN");
[Link]("Louée");
[Link]("12/01/2022");
[Link](85.0);
}
static void afficherVoituresDisponibles() {
[Link]("=== Voitures Disponibles ===");
for (int i = 0; i < [Link](); i++) {
if ([Link](i).equalsIgnoreCase("Disponible")) {
[Link]("Immatriculation: " + [Link](i) + " | État: " + [Link](i) +
" | Date Service: " + [Link](i) + " | Prix/Jour: " + [Link](i) + "€");
}
}
}
static void changerStatut() {
Scanner scanner = new Scanner([Link]);
[Link]("Entrez l'immatriculation de la voiture à modifier : ");
String immatriculation = [Link]();
for (int i = 0; i < [Link](); i++) {
if ([Link](i).equalsIgnoreCase(immatriculation)) {
[Link]("État actuel: " + [Link](i));
[Link]("Nouveau statut (Disponible, Louée, En maintenance) : ");
[Link](i, [Link]());
[Link]("Statut mis à jour avec succès !");
return;
}
}
[Link]("Voiture non trouvée.");
}
static void calculerPrix() {
Scanner scanner = new Scanner([Link]);
[Link]("Entrez l'immatriculation de la voiture : ");
String immatriculation = [Link]();
for (int i = 0; i < [Link](); i++) {
if ([Link](i).equalsIgnoreCase(immatriculation)) {
[Link]("Entrez le nombre de jours de location : ");
8
int jours = [Link]();
double prixTotal = jours * [Link](i);
[Link]("Le prix total est : " + prixTotal + "€");
return;
}
}
[Link]("Voiture non trouvée.");
}
public static void main(String[] args) {
Scanner scanner = new Scanner([Link]);
initialiserVoitures();
[Link]("0 : Gérant");
[Link]("1 : Client");
[Link]("Entrez votre choix : ");
int choixUtilisateur = [Link]();
[Link]();
if (choixUtilisateur == 0) {
[Link]("0 : Calculer le coût");
[Link]("1 : Changer l'état d'une voiture");
[Link]("Entrez votre choix : ");
int choixGerant = [Link]();
[Link]();
if (choixGerant == 0) {
calculerPrix();
} else if (choixGerant == 1) {
changerStatut();
} else {
[Link]("Option non reconnue.");
}
} else if (choixUtilisateur == 1) {
[Link]("Bonjour cher(e) client(e). Quel est votre choix ?");
[Link]("1 : Voir les voitures disponibles");
[Link]("2 : Calculer le prix d'une location");
int choixClient = [Link]();
[Link]();
if (choixClient == 1) {
afficherVoituresDisponibles();
} else if (choixClient == 2) {
calculerPrix();
} else {
[Link]("Option non reconnue.");
}
} else {
[Link]("Utilisateur non reconnu.");
}
[Link]();
}
}