This Project on Hotel Management is a general software developed (using Python) to simplify hotel operations by automating them. In this project, “AnCasa” is the project’s hotel name. It covers major aspects of hotel management; it could perform the following operations- Hotel Booking, Provide you with Hotel Rooms Info, Room Service, Billing and Record-Keeping.
Functions Created
- Home()- Function to display the project’s main screen i.e. the home page of the project or you can say the main menu for selecting the desired operation to perform.
- Date(str)- Function to validate date entered by the user/customer.
- Booking()- Function for booking room in hotel by entering user/customer details.
- Room_Info()- Function to provide users/customers with hotel rooms information(i.e. about room amenities).
- Restaurant()- Function for room service which provides user/customer with the restaurant’s menu card to order food at the room.
- Payment()- Function for payment of hotel room and restaurant bill generation at the time of check-out.
- Record()- Function for keeping records of customers stayed in the hotel.
Below is the implementation.
import random
import datetime
# Global List Declaration name = []
phno = []
add = []
checkin = []
checkout = []
room = []
price = []
rc = []
p = []
roomno = []
custid = []
day = []
# Global Variable Declaration i = 0
# Home Function def Home():
print ( "\t\t\t\t\t\t WELCOME TO HOTEL ANCASA\n" )
print ( "\t\t\t 1 Booking\n" )
print ( "\t\t\t 2 Rooms Info\n" )
print ( "\t\t\t 3 Room Service(Menu Card)\n" )
print ( "\t\t\t 4 Payment\n" )
print ( "\t\t\t 5 Record\n" )
print ( "\t\t\t 0 Exit\n" )
ch = int ( input ( "->" ))
if ch = = 1 :
print ( " " )
Booking()
elif ch = = 2 :
print ( " " )
Rooms_Info()
elif ch = = 3 :
print ( " " )
restaurant()
elif ch = = 4 :
print ( " " )
Payment()
elif ch = = 5 :
print ( " " )
Record()
else :
exit()
# Function used in booking def date(c):
if c[ 2 ] > = 2019 and c[ 2 ] < = 2020 :
if c[ 1 ] ! = 0 and c[ 1 ] < = 12 :
if c[ 1 ] = = 2 and c[ 0 ] ! = 0 and c[ 0 ] < = 31 :
if c[ 2 ] % 4 = = 0 and c[ 0 ] < = 29 :
pass
elif c[ 0 ]< 29 :
pass
else :
print ( "Invalid date\n" )
name.pop(i)
phno.pop(i)
add.pop(i)
checkin.pop(i)
checkout.pop(i)
Booking()
# if month is odd & less than equal
# to 7th month
elif c[ 1 ] < = 7 and c[ 1 ] % 2 ! = 0 and c[ 0 ] < = 31 :
pass
# if month is even & less than equal to 7th
# month and not 2nd month
elif c[ 1 ] < = 7 and c[ 1 ] % 2 = = 0 and c[ 0 ] < = 30 and c[ 1 ] ! = 2 :
pass
# if month is even & greater than equal
# to 8th month
elif c[ 1 ] > = 8 and c[ 1 ] % 2 = = 0 and c[ 0 ] < = 31 :
pass
# if month is odd & greater than equal
# to 8th month
elif c[ 1 ]> = 8 and c[ 1 ] % 2 ! = 0 and c[ 0 ]< = 30 :
pass
else :
print ( "Invalid date\n" )
name.pop(i)
phno.pop(i)
add.pop(i)
checkin.pop(i)
checkout.pop(i)
Booking()
else :
print ( "Invalid date\n" )
name.pop(i)
phno.pop(i)
add.pop(i)
checkin.pop(i)
checkout.pop(i)
Booking()
else :
print ( "Invalid date\n" )
name.pop(i)
phno.pop(i)
add.pop(i)
checkin.pop(i)
checkout.pop(i)
Booking()
# Booking function def Booking():
# used global keyword to
# use global variable 'i'
global i
print ( " BOOKING ROOMS" )
print ( " " )
while 1 :
n = str ( input ( "Name: " ))
p1 = str ( input ( "Phone No.: " ))
a = str ( input ( "Address: " ))
# checks if any field is not empty
if n! = " " and p1!=" " and a!=" ":
name.append(n)
add.append(a)
break
else :
print ( "\tName, Phone no. & Address cannot be empty..!!" )
cii = str ( input ( "Check-In: " ))
checkin.append(cii)
cii = cii.split( '/' )
ci = cii
ci[ 0 ] = int (ci[ 0 ])
ci[ 1 ] = int (ci[ 1 ])
ci[ 2 ] = int (ci[ 2 ])
date(ci)
coo = str ( input ( "Check-Out: " ))
checkout.append(coo)
coo = coo.split( '/' )
co = coo
co[ 0 ] = int (co[ 0 ])
co[ 1 ] = int (co[ 1 ])
co[ 2 ] = int (co[ 2 ])
# checks if check-out date falls after
# check-in date
if co[ 1 ]<ci[ 1 ] and co[ 2 ]<ci[ 2 ]:
print ( "\n\tErr..!!\n\tCheck-Out date must fall after Check-In\n" )
name.pop(i)
add.pop(i)
checkin.pop(i)
checkout.pop(i)
Booking()
elif co[ 1 ] = = ci[ 1 ] and co[ 2 ]> = ci[ 2 ] and co[ 0 ]< = ci[ 0 ]:
print ( "\n\tErr..!!\n\tCheck-Out date must fall after Check-In\n" )
name.pop(i)
add.pop(i)
checkin.pop(i)
checkout.pop(i)
Booking()
else :
pass
date(co)
d1 = datetime.datetime(ci[ 2 ],ci[ 1 ],ci[ 0 ])
d2 = datetime.datetime(co[ 2 ],co[ 1 ],co[ 0 ])
d = (d2 - d1).days
day.append(d)
print ( "----SELECT ROOM TYPE----" )
print ( " 1. Standard Non-AC" )
print ( " 2. Standard AC" )
print ( " 3. 3-Bed Non-AC" )
print ( " 4. 3-Bed AC" )
print (( "\t\tPress 0 for Room Prices" ))
ch = int ( input ( "->" ))
# if-conditions to display allotted room
# type and it's price
if ch = = 0 :
print ( " 1. Standard Non-AC - Rs. 3500" )
print ( " 2. Standard AC - Rs. 4000" )
print ( " 3. 3-Bed Non-AC - Rs. 4500" )
print ( " 4. 3-Bed AC - Rs. 5000" )
ch = int ( input ( "->" ))
if ch = = 1 :
room.append( 'Standard Non-AC' )
print ( "Room Type- Standard Non-AC" )
price.append( 3500 )
print ( "Price- 3500" )
elif ch = = 2 :
room.append( 'Standard AC' )
print ( "Room Type- Standard AC" )
price.append( 4000 )
print ( "Price- 4000" )
elif ch = = 3 :
room.append( '3-Bed Non-AC' )
print ( "Room Type- 3-Bed Non-AC" )
price.append( 4500 )
print ( "Price- 4500" )
elif ch = = 4 :
room.append( '3-Bed AC' )
print ( "Room Type- 3-Bed AC" )
price.append( 5000 )
print ( "Price- 5000" )
else :
print ( " Wrong choice..!!" )
# randomly generating room no. and customer
# id for customer
rn = random.randrange( 40 ) + 300
cid = random.randrange( 40 ) + 10
# checks if allotted room no. & customer
# id already not allotted
while rn in roomno or cid in custid:
rn = random.randrange( 60 ) + 300
cid = random.randrange( 60 ) + 10
rc.append( 0 )
p.append( 0 )
if p1 not in phno:
phno.append(p1)
elif p1 in phno:
for n in range ( 0 ,i):
if p1 = = phno[n]:
if p[n] = = 1 :
phno.append(p1)
elif p1 in phno:
for n in range ( 0 ,i):
if p1 = = phno[n]:
if p[n] = = 0 :
print ( "\tPhone no. already exists and payment yet not done..!!" )
name.pop(i)
add.pop(i)
checkin.pop(i)
checkout.pop(i)
Booking()
print ("")
print ( "\t\t\t***ROOM BOOKED SUCCESSFULLY***\n" )
print ( "Room No. - " ,rn)
print ( "Customer Id - " ,cid)
roomno.append(rn)
custid.append(cid)
i = i + 1
n = int ( input ( "0-BACK\n ->" ))
if n = = 0 :
Home()
else :
exit()
# ROOMS INFO def Rooms_Info():
print ( " ------ HOTEL ROOMS INFO ------" )
print ("")
print ( "STANDARD NON-AC" )
print ( "---------------------------------------------------------------" )
print ( "Room amenities include: 1 Double Bed, Television, Telephone," )
print ( "Double-Door Cupboard, 1 Coffee table with 2 sofa, Balcony and" )
print ( "an attached washroom with hot/cold water.\n" )
print ( "STANDARD NON-AC" )
print ( "---------------------------------------------------------------" )
print ( "Room amenities include: 1 Double Bed, Television, Telephone," )
print ( "Double-Door Cupboard, 1 Coffee table with 2 sofa, Balcony and" )
print ( "an attached washroom with hot/cold water + Window/Split AC.\n" )
print ( "3-Bed NON-AC" )
print ( "---------------------------------------------------------------" )
print ( "Room amenities include: 1 Double Bed + 1 Single Bed, Television," )
print ( "Telephone, a Triple-Door Cupboard, 1 Coffee table with 2 sofa, 1" )
print ( "Side table, Balcony with an Accent table with 2 Chair and an" )
print ( "attached washroom with hot/cold water.\n" )
print ( "3-Bed AC" )
print ( "---------------------------------------------------------------" )
print ( "Room amenities include: 1 Double Bed + 1 Single Bed, Television," )
print ( "Telephone, a Triple-Door Cupboard, 1 Coffee table with 2 sofa, " )
print ( "1 Side table, Balcony with an Accent table with 2 Chair and an" )
print ( "attached washroom with hot/cold water + Window/Split AC.\n\n" )
print ()
n = int ( input ( "0-BACK\n ->" ))
if n = = 0 :
Home()
else :
exit()
# RESTAURANT FUNCTION def restaurant():
ph = int ( input ( "Customer Id: " ))
global i
f = 0
r = 0
for n in range ( 0 ,i):
if custid[n] = = ph and p[n] = = 0 :
f = 1
print ( "-------------------------------------------------------------------------" )
print ( " Hotel AnCasa" )
print ( "-------------------------------------------------------------------------" )
print ( " Menu Card" )
print ( "-------------------------------------------------------------------------" )
print ( "\n BEVARAGES 26 Dal Fry................ 140.00" )
print ( "---------------------------------- 27 Dal Makhani............ 150.00" )
print ( " 1 Regular Tea............. 20.00 28 Dal Tadka.............. 150.00" )
print ( " 2 Masala Tea.............. 25.00" )
print ( " 3 Coffee.................. 25.00 ROTI" )
print ( " 4 Cold Drink.............. 25.00 ----------------------------------" )
print ( " 5 Bread Butter............ 30.00 29 Plain Roti.............. 15.00" )
print ( " 6 Bread Jam............... 30.00 30 Butter Roti............. 15.00" )
print ( " 7 Veg. Sandwich........... 50.00 31 Tandoori Roti........... 20.00" )
print ( " 8 Veg. Toast Sandwich..... 50.00 32 Butter Naan............. 20.00" )
print ( " 9 Cheese Toast Sandwich... 70.00" )
print ( " 10 Grilled Sandwich........ 70.00 RICE" )
print ( " ----------------------------------" )
print ( " SOUPS 33 Plain Rice.............. 90.00" )
print ( "---------------------------------- 34 Jeera Rice.............. 90.00" )
print ( " 11 Tomato Soup............ 110.00 35 Veg Pulao.............. 110.00" )
print ( " 12 Hot & Sour............. 110.00 36 Peas Pulao............. 110.00" )
print ( " 13 Veg. Noodle Soup....... 110.00" )
print ( " 14 Sweet Corn............. 110.00 SOUTH INDIAN" )
print ( " 15 Veg. Munchow........... 110.00 ----------------------------------" )
print ( " 37 Plain Dosa............. 100.00" )
print ( " MAIN COURSE 38 Onion Dosa............. 110.00" )
print ( "---------------------------------- 39 Masala Dosa............ 130.00" )
print ( " 16 Shahi Paneer........... 110.00 40 Paneer Dosa............ 130.00" )
print ( " 17 Kadai Paneer........... 110.00 41 Rice Idli.............. 130.00" )
print ( " 18 Handi Paneer........... 120.00 42 Sambhar Vada........... 140.00" )
print ( " 19 Palak Paneer........... 120.00" )
print ( " 20 Chilli Paneer.......... 140.00 ICE CREAM" )
print ( " 21 Matar Mushroom......... 140.00 ----------------------------------" )
print ( " 22 Mix Veg................ 140.00 43 Vanilla................. 60.00" )
print ( " 23 Jeera Aloo............. 140.00 44 Strawberry.............. 60.00" )
print ( " 24 Malai Kofta............ 140.00 45 Pineapple............... 60.00" )
print ( " 25 Aloo Matar............. 140.00 46 Butter Scotch........... 60.00" )
print ( "Press 0 -to end " )
ch = 1
while (ch! = 0 ):
ch = int ( input ( " -> " ))
# if-elif-conditions to assign item
# prices listed in menu card
if ch = = 1 or ch = = 31 or ch = = 32 :
rs = 20
r = r + rs
elif ch< = 4 and ch> = 2 :
rs = 25
r = r + rs
elif ch< = 6 and ch> = 5 :
rs = 30
r = r + rs
elif ch< = 8 and ch> = 7 :
rs = 50
r = r + rs
elif ch< = 10 and ch> = 9 :
rs = 70
r = r + rs
elif (ch< = 17 and ch> = 11 ) or ch = = 35 or ch = = 36 or ch = = 38 :
rs = 110
r = r + rs
elif ch< = 19 and ch> = 18 :
rs = 120
r = r + rs
elif (ch< = 26 and ch> = 20 ) or ch = = 42 :
rs = 140
r = r + rs
elif ch< = 28 and ch> = 27 :
rs = 150
r = r + rs
elif ch< = 30 and ch> = 29 :
rs = 15
r = r + rs
elif ch = = 33 or ch = = 34 :
rs = 90
r = r + rs
elif ch = = 37 :
rs = 100
r = r + rs
elif ch< = 41 and ch> = 39 :
rs = 130
r = r + rs
elif ch< = 46 and ch> = 43 :
rs = 60
r = r + rs
elif ch = = 0 :
pass
else :
print ( "Wrong Choice..!!" )
print ( "Total Bill: " ,r)
# updates restaurant charges and then
# appends in 'rc' list
r = r + rc.pop(n)
rc.append(r)
else :
pass
if f = = 0 :
print ( "Invalid Customer Id" )
n = int ( input ( "0-BACK\n ->" ))
if n = = 0 :
Home()
else :
exit()
# PAYMENT FUNCTION def Payment():
ph = str ( input ( "Phone Number: " ))
global i
f = 0
for n in range ( 0 ,i):
if ph = = phno[n] :
# checks if payment is
# not already done
if p[n] = = 0 :
f = 1
print ( " Payment" )
print ( " --------------------------------" )
print ( " MODE OF PAYMENT" )
print ( " 1- Credit/Debit Card" )
print ( " 2- Paytm/PhonePe" )
print ( " 3- Using UPI" )
print ( " 4- Cash" )
x = int ( input ( "-> " ))
print ( "\n Amount: " ,(price[n] * day[n]) + rc[n])
print ( "\n Pay For AnCasa" )
print ( " (y/n)" )
ch = str ( input ( "->" ))
if ch = = 'y' or ch = = 'Y' :
print ( "\n\n --------------------------------" )
print ( " Hotel AnCasa" )
print ( " --------------------------------" )
print ( " Bill" )
print ( " --------------------------------" )
print ( " Name: " ,name[n], "\t\n Phone No.: " ,phno[n], "\t\n Address: " ,add[n], "\t" )
print ( "\n Check-In: " ,checkin[n], "\t\n Check-Out: " ,checkout[n], "\t" )
print ( "\n Room Type: " ,room[n], "\t\n Room Charges: " ,price[n] * day[n], "\t" )
print ( " Restaurant Charges: \t" ,rc[n])
print ( " --------------------------------" )
print ( "\n Total Amount: " ,(price[n] * day[n]) + rc[n], "\t" )
print ( " --------------------------------" )
print ( " Thank You" )
print ( " Visit Again :)" )
print ( " --------------------------------\n" )
p.pop(n)
p.insert(n, 1 )
# pops room no. and customer id from list and
# later assigns zero at same position
roomno.pop(n)
custid.pop(n)
roomno.insert(n, 0 )
custid.insert(n, 0 )
else :
for j in range (n + 1 ,i):
if ph = = phno[j] :
if p[j] = = 0 :
pass
else :
f = 1
print ( "\n\tPayment has been Made :)\n\n" )
if f = = 0 :
print ( "Invalid Customer Id" )
n = int ( input ( "0-BACK\n ->" ))
if n = = 0 :
Home()
else :
exit()
# RECORD FUNCTION def Record():
# checks if any record exists or not
if phno! = []:
print ( " *** HOTEL RECORD ***\n" )
print ( "| Name | Phone No. | Address | Check-In | Check-Out | Room Type | Price |" )
print ( "----------------------------------------------------------------------------------------------------------------------" )
for n in range ( 0 ,i):
print ( "|" ,name[n], "\t |" ,phno[n], "\t|" ,add[n], "\t|" ,checkin[n], "\t|" ,checkout[n], "\t|" ,room[n], "\t|" ,price[n])
print ( "----------------------------------------------------------------------------------------------------------------------" )
else :
print ( "No Records Found" )
n = int ( input ( "0-BACK\n ->" ))
if n = = 0 :
Home()
else :
exit()
# Driver Code Home() |
Output:
WELCOME TO HOTEL ANCASA
1 Booking
2 Rooms Info
3 Room Service(Menu Card)
4 Payment
5 Record
0 Exit
->1
BOOKING ROOMS
Name: Joe Root
Phone No.: 5555522222
Address: 123, xyz street, city
Check-In: 12/03/2020
Check-Out: 15/03/2020
—-SELECT ROOM TYPE—-
1. Standard Non-AC
2. Standard AC
3. 3-Bed Non-AC
4. 3-Bed AC
Press 0 for Room Prices
->3
Room Type- 3-Bed Non-AC
Price- 4500
***ROOM BOOKED SUCCESSFULLY***
Room No. – 321
Customer Id – 45
0-BACK
->0
WELCOME TO HOTEL ANCASA
1 Booking
2 Rooms Info
3 Room Service(Menu Card)
4 Payment
5 Record
0 Exit
->4
Phone Number: 5555522222
Payment
——————————–
MODE OF PAYMENT
1- Credit/Debit Card
2- Paytm/PhonePe
3- Using UPI
4- Cash
-> 4
Amount: 13500
Pay For AnCasa
(y/n)
->y
——————————–
Hotel AnCasa
——————————–
Bill
——————————–
Name: Joe Root
Phone No.: 5555522222
Address: 123, xyz street, city
Check-In: 12/03/2020
Check-Out: 15/03/2020
Room Type: 3-Bed Non-AC
Room Charges: 13500
Restaurant Charges: 0
——————————–
Total Amount: 13500
——————————–
Thank You
Visit Again 🙂
——————————–
0-BACK
->0
WELCOME TO HOTEL ANCASA
1 Booking
2 Rooms Info
3 Room Service(Menu Card)
4 Payment
5 Record
0 Exit
->5
*** HOTEL RECORD ***
| Name | Phone No. | Address | Check-In | Check-Out | Room Type | Price |
———————————————————————————————————————-
| Joe Root | 5555522222 | 123, xyz street, city | 12/03/2020 | 15/03/2020 | 3-Bed Non-AC | 4500
———————————————————————————————————————-
0-BACK
->