0% found this document useful (0 votes)
23 views

Project Introduction

Uploaded by

Pinki Drolia
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views

Project Introduction

Uploaded by

Pinki Drolia
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 49

2024 - 25

Certificate
This is to certify that ________________ of class Xll Sc. has
successfully completed the Informatic Practices project on the topic
“Hotel Management System”, as per guidelines of Class Xll Board
Examination conducted by CBSE. It is further certified that this project
is individual and bona fide work of the candidate.

Board Registration Number : ____________________________

Board Roll Number : _____________________

School Roll Number : ________________________

Teacher’s Name : _____________________________

Internal Examiner External Examiner

___________________________ _________________________

Principal

_____________________________
Acknowledgement

I would like to express my gratitude to respected


teacher Mrs. Mayuri Joshi Ma’am as well as our principal
Mrs. Monika Bhatia Ma’am who gave us the golden
opportunity to do this wonderful project. Their wonderful
guidance and motivation helped me to understand the
intricate issues involved in making this project and its
effective presentation.

While doing this project, I learnt lots of things and


moreover I got lot of inspiration and ideas for my future
also.

Finally, words are not sufficient to express my gratitude


to my parents and my friends who helped and supported
me a lot in completing this project within the limited time
period.
INTRODUCTION
HMS is a type of properly management system that facilitates the management of hotel
management of operations and functions; main operations such as front office, sales,
planning and accounting.

General Hotel Management software aims to automate functions such as:-

1. Guest Booking
2. Guest Details
3. Point of sale
4. Telephony
5. Accounts receivable
6. Sales and Marketing
7. Banquets
8. Event Management
9. And many more features

OBJECTIVES OF THE PROJECT


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 programming skills
helps in developing a good software.

 Write programs utilizing modern software tools.


 Apply object oriented programming principles effectively when developing small
to medium sized projects.
 Write effective procedural code to solve small to medium sized problems.
 Students will demonstrate a breadth of knowledge in computer science, as
exemplified in the areas of systems, theory and software development.
 Students will demonstrate ability to conduct, requiring writing and presentation
skill which exemplify scholarly.
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 disk of the computer.

One has to use the data management software, software has been an ascent in
atomization various organisations. Many software products working are 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 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
computer and work can be done.

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 button. Moreover,
now it’s an age of computers and automating such an organization gives the better look.

SYSTEM DEVELOPMENT LIFE CYCLE


The systems development life cycle is a project management technique that
divides complex projects into smaller, more easily managed segments or phases. Segmenting
projects allows managers to verify the successful completion of project phases before
allocating resources to subsequent phases.

Software development projects typically include initiation, planning, design,


development, testing, implementation, and maintenance phases. However, the phases may be
divided differently depending on the organization involved.

For example, initial project activities might be designated as request,


requirements – definition, and planning phases, or initiation, concept – development, and
planning phases. End users of the system under development should be involved in reviewing
the output of each phase to ensure the system is being built to deliver the needed
functionality.

PHASES OF SYSTEM DEVELOPMENT


LIFE CYCLE

**** INITIATION PHASE


The Initiation Phase begins when a business sponsor identifies a need or an opportunity.
The purpose of the Initiation Phase is to :

 Identify and validate an opportunity to improve business accomplishments of the


organization or a deficiency related to a business need.
 Identify significant assumptions and constraints on solutions to that need.
 Recommend the exploration of alternative concepts and methods to satisfy the need
including questioning the need for technology, i.e., will a change in the business
process offer a solution?
 Assure executive business and executive technical sponsorship. The sponsor
designates a Project Manager and the business need is documented in a Concept
Proposal. The Concept Proposal includes information about the business process and
the relationship to the Agency / Organization.
 Infrastructure and the strategic Plan. A successful Concept Proposal results in a
Project Management Charter which outlines the authority of the project manager
to begin the project.

Careful oversight is required to ensure projects support strategic business


objectives and resources are effectively implemented into an organization’s enterprise
architecture. The initiation phase begins when an opportunity to add, improve, or correct
a system is identified and formally requested through the presentation of a business case.
The business case should, at a minimum, describe a proposal’s purpose, identify expected
Benefits, and explain how the proposed system supports one of the organization’s business
strategies. The business should also identify alternative solutions and detail as many
informational, functional, and network requirements as possible.

**** SYSTEM CONCEPT DEVELOPMENT PHASE


