A comprehensive Java-based hotel management system that allows guests to book rooms, manage reservations, and handle payments efficiently.
- Guest registration and authentication
- Admin panel for system management
- Secure password handling
- User profile management
- Multiple room types (Standard, Deluxe, Suite)
- Room availability tracking
- Detailed room information display
- Room features and amenities tracking
- Real-time room availability checking
- Flexible check-in/check-out dates
- Booking status tracking (Booked, Checked-in, Checked-out, Cancelled)
- Booking history for guests
- Multiple payment methods (Cash, Credit Card, Debit Card, PayPal)
- Payment status tracking
- Promo code support
- Refund handling
- Beautiful GUI using JavaFX
- Responsive design
- Real-time availability updates
- Comprehensive error handling
- Java 8+
- JavaFX for GUI
- Object-Oriented Programming principles
- Design Patterns implementation
src/main/java/org/advcomprog/hotelbooking/hotelbookingsystem/
├── User.java (Abstract)
├── Guest.java
├── Admin.java
├── Room.java (Abstract)
├── StandardRoom.java
├── DeluxeRoom.java
├── Suite.java (Abstract)
├── JuniorSuite.java
├── LuxuriousSuite.java
├── Booking.java
├── Payment.java
├── Hotel.java
└── HotelBookingSystem.java
classDiagram
class Displayable {
<<interface>>
+displayInfo()
}
class Comparable {
<<interface>>
+compareTo()
}
class User {
<<abstract>>
-String userId
-String name
-String email
-String password
+getUserId()
+getName()
+getEmail()
+getPassword()
+verifyPassword()
+getRole()
}
class Guest {
+displayInfo()
+getRole()
}
class Admin {
+displayInfo()
+getRole()
}
class Room {
<<abstract>>
-String roomNumber
-int capacity
-double priceForNight
-boolean isAvailable
+displayInfo()
+getRoomNumber()
+getPrice()
+compareTo()
}
class StandardRoom {
+displayInfo()
}
class DeluxeRoom {
+displayInfo()
}
class Suite {
<<abstract>>
+displayInfo()
}
class JuniorSuite {
+displayInfo()
}
class LuxuriousSuite {
+displayInfo()
}
class Booking {
-String bookingId
-Guest guest
-Room room
-LocalDate checkIn
-LocalDate checkOut
+displayInfo()
+getBookingId()
}
class Payment {
-String paymentId
-String bookingId
-double amount
-PaymentMethod method
-PaymentStatus status
+displayInfo()
+getPaymentId()
}
class Hotel {
-String name
-ArrayList~Room~ rooms
-ArrayList~User~ guests
-ArrayList~User~ admins
-ArrayList~Booking~ bookings
-ArrayList~Payment~ payments
+addRoom()
+removeRoom()
+createBooking()
+cancelBooking()
}
Displayable <|.. User
Displayable <|.. Guest
Displayable <|.. Admin
Displayable <|.. Room
Displayable <|.. StandardRoom
Displayable <|.. DeluxeRoom
Displayable <|.. Suite
Displayable <|.. JuniorSuite
Displayable <|.. LuxuriousSuite
Displayable <|.. Booking
Displayable <|.. Payment
Comparable <|.. Room
User <|-- Guest
User <|-- Admin
Room <|-- StandardRoom
Room <|-- DeluxeRoom
Room <|-- Suite
Suite <|-- JuniorSuite
Suite <|-- LuxuriousSuite
Booking --> Guest
Booking --> Room
Payment --> Booking
Hotel --> Room
Hotel --> User
Hotel --> Booking
Hotel --> Payment
- Thanks to all contributors
- Inspired by real-world hotel management systems