import random
import string
import mysql.connector
from tkinter import messagebox
# MySQL connection configuration
config = {
'user': 'your_username',
'password': 'your_password',
'host': 'localhost',
'database': 'hotel_booking_management'
}
def CheckPassword(password):
return True if len(password) > 6 else False
def show_message(title, message):
messagebox.showinfo(title, message)
def random_id():
letters = string.ascii_lowercase
return ''.join(random.choice(letters) for i in range(8))
def RoomsDetails():
conn = mysql.connector.connect(**config)
cursor = conn.cursor()
cursor.execute(
"CREATE TABLE IF NOT EXISTS roomsdetails (room_number VARCHAR(255) PRIMARY KEY, price VARCHAR(255), booking_status VARCHAR(255), booking_id VARCHAR(255))")
cursor.execute('SELECT * FROM roomsdetails')
roomsdetails = cursor.fetchall()
booked_rooms, non_booked_rooms = [], []
for i in roomsdetails:
if i[2]:
booked_rooms.append(i)
else:
non_booked_rooms.append(i)
conn.close()
return booked_rooms, non_booked_rooms, roomsdetails
def CustomersDetails():
conn = mysql.connector.connect(**config)
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS customerdetails (booking_id VARCHAR(255) PRIMARY KEY, customer_name VARCHAR(255), no_of_people VARCHAR(255), mobile_number VARCHAR(255), address VARCHAR(255))")
cursor.execute('SELECT * FROM customerdetails')
customer_details = cursor.fetchall()
conn.close()
return customer_details
def AddRoom(room_number, price):
try:
conn = mysql.connector.connect(**config)
cursor = conn.cursor()
cursor.execute("INSERT INTO roomsdetails (room_number, price, booking_status, booking_id) VALUES (%s, %s, %s, %s)",
(room_number, price, '', ''))
conn.commit()
conn.close()
print('Room added')
except mysql.connector.Error as e:
print('Error', e)
finally:
conn.close()
def BookRooms(booking_id, room_number):
try:
conn = mysql.connector.connect(**config)
c = conn.cursor()
c.execute("UPDATE roomsdetails SET booking_status=%s, booking_id=%s WHERE room_number=%s",
('booked', booking_id, room_number))
conn.commit()
print('Room booked')
conn.close()
except mysql.connector.Error as e:
print('MySQL error', e)
finally:
conn.close()
def AddNewCustomer(booking_id, customer_name, no_of_people, mobile_number, address):
CustomersDetails()
try:
conn = mysql.connector.connect(**config)
cursor = conn.cursor()
cursor.execute("INSERT INTO customerdetails (booking_id, customer_name, no_of_people, mobile_number, address) VALUES (%s, %s, %s, %s, %s)",
(booking_id, customer_name, no_of_people, mobile_number, address))
conn.commit()
conn.close()
print('\nCustomer Added\n')
except mysql.connector.Error as e:
print('Error ', e)
finally:
conn.close()
def UnBookRoom(room_number):
try:
conn = mysql.connector.connect(**config)
c = conn.cursor()
c.execute("UPDATE roomsdetails SET booking_status=%s, booking_id=%s WHERE room_number=%s",
('', '', room_number))
conn.commit()
print('Checkout successful')
conn.close()
except mysql.connector.Error as e:
print('MySQL error', e)
finally:
conn.close()
password = input("""
Hi admin\n
please enter password
""")
while True:
if CheckPassword(password):
try:
operation = int(input("""\n
1. New booking
2. Check out
3. Add room
4. Check all rooms available in CopyAssignment Hotel
5. Check available rooms
6. Exit\n"""))
except Exception as e:
print('\nEnter integer values only')
else:
print('Enter correct password!😤')
password = input("Enter password again: ")
continue
if 1 <= operation <= 6:
if operation == 1:
allRooms = RoomsDetails()[2]
print('Room No. Price Availability')
for i in allRooms:
print(' ', i[0], ' ', ' ', i[1], ' ',
' available' if len(i[2]) == 0 else 'not available')
customer_answer = input('Do you want to proceed?\n')
if 'y' in customer_answer:
from GenerateRandomID import random_id
booking_id = random_id()
customer_name = input('Enter your name: ')
no_of_people = input('Number of people: ')
mobile_number = input('Mobile number: ')
address = input('Address: ')
room_no_selected = input('Enter room no: ')
available_rooms = [i[0] for i in RoomsDetails()[1]]
if room_no_selected not in available_rooms:
print('Please select from available rooms only')
continue
AddNewCustomer(booking_id, customer_name,
no_of_people, mobile_number, address)
BookRooms(booking_id, room_no_selected)
else:
continue
elif operation == 2:
booked_rooms = RoomsDetails()[0]
print('Booked Rooms')
if len(booked_rooms) == 0:
print('No booked rooms')
continue
for i in booked_rooms:
print(i[0])
room_no = input('Enter room no: ')
booking_id = ''
price = '1000'
for i in booked_rooms:
if i[0] == room_no:
price = i[1]
booking_id = i[3]
allCustomers = CustomersDetails()
no_of_people = 2
for i in allCustomers:
if i[0] == booking_id:
no_of_people = i[2]
print('Thank you for visiting us!')
print('Your total payable amount is:',
int(no_of_people)*int(price))
wwwww = input('Enter upi id: ')
print('Please accept payment request from your UPI app and pay', int(
no_of_people)*int(price))
print('Thank you, your payment is completed')
UnBookRoom(room_no)
elif operation == 3:
print('\nSelected options is', operation)
room_no = input('Enter room no: ')
price = input('Enter room price: ')
AddRoom(room_no, price)
elif operation == 4:
allRooms = RoomsDetails()[2]
print('Room No. Price Availability')
for i in allRooms:
print(' ', i[0], ' ', ' ', i[1], ' ',
' available' if len(i[2]) == 0 else 'not available')
elif operation == 5:
allRooms = RoomsDetails()[1]
print('Room No. Price Availability')
for i in allRooms:
print(' ', i[0], ' ', ' ', i[1], ' ',
' available' if len(i[2]) == 0 else 'not available')
elif operation == 6:
print('\nThank you! Exiting...')
break
else:
print("\nPlease enter values between 1 and 6 only")