The System Concept Development Phase begins after a business need or opportunity is
validated by the Agency/Organization Program Leadership and the Agency/Organization
CIO.

The purpose of the System Concept Development Phase is to :

 Determine the feasibility and appropriateness of the alternatives.


 Identify system interfaces.
 Identify basic functional and data requirements to satisfy the business need.
 Establish system boundaries; identify goals, objectives, critical success factors,
and performance measures.
 Evaluate costs and benefits of alternative approaches to satisfy the basic functional
requirements.
 Assess project risks.
 Identify and initiate risk mitigation actions, and develop high – level technical
architecture, process models, data models, and a concept of operations. This phase
explores potential technical solutions within the context of the business need.
 It may include several trade – off decisions such as the decision to use COTS
software products as opposed to developing custom software or reusing software
components, or the decision to use an incremental delivery versus a complete,
onetime deployment.
 Construction of executable prototypes is encouraged to evaluate technology to
support the business process. The System Boundary Document serves as an
important reference document to support the Information Technology Project
Request (ITPR) process.
 The ITPR must be approved by the state CIO before the project can move forward.

PICTORIAL REPRESENTATION OF
SDLC

**** PLANNING PHASE


The planning phase is the most critical step in completing development,
acquisition, and maintenance projects. Careful planning, particularly in the early stages of a
project, is necessary to coordinate activities and manage project risks effectively. The
depth and formality of project plans should be commensurate with the characteristics
and risks of a given project. Project plans refine the information gathered during the
initiation phase by further identifying the specific activities and resources required to
complete a project.
A critical part of a project manager’s job is to coordinate discussions between
user, audit, security, design, development, and network requirements as possible. During
this phase, a plan is developed that documents the approach to be used and includes a
discussion of methods, tools, tasks, resources, project schedules, and user input. Personnel
assignments, costs, project schedule, and target dates are established.

A Project Management Plan is created with components related to acquisition,


planning, configuration management planning, quality assurance planning, concept of
operations, system security, verification and validation, and systems engineering
management planning.

**** REQUIREMENTS ANALYSIS 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
a level 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 Master Plan.

The purposes of this phase are to :

 Further define and refine the functional and data requirements and document
them in the Requirements Documents.
 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


The design phase involves converting the informational, functional, and network
requirements identified during the initiation and planning phases into unified design
specifications that developers use to script programs during the development phase.
Program designs are constructed in various ways. Using a top – down approach, designers
first identify and link major program components and interfaces, then expand design
layouts as they identify and link smaller subsystems and connections. Using a bottom – up
approach, designers first identify and link minor program components and interfaces, then
expand design layouts as they identify and link larger systems and connections.
Contemporary design techniques often use prototyping tools that build mock – up designs of
items such as application screens, database layouts, and system architectures. End users,
designers, developers, database managers, and network administrators should review and
refine the prototyped designs in an iterative process until they agree on an acceptable
design. Audit, security, and quality assurance personnel should be involved in the review
and approval process. During this phase, the system is designed to satisfy the functional
requirements identified in the previous phase. Since problems in the design phase could be
very expensive to solve in the later stage of the software development, a variety of
elements are considered in the design to migrate risk.

These include :

 Identifying potential risks and defining mitigating design features.


 Performing a security risk assessment.
 Developing a conversion plan to migrate current data to the new system.
 Determining the operating environment.
 Defining major subsystems and their inputs and outputs.
 Allocating processes to resources.
 Preparing detailed logic specifications for each software module. The result is a
draft System Design Document which captures the preliminary design for the
system.
 Everything requiring user input or approval is documented and reviewed by the user.
Once these documents have been approved by the Agency CIO and Business Sponsor,
the final System Design Document is created to serve as a Critical/ Detailed Design
for the system.
 This document receives a rigorous review by Agency technical and functional
representatives to ensure that it satisfies the business requirements. Concurrent
with the development of the system design, the Agency Project Manager begins
development of the Implementation Plan, Operations and Maintenance Manual, and
the Training Plan.
**** DEVELOPMENT PHASE
The development phase involves converting design specifications into
executable programs. Effective development standards include requirements that
programmers and the other project participants discuss design specifications before
programming begins. The procedures help ensure programmers clearly understand program
designs and functional requirements. Programmers use various techniques to develop
computer programs. The large transaction oriented programs associated with financial
institutions have traditionally been developed using procedural programming techniques.
Procedural programming involves the line – by – line scripting of logical instructions that
are combined to form a program. Effective completion of the previous stages is a key
factor in the success of the Development phase. The Development phase consists of :

 Translating the detailed requirements and design into system components.


 Testing individual elements (units) for usability.
 Preparing for integration and testing of the IT system.

