0% ont trouvé ce document utile (0 vote)
24 vues45 pages

TP Java

Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
24 vues45 pages

TP Java

Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

package Tp1;

import static java.lang.System.*;

public class Somme {

public static void main(String[] args) {

// Vérifier si des arguments ont été fournis

if (args.length == 0) {

System.out.println("Veuillez fournir des mots en argument.");

return;

int som = 0; // Initialiser la somme à 0

for (int i = 0; i < args.length; i++) {

try {

// Essayer de convertir l'argument en entier

int a = Integer.parseInt(args[i]);

som += a; // Ajouter l'entier à la somme

} catch (NumberFormatException e) {

// Si l'argument n'est pas un entier, afficher un message d'erreur

System.out.println("L'argument '" + args[i] + "' n'est pas un entier valide.");

// Afficher le résultat de la somme

System.out.println("La somme est : " + som);


}

package Tp1;

public class Morse {

public static void main(String[] args) {

// Vérifier si des arguments ont été fournis

if (args.length == 0) {

System.out.println("Veuillez fournir des mots en argument.");

return;

// Parcourir les arguments et les afficher séparés par " Stop."

for (int i = 0; i < args.length; i++) {

System.out.print(args[i]+" Stop. ");

package bibliotheque;

import java.io.Serializable;

import java.util.Vector;

public class Bibliotheque implements Serializable {


private Vector<Livre> livres;

private int capaciteMax;

// Constructeur

public Bibliotheque(int capaciteMax) {

this.capaciteMax = capaciteMax;

this.livres = new Vector<>(capaciteMax);

// Ajouter un livre

public boolean ajouteLivre(Livre livre) {

if (livres.size() < capaciteMax) {

livres.add(livre);

return true;

return false;

// Récupérer le nombre de livres

public int size() {

return livres.size();

// Récupérer la capacité

public int capacite() {

return capaciteMax;

}
// Chercher un livre par auteur

public Vector<Livre> cherche(String auteur) {

Vector<Livre> livresTrouves = new Vector<>();

for (Livre livre : livres) {

for (String a : livre.getAuteurs()) {

if (a.toLowerCase().startsWith(auteur.toLowerCase())) {

livresTrouves.add(livre);

break; // Évite d'ajouter plusieurs fois le même livre

return livresTrouves;

// La méthode toLowerCase() convertit les deux chaînes

//(l'auteur recherché et l'auteur dans la liste) en minuscules avant de faire la


comparaison.

// Afficher les livres

@Override

public String toString() {

StringBuffer sb = new StringBuffer();

sb.append("Liste des livres :\n");

for (Livre livre : livres) {

sb.append(livre.toString()).append("\n\n");

return sb.toString();

package Tp1;
import java.io.Serializable;

public class Livre implements Serializable {

// Attributs de la classe Livre

private String titre; // Titre du livre

private String[] auteurs; // Tableau d'auteurs

private String ISBN; // Numéro ISBN du livre

private double prix; // Prix du livre en euros

public Livre(String titre,String[] auteurs,String ISBN,double prix){

this.titre=titre;

this.auteurs=auteurs;

this.ISBN=ISBN;

this.prix=prix;

public String getTitre() { return titre;}

public String[] getAuteurs() { return auteurs;}

public String getISBN() {return ISBN;}

public double getPrix() {return prix;}

public void setTitre(String titre) {this.titre=titre;}

public void setAuteurs(String[] auteurs) {this.auteurs=auteurs;}

public void setISBN(String ISBN) {this.ISBN=ISBN;}

public void setPrix(double prix) {this.prix=prix;}

public String toString() {

StringBuffer details=new StringBuffer();

details.append("Titre: ").append(titre).append("\n");

details.append("ISBN: ").append(ISBN).append("\n");

details.append("Prix: ").append(prix).append("\n");
details.append("Auteurs: \n");

for(String auteur:auteurs) {

details.append(" -").append(auteur).append("\n");

return details.toString();

// Méthode pour vérifier si un auteur commence par un nom donné

public boolean auteurCommencePar(String auteur) {

for(String a : auteurs ) {

if(a.toLowerCase().startsWith(auteur.toLowerCase())) {

return true;

return false;

public static void main(String[] args) {

}
// Méthode pour récupérer les livres

public Vector<Livre> getLivres() {

return livres;

package Tp1;

import java.util.Scanner;

import java.io.*;

import java.util.Vector;

public class TestBibliotheque {

public static void main(String[] args) {

Scanner clavier = new Scanner(System.in);

Bibliotheque B = null;

try {

System.out.print("Entrez la capacité maximale de la bibliothèque : ");

int capaciteMax = clavier.nextInt();

clavier.nextLine(); // Consommer le retour à la ligne

B = new Bibliotheque(capaciteMax);

} catch (Exception e) {

System.out.println("Erreur lors de la saisie de la capacité. Veuillez entrer un


nombre valide.");

return;

}
// Charger la bibliothèque depuis le fichier si elle existe

try (ObjectInputStream ois = new ObjectInputStream(new


FileInputStream("fichierObjet"))) {

B = (Bibliotheque) ois.readObject();

} catch (FileNotFoundException e) {

System.out.println(" Aucun fichier précédent trouvé, démarrage d'une nouvelle


bibliothèque.");

} catch (IOException | ClassNotFoundException e) {

System.out.println(" Erreur lors du chargement du fichier : " + e.getMessage());

while (true) {

System.out.println("=== Menu Bibliothèque ===");

System.out.println("1. Ajouter un Livre");

System.out.println("2. Afficher la Bibliothèque");

System.out.println("3. Calculer la taille et capacité de la Bibliothèque");

System.out.println("4. Rechercher un livre par auteur");

System.out.println("5. Quitter");

System.out.print("Choisissez une option : ");

int choix;

try {

choix = clavier.nextInt();

clavier.nextLine();

} catch (Exception e) {

System.out.println(" Veuillez entrer un nombre valide.");

clavier.nextLine();

continue;

}
switch (choix) {

case 1:

try {

System.out.println("Entrez le titre : ");

String titre = clavier.nextLine();

System.out.println("Combien d'auteurs : ");

int nbAuteurs = clavier.nextInt();

clavier.nextLine();

if (nbAuteurs <= 0) throw new IllegalArgumentException("Le nombre


d'auteurs doit être positif.");

String[] auteurs = new String[nbAuteurs];

for (int i = 0; i < nbAuteurs; i++) {

System.out.print("Nom de l'auteur " + (i + 1) + " : ");

auteurs[i] = clavier.nextLine();

System.out.println("Entrez ISBN : ");

String ISBN = clavier.nextLine();

System.out.println("Entrez le prix : ");

double prix = clavier.nextDouble();

clavier.nextLine();

if (prix < 0) throw new IllegalArgumentException("Le prix ne peut pas être


négatif.");

Livre livre = new Livre(titre, auteurs, ISBN, prix);


if (B.ajouteLivre(livre)) {

System.out.println(" Livre ajouté avec succès !");

} else {

System.out.println(" La bibliothèque est pleine !");

} catch (Exception e) {

System.out.println(" Erreur lors de l'ajout du livre : " + e.getMessage());

clavier.nextLine();

break;

case 2:

if (B.size() == 0) {

System.out.println(" La bibliothèque est vide !");

} else {

System.out.println("\n Contenu de la bibliothèque :");

System.out.println(B);

break;

case 3:

System.out.println(" Capacité de la bibliothèque : " + B.capacite());

System.out.println(" Nombre de livres dans la bibliothèque : " + B.size());

break;

case 4:

System.out.println("Donner le nom ou le début du nom de l'auteur :");

String nom = clavier.nextLine();


Vector<Livre> result = B.cherche(nom);

if (result.isEmpty()) {

System.out.println("Aucun livre trouvé pour cet auteur.");

} else {

System.out.println("\n Livres trouvés :");

for (Livre l : result) {

System.out.println(l);

break;

case 5:

try (ObjectOutputStream oos = new ObjectOutputStream(new


FileOutputStream("fichierObjet"))) {

oos.writeObject(B);

oos.flush();

} catch (IOException e) {

System.out.println("Erreur lors de l'écriture du fichier : " + e.getMessage());

System.out.println("au revoir !");

clavier.close();

return;

default:

System.out.println(" Option invalide. Veuillez choisir une option valide.");

}
}

package Tp1;

public class TestLivre {

public static void main(String[] args) {

String[] auteurs = {"J.K. Rowling", "John Tiffany", "Jack Thorne"};

Livre livre = new Livre("Harry Potter and the Cursed Child", auteurs, "978-1-338-
28468-7", 19.99);

System.out.println(livre);

package hh;

import java.util.StringTokenizer;

// Exception pour un nombre d'arguments impair

class NombreArgumentsImpairException extends Exception {

public NombreArgumentsImpairException() {

super("Le nombre d'arguments doit être pair.");

// Exception pour un argument invalide

class ArgumentInvalideException extends Exception {

public ArgumentInvalideException(String message) {


super(message);

// Exception pour un argument qui n'est pas un nombre valide

class NombreInvalideException extends ArgumentInvalideException {

public NombreInvalideException(String argument) {

super("L'argument '" + argument + "' n'est pas un nombre valide.");

// Exception pour un nombre de décimales invalide

class DecimalesInvalideException extends ArgumentInvalideException {

public DecimalesInvalideException(String argument) {

super("Le nombre de décimales '" + argument + "' n'est pas un entier valide.");

// Exception pour un nombre de décimales négatif

class DecimalesNegativesException extends ArgumentInvalideException {

public DecimalesNegativesException() {

super("Le nombre de décimales ne peut pas être négatif.");

public class Arrondir {

public static String tronque(double x, int nbDecimales) {


String str = Double.toString(x);

StringTokenizer tokenizer = new StringTokenizer(str, ".");

String intPart = tokenizer.nextToken();

String decimalPart = tokenizer.hasMoreTokens() ? tokenizer.nextToken() : ""; // Évite


l'erreur

if (nbDecimales == 0 || decimalPart.isEmpty()) {

return intPart;

if (decimalPart.length() > nbDecimales) {

decimalPart = decimalPart.substring(0, nbDecimales); // Tronquer

return intPart + "." + decimalPart;

public static void main(String[] args) {

try {

// Vérifier s'il n'y a pas d'arguments

if (args.length == 0) {

throw new ArgumentInvalideException("Aucun argument fourni. Veuillez entrer


au moins un nombre et un nombre de décimales.");

// Vérifier si le nombre d'arguments est impair

if (args.length % 2 != 0) {

throw new NombreArgumentsImpairException();

}
for (int i = 0; i < args.length; i += 2) {

// Vérifier si le premier argument est un double valide

double x;

try {

x = Double.parseDouble(args[i]);

} catch (NumberFormatException e) {

throw new NombreInvalideException(args[i]);

// Vérifier si le deuxième argument est un entier valide et positif ou nul

int nbDecimales;

try {

nbDecimales = Integer.parseInt(args[i + 1]);

if (nbDecimales < 0) {

throw new DecimalesNegativesException(); // Vérification ici

} catch (NumberFormatException e) {

throw new DecimalesInvalideException(args[i + 1]);

// Affichage du résultat après troncature

System.out.print(tronque(x, nbDecimales) + "\t");

System.out.println(); // Nouvelle ligne après affichage

} catch (Exception e) {

System.err.println("Erreur : " + e.getMessage());

}
}

package hh;

import java.util.Scanner;

public class EssaiTri {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

TriSimple tri = new TriSimple();

while (true) {

System.out.println("\nOptions :");

System.out.println(" a - Ajouter une valeur");

System.out.println(" s - Supprimer une valeur");

System.out.println(" q - Quitter");

System.out.print("Entrez votre commande : ");

String input = scanner.nextLine().trim();

if (input.isEmpty()) {

System.out.println("Erreur : Veuillez entrer une commande valide.");

continue;

char commande = input.charAt(0);

if (commande == 'q') {
System.out.println("Programme terminé.");

break;

} else if (commande == 'a' || commande == 's') {

System.out.print("Entrez la valeur entière : ");

String valeurStr = scanner.nextLine().trim();

if (valeurStr.isEmpty()) {

System.out.println("Erreur : La valeur ne peut pas être vide.");

continue;

try {

int valeur = Integer.parseInt(valeurStr);

if (commande == 'a') {

tri.inserer(valeur);

System.out.println("Tableau après insertion : " + tri);

System.out.println("Taille du tableau : " + tri.getTaille()); // Affichage de la


taille

} else {

try {

tri.supprimer(valeur);

System.out.println("Tableau après suppression : " + tri);

System.out.println("Taille du tableau : " + tri.getTaille()); // Affichage de la


taille

} catch (EmptyEntiersException | EntierNotExistException e) {

System.out.println(e);

}
} catch (NumberFormatException e) {

System.out.println("Erreur : Veuillez entrer un nombre entier valide.");

} else {

System.out.println("Erreur : Commande inconnue. Veuillez entrer 'a', 's' ou 'q'.");

scanner.close();

package hh;

import java.util.Arrays;

class TriSimple {

private int[] tableau;

private int taille;

private int capacite;

private int increment;

public TriSimple() {

this.capacite = 3; // Taille par défaut

this.increment = 6;

this.tableau = new int[capacite];

this.taille = 0;

// Méthode pour obtenir la taille du tableau


public int getTaille() {

return taille;

public TriSimple(int capaciteInitiale, int increment) {

this.capacite = capaciteInitiale;

this.increment = increment;

this.tableau = new int[capacite];

this.taille = 0;

public void inserer(int entier) {

if (taille == capacite) {

agrandirTableau();

int i = taille - 1;

while (i >= 0 && tableau[i] > entier) {

tableau[i + 1] = tableau[i];

i--;

tableau[i + 1] = entier;

taille++;

private void agrandirTableau() {

capacite += increment;

tableau = Arrays.copyOf(tableau, capacite);

}
public void supprimer(int entier) throws EmptyEntiersException,
EntierNotExistException {

if (taille == 0) {

throw new EmptyEntiersException();

int index = -1;

for (int i = 0; i < taille; i++) {

if (tableau[i] == entier) {

index = i;

break;

if (index == -1) {

throw new EntierNotExistException();

for (int i = index; i < taille - 1; i++) {

tableau[i] = tableau[i + 1];

taille--;

reduireTableau();

private void reduireTableau() {

if (capacite - taille >= 2 * increment) {


capacite -= increment;

tableau = Arrays.copyOf(tableau, capacite);

@Override

public String toString() {

return Arrays.toString(Arrays.copyOf(tableau, taille));

class EmptyEntiersException extends Exception {

@Override

public String toString() {

return "EmptyEntiersException: Le tableau est vide, suppression impossible!";

class EntierNotExistException extends Exception {

@Override

public String toString() {

return "EntierNotExistException: La valeur n'existe pas dans le tableau!";

/* private Chambre[]chambres;

private int nbChambres;

private String FICHIER = "chambres.dat";


public Hotel(int taille) {

chambres=new Chambre[taille];

nbChambres=0;

public class GestionChambres {

// Méthode pour saisir une chambre

public static Chambre saisirChambre() {

Scanner clavier = new Scanner(System.in);

int capacite;

double prix;

System.out.print("Entrez le numéro de la chambre : ");

int numero = clavier.nextInt();

System.out.print("Entrez la catégorie : ");

int categorie = clavier.nextInt();

do {

System.out.print("Entrez la capacité entre 1 et 4: ");

capacite = clavier.nextInt();

}while(capacite<=1 ||capacite>=4);

do {

System.out.print("Entrez le prix superieur a 0 : ");

prix = clavier.nextDouble();
}while(prix<=0);

return new Chambre(numero, categorie, prix, capacite, 'L'); // État par défaut :
Libre

public void saisirTableau() {

Scanner clavier = new Scanner(System.in);

System.out.println("Nombre de chambres à ajouter : ");

int nombre = clavier.nextInt();

if (nbChambres >= chambres.length) {

System.out.println(" Tableau plein, impossible d'ajouter de nouvelles


chambres !");

return;

for (int i = 0; i < nombre && nbChambres < chambres.length; i++) {

try {

chambres[nbChambres] = saisirChambre(); // Saisie de la chambre

nbChambres++; // Incrémentation après ajout réussi

} catch (Exception e) {

System.out.println(" Erreur lors de l'ajout : " + e.getMessage());

public void afficherChambresParCategorie(int categorie) {


System.out.println("Chambres de la catégorie " + categorie + " :");

for(int i=0;i<nbChambres;i++) {

if(chambres[i].getCategorie()==categorie) {

System.out.println(chambres);

// c. Trier les chambres par capacité (ordre croissant)

public void trierChambresParCapacite(Chambre[] chambres) {

Arrays.sort(chambres, (c1, c2) -> Integer.compare(c1.getCapacite(),


c2.getCapacite()));

System.out.println("\n Chambres triées par capacité (ordre croissant) !");

sauvegarderChambres();

/*

* // Trier les chambres par capacité (ordre croissant)

public static void trierParCapacite() {

for (int i = 0; i < nbChambres - 1; i++) {

for (int j = i + 1; j < nbChambres; j++) {

if (chambres[i].capacite > chambres[j].capacite) {

Chambre temp = chambres[i];

chambres[i] = chambres[j];

chambres[j] = temp;
}

sauvegarderChambres();

System.out.println("Chambres triées par capacité !");

*/

// Charger les chambres depuis le fichier en parsant directement chaque ligne

/* public void chargerChambres() {

try (BufferedReader reader = new BufferedReader(new FileReader(FICHIER))) {

String ligne;

nbChambres = 0;

while ((ligne = reader.readLine()) != null && nbChambres < chambres.length ) {

// Supposons que la ligne est au format "numero,categorie,prix,capacite,etat"

String[] parts = ligne.split(",");

int numero = Integer.parseInt(parts[0]);

int categorie = Integer.parseInt(parts[1]);

double prix = Double.parseDouble(parts[2]);

int capacite = Integer.parseInt(parts[3]);

char etat = parts[4].charAt(0);

chambres[nbChambres++] = new Chambre(numero, categorie, prix, capacite,


etat);

} catch (FileNotFoundException e) {

System.out.println("Fichier non trouvé, création d'un nouveau fichier...");


} catch (IOException e) {

System.out.println("Erreur de lecture du fichier !");

// Sauvegarder les chambres dans le fichier avec BufferedWriter

public void sauvegarderChambres() {

try (BufferedWriter writer = new BufferedWriter(new FileWriter(FICHIER))) {

for (int i = 0; i < nbChambres; i++) {

writer.write(chambres[i].toString());

writer.newLine();

System.out.println("Données enregistrées !");

} catch (IOException e) {

System.out.println("Erreur lors de l'écriture dans le fichier !");

/*

* // Sauvegarder toutes les chambres dans le fichier

private void sauvegarderDansFichier() {

try (BufferedWriter writer = new BufferedWriter(new FileWriter(fichier))) {

for (Chambre ch : chambres) {

writer.write(ch.toString());
writer.newLine();

} catch (IOException e) {

e.printStackTrace();

*/

/* public void ajouterChambre() {

if (nbChambres < chambres.length) {

try {

Chambre nouvelleChambre = saisirChambre(); // Saisie

chambres[nbChambres] = nouvelleChambre; // Ajout dans le tableau

nbChambres++; // Incrémentation après l'ajout réussi

sauvegarderChambres(); // Sauvegarde

System.out.println(" Chambre ajoutée !");

} catch (Exception e) {

System.out.println(" Erreur : " + e.getMessage());

} else {

System.out.println(" Tableau plein, impossible d'ajouter une nouvelle chambre


!");

// Supprimer une chambre par numéro

public void supprimerChambre() {

Scanner clavier = new Scanner(System.in);

System.out.print("Entrez le numéro de la chambre à supprimer : ");


int numero = clavier.nextInt();

int index = -1;

for (int i = 0; i < nbChambres; i++) {

if (chambres[i].numero == numero) {

index = i;

break;

if (index == -1) {

System.out.println("Chambre introuvable !");

return;

// Décalage des éléments pour combler le trou

for (int i = index; i < nbChambres - 1; i++) {

chambres[i] = chambres[i + 1];

chambres[--nbChambres] = null;

sauvegarderChambres();

System.out.println("Chambre supprimée !");

// Modifier une chambre par numéro (prix et capacité)

public void modifierChambre() {

Scanner clavier = new Scanner(System.in);

System.out.print("Entrez le numéro de la chambre à modifier : ");

int numero = clavier.nextInt();

int index = -1;


for (int i = 0; i < nbChambres; i++) {

if (chambres[i].numero == numero) {

index = i;

break;

if (index == -1) {

System.out.println("Chambre introuvable !");

return;

System.out.print("Entrez le nouveau prix : ");

double nouveauPrix = clavier.nextDouble();

System.out.print("Entrez la nouvelle capacité (entre 1 et 4) : ");

int nouvelleCapacite = clavier.nextInt();

chambres[index].prix = nouveauPrix;

chambres[index].capacite = nouvelleCapacite;

sauvegarderChambres();

System.out.println("Chambre modifiée !");

// Afficher toutes les chambres

public void afficherChambres() {

if (nbChambres == 0) {

System.out.println("Aucune chambre enregistrée.");

return;

System.out.println("Liste des chambres :");

for (int i = 0; i < nbChambres; i++) {

System.out.println(chambres[i]);
}

*/

package ensemble;

import java.util.*;

import java.io.*;

import java.io.File;

public class Hotel {

private Chambre[] chambres;

private int nbChambres;

public Hotel(int taille) {

chambres = new Chambre[taille];

nbChambres = 0;

// Saisir une chambre avec vérification des entrées

public Chambre saisirChambre() {

int capacite;

double prix;

Scanner clavier=new Scanner(System.in);

System.out.print("Entrez le numéro de la chambre : ");

int numero = clavier.nextInt();

System.out.print("Entrez la catégorie : ");

int categorie = clavier.nextInt();


do {

System.out.print("Entrez la capacité (entre 1 et 4) : ");

capacite = clavier.nextInt();

} while (capacite < 1 || capacite > 4);

do {

System.out.print("Entrez le prix (supérieur à 0) : ");

prix = clavier.nextDouble();

} while (prix <= 0);

return new Chambre(numero, categorie, prix, capacite, 'L'); // 'L' pour Libre

// Ajouter plusieurs chambres

public void saisirTableau() {

Scanner clavier=new Scanner(System.in);

System.out.print("Nombre de chambres à ajouter : ");

int nombre = clavier.nextInt();

if (nbChambres >= chambres.length) {

System.out.println(" Tableau plein, impossible d'ajouter de nouvelles


chambres !");

return;

for (int i = 0; i < nombre && nbChambres < chambres.length; i++) {


chambres[nbChambres++] = saisirChambre();

sauvegarderChambres();

// Afficher les chambres d'une catégorie donnée

public void afficherChambresParCategorie(int categorie) {

System.out.println("Chambres de la catégorie " + categorie + " :");

boolean found = false;

for (int i = 0; i < nbChambres; i++) {

if (chambres[i].getCategorie() == categorie) {

System.out.println(chambres[i]);

found = true;

if (!found) System.out.println("Aucune chambre trouvée pour cette


catégorie.");

// Trier les chambres par capacité

public void trierChambresParCapacite() {

Arrays.sort(chambres, 0, nbChambres,
Comparator.comparingInt(Chambre::getCapacite));

System.out.println("\n Chambres triées par capacité !");

sauvegarderChambres();

// Charger les chambres depuis le fichier


public void chargerChambres() {

try (BufferedReader reader = new BufferedReader(new


FileReader("hotel.txt"))) {

String ligne;

nbChambres = 0; // Reset the number of rooms

while ((ligne = reader.readLine()) != null) {

// Clean up the string if it starts with "Chambre{" and ends with "}"

ligne = ligne.replace("Chambre{", "").replace("}", "");

// Split the line into attributes using comma as a delimiter

String[] parts = ligne.split(", ");

// Ensure the correct number of parts (5 attributes expected)

if (parts.length == 5) {

int numero = Integer.parseInt(parts[0].split("=")[1]); // Room number

int categorie = Integer.parseInt(parts[1].split("=")[1]); // Category

double prix = Double.parseDouble(parts[2].split("=")[1]); // Price

int capacite = Integer.parseInt(parts[3].split("=")[1]); // Capacity

char etat = parts[4].split("=")[1].charAt(0); // Room state


(assuming single character)

// Dynamically grow the array or use a List instead of fixed-size array

if (nbChambres < chambres.length) {

chambres[nbChambres++] = new Chambre(numero, categorie, prix,


capacite, etat);

} else {

System.out.println("Limite du nombre de chambres atteinte.");

}
} else {

System.out.println("Ligne mal formatée : " + ligne);

} catch (FileNotFoundException e) {

System.out.println("Fichier non trouvé, création d'un nouveau fichier...");

} catch (IOException e) {

System.out.println("Erreur de lecture du fichier !");

// Sauvegarder les chambres dans le fichier

public void sauvegarderChambres() {

try (BufferedWriter writer = new BufferedWriter(new FileWriter("hotel.txt"))) {

for (int i = 0; i < nbChambres; i++) {

writer.write(chambres[i].toString());

writer.newLine();

System.out.println(" Données enregistrées !");

} catch (IOException e) {

System.out.println("Erreur lors de l'écriture dans le fichier !");

// Ajouter une chambre

public void ajouterChambre() {


if (nbChambres >= chambres.length) {

System.out.println(" Tableau plein, impossible d'ajouter une nouvelle


chambre !");

return;

Chambre nouvelleChambre = saisirChambre();

// Vérifier si le numéro de chambre existe déjà

boolean numeroExiste = false;

for (int i = 0; i < nbChambres; i++) {

if (chambres[i].getNumero() == nouvelleChambre.getNumero()) {

numeroExiste = true;

break;

if (numeroExiste) {

System.out.println(" Le numéro de chambre existe déjà !");

} else {

chambres[nbChambres++] = nouvelleChambre;

sauvegarderChambres();

System.out.println(" Chambre ajoutée !");

// Supprimer une chambre

public void supprimerChambre() {


Scanner clavier=new Scanner(System.in);

System.out.print("Entrez le numéro de la chambre à supprimer : ");

int numero = clavier.nextInt();

int index = -1;

for (int i = 0; i < nbChambres; i++) {

if (chambres[i].getNumero() == numero) {

index = i;

break;

if (index == -1) {

System.out.println(" Chambre introuvable !");

return;

// Décalage des chambres

System.arraycopy(chambres, index + 1, chambres, index, nbChambres -


index - 1);

chambres[--nbChambres] = null;

sauvegarderChambres();

System.out.println(" Chambre supprimée !");

// Modifier une chambre

public void modifierChambre() {

Scanner clavier = new Scanner(System.in);

System.out.print("Entrez le numéro de la chambre à modifier : ");

int numero = clavier.nextInt();


// Rechercher la chambre par son numéro

int index = -1;

for (int i = 0; i < nbChambres; i++) {

if (chambres[i].getNumero() == numero) {

index = i;

break;

if (index == -1) {

System.out.println(" Chambre introuvable !");

return;

// Afficher les détails de la chambre

System.out.println("Chambre trouvée : " + chambres[index]);

// Menu de modification

int choix;

do {

System.out.println("\n1 : Modifier le numéro");

System.out.println("2 : Modifier la catégorie");

System.out.println("3 : Modifier la capacité");

System.out.println("4 : Modifier le prix");

System.out.println("5 : Modifier l'état");

System.out.println("6 : Quitter la modification");

System.out.print("Votre choix : ");


choix = clavier.nextInt();

switch (choix) {

case 1:

System.out.print("Entrez le nouveau numéro : ");

int nouveauNumero = clavier.nextInt();

// Vérifier si le nouveau numéro existe déjà

boolean numeroExiste = false;

for (int i = 0; i < nbChambres; i++) {

if (chambres[i].getNumero() == nouveauNumero) {

numeroExiste = true;

break;

if (numeroExiste) {

System.out.println(" Le numéro de chambre existe déjà !");

} else {

chambres[index].setNumero(nouveauNumero);

System.out.println(" Numéro modifié !");

break;

case 2:

System.out.print("Entrez la nouvelle catégorie : ");

int nouvelleCategorie = clavier.nextInt();

chambres[index].setCategorie(nouvelleCategorie);

System.out.println(" Catégorie modifiée !");

break;

case 3:
System.out.print("Entrez la nouvelle capacité (entre 1 et 4) : ");

int nouvelleCapacite = clavier.nextInt();

if (nouvelleCapacite >= 1 && nouvelleCapacite <= 4) {

chambres[index].setCapacite(nouvelleCapacite);

System.out.println(" Capacité modifiée !");

} else {

System.out.println(" Capacité invalide !");

break;

case 4:

System.out.print("Entrez le nouveau prix : ");

double nouveauPrix = clavier.nextDouble();

if (nouveauPrix > 0) {

chambres[index].setPrix(nouveauPrix);

System.out.println(" Prix modifié !");

} else {

System.out.println(" Prix invalide !");

break;

case 5:

System.out.print("Entrez le nouvel état (L pour Libre, O pour Occupée) :


");

char nouvelEtat = clavier.next().charAt(0);

if (nouvelEtat == 'L' || nouvelEtat == 'O') {

chambres[index].setEtat(nouvelEtat);

System.out.println(" État modifié !");

} else {

System.out.println(" État invalide !");


}

break;

case 6:

System.out.println(" Modification terminée.");

break;

default:

System.out.println(" Choix invalide !");

break;

} while (choix != 6);

sauvegarderChambres();

// Afficher toutes les chambres

public void afficherChambres() {

if (nbChambres == 0) {

System.out.println("Aucune chambre enregistrée.");

return;

System.out.println("Liste des chambres :");

for (int i = 0; i < nbChambres; i++) {

System.out.println(chambres[i]);

public void copierChambresCategorie(int categorie, String fichierDestination) {

try (BufferedWriter writer = new BufferedWriter(new


FileWriter(fichierDestination))) {
boolean found = false;

for (int i = 0; i < nbChambres; i++) {

if (chambres[i].getCategorie() == categorie) {

writer.write(chambres[i].toString());

writer.newLine();

found = true;

if (found) {

System.out.println(" Chambres de la catégorie " + categorie + "


copiées dans " + fichierDestination);

} else {

System.out.println(" Aucune chambre trouvée pour cette catégorie.");

} catch (IOException e) {

System.out.println(" Erreur lors de la copie des chambres : " +


e.getMessage());

public Vector<Chambre> chambresLibres() {

Vector<Chambre> chambresLibres = new Vector<>();

for (int i = 0; i < nbChambres; i++) {

if (chambres[i].getEtat() == 'L') { // 'L' pour Libre

chambresLibres.add(chambres[i]);

return chambresLibres;

}
public void calculerRecettes() {

double recetteMax = 0;

double recetteReelle = 0;

for (int i = 0; i < nbChambres; i++) {

recetteMax += chambres[i].getPrix();

if (chambres[i].getEtat() == 'O') { // 'O' pour Occupée

recetteReelle += chambres[i].getPrix();

System.out.println(" Recette maximale journalière : " + recetteMax + "


DH");

System.out.println(" Recette réelle du jour : " + recetteReelle + " DH");

public static void main(String[] args) {

// TODO Auto-generated method stub

package ensemble;

import java.util.*;

import java.io.File;
public class TestHotel {

public static void main(String[] args) {

Scanner clavier = new Scanner(System.in);

Hotel hotel = new Hotel(10); // Taille de l'hôtel (10 chambres pour cet exemple)

hotel.chargerChambres(); // Charger les chambres depuis le fichier

while (true) {

try {

// Afficher le menu

System.out.println("\n==== Menu Hotel ====");

System.out.println("1. Ajouter une chambre");

System.out.println("2. Supprimer une chambre");

System.out.println("3. Modifier une chambre");

System.out.println("4. Afficher toutes les chambres");

System.out.println("5. Afficher les chambres par catégorie");

System.out.println("6. Trier les chambres par capacité");

System.out.println("7. Copier les chambres par catégorie");

System.out.println("8. Afficher les chambres libres");

System.out.println("9. Calculer les recettes");

System.out.println("10. Quitter");

System.out.print("Choisissez une option : ");

int choix = clavier.nextInt();

switch (choix) {

case 1:

hotel.ajouterChambre();

break;

case 2:

hotel.supprimerChambre();
break;

case 3:

hotel.modifierChambre();

break;

case 4:

hotel.afficherChambres();

break;

case 5:

System.out.print("Entrez la catégorie de chambres à afficher : ");

int categorie = clavier.nextInt();

hotel.afficherChambresParCategorie(categorie);

break;

case 6:

hotel.trierChambresParCapacite();

break;

case 7:

System.out.print("Entrez la catégorie de chambres à copier : ");

int categorieCopier = clavier.nextInt();

System.out.print("Entrez le fichier de destination : ");

String fichierDestination ="categorie_" + categorieCopier + ".dat";

hotel.copierChambresCategorie(categorieCopier, fichierDestination);

break;

case 8:

Vector<Chambre> chambresLibres = hotel.chambresLibres();

if (chambresLibres.isEmpty()) {

System.out.println("Aucune chambre libre.");

} else {

System.out.println("Chambres libres :");


for (Chambre ch : chambresLibres) {

System.out.println(ch);

break;

case 9:

hotel.calculerRecettes();

break;

case 10:

System.out.println("Merci d'avoir utilisé le système. Au revoir !");

clavier.close();

return; // Quitter le programme

default:

System.out.println("Choix invalide. Veuillez réessayer.");

break;

} catch (Exception e) {

System.out.println("Erreur : " + e.getMessage());

clavier.nextLine(); // Consommer la ligne restante pour éviter des boucles


infinies

Vous aimerez peut-être aussi