Hotel Management
Hotel Management
This is to certify that “ARUSHI” of Class XII D has successfully completed the Information
Practices Project on the topic Hotel Management System, as per guidelines of Class XIIth
Board Examination conducted by CBSE.
It is further certified that this project is individual and bona fide work of candidate.
----------------------------------- ------------------------------
INDEX
TABLE OF CONTENTS [ T O C ]
01 ACKNOWLEDGEMENT
02 INTRODUCTION
04 PROPOSED SYSTEM
08 SCREEN SHOT
09 SOURCE CODE
12 BIBLIOGRAPHY
AKNOWLEDGMENT
Firstly, I would like to thank our subject teacher Mr. Ravidra Kumar for giving us
such wonderful project to do. Secondly, I would like to thank our principal for
granting the permission to make this project. Thirdly, I would also like to thank my
parents who helped me to arrange the materials for the project. Last but not the
least, I would also like to thank my friends who also helped me with this project.
INTRODUCTION
1. Guest Booking
2. Guest Details
3. Point of sale
4. Telephony
5. Accounts receivable
7. Banquets
8. Event Management
The objective of this project is to let the students apply the programming
knowledge into a real- world situation/problem and exposed the students how
PROPOSED SYSTEM
Today one cannot afford to rely on the fallible human beings of be really
wants to stand against today’s merciless competition where not to wise saying “to
err is human” no longer valid, it’s outdated to rationalize your mistake. So, to keep
pace with time, to bring about the best result without malfunctioning and greater
efficiency so to replace the unending heaps of flies with a much sophisticated hard
One has to use the data management software. Software has been an
now in markets, which have helped in making the organizations work easier and
efficiently. Data management initially had to maintain a lot of ledgers and a lot of
paper work has to be done but now software product on this organization has made
their work faster and easier. Now only this software has to be loaded on the
This prevents a lot of time and money. The work becomes fully automated
and any information regarding the organization can be obtained by clicking the
PLANNING PHASE
This phase formally defines the detailed functional user requirements using
high-level requirements identified in the Initiation, System Concept, and Planning
phases. It also delineates the requirements in terms of data, system performance,
security, and maintainability requirements for the system. The requirements are
defined in this phase to alevel of detail sufficient for systems design to proceed.
They need to be measurable, testable, and relate to the business need or
opportunity identified in the Initiation Phase. The requirements that will be used to
determine acceptance of the system are captured in the Test and Evaluation
MasterPlan.
Further define and refine the functional and data requirements and document
them in the Requirements Document,
Complete business process reengineering of the functions to be supported
(i.e., verify what information drives the business process, what information is
generated, who generates it, where does the information go, and who
processes it),
Develop detailed data and process models (system inputs, outputs, and the
process.
Develop the test and evaluation requirements that will be used to determine
acceptable system performance.
DESIGN PHASE
DEVELOPMENT PHASE
Testing as a deployed system with end users working together with contract
personnel
IMPLEMENTATION PHASE
This phase is initiated after the system has been tested and accepted by the
user. In this phase, the system is installed to support the intended business
functions. System performance is compared to performance objectives established
during the planning phase. Implementation includes user notification, user training,
installation of hardware, installation of software onto production computers, and
integration of the system into daily work processes. This phase continues until the
system is operating in production in accordance with the defined userrequirements.
MSI
SOFTWARE REQUIREMENTS:
Windows OS
Python
mysql connector module
panadas library
matplotlib
Screen Shot
1. Guest Table:
2. Staff Table:
Source Code
ans="y"
def guest():
print("\n1. show all the records of guest \n2.
add records of guest \n3. search records \n4. delete
records of guest \n5. Graphical representation \n6.
update the records")
x=int(input("Enter the choice of no:"))
if x==1:
showallrecords()
elif x==2:
addrecords()
elif x==3:
search()
elif x==4:
delete()
elif x==5:
guestgr()
elif x==6:
changerecord()
elif x!=[1,2,3,4,5,6]:
print("\t\tINVAILD INPUT")
def guestgr():
print("1. Rooms booked \n2. Source of booking")
x=int(input("enter the no:"))
if x==1:
roomgraph()
elif x==2:
sobgraph()
elif x!=[1,2]:
print("INVAILD INPUT")
def roomgraph():
import pymysql
import matplotlib.pyplot as plt
d1=pymysql.connect(host="localhost",user="root",passw
d="",database="hotel")
c1=d1.cursor()
quer='''select count(*) from guest where
type_of_room="single";'''
c1.execute(quer)
x=c1.fetchone()
lst=list(x)
quer='''select count(*) from guest where
type_of_room="double";'''
c1.execute(quer)
y=c1.fetchone()
lst1=list(y)
quer='''select count(*) from guest where
type_of_room="triple";'''
c1.execute(quer)
z=c1.fetchone()
lst2=list(z)
quer='''select count(*) from guest where
type_of_room="quad";'''
c1.execute(quer)
a=c1.fetchone()
lst3=list(a)
lstt=lst+lst1+lst2+lst3
y=["single","double","triple","quad"]
plt.bar(y,lstt,width=0.50)
plt.xlabel("types of rooms")
plt.ylabel("no.ofrooms")
plt.show()
def sobgraph():
import pymysql
import matplotlib.pyplot as plt
d1=pymysql.connect(host="localhost",user="root",passw
d="",database="hotel")
c1=d1.cursor()
quer='select count(*) from guest where
source_of_booking="online";'
c1.execute(quer)
x=c1.fetchone()
lst=list(x)
quer="select count(*) from guest where
source_of_booking='offline';"
c1.execute(quer)
y=c1.fetchone()
lst1=list(y)
lstt=lst+lst1
y=["online","offline"]
plt.bar(y,lstt,width=0.50)
plt.xlabel("source of booking")
plt.ylabel("no.ofrooms")
plt.show()
def showallrecords():
import pymysql
import pandas as pd
pd.set_option('display.expand_frame_repr',False)
d1=pymysql.connect(host="localhost",user="root",passw
d="",database="hotel")
c1=d1.cursor()
query="select * from guest;"
df=pd.read_sql(query,d1)
df=df.rename({"guestid":"id","nameofguest":"name","ty
pe_of_room":"type of
room","noofdays":"days","cidate":"check
in","codate":"check
out","room_no":"room","source_of_booking":"source of
booking","netpay":"net payment"},axis=1)
print(df)
def addrecords():
import pymysql
import pandas as pd
d1=pymysql.connect(host="localhost",user="root",passw
d="",database="hotel")
c1=d1.cursor()
ans1="yes"
while ans1=="yes":
for i in range(1,201):
x=i
quer2="select * from guest where
guestid=%d" %x
c1.execute(quer2)
if c1.rowcount==0:
ans1="no"
break
y=input("Enter the guest name:")
an="yes"
while an=="yes":
v=input("enter the type of room:")
if v=="single":
an="no"
elif v=="double":
an="no"
elif v=="triple":
an="no"
elif v=="quad":
an="no"
else:
print("invaild input")
r=int(input("enter the no. of days:"))
ci=input("enter the check in date:")
co=input("entr the check out date:")
ans3="yes"
while ans3=="yes":
a=input("Enter the source of booking:")
if a=="offline":
ans3="nooo"
elif a=="online":
ans3="nooo"
else:
print("invaild input")
ans2="ye"
if v=="single":
while ans2=="ye":
for i in range(1,51):
c=i
quer2="select * from guest where
room_no=%d" %c
c1.execute(quer2)
if c1.rowcount==0:
ans2="no"
break
elif v=="double":
while ans2=="ye":
for i in range(51,101):
c=i
quer2="select * from guest where
room_no=%d" %c
c1.execute(quer2)
if c1.rowcount==0:
ans2="no"
break
elif v=="triple":
while ans2=="ye":
for i in range(101,151):
c=i
quer2="select * from guest where
room_no=%d" %c
c1.execute(quer2)
if c1.rowcount==0:
ans2="no"
break
elif v=="quad":
while ans2=="ye":
for i in range(151,201):
c=i
quer2="select * from guest where
room_no=%d" %c
c1.execute(quer2)
if c1.rowcount==0:
ans2="no"
break
if v=="single":
b=2000*r+(2000*r*9/50)
elif v=="double":
b=4000*r+(4000*r*9/50)
elif v=="triple":
b=6000*r+(6000*r*9/50)
elif v=="quad":
b=8000*r+(8000*r*9/50)
quer="Insert into guest
values(%d,'%s','%s',%d,'%s','%s',%d,'%s',%d);"
%(x,y,v,r,ci,co,c,a,b)
c1.execute(quer)
d1.commit()
print("Record Added")
f=input("Want to see the added record:")
if f=="y":
pd.set_option('display.expand_frame_repr',False)
quer="select * from guest where
guestid=%d;"%x
df=pd.read_sql(quer,d1)
df1=df.rename({"guestid":"id","nameofguest":"name","t
ype_of_room":"type of
room","noofdays":"days","cidate":"check
in","codate":"check
out","room_no":"room","source_of_booking":"source of
booking","netpay":"net payment"},axis=1)
print(df1)
else:
print("Thank You")
def search():
import pymysql
import pandas as pd
d1=pymysql.connect(user="root",host="localhost",passw
d="",database="hotel")
c1=d1.cursor()
print("1. Id \n2. Name \n3. Source of booking
\n4. Room no. \n5. date \n6. Type of room")
cho=int(input("enter the no."))
if cho==1:
pd.set_option('display.expand_frame_repr',False)
x=int(input("enter the id:"))
quer="select * from guest where
guestid='%d';" %x
df=pd.read_sql(quer,d1)
df1=df.rename({"guestid":"id","nameofguest":"name","t
ype_of_room":"type of
room","noofdays":"days","cidate":"check
in","codate":"check
out","room_no":"room","source_of_booking":"source of
booking","netpay":"net payment"},axis=1)
print(df1)
elif cho==2:
pd.set_option('display.expand_frame_repr',False)
x=input("enter the name:")
quer="select * from guest where
nameofguest='%s';" %x
df=pd.read_sql(quer,d1)
df1=df.rename({"guestid":"id","nameofguest":"name","t
ype_of_room":"type of
room","noofdays":"days","cidate":"check
in","codate":"check
out","room_no":"room","source_of_booking":"source of
booking","netpay":"net payment"},axis=1)
print(df1)
elif cho==3:
pd.set_option('display.expand_frame_repr',False)
x=input("enter the source of booking:")
quer="select * from guest where
source_of_booking='%s';" %x
df=pd.read_sql(quer,d1)
df1=df.rename({"guestid":"id","nameofguest":"name","t
ype_of_room":"type of
room","noofdays":"days","cidate":"check
in","codate":"check
out","room_no":"room","source_of_booking":"source of
booking","netpay":"net payment"},axis=1)
print(df1)
elif cho==4:
pd.set_option('display.expand_frame_repr',False)
x=int(input("enter the room no:"))
quer="select * from guest where
room_no='%d';" %x
df=pd.read_sql(quer,d1)
df1=df.rename({"guestid":"id","nameofguest":"name","t
ype_of_room":"type of
room","noofdays":"days","cidate":"check
in","codate":"check
out","room_no":"room","source_of_booking":"source of
booking","netpay":"net payment"},axis=1)
print(df1)
elif cho==5:
pd.set_option('display.expand_frame_repr',False)
x=input("enter the date:")
quer="select * from guest where cidate='%s';"
%x
df=pd.read_sql(quer,d1)
df1=df.rename({"guestid":"id","nameofguest":"name","t
ype_of_room":"type of
room","noofdays":"days","cidate":"check
in","codate":"check
out","room_no":"room","source_of_booking":"source of
booking","netpay":"net payment"},axis=1)
print(df1)
elif cho==6:
pd.set_option('display.expand_frame_repr',False)
x=input("enter the type of room:")
quer="select * from guest where
type_of_room='%s'" %x
df=pd.read_sql(quer,d1)
df1=df.rename({"guestid":"id","nameofguest":"name","t
ype_of_room":"type of
room","noofdays":"days","cidate":"check
in","codate":"check
out","room_no":"room","source_of_booking":"source of
booking","netpay":"net payment"},axis=1)
print(df1)
def delete():
import pymysql
d1=pymysql.connect(host="localhost",user="root",passw
d="",database="hotel")
c1=d1.cursor()
x=int(input("enter the id:"))
quer="delete from guest where guestid=%d;" %x
rowcount=c1.execute(quer)
if rowcount>0:
d1.commit()
print("Record Deleted")
else:
print("NO RECORD FOUND")
def changerecord():
import pymysql
import pandas as pd
pd.set_option('display.expand_frame_repr',False)
d1=pymysql.connect(user="root",host="localhost",passw
d="",database="hotel")
c1=d1.cursor()
guid=int(input("enter the id:"))
quer="select * from guest where guestid=%d" %
guid
c1.execute(quer)
if c1.rowcount>0:
row=list(c1.fetchone())
df=pd.read_sql(quer,d1)
print(df)
print("\n1. nameofguest \n2. source of
booking \n3. date \n4. type of room")
cr=int(input("enter the no:"))
if cr==1:
y=input("enter the new name of guest:")
quer="update guest set nameofguest='%s'
where guestid=%d" %(y,guid)
c1.execute(quer)
d1.commit()
print("RECORD CHANGED")
elif cr==2:
y=input("enter the new source guest:")
quer="update guest set
source_of_booking='%s' where guestid=%d" %(y,guid)
c1.execute(quer)
d1.commit()
print("RECORD CHANGED")
elif cr==3:
y=input("enter the new date:")
quer="update guest set cidate='%s' where
guestid=%d" %(y,guid)
c1.execute(quer)
d1.commit()
print("RECORD CHANGED")
elif cr==4:
y=input("enter the new type of room:")
quer="update guest set type_of_room='%s'
where guestid=%d" %(y,guid)
c1.execute(quer)
d1.commit()
quer4="select nofdays from guest where
guestid=%d" %(guid)
c1.execute(quer4)
r=list(c1.fetchone())
ans2="ye"
if y=="single":
while ans2=="ye":
for i in range(1,51):
c=i
quer2="select * from guest
where room_no=%d" %c
c1.execute(quer2)
if c1.rowcount==0:
ans2="no"
break
elif y=="double":
while ans2=="ye":
for i in range(51,101):
c=i
quer2="select * from guest
where room_no=%d" %c
c1.execute(quer2)
if c1.rowcount==0:
ans2="no"
break
elif y=="triple":
while ans2=="ye":
for i in range(101,151):
c=i
quer2="select * from guest
where room_no=%d" %c
c1.execute(quer2)
if c1.rowcount==0:
ans2="no"
break
elif y=="quad":
while ans2=="ye":
for i in range(151,201):
c=i
quer2="select * from guest
where room_no=%d" %c
c1.execute(quer2)
if c1.rowcount==0:
ans2="no"
break
quer1="update guest set room_no='%d'
where guestid=%d" %(c,guid)
c1.execute(quer1)
d1.commit()
if y=="single":
b=2000*r[0]+(2000*r[0]*9/50)
elif y=="double":
b=4000*r[0]+(4000*r[0]*9/50)
elif y=="triple":
b=6000*r[0]+(6000*r[0]*9/50)
elif y=="quad":
b=8000+r[0]+(8000*r[0]*9/50)
quer2="update guest set netpay=%d where
guestid=%d" %(b,guid)
c1.execute(quer2)
d1.commit()
print("RECORD CHANGED")
elif cr!=[1,2,3,4,5,6,7]:
print("INVAILD INPUT")
elif c1.rowcount==0:
print("NO RECORD FOUND TO CHANGE")
def staff():
print("\n1. show all the records of staff \n2.
add records of staff\n3. search records of staff \n4.
delete records of staff \n5. Graphical representation
\n6. update the records")
x=int(input("Enter the choice of no."))
if x==1:
allrecords()
elif x==2:
addrecordss()
elif x==3:
searchrec()
elif x==4:
deleterec()
elif x==5:
staffgr()
elif x==6:
changerec()
elif x!=[1,2,3,4,5,6]:
print("\t\tINVAILD INPUT")
def staffgr():
print("1. Department \n2. Salary")
x=int(input("enter the no:"))
if x==1:
deptgraph()
elif x==2:
salgraph()
def deptgraph():
import pymysql
import matplotlib.pyplot as plt
d1=pymysql.connect(host="localhost",user="root",passw
d="",database="hotel")
c1=d1.cursor()
quer="select count(*) from staff where
dept='managment';"
c1.execute(quer)
x=c1.fetchone()
lst=list(x)
quer="select count(*) from staff where
dept='cleaning';"
c1.execute(quer)
y=c1.fetchone()
lst1=list(y)
quer="select count(*) from staff where dept='food
and beverages';"
c1.execute(quer)
z=c1.fetchone()
lst2=list(z)
lstt=lst+lst1+lst2
y=["managment","cleaning","food & beverages"]
plt.bar(y,lstt)
plt.xlabel("department")
plt.ylabel("no.ofstaff")
plt.show()
def salgraph():
import pymysql
import matplotlib.pyplot as plt
d1=pymysql.connect(host="localhost",user="root",passw
d="",database="hotel")
c1=d1.cursor()
quer="select count(*) from staff where sal=2000;"
c1.execute(quer)
x=c1.fetchone()
lst=list(x)
quer="select count(*) from staff where sal=4000;"
c1.execute(quer)
y=c1.fetchone()
lst1=list(y)
quer="select count(*) from staff where sal=6000;"
c1.execute(quer)
z=c1.fetchone()
lst2=list(z)
lstt=lst+lst1+lst2
y=["2000","4000","6000"]
plt.bar(y,lstt)
plt.xlabel("salary")
plt.ylabel("no.ofstaff")
plt.show()
def addrecordss():
import pymysql
d1=pymysql.connect(host="localhost",user="root",passw
d="",database="hotel")
c1=d1.cursor()
print("\n1. cleaning \n2. food and beverages \n3.
managment")
print("")
ans1="yes"
while ans1=="yes":
for i in range(1,201):
x=i
quer2="select * from staff where id=%d"
%x
c1.execute(quer2)
if c1.rowcount==0:
ans1="no"
break
y=input("Enter the name:")
a=input("Enter the department:")
if a=="cleaning":
j=2000
elif a=="food and beverages":
j=4000
elif a=="managment":
j=6000
z=input("Enter the hiredate:")
quer="Insert into staff
values(%d,'%s','%s',%d,'%s');" %(x,y,a,j,z)
c1.execute(quer)
d1.commit()
print("Record Added")
f=input("Want to see the added record:")
if f=="y":
quer="select * from staff where id=%d;"%x
c1.execute(quer)
rec=c1.fetchone()
sid,sname,dept,sal,Hdate=rec
print("staff id= %d"%sid,"staff name=
%s"%sname,"depatment= %s"%dept,"salary=
%d"%sal,"hireDate= %s"%Hdate,sep="\n")
else:
print("THANK YOU")
def deleterec():
import pymysql
d1=pymysql.connect(host="localhost",user="root",passw
d="",database="hotel")
c1=d1.cursor()
x=int(input("enter the id:"))
quer="delete from staff where id=%d;" %x
rowcount=c1.execute(quer)
if rowcount>0:
d1.commit()
print("Record Deleted")
else:
print("NO RECORD FOUND")
def searchrec():
import pymysql
import pandas as pd
d1=pymysql.connect(host="localhost",user="root",passw
d="",database="hotel")
c1=d1.cursor()
print("\n1. id \n2. name \n3. dept \n4. salary
\n5. hiredate")
cho=int(input("enter the no."))
if cho==1:
pd.set_option('display.expand_frame_repr',False)
x=int(input("enter the id:"))
quer="select * from staff where id='%d';" %x
df=pd.read_sql(quer,d1)
print(df)
elif cho==2:
pd.set_option('display.expand_frame_repr',False)
x=input("enter the name:")
quer="select * from staff where name='%s';"
%x
df=pd.read_sql(quer,d1)
print(df)
elif cho==3:
pd.set_option('display.expand_frame_repr',False)
x=input("enter the dept:")
quer="select * from staff where dept='%s';"
%x
df=pd.read_sql(quer,d1)
print(df)
elif cho==4:
pd.set_option('display.expand_frame_repr',False)
x=int(input("enter the salary:"))
quer="select * from staff where sal=%d;" %x
df=pd.read_sql(quer,d1)
print(df)
elif cho==5:
pd.set_option('display.expand_frame_repr',False)
x=input("enter the hire date:")
quer="select * from staff where
hiredate='%s';" %x
df=pd.read_sql(quer,d1)
print(df)
elif cho!=[1,2,3,4,5]:
print("invaild input")
def changerec():
import pymysql
import pandas as pd
d1=pymysql.connect(user="root",host="localhost",passw
d="",database="hotel")
c1=d1.cursor()
sid=int(input("enter the id:"))
quer="select * from staff where id=%d" % sid
dfgg=pd.read_sql(quer,d1)
print(dfgg)
c1.execute(quer)
if c1.rowcount>0:
print("1. id \n2. name \n3. department \n4.
hire date")
cr=int(input("enter the no:"))
if cr==1:
ans1="yes"
while ans1=="yes":
y=int(input("enter the id:"))
quer1="select * from staff where
id=%d" %y
c1.execute(quer1)
if c1.rowcount>0:
print("DUPLICATE INPUT")
elif c1.rowcount==0:
ans1="no"
quer="update staff set id=%d where id=%d"
%(y,sid)
c1.execute(quer)
d1.commit()
print("RECORD UPDATED")
elif cr==2:
y=input("enter the name:")
quer="update staff set name='%s' where
id=%d" %(y,sid)
c1.execute(quer)
d1.commit()
print("RECORD UPDATED")
elif cr==3:
y=input("enter the deparment:")
quer="update staff set dept='%s' where
id=%d" %(y,sid)
c1.execute(quer)
d1.commit()
if y=="cleaning":
j=2000
elif y=="food and beverages":
j=4000
elif y=="managment":
j=6000
quer1="update staff set sal='%d' where
id=%d" %(j,sid)
c1.execute(quer1)
d1.commit()
print("RECORD UPDATED")
elif cr==4:
y=input("enter the hiredate:")
quer="update staff set hiredate='%s'
where id=%d" %(y,sid)
c1.execute(quer)
d1.commit()
print("RECORD UPDATED")
elif c1.rowcount==0:
print("invalid input")
def allrecords():
import pymysql
import pandas as pd
d1=pymysql.connect(host="localhost",user="root",passw
d="",database="hotel")
c1=d1.cursor()
quer="select * from staff;"
df=pd.read_sql(quer,d1)
print(df)
while ans=="y":
print("* * * * ******* **** *
*")
print("* * * * * * * * *
*")
print("******* * * * * * * *
*")
print("* * * * * * * * *
*")
print("* * * ****** * **** *
*")
print("1.Guest records \n2.Staff records
\n3.Exit")
x=int(input("enter the no:"))
if x==1:
guest()
elif x==2:
staff()
elif x==3:
quit()
elif x!=[1,2,3]:
print("\t\tINVAILD INPUT")
ans=input("want to continue:")
Output Screens:
1. ID:
2. Name:
3. Source of Booking:
4. Room no:
5. Date:
6. Type of Room:
4. Delete records:
5. Graphical Representation:
1. Rooms booked
Input:
Output:
2. Source of Booking:
Input:
Output:
6. Update the records:
1. Name of guest:
2. Source of booking:
3. Date:
4. Type of Room:
Staff Data Handling
1. Show all records:
2. Add records:
3. Search the records:
1. ID:
2. Name:
3. Department:
4. Salary:
5. Hire Date:
4. Delete record:
5. Graphical Representation:
Input:
Output:
Input:
Output:
6. Update the records:
1. ID:
2. Name:
3. Department:
4. Hire Date:
7. Exit:
Bibliography:
Both Print Media and Electronic Media were helpful while making this project.
The book that I used are:-
Information Practices by Sumita Arora
Information Practices by NCERT
The websites that I used were:
www.python.com
www.mysql.org