**** INTEGRATION AND TEST PHASE


 Subsystem integration, system security, and user acceptance testing is conducted
during the integration and test phase. The user, with those responsible for quality
assurance, validates that the functional requirements, as defied in a functional
requirements document, are satisfied by the developed or modified system. OIT
Security staff assess the system security and issue a security certification and
accreditation prior to installation/implementation.

Multiple levels of testing are performed, including :

 Testing at the development facility by the contractor and possibly supported by end
users.
 Testing as a developed system wit end users working together with contract
personnel.
 Operational testing by the end user alone performing all functions.
Requirements are traced throughout testing, a final Independent Verification &
Validation evaluation is performed and all documentation is reviewed and accepted
prior to acceptance of the system.
**** 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 user requirements.

**** OPERATIONS AND MAINTENANCE PHASE


The system operation is ongoing. The system is monitored for continued
performance in accordance with user requirements and needed system modifications are
incorporated. Operations continue as long as the system can be effectively adapted to
respond to the organisation’s needs. When modifications or changes are identified, the
system may re enter the planning phase.

The purpose of this phase is to :

 Operate, maintain, and enhance the system.


 Certify that the system can process sensitive information.
 Conduct periodic assessments of the system to ensure the functional requirements
continue to be satisfied.
 Determine when the system needs to be modernized, replaced, or retired.
HARDWARE AND SOFTWARE
REQUIREMENTS
1. OPERATING SYSTEM : WINDOWS 7 AND ABOVE
2. ROCESSOR : PENTIUM(ANY) OR AMD
ATHALON(3800+-4200+DUAL CORE)

3. MOTHERBOARD : 1.845 OR 915,995 FOR PENTIUM OR

MSI

K9MM-VV VIA K8M800+8237R PLUS

CHIPSET FOR AMD ATHALON

4. RAM : 512 MB+


5. Hard Disk : SATA 40 GB OR ABOVE
6. CD/DVD r/w multi drive combo : (If back up required)
7. FLOPPY DRIVE 1.44 MB : (If back up required)
8. MONITOR 14.1 or 15-17 inch
9. Key board and mouse
10. Printer : (If print is required – [Hard copy])

SOFTWARE REQUIREMENTS
Windows OS
Python
MySQL connector module
pandas library
matplotlib
MySQL
BRIEF OVERVIEW OF THE SOFTWARE
REQUIRED
**** Python
Python is a high-level, general-purpose programming language known for its
simplicity and readability, making it one of the most popular programming languages today.
Created by Guido van Rossum and first released in 1991, Python has grown into a versatile
tool used in various domains, from web development to data analysis, artificial intelligence
(AI), automation, and more.

Key Features of Python:

1. Simple and Readable Syntax: Python's syntax is designed to be clean and easy to
understand, resembling plain English, which reduces the learning curve for beginners.
2. Interpreted Language: Python is an interpreted language, meaning you can execute
code line-by-line, which makes debugging easier.
3. Dynamically Typed: Variables in Python do not need explicit declaration of their
types; the interpreter automatically determines the type based on the value
assigned.
4. Object-Oriented: Python supports object-oriented programming (OOP) paradigms,
which help organize code into reusable and modular structures (classes and objects).
5. Extensive Standard Library: Python comes with a vast standard library that supports
everything from file handling, internet protocols, and regular expressions to GUI
development, making it easy to develop applications.
6. Cross-Platform: Python is cross-platform, meaning code written on one operating
system (e.g., Windows) can be run on another (e.g., macOS or Linux) without changes.
7. Large Community and Ecosystem: Python has an extensive ecosystem of libraries
and frameworks, such as NumPy for numerical computations, Django for web
development, and TensorFlow for machine learning. The active community ensures
continuous updates and support.

**** PANDAS LIBRARY


Pandas is a powerful and widely used data manipulation and analysis library in
Python, primarily designed to work with structured data like tables. It provides data
structures and functions needed to efficiently handle large datasets, making it
indispensable for data analysis, data wrangling, and data visualization tasks. Pandas is
especially popular in fields like data science, machine learning, finance, and academic
research.

Key Features of Pandas:

