RIDAY - Project Synopsis
RIDAY - Project Synopsis
6 Use of Technology 22
7 Source Code 29
8 Sample Output 57
10 Bibliography 70
Page 1 of 70
ACKNOWLEGMENT
I would like to express my special thanks to my teacher Mrs.
Lekshmi Sunil who gave me this golden opportunity to do
this Computer Science project, which engaged me into a lot
of research and I came to learn a lot of new things. Without
their guidance and support it would have been impossible to
complete this project.
Secondly, I would also like to thank my friends who helped
me clear my doubts, rectify errors and help me complete the
project. I designed the project not only for the sake of
marks, but also for applying the programming knowledge I
gained at school into practical life.
Once again thanks to all who helped me in doing this
project.
Page 2 of 70
TRAVEL BOOKING
SYSTEM
2021-
22
Page 3 of 70
AIM OF THE
PROJECT
Page 4 of 70
In today’s world, everything is happening online. In fact, even
holidays and travel bookings are done online!
Welcome to Paradise Travel and Tourism! This software is a
travel booking system which allows you book your holiday
choosing from three destinations, namely New York, London
and Paris along with your flight and hotel. It also acts like a
register and stores the details of your booking such as Full
Name, mobile number, passport number, email ID,
destination of holiday, flight, hotel, departure date, and
arrival date for future reference. If you have any query or
feedback to provide, you would be able to input it as well, as
feedback is always appreciated.
Hence, this software makes it convenient for a person to
book his/her holiday or travel.
Page 5 of 70
FUNCTIONS AND
MODULES
Page 6 of 70
MODULES
import mysql.connecter:
Page 8 of 70
FUNCTIONS
connect():
execute():
This function will return all the rows from the result set in the
form of a tuple containing therecords.
commit():
Page 9 of 70
BRIEF DESCRIPTION
OF THE PROJECT
Page 10 of 70
Our project is based on TRAVEL BOOKING SYSTEM. The
project consists of m main functions:
1. screen()
This function is used to display the welcome screen of the
project. The welcome screen is a collection of three images, each
of London, New York and Paris respectively shown after every 3
seconds as a transition.
2. menu()
This function is used for the design of the main menu where
the customer has to enter his personal details to start the
booking procedure. It asks the customer their name, mobile
number, passport number, and email ID, all of which are
stored in the MySQL database.
Page 11 of 70
3. fncountry()
This function is designed to allow the customer to choose
the country they want to visit. They have a choice out of
three cities, namely New York, London and Paris.
Page 12 of 70
4. fnhotel()
This function allows the customer to choose a hotel in
which they would like to stay. They can choose from Hilton,
Radisson and Sheraton.
5. fnhotel_2()
This function allows the customer to input more specific
details regarding his hotel stay, like his check-in day, check-
out day, and his room type.
Page 13 of 70
6. fnflight()
This function designs the page where the customer
can choose the flight he wants to fly in (choose from Air
India, Emirates, Etihad) and also decide the departure
date from home, arrival date to home, and flight timing.
Once the customer enters all the details on this page and
clicks “FINISH”, the booking procedure is over and a
message box is displayed. After a few seconds, the
boarding pass is also displayed, and an email confirming
the booking is also sent on the customer’s email ID which
he/she provided while booking.
Page 14 of 70
7. fnprojectmenu()
This function is used to design the menu which pops up
right after the welcome screen, where there is an option for
the customers to look up at the contact details of the
company, book a ticket or to provide feedback or ask any
query they have, and also an employee login option.
On clicking the “Questions” button, the customer can
type feedback or queries and press “Send”, after which an
email will directly be sent to the company email ID (an email
ID created for this project) in the name of the customer.
On clicking “Contact us” button, the customer can find
the necessary contacts in case they have any queries or
need to give feedback.
Page 15 of 70
Page 16 of 70
8. fnemployee()
This function is used for designing the employee login page. Once
the employees log in, the details of all the customers gets
displayed in the Python shell.
9. display()
This function has two main uses:
To store the details entered by the customer in MySQL.
To display the Name, Mobile Number, Passport Number,
City they want to visit, Hotel they will be staying at, Flight,
and Total Amount they pay for their holiday of all the
customers who have booked tickets. This can only be seen
by an employee once he/she logs in.
Page 17 of 70
10. fnupdate()
This function is used for the design of the “update” feature, i.e.,
the customers can update their booking details.
Page 18 of 70
11. fndelete()
This function allows the employee to delete the details of
a customer in case they decide to delete their booking.
Page 19 of 70
USE OF
TECHNOLOGY
Page 20 of 70
MySQL is a relational DBMS that can run virtually all platforms,
including Linux, Unix and Windows. Popular for web-based
applications and online publishing, MySQL is apart of open-
source enterprise stack LAMP (Linux, Apache, MySQL, PHP).
Page 21 of 70
SQL provides many different types of commands used for
different purposes. SQLcommands can be divided into following
categories:
Page 22 of 70
Python is an interpreted, object-oriented, high-level
programming language with dynamic semantics.
Page 23 of 70
The debugger is written in Python itself, testifying to Python's
introspective power. On the other hand, often the quickest
way to debug a program is to add a few print statements to the
source: the fast edit-test-debug cycle makes this simple
approach very effective.
Page 24 of 70
HARDWARE & SOFTWARE REQUIREMENT
SYSTEM:
OS- Windows 10 Professional 64-Bit (6.1, Build7601)
Language: English
DISPLAY DEVICE:
Name:-Intel(R) HD Graphics Manufacturer: - Gigabyte
TechnologyCo., Ltd
Chip Type: - Intel(R) HD Graphics FamilyDAC Type:-Internal
Approx. Total Memory:-775 MB Current Display
mode: - 1336 X 768(32 Bit)(60Hz)
Monitor:- Generic PnP Monitor
Page 25 of 70
DRIVER:
Main Driver: - igdumdim 32.dll,igd loiumd32.dll,igd
lo Version:-10.18.10.3345
Date:-10/28/13 WHQL
logo’s:- YesDDI Version: II
Driver Model:-WDDM
1.1
Page 26 of 70
SOURCE CODE
Page 27 of 70
import turtle
import tkinter as tk
from tkinter import *
from tkinter import messagebox
import tkinter.font as font
import math
import random
import PIL.Image
import PIL.ImageTk
import time
import mysql.connector as mys
import smtplib, ssl
turtle.color("yellow")
style = ('Segoe Script', 40, 'bold')
style2 = ('Segoe Script', 20, 'bold')
turtle.write('PARADISE TRAVEL\n & TOURISM\n',
font=style, align='center')
turtle.write('\n', font=style, align='center')
turtle.write('By Riday Dalal\nClass XII-A', font = style2, align = 'right')
turtle.hideturtle()
turtle.exitonclick()
screen()
def display():
try:
myconn=mys.connect(host='localhost', user='root', passwd='adis',
database='travel')
if myconn.is_connected():
#print("Connection Established Successfully !")
print()
mycur=myconn.cursor()
query='select * from travel_booking;'
mycur.execute(query)
rs=mycur.fetchall()
#count=mycur.rowcount
print ("{:<25} {:<15} {:<15} {:<15} {:<15} {:<15}
{:<15}".format('NAME', 'MOBILE', 'PASSPORT', 'CITY', 'HOTEL', 'FLIGHT',
'AMOUNT'))
print("
")
Page 28 of 70
print()
for i in rs:
print ("{:<25} {:<15} {:<15} {:<15} {:<15} {:<15}
{:<15}".format(i[0], i[1], i[2], i[3], i[4], i[5], i[6]))
print("
"
) print()
#print("The no. of rows is \t", count)
except Exception as e:
print(e)
'''
print("NAME\t\t\tMOBILE NUMBER\t
PASSPORT NUMBER\t\tCITY\t\t\tHOTEL\t\t\t\
tFLIGHT")
for i in customer:
#print(customer)
print(i, customer[i][0], customer[i][1], customer[i][2],
customer[i][3], customer[i][4], sep='\t\t')
'''
def fnupdate():
global some_variable
some_variable = 0
def fnsubmit2():
global customer
fncountry()
def fnalert():
global
a
global
n
global
l
a=txtNAME.get()
n=txtnewpassno.get()
l=txtnewmobno.get()
fncountry()
Page 29 of 70
#messagebox.showinfo("Message", "Dear Customer, your credentials have
been successfully updated.")
#display()
Page 30 of 70
root7=tk.Toplevel()
root7.geometry("1100x900")
root7.title("UPDATE DETAILS")
pic=PIL.Image.open(r'C:\Users\dalal\OneDrive\Documents\project pics\
countryside.png')
photo=PIL.ImageTk.PhotoImage(file=r'C:\Users\dalal\OneDrive\Documents\project pics\
countryside.png')
imagelabel=tk.Label(root7, image=photo)
imagelabel.place(x=0, y=0, relwidth=1, relheight=1)
root7.mainloop()
Page 31 of 70
def fnemployee(): #Employee Login
def fnlogin():
global password
global username
password = txtpass.get()
username = txtUser.get()
if username == 'Paradise' and password == '42069':
#else:
# messagebox.showinfo("ALERT", "Nothing to display!")
else:
messagebox.showinfo("Message", "Invaild Login Credentials. Please
try again!")
root5 = tk.Toplevel()
root5.geometry("770x600")
root5.configure(bg='green')
root5.title("LOGIN PAGE")
pic=PIL.Image.open(r'C:\Users\dalal\OneDrive\Documents\project
pics\lock.png')
photo=PIL.ImageTk.PhotoImage(file=r'C:\Users\dalal\OneDrive\Documents\project pics\
lock.png')
imagelabel=tk.Label(root5, image=photo)
imagelabel.place(x=0, y=0, relwidth=1, relheight=1)
Page 32 of 70
font=("Segoe Script", 20), command = fnlogin)
loginbtn.place(x = 300, y = 400, width = 200)
root5.mainloop()
def fnsearch():
try:
myconn=mys.connect(host='localhost', user='root', passwd='adis',
database='travel')
if myconn.is_connected():
print()
#print("Connection Established Successfully !")
mycur=myconn.cursor()
query='select * from travel_booking;'
mycur.execute(query)
rs=mycur.fetchall()
#count=mycur.rowcount
print ("{:<25} {:<15} {:<15} {:<15} {:<15} {:<15}".format('NAME',
'MOBILE', 'PASSPORT', 'CITY', 'HOTEL', 'FLIGHT' ))
print("
"
) for i in rs:
if txtname.get() == i[0] or txtmobno.get() == i[1] or
txtpassno.get() == i[2]:
print ("{:<25} {:<15} {:<15} {:<15} {:<15} {:<15}
".format(i[0], i[1], i[2], i[3], i[4], i[5]))
print()
print("
"
) #print("The no. of rows is \t", count)
except Exception as e:
print(e)
def fndelete():
if x == True:
myconn=mys.connect(host='localhost', user='root', passwd='adis',
database='travel')
if myconn.is_connected():
print()
#print("Connection Established Successfully !")
mycur = myconn.cursor()
you_are_fired = txtname.get()
if you_are_fired == '':
Page 33 of 70
else:
for i in rs:
if you_are_fired == i[0]:
else:
messagebox.showinfo("ALERT!", "There is no such record in the
database!")
#del customer[full_name]
else:
messagebox.showinfo("ALERT", "Invalid Credentials. Please try again!")
def fnsubmit():
global full_name
global mobno
global passno
global list2
list2=[]
full_name = txtname.get()
mobno = txtmobno.get()
passno = txtpassno.get()
else:
messagebox.showinfo("ALERT", "Dear Customer, please enter the
complete credentials.")
else:
list2.extend([full_name, mobno, passno])
messagebox.showinfo("Message", "Dear Customer, your credentials
Page 34 of 70
have been successfully submitted.")
#except NameError:
# messagebox.showinfo("ALERT", "Dear Customer, please enter
the complete credentials.")
def fnback():
root.destroy()
fnprojectmenu()
def fncheck():
try:
if full_name == '' or mobno == '' or passno == '':
messagebox.showinfo("ALERT", "Dear Customer, please enter the
complete credentials.")
else:
fncountry()
except NameError:
messagebox.showinfo("ALERT", "Dear Customer, please enter the
complete credentials.")
root6.destroy()
root=tk.Tk()
root.geometry("1000x900")
root.title("MAIN MENU")
global photo
pic=PIL.Image.open(r'C:\Users\dalal\OneDrive\Documents\project
pics\rr.png')
photo=PIL.ImageTk.PhotoImage(file=r'C:\Users\dalal\OneDrive\Documents\project pics\
rr.png')
imagelabel=tk.Label(root, image=photo)
imagelabel.place(x=0, y=0, relwidth=1, relheight=1)
Page 35 of 70
lblmobno.place(x = 50, y = 300)
global txtmobno
txtmobno = tk.Entry(root, width = 60,fg ='black',font=("Times New Roman",
20))
txtmobno.place(x = 550, y = 300, width = 400)
Page 36 of 70
def T1():
global flight_time
flight_time =
'00.15'
def T2():
global flight_time
flight_time =
'04.00'
def T3():
global flight_time
flight_time =
'09.45'
Page 37 of 70
if flight == 'Air India':
Page 38 of 70
string = "Dear Customer, you have chosen Air India as your
flight.\nTime of Departure : " + flight_time + "\nSeat : Economy Class\nRate :
2000 Dhs"
messagebox.showinfo("Message", string)
def T4():
global flight_time
flight_time =
'13.30'
def T5():
global flight_time
flight_time =
'17.55'
Page 39 of 70
string = "Dear Customer, you have chosen Etihad as your flight.\
nTime of Departure : " + flight_time + "\nSeat : Economy Class\nRate : 2500
Dhs"
messagebox.showinfo("Message", string)
def T6():
global flight_time
flight_time =
'21.15'
def T7():
global flight_time
flight_time =
'23.00'
Page 40 of 70
string = "Dear Customer, you have chosen Emirates as your flight.\
nTime of Departure : " + flight_time + "\nSeat : Economy Class\nRate : 3000
Dhs"
messagebox.showinfo("Message", string)
def AI():
global flight
global
FLIGHT_
global p
global cost
#global flight_time
p=str(random.randrange(1000,9999))
FLIGHT_='AI '+ p
flight = 'Air India' #'Air India (2000
Dhs)' cost += 2000
#string = "Dear Customer, you have chosen Air India as your flight.\
nFlight number is : AI " + p + "\nTime of Departure : " + flight_time + "\nSeat
: Economy Class\nRate : 2000 Dhs"
list2.append(FLIGHT_)
if len(list3) > 4:
del list3[4]
list3.append(flight)
#messagebox.showinfo("Message", string)
def EK():
global flight
global
FLIGHT_
global p
global cost
#global flight_time
p=str(random.randrange(1000,9999))
FLIGHT_='EK ' + p
flight = 'Emirates' #'Emirates (3000
Dhs)' cost += 3000
list2.append(FLIGHT_)
#string = "Dear Customer, you have chosen Emirates as your flight.\
nFlight number is : EK " + p + "\nTime of Departure : " + flight_time + "\nSeat
: Economy Class\nRate : 3000 Dhs"
if len(list3) > 4:
del list3[4]
list3.append(flight)
#messagebox.showinfo("Message", string)
def EY():
global flight
global
FLIGHT_
global p
global cost
#global flight_time
p=str(random.randrange(1000,9999))
FLIGHT_='EY '+ p
flight = 'Etihad' #'Etihad (2500
Dhs)' cost += 2500
list2.append(FLIGHT_)
#string = "Dear Customer, you have chosen Etihad Airways as your
flight.\nFlight number is : EY " + p + "\nTime of Departure : 00.15\nSeat :
Page 41 of 70
Economy Class\nRate : 2500 Dhs"
Page 42 of 70
if len(list3) > 4:
del list3[4]
list3.append(flight)
#messagebox.showinfo("Message", string)
global list2
global flight_time
global list4
global customer_update
global txtemailid
global a
global n
global l
global cost
global previous_mobile
global start
global end
global room
root2.destroy()
list4=list2.copy()
list_updated = []
try:
if some_variable == 0:
list_updated.extend([a,l,n])
list_updated.extend([list2[0], list2[1], list2[2], cost])
list4 = list_updated.copy()
print(list4)
myconn=mys.connect(host='localhost', user='root',
passwd='adis', database='travel')
if myconn.is_connected():
print()
mycur=myconn.cursor()
port = 465
password = "TravelBindaas0#"
context = ssl.create_default_context()
with smtplib.SMTP_SSL("smtp.gmail.com", port,
Page 43 of 70
context=context) as server:
server.login("[email protected]",
password)
port = 465
smtp_server = "smtp.gmail.com"
sender_email = "[email protected]"
#sender's address
receiver_email = txtemailid.get() # receiver address
context = ssl.create_default_context()
with smtplib.SMTP_SSL(smtp_server, port, context=context)
as server:
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message)
#some_variable = 1
#print(list4, list_updated)
except NameError:
list4.append(cost)
myconn=mys.connect(host='localhost', user='root',
passwd='adis', database='travel')
if myconn.is_connected():
print()
#print("Connection Established Successfully !")
Page 44 of 70
mycur=myconn.cursor()
#customer[full_name] = list4
#customer_update=customer.copy()
'''
port = 535 # For SSL
password = "Paradise//" #input("Type your password and press
enter: ")
# Create a secure SSL context
context = ssl.create_default_context()
with smtplib.SMTP_SSL("smtp.gmail.com", port, context=context)
as server:
server.login("[email protected]",
password)
'''
#print(txtemailid.get())
port = 465
password = "TravelBindaas0#"
context = ssl.create_default_context()
with smtplib.SMTP_SSL("smtp.gmail.com", port, context=context)
as server:
server.login("[email protected]",
password)
port = 465
smtp_server = "smtp.gmail.com"
sender_email = "[email protected]" #sender's
address
receiver_email = txtemailid.get() # receiver address
Page 45 of 70
list4[1] + "\nPASSPORT NUMBER: " + list4[2] + "\nCITY TO VISIT: " + list4[3] +
"\nHOTEL: " + list4[4] + "\nCHECK-IN: " + start + "\nCHECK-OUT: " + end + "\
nROOM: " + room + "\nFLIGHT: " + list4[5] + "\nTOTAL AMOUNT: " + str(cost) +
"Dhs"
context = ssl.create_default_context()
with smtplib.SMTP_SSL(smtp_server, port, context=context) as
server:
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message)
list2.clear()
# Boarding Pass.
global photo10
root10=tk.Toplevel()
root10.geometry('1400x600')
pic=PIL.Image.open(r'C:\Users\dalal\OneDrive\Documents\project pics\
BPASS.png')
photo10=PIL.ImageTk.PhotoImage(file=r'C:\Users\dalal\OneDrive\Documents\project pics\
BPASS.png')
imagelabel=tk.Label(root10, image=photo10)
imagelabel.place(x=0, y=0, relwidth=1, relheight=1)
y1=list4[0]
y=str(y1)
z1 = start #txt_departure.get()
#str(random.randrange(1,32))+'/'+str(random.randrange(1,13))+'/'+'2021'
z = str(z1)
lbldate = tk.Label(root10, text=z, bg='white', font=('Times New
Roman',15))
lbldate.place(x=580, y=230)
lbldate2 = tk.Label(root10, text=z, bg='white', font=('Times New
Roman',10))
lbldate2.place(x=1070, y=298)
Page 46 of 70
if FLIGHT_ == 'AI '+ p:
x=flight_time
lbltime = tk.Label(root10, text=x, bg='white', font=('Times New
Roman',15))
lbltime.place(x=780, y=230)
lbltime2 = tk.Label(root10, text=x, bg='white', font=('Times
New
Roman',10)) lbltime2.place(x=1245, y=298)
t='Abu Dhabi'
lblC = tk.Label(root10, text=t, bg='white', font=('Times New
t='Dubai'
lblC = tk.Label(root10, text=t, bg='white', font=('Times New
x=flight_time
lbltime = tk.Label(root10, text=x, bg='white', font=('Times New
Roman',15))
lbltime.place(x=780, y=230)
lbltime2 = tk.Label(root10, text=x, bg='white', font=('Times
New
Roman',10)) lbltime2.place(x=1245, y=298)
Page 47 of 70
t='Abu Dhabi'
lblC = tk.Label(root10, text=t, bg='white', font=('Times New
Roman',15))
lblC.place(x=180, y=330)
lblC2 = tk.Label(root10, text=t, bg='white', font=('Times New
Roman',10))
lblC2.place(x=1080, y=223)
w1=str(random.randrange(1,9))
lblgate = tk.Label(root10, text=w1, bg='white', font=('Times New
Roman',15))
lblgate.place(x=580, y=330)
lblgate2 = tk.Label(root10, text=w1, bg='white', font=('Times New
Roman',10))
lblgate2.place(x=1080, y=376)
t=str(country)
lblcountry = tk.Label(root10, text=t, bg='white', font=('Times New
Roman',15))
lblcountry.place(x=180, y=440)
lblcountry = tk.Label(root10, text=t, bg='white', font=('Times New
Roman',10))
lblcountry.place(x=1080, y=256)
else:
messagebox.showinfo("ALERT", "Please select one of the options.")
root2=tk.Toplevel()
root2.geometry("1700x800")
#root2.title("FLIGHT SELECTION")
photo2=PIL.ImageTk.PhotoImage(file=r'C:\Users\dalal\OneDrive\Documents\project pics\
Emirates.png')
imagelabel=tk.Label(root2, image=photo2)
Page 48 of 70
imagelabel.place(x=0, y=0, relwidth=1, relheight=1)
global txt_departure
lbl_departure = tk.Label(root2, text="Departure Date", bg='light green',
font=('Sergoe Script Bold',15,'bold'))
lbl_departure.place(x=900, y=20)
txt_departure = tk.Entry(root2, bg='light green', font=('Sergoe Script
Bold',15,'bold'))
txt_departure.place(x=1200, y=20)
#txt_departure.get()
#global txt_arrival
lbl_arrival = tk.Label(root2, text="Arrival Date", bg='light green',
font=('Sergoe Script Bold',15,'bold'))
lbl_arrival.place(x=900, y=120)
txt_arrival = tk.Entry(root2, bg='light green', font=('Sergoe Script
Bold',15,'bold'))
txt_arrival.place(x=1200, y=120)
# Flight Timings
Page 49 of 70
btn5 = tk.Button(root2, text='17.55', width = 5, bg='light green', fg
='brown', font=("Segoe Script Bold", 10), command=T5)
btn5.place(x=1300, y=320)
btn6 = tk.Button(root2, text='21.15', width = 5, bg='light green', fg
='brown', font=("Segoe Script Bold", 10), command=T6)
btn6.place(x=1400, y=320)
btn7 = tk.Button(root2, text='23.00', width = 5, bg='light green', fg
='brown', font=("Segoe Script Bold", 10), command=T7)
btn7.place(x=1500, y=320)
def HI():
global hotel
global cost
hotel = 'Hilton' #'Hilton (800
Dhs)'
cost = 800
list2.append(hotel)
if len(list3) > 3:
del list3[3]
list3.append(hotel)
messagebox.showinfo("Message", "Dear Customer, you have chosen to stay
at The Hilton.")#\nRoom Type : Double bed Suite\n\nRate : 800 Dhs (Including
Breakfast).")
def BR():
global hotel
global cost
hotel = 'Radisson' #'Radisson (1000
Dhs)' cost = 1000
list2.append(hotel)
if len(list3) > 3:
del list3[3]
list3.append(hotel)
messagebox.showinfo("Message", "Dear Customer, you have chosen to stay
at Radisson.")#\nRoom Type : Double bed Suite\n\nRate : 1000 Dhs (Including
Breakfast and Lunch).")
def SR():
global hotel
global cost
hotel = 'Sheraton' #'Sheraton (1200
Dhs)' cost = 1200
list2.append(hotel)
if len(list3) > 3:
del list3[3]
list3.append(hotel)
messagebox.showinfo("Message", "Dear Customer, you have chosen to stay
at Sheraton.")#\nRoom Type : Double bed Suite with Jacuzzi\n\nRate : 1200 Dhs
(All meals)")
Page 50 of 70
def fnnext2():
if hotel == '':
messagebox.showinfo("ALERT", "Please select one of the options.")
else:
root3.destroy()
fnhotel_2()
#fnflight()
root3=tk.Toplevel()
root3.geometry("1200x700")
#root3.title("HOTEL SELECTION")
photo4=PIL.ImageTk.PhotoImage(file=r'C:\Users\dalal\OneDrive\Documents\project pics\
hotels.png')
imagelabel=tk.Label(root3, image=photo4)
imagelabel.place(x=0, y=0, relwidth=1, relheight=1)
def fnhotel_2():
def fnnext4():
global root50
else:
messagebox.showinfo("ALERT", "Dear Customer, please enter all the
details.")
Page 51 of 70
def SB():
global start
global end
global room
start =
txt_start_date.get() end =
txt_end_date.get() room =
"Single Bed Standard"
string = "Dear Customer, your hotel stay is booked from " +
txt_start_date.get() + " to " + txt_end_date.get() + ".\nYour room is a Single
Bed Standard."
messagebox.showinfo("MESSAGE", string)
def DB():
global start
global end
global room
start =
txt_start_date.get() end =
txt_end_date.get() room =
"Double Bed Standard"
string = "Dear Customer, your hotel stay is booked from " +
txt_start_date.get() + " to " + txt_end_date.get() + ".\nYour room is a Double
Bed Standard."
messagebox.showinfo("MESSAGE", string)
def DBJ():
global start
global end
global room
start =
txt_start_date.get() end =
txt_end_date.get() room =
"Double Bed Suite"
string = "Dear Customer, your hotel stay is booked from " +
txt_start_date.get() + " to " + txt_end_date.get() + ".\nYour room is a Double
Bed Suite."
messagebox.showinfo("MESSAGE", string)
global root50
root50=tk.Toplevel()
root50.geometry("1200x700")
global photo4
pic=PIL.Image.open(r'C:\Users\dalal\OneDrive\Documents\project
pics\hotels.png')
photo4=PIL.ImageTk.PhotoImage(file=r'C:\Users\dalal\OneDrive\Documents\project pics\
hotels.png')
imagelabel=tk.Label(root50, image=photo4)
imagelabel.place(x=0, y=0, relwidth=1, relheight=1)
global txt_start_date
lbl_start_date = tk.Label(root50, text = "Enter Check-in date.", bg =
'light blue', font=('Sergoe Script Bold',15,'bold'))
lbl_start_date.place(x=120, y=220)
Page 52 of 70
txt_start_date = tk.Entry(root50, bg = 'light blue', font=('Sergoe Script
Page 53 of 70
Bold',15,'bold'))
txt_start_date.place(x = 520, y = 220)
global txt_end_date
lbl_end_date = tk.Label(root50, text = "Enter Checkout date.", bg = 'light
blue', font=('Sergoe Script Bold', 15, 'bold'))
lbl_end_date.place(x=120, y=320)
txt_end_date = tk.Entry(root50, bg = 'light blue', font=('Sergoe Script
Bold',15,'bold'))
txt_end_date.place(x = 520, y = 320)
def NYC():
global country
country = 'New York'
list2.append(country
) if len(list3) > 2:
del list3[2]
list3.append(country)
messagebox.showinfo("Message", "Dear Customer, you have chosen to visit
New York.")
def LON():
global country
country = 'London'
list2.append(country
) if len(list3) > 2:
del list3[2]
list3.append(country)
messagebox.showinfo("Message", "Dear Customer, you have chosen to visit
London.")
def PAR():
Page 54 of 70
global country
country = 'Paris'
list2.append(country
) if len(list3) > 2:
del list3[2]
list3.append(country)
messagebox.showinfo("Message", "Dear Customer, you have chosen to visit
Paris.")
def fnnext():
if country == 'New York' or country == 'Paris' or country == 'London':
root4.destroy()
fnhotel()
else:
messagebox.showinfo("ALERT", "Please select one of the options.")
root4=tk.Toplevel()
root4.geometry("1500x1000")
#root4.title("CITY SELECTION")
photo3=PIL.ImageTk.PhotoImage(file=r'C:\Users\dalal\OneDrive\Documents\project pics\
kkk.png')
imagelabel=tk.Label(root4, image=photo3)
imagelabel.place(x=0, y=0, relwidth=1, relheight=1)
def fnprojectmenu():
def button():
messagebox.showinfo("Message", 'Contact Details\nMobile Number: +971
503489856\nLandline: +971 26267669\nEmail ID:
[email protected]\nDon\'t forget to follow us on our
Page 55 of 70
instagram account\[email protected]')
def send_concern():
context = ssl.create_default_context()
with smtplib.SMTP_SSL(smtp_server, port, context=context) as
server:
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message)
root20.destroy()
else:
messagebox.showinfo("ALERT", "Please enter the complete details.")
def concerns():
global root20
root20=tk.Tk()
root20.geometry("1500x930"
)
root20.configure(bg = "Pink")
#pic=PIL.Image.open(r'C:\Users\dalal\OneDrive\Documents\project pics\
world2.png')
#photo20=PIL.ImageTk.PhotoImage(file=r'C:\Users\dalal\OneDrive\Documents\projec
Page 56 of 70
t pics\world2.png')
#imagelabel=tk.Label(root20, image=photo20)
#imagelabel.place(x=0, y=0, relwidth=1, relheight=1)
global txtname_person
lblname_person = tk.Label(root20, text = "NAME", bg='Pink', fg
='black', font=("Segoe Script", 15))
lblname_person.place(x=100, y=350)
txtname_person = tk.Entry(root20, bg='white', fg ='black', font=("Times
New Roman", 15))
txtname_person.place(x = 300, y = 350, width = 400)
global txtEMAIL
lblEMAIL = tk.Label(root20, text = "EMAIL ID", bg='Pink', fg ='black',
font=("Segoe Script", 15))
lblEMAIL.place(x=100, y=450)
txtEMAIL = tk.Entry(root20, bg='white', fg ='black', font=("Times New
Roman", 15))
txtEMAIL.place(x = 300, y = 450, width = 400)
global txtconcerns
lblconcern = tk.Label(root20, text = "How can I help?", bg='Pink', fg
='black', font=("Segoe Script", 15))
lblconcern.place(x=100, y=550)
txtconcerns = tk.Entry(root20, bg='white', fg ='black', font=("Times
New Roman", 15))
txtconcerns.place(x=100, y=600, width = 1000)
global list3
global list2
list2=[]
list3=[]
global root6
root6=tk.Tk()
root6.geometry("1500x930")
pic=PIL.Image.open(r'C:\Users\dalal\OneDrive\Documents\project
pics\world2.png')
photo=PIL.ImageTk.PhotoImage(file=r'C:\Users\dalal\OneDrive\Documents\project pics\
world2.png')
imagelabel=tk.Label(root6, image=photo)
imagelabel.place(x=0, y=0, relwidth=1, relheight=1)
Page 57 of 70
TOURISM', fg='red', font=("Algerian", 40))
lbl.place(x=150 ,y=200)
fnprojectmenu()
Page 58 of 70
SAMPLE OUTPUT
Page 59 of 70
INTRODUCTION SCREEN
WELCOME SCREEN
Page 60 of 70
1. BOOK YOUR TRIP
MAIN MENU
Page 61 of 70
CITY TO VISIT
Page 62 of 70
HOTEL BOOKING
Page 63 of 70
HOTEL BOOKING (SPECIFICATIONS OF STAY AT HOTEL)
Page 64 of 70
FLIGHT BOOKING
Page 65 of 70
BOARDING PASS
(An email is sent to the customer on the email ID he/she has provided in the above format)
Page 66 of 70
2. EMPLOYEE LOGIN
Page 67 of 70
3. QUESTIONS PAGE
4. CONTACT US
Page 68 of 70
MERITS & DEMERITS
Page 69 of 70
MERITS
This project is an online travel booking system, which means that people
looking for booking their holiday can do that in the comfort of their home.
A person has the option to update any of his/her details in the event of any of
the details entered being wrong or incorrect.
The project has error checks, i.e., if some fields are left blank intentionally or
unintentionally, or some option buttons are not clicked, then a warning
message is dropped accordingly to alert the user.
The user also has the option to delete their booking in case they decide to
cancel their trip.
The users also have the option to send feedback or questions or concerns about
our service and the program to the agency directly through the “Questions /
Concerns / Feedback” page.
There is also a “Contact us” page, where the user can directly contact us in case
he/she wants to book the trip or requires assistance regarding how to do the
booking.
An image of the boarding pass is shown on the completion of the booking, and
an email is sent to the user briefing him all the details of his booking. It is
basically like a receipt of the payment and the itinerary of the holiday. This
helps them keep a track and this acts as a proof of their booking.
Page 70 of 70
DEMERITS
This project does not have an option to make a bank transaction, although it
does show the final amount of the holiday the user books.
The email sent does not contain the image of the boarding pass which is
displayed to the user once the booking is complete.
The employee login does not offer various functionalities, it only displays all the
details of the users who have booked a trip with Paradise Travel & Tourism.
There are just three options for choosing flights, hotels, and cities to visit.
Page 71 of 70
BIBLIOGRAPHY
Page 72 of 70
To develop this project many references were
used:
Page 73 of 70
REMARKS
Page 74 of 70