RAPPORT DE PROJET :
APPLICATION DE GESTION D’HÔTEL
(JAVA & SQL)
Réalisé par :
Ahmed Mohamed Elmi
Hamza Kahiyeh Youssouf
Sahal Hassan Aden
Mohamed Ismail Meraneh
Nom du professeur : Mr Mohamed Souleiman
4 Janvier 2026
1
Table des matières
1 INTRODUCTION 3
1.1 Contexte du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Objectifs et Méthodologie . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 DÉVELOPPEMENT 3
2.1 Structure de la Base de Données . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Le Script SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3 Le Programme Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3 CONCLUSION 6
2
1 INTRODUCTION
1.1 Contexte du projet
Dans le cadre de notre formation en programmation, nous avons conçu une solution
informatique pour simplifier la gestion d’un établissement hôtelier. L’objectif est de rem-
placer le suivi manuel des nuitées par une application capable de gérer les données en
temps réel grâce à une base de données relationnelle.
1.2 Problématique
Comment assurer un suivi fiable des disponibilités et des réservations sans risque
d’erreur humaine ? Ce projet répond à cette question en centralisant les informations
(chambres, clients, réservations et factures) dans un système structuré et persistant.
1.3 Objectifs et Méthodologie
L’application doit permettre :
— L’affichage instantané des chambres libres.
— L’enregistrement des clients et de leurs réservations.
— La gestion automatisée de la facturation.
Pour ce faire, nous avons utilisé le langage Java pour la logique et MySQL pour
le stockage, en nous appuyant sur les concepts fondamentaux (variables, boucles) et la
connectivité JDBC pour la persistance.
2 DÉVELOPPEMENT
2.1 Structure de la Base de Données
Le système repose sur une base de données nommée gestion_hotel.Contrairement à
une gestion par tableaux parallèles, les données sont organisées en quatre tables liées par
des clés étrangères :
— Chambre : Identifiant, numéro, type, tarif et état de disponibilité.
— Client : Identité et coordonnées (nom, prénom, contact, email).
— Reservation : Table pivot liant un client à une chambre avec les dates de séjour.
— Facture : Enregistre le montant final lié à chaque réservation.
2.2 Le Script SQL
1 CREATE DATABASE gestion_hotel ;
2 USE gestion_hotel ;
3
4 CREATE TABLE chambre (
5 id INT AUTO_INCREMENT PRIMARY KEY ,
6 numero INT NOT NULL ,
7 type VARCHAR (50) NOT NULL ,
8 tarif DECIMAL (10 , 2) NOT NULL ,
9 disponible BOOLEAN NOT NULL
10 );
11
3
12 CREATE TABLE client (
13 id INT AUTO_INCREMENT PRIMARY KEY ,
14 nom VARCHAR (50) NOT NULL ,
15 prenom VARCHAR (50) NOT NULL ,
16 contact VARCHAR (100) ,
17 email VARCHAR (100)
18 );
19
20 CREATE TABLE reservation (
21 id INT AUTO_INCREMENT PRIMARY KEY ,
22 id_client INT ,
23 id_chambre INT ,
24 date_arrivee DATE ,
25 date_depart DATE ,
26 statut VARCHAR (50) ,
27 FOREIGN KEY ( id_client ) REFERENCES client ( id ) ,
28 FOREIGN KEY ( id_chambre ) REFERENCES chambre ( id )
29 );
30
31 CREATE TABLE facture (
32 id INT AUTO_INCREMENT PRIMARY KEY ,
33 id_reservation INT ,
34 montant DECIMAL (10 , 2) ,
35 date_facture DATE ,
36 FOREIGN KEY ( id_reservation ) REFERENCES reservation ( id )
37 );
Listing 1 – Structure de la base de données SQL
4
2.3 Le Programme Java
1 import java . sql .*;
2 import java . util . Scanner ;
3
4 public class HotelManagement {
5
6 // Etablissement de la connexion
7 public static Connection getConnection () {
8 String url = " jdbc : mysql :// localhost :3306/ gestion_hotel " ;
9 String user = " root " ;
10 String password = " " ;
11 try {
12 return DriverManager . getConnection ( url , user , password ) ;
13 } catch ( SQLException e ) {
14 e . printStackTrace () ;
15 return null ;
16 }
17 }
18
19 // Ajouter un client
20 public static void ajouterClient ( String nom , String prenom , String
contact , String email ) {
21 String sql = " INSERT INTO client ( nom , prenom , contact , email )
VALUES (? , ? , ? , ?) " ;
22 try ( Connection con = getConnection () ;
23 Pre paredSta tement ps = con . prepareStatement ( sql ) ) {
24 ps . setString (1 , nom ) ;
25 ps . setString (2 , prenom ) ;
26 ps . setString (3 , contact ) ;
27 ps . setString (4 , email ) ;
28 ps . executeUpdate () ;
29 System . out . println ( " Client ajoute avec succes ! " ) ;
30 } catch ( SQLException e ) {
31 e . printStackTrace () ;
32 }
33 }
34
35 // Afficher les chambres disponibles
36 public static void a f f i c h e r C h a m b r e s D i s p o n i b l e s () {
37 String sql = " SELECT * FROM chambre WHERE disponible = true " ;
38 try ( Connection con = getConnection () ;
39 Statement st = con . createStatement () ;
40 ResultSet rs = st . executeQuery ( sql ) ) {
41 System . out . println ( " \n - - - Chambres Disponibles ---" ) ;
42 while ( rs . next () ) {
43 System . out . println ( " Chambre n " + rs . getInt ( " numero " ) +
44 " | Type : " + rs . getString ( " type " ) +
45 " | Prix : " + rs . getDouble ( " tarif " ) +
" Euro " ) ;
46 }
47 } catch ( SQLException e ) {
48 e . printStackTrace () ;
49 }
50 }
51 }
Listing 2 – Code source de l’application HotelManagement
5
3 CONCLUSION
Le projet "Gestion d’Hôtel" est fonctionnel et répond au cahier des charges initial.
L’évolution vers une base de données SQL avec des relations complexes (clés étrangères)
a permis de structurer les données de manière professionnelle, rendant le code plus robuste
et facile à maintenir.