1. Data Structures:
o Series: A one-dimensional array-like structure, similar to a list or a column in a
spreadsheet. It can hold any data type and has a labelled index, making data
retrieval efficient.
o DataFrame: A two-dimensional table-like structure, similar to an Excel
spreadsheet or SQL table. It consists of rows and columns, each column being
a Series. The DataFrame is the most commonly used data structure in Pandas.
2. Data Manipulation:
o Pandas allows you to load, clean, manipulate, and analyze large datasets easily.
You can handle missing data, filter rows and columns, group data, and even
join/merge datasets.
3. Handling Missing Data:
o Pandas provides methods to handle missing or null values, including filling
missing values (fillna()), dropping missing values (dropna()), and replacing
values (replace()).
4. Data Indexing and Selection:
o Pandas offers powerful indexing and selection methods, like .loc[], .iloc[],
and .at[], which make it easy to access specific rows and columns in a
DataFrame.
5. Aggregation and Grouping:
o Pandas provides methods like groupby() to group data by one or more keys,
allowing for efficient data aggregation and summary statistics (like mean, sum,
count, etc.).
6. Data Cleaning:
o You can perform tasks such as removing duplicates, renaming columns, replacing
or removing values, transforming data types, and reshaping data using methods
like pivot() and melt().
7. Data Import and Export:
o Pandas can easily read and write data from multiple file formats, such as CSV,
Excel, JSON, HTML, and SQL databases. Functions like read_csv() and
to_excel() make it seamless to load and save data.
8. Time Series Support:
o Pandas has extensive support for time series data, including functions to
resample, shift, and handle date ranges.
o
9. Integration with Other Libraries:
o Pandas works well with other data science libraries like NumPy, Matplotlib, and
Seaborn, allowing for efficient data manipulation, analysis, and visualization.

**** MATPLOTLIB LIBRARY


Matplotlib is a widely used data visualization library in Python that allows you
to create static, animated, and interactive plots. It is highly customizable, making it
suitable for creating a wide range of visual representations, including line plots, bar
charts, scatter plots, histograms, and even complex visualizations like 3D plots.

Key Features of Matplotlib:

1. Versatile Plotting: Matplotlib supports a variety of plot types, including line plots, bar
charts, scatter plots, histograms, pie charts, error bars, and box plots. This makes it
suitable for visualizing different kinds of data.
2. Highly Customizable: Almost every aspect of a plot can be customized in Matplotlib,
such as the colour, style, labels, titles, legends, axes, ticks, and even the layout. This
flexibility allows you to create publication-quality visualizations.
3. Subplots and Grid Layouts: Matplotlib allows you to create multiple plots in a single
figure using subplots, which can be arranged in various grid layouts, making it
easier to compare multiple datasets side by side.
4. Interactive Visualizations: With the integration of matplotlib.pyplot and tools like
Jupyter notebooks, Matplotlib provides support for interactive visualizations,
where you can zoom, pan, and update plots dynamically.
5. Integration with Other Libraries: Matplotlib integrates well with other data
analysis and scientific computing libraries such as NumPy, Pandas, and Seaborn,
allowing you to visualize data directly from data structures like Pandas
DataFrames or NumPy arrays.
6. 3D Plotting: With the use of the mplot3d toolkit, Matplotlib can generate 3D
visualizations, which are useful for representing data with three dimensions.
7. Exporting and Sharing: Matplotlib allows you to save visualizations in a variety of
formats, including PNG, PDF, SVG, and more, making it easy to share your plots
across different platforms.

**** PYMYSQL LIBRARY


PyMySQL is a Python library that allows you to interact with MySQL databases. It
provides a way to connect to a MySQL server, execute SQL queries, retrieve data, and
manage database transactions from within your Python code. PyMySQL is widely used in
applications where MySQL is the backend database, especially in web development, data
science, and any application requiring database interaction.

Key Features of PyMySQL:

1. Database Connectivity: PyMySQL enables you to establish a connection between


your Python application and a MySQL server, allowing you to perform various
database operations like reading, writing, and updating data.
2. Execute SQL Queries: You can run standard SQL queries such as SELECT,
INSERT, UPDATE, and DELETE to manipulate the data stored in your MySQL
databases.
3. Prepared Statements: PyMySQL supports the use of prepared statements, which
allows you to safely pass user inputs into SQL queries without risking SQL injection
attacks.
4. Transactions Management: PyMySQL allows you to manage database transactions,
ensuring that a series of operations either fully succeed or fail together, providing
data consistency.
5. Handling Large Datasets: PyMySQL provides methods to retrieve large datasets
efficiently, by fetching data in chunks, which is useful for applications working with
large databases.
6. Compatibility: PyMySQL is compatible with Python’s DB-API 2.0 standard, which
makes it easy to switch between other database libraries or frameworks.

