import java.util.
*;
class User {
protected int id;
protected String nom;
public User(int id, String nom) {
this.id = id;
this.nom = nom;
}
}
class Admin extends User {
private String motDePasse;
public Admin(int id, String nom, String motDePasse) {
super(id, nom);
this.motDePasse = motDePasse;
}
}
class Client extends User {
private String numero;
public Client(int id, String nom, String numero) {
super(id, nom);
this.numero = numero;
}
}
class Salle {
private int numero;
private boolean disponibiliteParHeure;
private double prixParHeure;
public Salle(int numero, double prixParHeure) {
this.numero = numero;
this.prixParHeure = prixParHeure;
this.disponibiliteParHeure = true;
}
public boolean estDisponible() {
return disponibiliteParHeure;
}
public void reserver() {
this.disponibiliteParHeure = false;
}
public double getPrixParHeure() {
return prixParHeure;
}
public int getNumero() {
return numero;
}
}
class Reservation {
private int id;
private Client client;
private Salle salle;
private int heures;
private double montantTotal;
public Reservation(int id, Client client, Salle salle, int heures) {
this.id = id;
this.client = client;
this.salle = salle;
this.heures = heures;
this.montantTotal = heures * salle.getPrixParHeure();
salle.reserver();
}
public double getMontantTotal() {
return montantTotal;
}
public void afficherReservation() {
System.out.println("Reservation #" + id);
System.out.println("Client: " + client.nom);
System.out.println("Salle: " + salle.getNumero());
System.out.println("Durée: " + heures + " heures");
System.out.println("Total: " + montantTotal + " Ar");
}
}
class GestionReservations {
private List<Salle> salles = new ArrayList<>();
private List<Reservation> reservations = new ArrayList<>();
private int compteurReservation = 1;
public void ajouterSalle(Salle salle) {
salles.add(salle);
}
public void afficherSallesDisponibles() {
System.out.println("Salles disponibles :");
for (Salle salle : salles) {
if (salle.estDisponible()) {
System.out.println("Salle #" + salle.getNumero() + " - Prix: " +
salle.getPrixParHeure() + " Ar/h");
}
}
}
public void reserverSalle(Client client, int numeroSalle, int heures) {
for (Salle salle : salles) {
if (salle.getNumero() == numeroSalle && salle.estDisponible()) {
Reservation reservation = new Reservation(compteurReservation++,
client, salle, heures);
reservations.add(reservation);
System.out.println("✅ Réservation effectuée !");
reservation.afficherReservation();
return;
}
}
System.out.println("❌ Salle indisponible !");
}
}
public class Main {
public static void main(String[] args) {
GestionReservations gestion = new GestionReservations();
// Ajout de salles
gestion.ajouterSalle(new Salle(1, 1000));
gestion.ajouterSalle(new Salle(2, 1500));
// Affichage des salles disponibles
gestion.afficherSallesDisponibles();
// Création d'un client
Client client1 = new Client(1, "Alice", "0341234567");
// Réservation d'une salle
gestion.reserverSalle(client1, 1, 3); // Réserve la salle 1 pendant 3h
// Tentative de réservation de la même salle (devrait échouer)
gestion.reserverSalle(client1, 1, 2);
}
}