A modern Java Swing desktop application for managing meeting room reservations with a beautiful custom UI.
Ce projet implémente un système de réservation de salles de réunion distribué permettant aux utilisateurs de réserver, modifier ou consulter les disponibilités des salles de manière centralisée et en temps réel.
- Secure login with email/password
- Show/hide password toggle with custom icon
- Role-based access (Admin/User)
- Create, view, and cancel room reservations
- Visual room selection dialog
- Conflict detection for overlapping reservations
- Filter reservations by user
- Add, edit, and delete meeting rooms
- Room types: PETITE, MOYENNE, GRANDE
- Equipment tracking (projector, whiteboard, etc.)
- Availability status
- Create and manage user accounts
- Assign roles (Admin/User)
- Secure password handling
- Subscribe to room notifications
- Persistent subscriptions - preferences saved to database
- Subscriptions restored after logout/login
- Auto-connect to notification server
- Export statistics to CSV
- Export any table to CSV
- Full database backup to JSON
- 25+ custom icons throughout the application
- Styled buttons with hover effects
- Modern color scheme
- Styled message dialogs and confirmations
- Responsive table headers
| Technology | Purpose |
|---|---|
| Java 17+ | Programming Language |
| Swing | GUI Framework |
| MySQL | Database |
| JDBC | Database Connectivity |
| Maven | Build Tool |
| JAX-WS (SOAP) | Web Services |
| JAX-RS (REST) | REST API |
| RMI | Remote Method Invocation |
| Sockets TCP | Real-time notifications |
com.reservation/
├── model/ # Entités (Salle, Reservation, Utilisateur)
├── dao/ # Data Access Objects
│ ├── SalleDAO.java
│ ├── ReservationDAO.java
│ ├── UtilisateurDAO.java
│ └── NotificationSubscriptionDAO.java
├── rest/ # Services REST (JAX-RS)
├── soap/ # Services SOAP (JAX-WS)
├── rmi/ # Services RMI
├── socket/ # Serveur/Client Socket TCP
├── gui/ # Interface graphique Swing
│ ├── ReservationDashboard.java
│ ├── ServiceMonitor.java
│ ├── StatisticsDashboard.java
│ └── NotificationClient.java
├── util/ # Utilitaires (DBConnection)
└── MainServer.java # Lanceur principal
- Java 17 or higher
- MySQL Server
- Maven
-
Clone the repository
git clone https://github.com/YOUR_USERNAME/reservation-server.git cd reservation-server -
Set up the database (using XAMPP MySQL)
- Start XAMPP and ensure MySQL is running
- Open phpMyAdmin (http://localhost/phpmyadmin)
- Run the SQL script:
mysql -u root -p < src/main/resources/database.sqlOr import
database.sqlvia phpMyAdmin. -
Configure database connection
Update
DBConnection.javawith your MySQL credentials. -
Build the project
mvn clean install
-
Run the GUI application
mvn exec:java -Dexec.mainClass="com.reservation.gui.ReservationDashboard" -
Run all distributed servers
mvn exec:java -Dexec.mainClass="com.reservation.MainServer"
| Table | Description |
|---|---|
utilisateurs |
User accounts with roles |
salles |
Meeting rooms with type and equipment |
reservations |
Room bookings with dates and status |
notification_subscriptions |
User notification preferences (auto-created) |
| Type | Capacité | Équipements |
|---|---|---|
| PETITE | 4-6 pers. | Tableau blanc, projecteur |
| MOYENNE | 6-12 pers. | Tableau blanc, projecteur, vidéoconférence |
| GRANDE | 12-25 pers. | Tous équipements + microphones, écran |
GET /api/salles - Get all rooms
GET /api/salles/{id} - Get room by ID
POST /api/salles - Create room (admin)
PUT /api/salles/{id} - Update room (admin)
DELETE /api/salles/{id} - Delete room (admin)
GET /api/reservations - Get all reservations
GET /api/reservations/{id} - Get reservation by ID
GET /api/reservations/salle/{id} - Get reservations by room
POST /api/reservations - Create reservation
DELETE /api/reservations/{id} - Cancel reservation
- WSDL:
http://localhost:8081/reservation?wsdl - Operations:
creerReservation,annulerReservation,consulterReservation,verifierDisponibilite
- Registry:
localhost:1099 - Service name:
ReservationService - Full remote interface for all reservation operations
Real-time notification system for live updates.
Features:
- Subscribe to room notifications
- Receive real-time alerts when reservations are created/cancelled
- Persistent subscriptions stored in database (restored on login)
Commands:
SUBSCRIBE:<salleId> - Subscribe to room notifications
UNSUBSCRIBE:<salleId> - Unsubscribe from room notifications
PING - Test connection
LIST - Show current subscriptions
NAME:<yourname> - Set client name
QUIT - Disconnect
- Tableau de Bord - Homepage with welcome message, quick stats, and recent activity
- Salles - Room management with search and filtering
- Réservations - Reservation management with "Mes réservations" filter
- Paramètres - User settings including notifications and profile
- Utilisateurs (Admin) - User management
- Administration (Admin) - System overview and admin actions
- Services (Admin) - Monitor all distributed services status
- Auto-connect to notification server on startup
- Persistent notification subscriptions (saved to database)
- Real-time service status monitoring
- Clean, modern UI without cluttered statistics
- Scrollable panels for all content
- Responsive layout
- Copy to clipboard with simple confirmation message
The application uses 30+ custom icons for a modern look:
- Navigation icons (tabs, buttons)
- Action icons (add, edit, delete, export)
- Status icons (success, error, warning)
- Form icons (email, password, user)
- Service icons (server, notification)
- ilearncoding1 (AYA EL BADRI)
- AYA LAHGUI
- OUMAIMA HORMA
This project is open source and available under the MIT License.
⭐ Star this repository if you find it helpful!