**** MySQL
MySQL is an open-source relational database management system (RDBMS)
that is widely used for storing, managing, and retrieving data. Developed and maintained by
Oracle Corporation, MySQL uses Structured Query Language (SQL) for database
management, making it popular for web applications, data warehousing, and many other
types of database-driven applications.

Key Features of MySQL:

1. Relational Database Management: MySQL organizes data into tables (rows and
columns) and supports relationships between tables, such as one-to-one, one-to-many,
and many-to-many, allowing for efficient data structuring and querying.
2. SQL-Based:
o MySQL uses Structured Query Language (SQL), a standard language for
managing and manipulating databases. SQL commands like SELECT, INSERT,
UPDATE, DELETE, and JOIN are used to interact with the data.
3. Open Source:
o MySQL is open source, meaning it’s free to use and has a large developer
community contributing to its development. You can also find a paid
enterprise version with additional features and support.
4. Cross-Platform:
o MySQL works on a variety of platforms, including Windows, macOS, and
Linux, making it suitable for cross-platform applications.
5. Performance and Scalability:
o MySQL is known for its speed and reliability, even when handling large
amounts of data. It can scale to handle enterprise-level databases with
millions of rows.
6. Storage Engines:
o MySQL supports multiple storage engines, such as InnoDB (which supports
transactions and foreign keys) and MyISAM (known for speed and simplicity).
This flexibility allows you to choose the right engine based on your use case.
7. Transactions:
o MySQL supports transactions, which allow you to execute a series of SQL
operations as a single unit. If any operation fails, you can roll back the entire
transaction, ensuring data integrity.
o
8. Replication and Clustering:
o MySQL supports replication, where data from one MySQL database (master)
is copied to another (slave) for backup, performance, or availability purposes.
It also supports clustering for high availability and load balancing.
9. Backup and Recovery: MySQL has tools for database backups, recovery, and
replication, making it suitable for mission-critical applications where data safety is
paramount.
Screenshot
And Coding in
MySQL

 Creating a database
 Creating tables :
 Guest
 Staff
# Creating a database
mysql> create database hotel;

# Using the database


mysql> use hotel;

# Creating table guest


mysql> Create table guest(
-> guestid int,
-> nameofguest VARCHAR(50),
-> type_of_room VARCHAR(20),
-> nofdays int,
-> cidate date,
-> codate date,
-> room_no int,
-> source_of_booking VARCHAR(10),
-> netpay int,
-> PRIMARY KEY(guestid));

# Describe table guest


mysql> desc guest;
# Creating table staff
mysql> create table staff(
-> sid int,
-> sname VARCHAR(20),
-> department VARCHAR(15),
-> salary int,
-> Hdate date,
-> PRIMARY KEY(sid));

# Describe table staff


mysql> desc staff;
Coding
of the
program in
python
ans="yes"

