Skip to content

Chayma68/Distributed-Library-Management-System-using-Java-RMI-MySQL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TP4 - Java RMI et Base de Données (Gestion de Bibliothèque)

🎯 Objectif du TP

Ce projet a pour but de développer une application distribuée en Java RMI (Remote Method Invocation) connectée à une base de données MySQL, permettant de gérer les livres, usagers et emprunts d'une bibliothèque.


🏗️ Architecture du projet

L’application repose sur une architecture client–serveur :

  • Serveur RMI : héberge les objets distants et gère la connexion à la base MySQL.
  • Client (Swing) : interface graphique permettant d’ajouter, rechercher, emprunter et rendre les livres.
  • Base de données MySQL : assure la persistance des données.
ClientGUI  <-->  Serveur RMI  <-->  Base MySQL (biblio_rmi)

📂 Structure du projet

tp4-rmi/
├── bibliothèque/         # Classes métiers (Livre, Usager)
├── interfaces/           # Interface distante RMI (BibliothequeInterface)
├── server/
│   ├── db/               # Connexion MySQL (DB.java)
│   ├── dao/              # Classes DAO (LivreDAO, UsagerDAO, EmpruntDAO)
│   └── BibliothequeImpl  # Implémentation RMI
└── client/
    └── ClientGUI.java    # Interface graphique Swing

⚙️ Configuration MySQL

  1. Créer une base de données :
CREATE DATABASE biblio_rmi CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  1. Créer l’utilisateur :
CREATE USER 'biblio_user'@'localhost' IDENTIFIED BY 'biblio_pass';
GRANT ALL PRIVILEGES ON biblio_rmi.* TO 'biblio_user'@'localhost';
FLUSH PRIVILEGES;
  1. Créer les tables :
CREATE TABLE livres (
  isbn VARCHAR(32) PRIMARY KEY,
  titre VARCHAR(255) NOT NULL,
  auteur VARCHAR(255),
  editeur VARCHAR(255),
  disponible TINYINT(1) DEFAULT 1
);

CREATE TABLE usagers (
  nom VARCHAR(128) PRIMARY KEY,
  categorie VARCHAR(64),
  adresse VARCHAR(255),
  ban_until DATE NULL
);

CREATE TABLE emprunts (
  id BIGINT PRIMARY KEY AUTO_INCREMENT,
  isbn VARCHAR(32) NOT NULL,
  nom_usager VARCHAR(128) NOT NULL,
  date_emprunt DATE NOT NULL,
  date_echeance DATE NOT NULL,
  date_retour DATE,
  prolongations INT DEFAULT 0,
  FOREIGN KEY (isbn) REFERENCES livres(isbn),
  FOREIGN KEY (nom_usager) REFERENCES usagers(nom)
);

🖥️ Lancement du projet

1️⃣ Démarrer le serveur RMI

cd server
java server.ServerMain

Le serveur démarre et se lie au registre RMI sur le port 1099.

2️⃣ Lancer le client

cd client
java client.ClientGUI

🧪 Fonctionnalités testées

Fonctionnalité Résultat
Ajout de livre ✅ Livre ajouté et visible en base
Ajout d’usager ✅ Usager ajouté et consultable
Recherche ✅ Multi-critères (titre, auteur, etc.)
Emprunt ✅ Livre marqué non disponible
Prolongation ✅ Date prolongée avec succès
Retour ✅ Livre redevenu disponible

🧠 Technologies utilisées

  • Java 21
  • Java RMI
  • Swing (GUI)
  • MySQL 8.0
  • Maven
  • IntelliJ IDEA 2025

👩‍💻 Auteur

Chayma Chliyah
chaymachliyah809@gmail.com


🏁 Conclusion

Ce projet illustre la mise en œuvre d’une architecture distribuée complète en Java RMI, intégrée à une base de données MySQL, avec une interface graphique conviviale.
Il met en avant les notions d’objets distants, d’appels réseau et de persistance des données, tout en simulant un cas d’usage réel de gestion de bibliothèque.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages