parent
e342fd2c19
commit
0d1d20fb6b
@ -1,162 +0,0 @@
|
||||
import tkinter as tk
|
||||
from tkinter import messagebox
|
||||
from datetime import datetime
|
||||
|
||||
class Room:
|
||||
def __init__(self, room_number, room_type, rate, availability=True):
|
||||
self.room_number = room_number
|
||||
self.room_type = room_type
|
||||
self.rate = rate
|
||||
self.availability = availability
|
||||
|
||||
class Reservation:
|
||||
def __init__(self, room, start_date, end_date):
|
||||
self.room = room
|
||||
self.start_date = start_date
|
||||
self.end_date = end_date
|
||||
self.total_cost = self.calculate_total_cost()
|
||||
|
||||
def calculate_total_cost(self):
|
||||
days = (self.end_date - self.start_date).days + 1
|
||||
return days * self.room.rate
|
||||
|
||||
class Hotel:
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
self.rooms = []
|
||||
self.reservations = []
|
||||
|
||||
def add_room(self, room):
|
||||
self.rooms.append(room)
|
||||
|
||||
def check_availability(self, start_date, end_date):
|
||||
available_rooms = [r for r in self.rooms if r.availability and
|
||||
not any((start_date <= res.start_date <= end_date or start_date <= res.end_date <= end_date)
|
||||
for res in self.reservations if res.room == r)]
|
||||
return available_rooms
|
||||
|
||||
def make_reservation(self, room, start_date, end_date):
|
||||
reservation = Reservation(room, start_date, end_date)
|
||||
self.reservations.append(reservation)
|
||||
room.availability = False
|
||||
return reservation
|
||||
|
||||
def cancel_reservation(self, reservation):
|
||||
self.reservations.remove(reservation)
|
||||
reservation.room.availability = True
|
||||
|
||||
class HotelApp(tk.Tk):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.hotel = Hotel("Python Inn")
|
||||
self.title("Hotel Management System")
|
||||
self.geometry("400x400")
|
||||
self.reservation_window = None
|
||||
self.cancel_window = None
|
||||
|
||||
self.rooms = [
|
||||
Room(101, "single", 100),
|
||||
Room(102, "double", 150),
|
||||
Room(103, "suite", 200)
|
||||
]
|
||||
for room in self.rooms:
|
||||
self.hotel.add_room(room)
|
||||
|
||||
self.create_widgets()
|
||||
|
||||
def create_widgets(self):
|
||||
tk.Label(self, text="Hotel Management System", font=("Arial", 16)).pack(pady=10)
|
||||
tk.Button(self, text="Check Availability", command=self.show_availability_window).pack(pady=5)
|
||||
tk.Button(self, text="Make Reservation", command=self.show_reservation_window).pack(pady=5)
|
||||
tk.Button(self, text="Cancel Reservation", command=self.show_cancel_window).pack(pady=5)
|
||||
tk.Button(self, text="Exit", command=self.quit).pack(pady=5)
|
||||
|
||||
def show_availability_window(self):
|
||||
self.reservation_window = tk.Toplevel(self)
|
||||
self.reservation_window.title("Check Availability")
|
||||
tk.Label(self.reservation_window, text="Check-in Date (YYYY-MM-DD)").pack()
|
||||
self.checkin_entry = tk.Entry(self.reservation_window)
|
||||
self.checkin_entry.pack()
|
||||
tk.Label(self.reservation_window, text="Check-out Date (YYYY-MM-DD)").pack()
|
||||
self.checkout_entry = tk.Entry(self.reservation_window)
|
||||
self.checkout_entry.pack()
|
||||
tk.Button(self.reservation_window, text="Check", command=self.check_and_display).pack()
|
||||
|
||||
def check_and_display(self):
|
||||
try:
|
||||
start_date = datetime.strptime(self.checkin_entry.get(), "%Y-%m-%d").date()
|
||||
end_date = datetime.strptime(self.checkout_entry.get(), "%Y-%m-%d").date()
|
||||
available_rooms = self.hotel.check_availability(start_date, end_date)
|
||||
self.display_rooms(available_rooms)
|
||||
except ValueError:
|
||||
messagebox.showerror("Error", "Invalid date format. Please use YYYY-MM-DD.")
|
||||
|
||||
def display_rooms(self, rooms):
|
||||
if rooms:
|
||||
result_text = "\n".join([f"Room {room.room_number} - {room.room_type} - ${room.rate}/night" for room in rooms])
|
||||
else:
|
||||
result_text = "No rooms available for selected dates."
|
||||
self.result_window = tk.Toplevel(self)
|
||||
tk.Label(self.result_window, text=result_text).pack()
|
||||
|
||||
def show_reservation_window(self):
|
||||
self.reservation_window = tk.Toplevel(self)
|
||||
self.reservation_window.title("Make Reservation")
|
||||
tk.Label(self.reservation_window, text="Room Number").pack()
|
||||
self.room_number_entry = tk.Entry(self.reservation_window)
|
||||
self.room_number_entry.pack()
|
||||
tk.Label(self.reservation_window, text="Check-in Date (YYYY-MM-DD)").pack()
|
||||
self.checkin_entry = tk.Entry(self.reservation_window)
|
||||
self.checkin_entry.pack()
|
||||
tk.Label(self.reservation_window, text="Check-out Date (YYYY-MM-DD)").pack()
|
||||
self.checkout_entry = tk.Entry(self.reservation_window)
|
||||
self.checkout_entry.pack()
|
||||
tk.Button(self.reservation_window, text="Reserve", command=self.make_reservation).pack()
|
||||
|
||||
def make_reservation(self):
|
||||
try:
|
||||
room_number = int(self.room_number_entry.get())
|
||||
room = next((r for r in self.rooms if r.room_number == room_number), None)
|
||||
if not room:
|
||||
messagebox.showerror("Error", "Room not found.")
|
||||
return
|
||||
start_date = datetime.strptime(self.checkin_entry.get(), "%Y-%m-%d").date()
|
||||
end_date = datetime.strptime(self.checkout_entry.get(), "%Y-%m-%d").date()
|
||||
if self.hotel.make_reservation(room, start_date, end_date):
|
||||
messagebox.showinfo("Success", "Reservation made successfully.")
|
||||
else:
|
||||
messagebox.showerror("Error", "Reservation failed. Room not available.")
|
||||
except Exception as e:
|
||||
messagebox.showerror("Error", str(e))
|
||||
|
||||
def show_cancel_window(self):
|
||||
self.cancel_window = tk.Toplevel(self)
|
||||
self.cancel_window.title("Cancel Reservation")
|
||||
tk.Label(self.cancel_window, text="Room Number").pack()
|
||||
self.cancel_room_number_entry = tk.Entry(self.cancel_window)
|
||||
self.cancel_room_number_entry.pack()
|
||||
tk.Label(self.cancel_window, text="Check-in Date (YYYY-MM-DD)").pack()
|
||||
self.cancel_checkin_entry = tk.Entry(self.cancel_window)
|
||||
self.cancel_checkin_entry.pack()
|
||||
tk.Button(self.cancel_window, text="Cancel", command=self.cancel_selected_reservation).pack()
|
||||
|
||||
def cancel_selected_reservation(self):
|
||||
try:
|
||||
room_number = int(self.cancel_room_number_entry.get())
|
||||
start_date_str = self.cancel_checkin_entry.get()
|
||||
if start_date_str:
|
||||
start_date = datetime.strptime(start_date_str, "%Y-%m-%d").date()
|
||||
matching_reservations = [res for res in self.hotel.reservations if res.room.room_number == room_number and res.start_date == start_date]
|
||||
if matching_reservations:
|
||||
self.hotel.cancel_reservation(matching_reservations[0])
|
||||
messagebox.showinfo("Success", "Reservation cancelled.")
|
||||
else:
|
||||
messagebox.showerror("Error", "Reservation not found.")
|
||||
else:
|
||||
messagebox.showerror("Error", "Please provide a check-in date.")
|
||||
except Exception as e:
|
||||
messagebox.showerror("Error", str(e))
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = HotelApp()
|
||||
app.mainloop()
|
@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env python
|
||||
import os
|
||||
import sys
|
||||
|
||||
if __name__ == '__main__':
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'hotel.settings')
|
||||
try:
|
||||
from django.core.management import execute_from_command_line
|
||||
except ImportError as exc:
|
||||
raise ImportError(
|
||||
"Couldn't import Django. Are you sure it's installed and "
|
||||
"available on your PYTHONPATH environment variable? Did you "
|
||||
"forget to activate a virtual environment?"
|
||||
) from exc
|
||||
execute_from_command_line(sys.argv)
|
@ -1,163 +0,0 @@
|
||||
import tkinter as tk
|
||||
from tkinter import messagebox
|
||||
from datetime import datetime
|
||||
|
||||
class Room:
|
||||
def __init__(self, room_number, room_type, rate, availability=True):
|
||||
self.room_number = room_number
|
||||
self.room_type = room_type
|
||||
self.rate = rate
|
||||
self.availability = availability
|
||||
|
||||
class Reservation:
|
||||
def __init__(self, room, start_date, end_date):
|
||||
self.room = room
|
||||
self.start_date = start_date
|
||||
self.end_date = end_date
|
||||
self.total_cost = self.calculate_total_cost()
|
||||
|
||||
def calculate_total_cost(self):
|
||||
days = (self.end_date - self.start_date).days + 1
|
||||
return days * self.room.rate
|
||||
|
||||
class Hotel:
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
self.rooms = []
|
||||
self.reservations = []
|
||||
|
||||
def add_room(self, room):
|
||||
self.rooms.append(room)
|
||||
|
||||
def check_availability(self, start_date, end_date):
|
||||
available_rooms = [r for r in self.rooms if r.availability and
|
||||
not any((start_date <= res.start_date <= end_date or start_date <= res.end_date <= end_date)
|
||||
for res in self.reservations if res.room == r)]
|
||||
return available_rooms
|
||||
|
||||
def make_reservation(self, room, start_date, end_date):
|
||||
reservation = Reservation(room, start_date, end_date)
|
||||
self.reservations.append(reservation)
|
||||
room.availability = False
|
||||
return reservation
|
||||
|
||||
def cancel_reservation(self, reservation):
|
||||
self.reservations.remove(reservation)
|
||||
reservation.room.availability = True
|
||||
|
||||
class HotelApp(tk.Tk):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.hotel = Hotel("Python Inn")
|
||||
self.title("Hotel Management System")
|
||||
self.geometry("400x400")
|
||||
self.reservation_window = None
|
||||
self.cancel_window = None
|
||||
|
||||
self.rooms = [
|
||||
Room(101, "single", 100),
|
||||
Room(102, "double", 150),
|
||||
Room(103, "suite", 200)
|
||||
]
|
||||
for room in self.rooms:
|
||||
self.hotel.add_room(room)
|
||||
|
||||
self.create_widgets()
|
||||
|
||||
def create_widgets(self):
|
||||
Label(self, text="Hotel Management System", font=("Arial", 16)).pack(pady=10)
|
||||
|
||||
Button(self, text="Check Availability", command=self.show_availability_window).pack(pady=5)
|
||||
Button(self, text="Make Reservation", command=self.show_reservation_window).pack(pady=5)
|
||||
Button(self, text="Cancel Reservation", command=self.show_cancel_window).pack(pady=5)
|
||||
Button(self, text="Exit", command=self.quit).pack(pady=5)
|
||||
|
||||
def show_availability_window(self):
|
||||
self.reservation_window = tk.Toplevel(self)
|
||||
self.reservation_window.title("Check Availability")
|
||||
Label(self.reservation_window, text="Check-in Date (YYYY-MM-DD)").pack()
|
||||
self.checkin_entry = Entry(self.reservation_window)
|
||||
self.checkin_entry.pack()
|
||||
Label(self.reservation_window, text="Check-out Date (YYYY-MM-DD)").pack()
|
||||
self.checkout_entry = Entry(self.reservation_window)
|
||||
self.checkout_entry.pack()
|
||||
Button(self.reservation_window, text="Check", command=self.check_and_display).pack()
|
||||
|
||||
def check_and_display(self):
|
||||
try:
|
||||
start_date = datetime.strptime(self.checkin_entry.get(), "%Y-%m-%d").date()
|
||||
end_date = datetime.strptime(self.checkout_entry.get(), "%Y-%m-%d").date()
|
||||
available_rooms = self.hotel.check_availability(start_date, end_date)
|
||||
self.display_rooms(available_rooms)
|
||||
except ValueError:
|
||||
messagebox.showerror("Error", "Invalid date format. Please use YYYY-MM-DD.")
|
||||
|
||||
def display_rooms(self, rooms):
|
||||
if rooms:
|
||||
result_text = "\n".join([f"Room {room.room_number} - {room.room_type} - ${room.rate}/night" for room in rooms])
|
||||
else:
|
||||
result_text = "No rooms available for selected dates."
|
||||
self.result_window = tk.Toplevel(self)
|
||||
Label(self.result_window, text=result_text).pack()
|
||||
|
||||
def show_reservation_window(self):
|
||||
self.reservation_window = tk.Toplevel(self)
|
||||
self.reservation_window.title("Make Reservation")
|
||||
Label(self.reservation_window, text="Room Number").pack()
|
||||
self.room_number_entry = Entry(self.reservation_window)
|
||||
self.room_number_entry.pack()
|
||||
Label(self.reservation_window, text="Check-in Date (YYYY-MM-DD)").pack()
|
||||
self.checkin_entry = Entry(self.reservation_window)
|
||||
self.checkin_entry.pack()
|
||||
Label(self.reservation_window, text="Check-out Date (YYYY-MM-DD)").pack()
|
||||
self.checkout_entry = Entry(self.reservation_window)
|
||||
self.checkout_entry.pack()
|
||||
Button(self.reservation_window, text="Reserve", command=self.make_reservation).pack()
|
||||
|
||||
def make_reservation(self):
|
||||
try:
|
||||
room_number = int(self.room_number_entry.get())
|
||||
room = next((r for r in self.rooms if r.room_number == room_number), None)
|
||||
if not room:
|
||||
messagebox.showerror("Error", "Room not found.")
|
||||
return
|
||||
start_date = datetime.strptime(self.checkin_entry.get(), "%Y-%m-%d").date()
|
||||
end_date = datetime.strptime(self.checkout_entry.get(), "%Y-%m-%d").date()
|
||||
if self.hotel.make_reservation(room, start_date, end_date):
|
||||
messagebox.showinfo("Success", "Reservation made successfully.")
|
||||
else:
|
||||
messagebox.showerror("Error", "Reservation failed. Room not available.")
|
||||
except Exception as e:
|
||||
messagebox.showerror("Error", str(e))
|
||||
|
||||
def show_cancel_window(self):
|
||||
self.cancel_window = tk.Toplevel(self)
|
||||
self.cancel_window.title("Cancel Reservation")
|
||||
Label(self.cancel_window, text="Room Number").pack()
|
||||
self.cancel_room_number_entry = Entry(self.cancel_window)
|
||||
self.cancel_room_number_entry.pack()
|
||||
Label(self.cancel_window, text="Check-in Date (YYYY-MM-DD)").pack()
|
||||
self.cancel_checkin_entry = Entry(self.cancel_window)
|
||||
self.cancel_checkin_entry.pack()
|
||||
Button(self.cancel_window, text="Cancel", command=self.cancel_selected_reservation).pack()
|
||||
|
||||
def cancel_selected_reservation(self):
|
||||
try:
|
||||
room_number = int(self.cancel_room_number_entry.get())
|
||||
start_date_str = self.cancel_checkin_entry.get()
|
||||
if start_date_str:
|
||||
start_date = datetime.strptime(start_date_str, "%Y-%m-%d").date()
|
||||
matching_reservations = [res for res in self.hotel.reservations if res.room.room_number == room_number and res.start_date == start_date]
|
||||
if matching_reservations:
|
||||
self.hotel.cancel_reservation(matching_reservations[0])
|
||||
messagebox.showinfo("Success", "Reservation cancelled.")
|
||||
else:
|
||||
messagebox.showerror("Error", "Reservation not found.")
|
||||
else:
|
||||
messagebox.showerror("Error", "Please provide a check-in date.")
|
||||
except Exception as e:
|
||||
messagebox.showerror("Error", str(e))
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = HotelApp()
|
||||
app.mainloop()
|
Loading…
Reference in new issue