def guest():
print("\t----> 1. Show all the records of guest ")
print("\t----> 2. Add records of guest")
print("\t----> 3. Search records ")
print("\t----> 4. Delete records of guest")
print("\t----> 5. Graphical representation ")
print("\t----> 6. 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("\t----> 1. Rooms booked ")
print("\t----> 2. Source of booking")
x=int(input("Enter the no. : "))
if x==1:
roomgraph()
elif x==2:
sobgraph()
elif x!=[1,2]:
print("\t\tINVAILD INPUT")

def roomgraph():
import pymysql
import matplotlib.pyplot as plt
d1=pymysql.connect(host="localhost",user="root",passwd="tiger",database="hotel")
c1=d1.cursor()
quer='''select count(*) from guest where type_of_room="Budget";'''
c1.execute(quer)
x=c1.fetchone()
lst=list(x)
quer='''select count(*) from guest where type_of_room="Elite";'''
c1.execute(quer)
y=c1.fetchone()
lst1=list(y)
quer='''select count(*) from guest where type_of_room="Royal";'''
c1.execute(quer)
z=c1.fetchone()
lst2=list(z)
quer='''select count(*) from guest where type_of_room="Ultra Royal";'''
c1.execute(quer)
a=c1.fetchone()
lst3=list(a)
lstt=lst+lst1+lst2+lst3
y=["Budget","Elite","Royal","Ultra Royal"]
plt.bar(y,lstt,width=0.50)
plt.xlabel("types of rooms")
plt.ylabel("no. of rooms")
plt.show()

def sobgraph():
import pymysql
import matplotlib.pyplot as plt
d1=pymysql.connect(host="localhost",user="root",passwd="tiger",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. of rooms")
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",passwd="tiger",database="hotel")
c1=d1.cursor()
query="select * from guest;"
df=pd.read_sql(query,d1)
print(df)

def addrecords():
import pymysql
import pandas as pd
d1=pymysql.connect(host="localhost",user="root",passwd="tiger",database="hotel")
c1=d1.cursor()
ans1="yes"
while ans1=="yes":
for i in range(1,5001):
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":
print ("\nWe have the following rooms for you :-")
print ("===> 1. Budget ----> Rs. 10000 + extra charges")
print ("===> 2. Elite ----> Rs. 15000 + extra charges")
print ("===> 3. Royal ----> Rs. 20000 + extra charges")
print ("===> 4. Ultra Royal ----> Rs. 25000 + extra charges")
print(" ")
v=input("Enter the type of room you want to book : ")
if v=="Budget":
an="no"
elif v=="Elite":
an="no"
elif v=="Royal":
an="no"
elif v=="Ultra Royal":
an="no"
else:
print("\t\tINVAILD INPUT")
r=int(input("Enter the no. of nights you want to stay : "))
ci=input("Enter the check in date : ")
co=input("Enter 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("\t\tINVALID INPUT")
ans2="yes"
if v=="Budget":
while ans2=="yes":
for i in range(1001,2001):
c=i
quer2="select * from guest where room_no=%d" %c
c1.execute(quer2)
if c1.rowcount==0:
ans2="no"
break
elif v=="Elite":
while ans2=="yes":
for i in range(2001,3001):
c=i
quer2="select * from guest where room_no=%d" %c
c1.execute(quer2)
if c1.rowcount==0:
ans2="no"
break
elif v=="Royal":
while ans2=="yes":
for i in range(3001,4001):
c=i
quer2="select * from guest where room_no=%d" %c
c1.execute(quer2)
if c1.rowcount==0:
ans2="no"
break
elif v=="Ultra Royal":
while ans2=="yes":
for i in range(4001,5001):
c=i
quer2="select * from guest where room_no=%d" %c
c1.execute(quer2)
if c1.rowcount==0:
ans2="no"
break
if v=="Budget":
b=(10000*r)+(10000*r*9/50)
elif v=="Elite":
b=(15000*r)+(15000*r*9/50)
elif v=="Royal":
b=(20000*r)+(20000*r*9/50)
elif v=="Ultra Royal":
b=(25000*r)+(25000*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("\t\tRECORD ADDED")
f=input("Want to see the added record : ")
if f=="yes":
quer="select * from guest where guestid=%d;"%x
c1.execute(quer)
rec=c1.fetchone()
gid,gname,roomtype,days,checkin,checkout,roomno,sourceofbooking,payment=rec
print("----->Guest Id = %d"%gid, "----->Guest Name = %s"%gname,
"----->Type of Room = %s"%roomtype, "----->No. of days booked = %d"%days,
"----->Check in date = %s"%checkin, "----->Check out date = %s"%checkout,
"----->Room _ No. alloted = %d"%roomno,
"----->Source of Booking = %s"%sourceofbooking, "----->Net Payment =
%d"%payment,sep="\n")
else:
print("\t\tTHANK YOU !!!! ")
def search():

import pymysql
import pandas as pd
d1=pymysql.connect(user="root",host="localhost",passwd="tiger",database="hotel")
c1=d1.cursor()
print("\t----> 1. Id ")
print("\t----> 2. Name ")
print("\t----> 3. Source of booking")
print("\t----> 4. Room no. ")
print("\t----> 5. date ")
print("\t----> 6. 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)
print(df)
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)
print(df)
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)
print(df)
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)
print(df)
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)
print(df)
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)
print(df)
else:
print("\t\tINVAILD INPUT")
def delete():
import pymysql

d1=pymysql.connect(host="localhost",user="root",passwd="tiger",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("\t\tRECORD DELETED")
else:
print("\t\tNO 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",passwd="tiger",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("\t----> 1. Name of guest ")
print("\t----> 2. Source of booking ")
print("\t----> 3. Date ")
print("\t----> 4. 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("\t\tRECORD 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("\t\tRECORD 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("\t\tRECORD 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="yes"
if y=="Budget":
while ans2=="yes":
for i in range(1001,2001):
c=i
quer2="select * from guest where room_no=%d" %c
c1.execute(quer2)
if c1.rowcount==0:
ans2="no"
break
elif y=="Elite":
while ans2=="yes":
for i in range(2001,3001):
c=i
quer2="select * from guest where room_no=%d" %c
c1.execute(quer2)
if c1.rowcount==0:
ans2="no"
break
elif y=="Royal":
while ans2=="yes":
for i in range(3001,4001):
c=i
quer2="select * from guest where room_no=%d" %c
c1.execute(quer2)
if c1.rowcount==0:
ans2="no"
break
elif y=="Ultra Royal":
while ans2=="yes":
for i in range(4001,5001):
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=="Budget":
b=10000*r[0]+(10000*r[0]*9/50)
elif y=="Elite":
b=15000*r[0]+(15000*r[0]*9/50)
elif y=="Royal":
b=20000*r[0]+(20000*r[0]*9/50)
elif y=="Ultra Royal":
b=25000+r[0]+(25000*r[0]*9/50)
quer2="update guest set netpay=%d where guestid=%d" %(b,guid)
c1.execute(quer2)
d1.commit()
print("\t\tRECORD CHANGED")
elif cr!=[1,2,3,4,5,6,7]:
print("\t\tINVAILD INPUT")
elif c1.rowcount==0:
print("\t\tNO RECORD FOUND TO CHANGE !!!!")

def staff():
print("\t----> 1. Show all the records of staff ")
print("\t----> 2. Add records of staff")
print("\t----> 3. Search records of staff ")
print("\t----> 4. Delete records of staff")
print("\t----> 5. Graphical representation")
print("\t----> 6. 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("\t----> 1. Department ")
print("\t----> 2. 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",passwd="tiger",database="hotel")
c1=d1.cursor()
quer="select count(*) from staff where department='management';"
c1.execute(quer)
x=c1.fetchone()
lst=list(x)
quer="select count(*) from staff where department='cleaning';"
c1.execute(quer)
y=c1.fetchone()
lst1=list(y)
quer="select count(*) from staff where department='service';"
c1.execute(quer)
z=c1.fetchone()
lst2=list(z)
lstt=lst+lst1+lst2
y=["management","cleaning","service"]
plt.bar(y,lstt)
plt.xlabel("department")
plt.ylabel("no. of staff")
plt.show()

def salgraph():
import pymysql
import matplotlib.pyplot as plt
d1=pymysql.connect(host="localhost",user="root",passwd="tiger",database="hotel")
c1=d1.cursor()
quer="select count(*) from staff where salary=10000;"
c1.execute(quer)
x=c1.fetchone()
lst=list(x)
quer="select count(*) from staff where salary=15000;"
c1.execute(quer)
y=c1.fetchone()
lst1=list(y)
quer="select count(*) from staff where salary=20000;"
c1.execute(quer)
z=c1.fetchone()
lst2=list(z)
lstt=lst+lst1+lst2
y=["10000","15000","20000"]
plt.bar(y,lstt)
plt.xlabel("salary")
plt.ylabel("no.ofstaff")
plt.show()

def addrecordss():
import pymysql
d1=pymysql.connect(host="localhost",user="root",passwd="tiger",database="hotel")
c1=d1.cursor()
print("\t----> 1. Cleaning ")
print("\t----> 2. Service ")
print("\t----> 3. Management")
print("")
ans1="yes"
while ans1=="yes":
for i in range(1,201):
x=i
quer2="select * from staff where sid=%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=10000
elif a=="Service":
j=15000
elif a=="Management":
j=20000
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=="yes":
quer="select * from staff where sid=%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,
"----->Hire Date = %s"%Hdate,sep="\n")
else:
print("\t\tTHANK YOU !!!!")

def deleterec():
import pymysql
d1=pymysql.connect(host="localhost",user="root",passwd="tiger",database="hotel")
c1=d1.cursor()
x=int(input("Enter the id : "))
quer="delete from staff where sid=%d;" %x
rowcount=c1.execute(quer)
if rowcount>0:
d1.commit()
print("\t\tRECORD DELETED")
else:
print("\t\tNO RECORD FOUND !!!!")
def searchrec():
import pymysql
import pandas as pd
d1=pymysql.connect(host="localhost",user="root",passwd="tiger",database="hotel")
c1=d1.cursor()
print("\t----> 1. Id ")
print("\t----> 2. Name ")
print("\t----> 3. Dept ")
print("\t----> 4. Salary ")
print("\t----> 5. 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 sid='%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 sname='%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 department='%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 salary=%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 Hdate='%s';" %x
df=pd.read_sql(quer,d1)
print(df)
elif cho!=[1,2,3,4,5]:
print("\t\tINVAILD INPUT")

def changerec():
import pymysql
import pandas as pd
d1=pymysql.connect(user="root",host="localhost",passwd="tiger",database="hotel")
c1=d1.cursor()
sid=int(input("Enter the id : "))
quer="select * from staff where sid=%d" % sid
dfgg=pd.read_sql(quer,d1)
print(dfgg)
c1.execute(quer)
if c1.rowcount>0:
print("\t----> 1. Name ")
print("\t----> 2. Department ")
print("\t----> 3. Hire date")
cr=int(input("Enter the no : "))
if cr==1:
y=input("Enter the name : ")
quer="update staff set sname='%s' where sid=%d" %(y,sid)
c1.execute(quer)
d1.commit()
print("\t\tRECORD UPDATED")
elif cr==2:
y=input("Enter the deparment : " )
quer="update staff set department='%s' where sid=%d" %(y,sid)
c1.execute(quer)
d1.commit()
if y=="Cleaning":
j=10000
elif y=="Service":
j=15000
elif y=="Managment":
j=20000
quer1="update staff set salary='%d' where sid=%d" %(j,sid)
c1.execute(quer1)
d1.commit()
print("\t\tRECORD UPDATED")
elif cr==3:
y=input("enter the hiredate : ")
quer="update staff set Hdate='%s'where sid=%d" %(y,sid)
c1.execute(quer)
d1.commit()
print("\t\tRECORD UPDATED")
elif c1.rowcount==0:
print("\t\tINVAILD INPUT")

def allrecords():
import pymysql
import pandas as pd
d1=pymysql.connect(host="localhost",user="root",passwd="tiger",database="hotel")
c1=d1.cursor()
quer="select * from staff;"
df=pd.read_sql(quer,d1)
print(df)

print("****************************** PINK PEARL RESORT ******************************")


print("**************************** HOTEL MANAGEMENT SYSTEM **************************")
print("********************* WE ARE ALWAYS AT YOUR SERVICE ************************")
usr=input("\n\t----> Enter the correct username : ")
psswd=input("\n\t----> Enter the correct password : ")

while ans=="yes":
if usr=="Princy" and psswd=="1716":
print("")
print("")
print("Select what are you interested in : ")
print("\t\t\t-->1.Guest records ")
print("\t\t\t-->2.Staff records ")
print("\t\t\t-->3.Exit")
print("")
x=int(input("Enter your choice : "))
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 of the
program
## Login page

## Sub Menu including the interest

## Options in Guest Record

## All records of the guest

## Adding a new record


## See the new record added

## Searching the record

## Searching the record on the basis of Id


## Searching the record on the basis of Name

## Searching on the basis of source of booking

## Searching on the basis of Room No.

## Searching on the basis of Check in Date

## Searching on the basis of Type of Room Booked


## Deleting a record

## Graphical representation of the Rooms Booked


## Graphical representation on the source of booking

## Updating the records


$$ Adding a new name

$$ Adding a new source of booking

$$ Adding a new date

$$ Adding a new room type

## Options in Staff Record

## All records of the staff


## Adding a new record

## See the new record added

## Searching the record


## Searching the record on the basis of id

## Searching the record on the basis of name

## Searching the record on the bais of department

## Searching the record on the basis of salary

## Searching the record on the basis of hiredate


## Deleting a record

## Graphical representation of the department


## Graphical representation of the salary

## Updating the records


$$ Adding a new name

$$ Adding a new department

$$ Adding a new hiredate


Bibliography
 www.scribd.com
 www.google.com
 www.wikipedia.com
 www.chatgpt.com
 www.slideshare.net
 www.youtube.com
 www.pinterest.com
 www.irctc.co.in
 Sumita Arora class 12th
Informatics Practices book
 NCERT Textbook class 12th

You might also like