hotel management system python project with mysql

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")
Share:

Author: Yogesh Kumar

Related Articles