Test Report
Test Report
by
Chetan Khachane (Roll No. 07)
Dnyanesh Khandare (Roll No. 08)
Niharika Khopkar (Roll No. 10)
Kashyap Kulai (Roll No. 17)
Supervisor
Prof. Smita Jawale
University of Mumbai
(2024-25)
Vidyavardhini's College of Engineering & Technology
CERTIFICATE
This is to certify that the project entitled “Travel Agency Management” is a bonafide work of
"Chetan Khachane(Roll No. 06), Dnyanesh Khandare(Roll No. 08), Niharika Khopkar(Roll No.
10), Kashyap Kulai(Roll No. 17)" submitted to the University of Mumbai in partial fulfillment of
the requirement for the Course project in semester IV of Second Year Computer Engineering.
Supervisor
2
Abstract
The Travel Agency Management System is a GUI-based solution designed to simplify and
automate the travel booking process for customers. This system allows users to explore travel
packages, make bookings, and receive instant confirmation through a user-friendly graphical
interface. Developed using Python and integrated with an SQL database, the application ensures
secure storage and efficient handling of booking records. Key features include package selection,
customer detail entry, booking confirmation via message boxes, and real-time data insertion into
the database. By combining an interactive interface with reliable backend connectivity, the
system enhances the overall efficiency of travel agencies, reduces manual work, and improves
customer service through seamless and accurate data management.
3
Index
Contents Pg. No
1 Problem Statement 5
2 Block Diagram, its description and working(ER diagram) 6
3 Code 11
4 Result 18
5 Conclusion 23
6 Reference 24
4
1 Problem Statement
In many traditional travel agencies, the process of managing travel bookings, customer
information, and package details is still handled manually or through fragmented systems. This
often results in data redundancy, booking errors, delayed confirmations, and inefficient
record-keeping. Customers expect quick, accurate, and reliable services, which can be difficult to
achieve without an integrated system in place. Moreover, the absence of real-time data storage
and confirmation adds to operational delays and reduces overall service quality. To address these
challenges, there is a need for a centralized, user-friendly application that can automate the
booking process, provide instant confirmation to users, and store all relevant information
securely in a connected database. This project proposes the development of a Python-based GUI
application with SQL database integration, aimed at improving the efficiency, accuracy, and
reliability of travel agency operations.
5
2 Block Diagram
● USERS:
6
2.2 Diagram:
7
● Description: Built using Python's tkinter library, this module manages the user
interface where users can enter travel booking details. It collects user inputs and
triggers database actions on confirmation.
● Location: travel-agency-management-system/main.py
● Key Functionality: It launches the main booking interface, captures user input,
and sends booking data to the database.
8
● Location: travel-agency-management-system/database/travel_agency.sql
● Key Functionality: It provides the database structure by defining tables and fields
required for booking records.
2.4 Brief description of software & hardware used and its programming
Software Used:
● Python with Tkinter: This powerful combination provides the visual interface of your
application. Tkinter, being a standard Python library, offers a straightforward way to
create windows, buttons, text fields, and other interactive elements. Your Python scripts
manage how users interact with these elements, capturing their input and displaying
information retrieved from the database.
● SQL Database (e.g., SQLite, MySQL, PostgreSQL): Serving as the robust backbone
for data storage, SQL ensures that all your project's information is organized, persistent,
and easily accessible. Whether it's user credentials, specific records, or any other crucial
data, the SQL database efficiently stores and manages it all, allowing for structured
querying and retrieval.
● In essence, your project cleverly uses Python's Tkinter to build a user-friendly
window into your data, while SQL diligently manages that data behind the scenes,
ensuring everything is organized and readily available. This setup allows for a clear
separation between how users see and interact with the application (the Tkinter frontend)
and how the underlying information is securely stored and managed (the SQL database).
Hardware Used:
● Server Hardware: A standard computer or cloud server (e.g., AWS EC2) with:
○ Processor: Multi-core CPU (e.g., Intel i5 or equivalent) for running Node.js and
database queries.
○ Memory: Minimum 4GB RAM to handle server processes and database
operations.
○ Storage: SSD or HDD (minimum 20GB) to store the application files, database,
9
and logs.
● Client Hardware: User devices (e.g., laptops, desktops, or mobiles) with:
○ Processor: Basic CPU (e.g., Intel i3 or equivalent) for running a web browser.
○ Memory: Minimum 2GB RAM for smooth browser performance.
○ Internet: Broadband connection for accessing the web application.
● Development Hardware: Developer machine with similar specs to the server for coding,
testing, and running a local database.
10
3 Code
Python Code:
import tkinter as tk
from tkinter import ttk, messagebox, filedialog
import mysql.connector
from fpdf import FPDF
import os
# Database connection
connection = mysql.connector.connect(
host='localhost',
user='root',
password='123456@24DN',
database='travel_agency'
)
cursor = connection.cursor(buffered=True)
class TravelApp:
def __init__(self, root):
self.root = root
self.root.title("Travel Agency Management")
self.root.geometry("600x450")
self.root.configure(bg="#f0f8ff")
def create_home_page(self):
self.clear_frame()
tk.Label(self.root, text="Welcome to Travel Agency", font=("Arial", 18, "bold"),
bg="#f0f8ff").pack(pady=20)
11
def show_destinations(self):
self.clear_frame()
tk.Label(self.root, text="Available Destinations", font=("Arial", 14),
bg="#f0f8ff").pack(pady=10)
# Search Bar
self.search_var = tk.StringVar()
search_entry = tk.Entry(self.root, textvariable=self.search_var, width=40)
search_entry.pack(pady=10)
search_entry.bind("<KeyRelease>", self.filter_destinations)
self.load_destinations()
def load_destinations(self):
self.destination_list.delete(0, tk.END) # Clear the listbox
cursor.execute("SELECT name, country FROM destinations")
self.destinations = cursor.fetchall()
def show_booking_page(self):
self.clear_frame()
tk.Label(self.root, text="Book a Trip", font=("Arial", 14),
bg="#f0f8ff").pack(pady=10)
12
tk.Label(self.root, text="Name:").pack()
self.name_entry = tk.Entry(self.root, width=40)
self.name_entry.pack()
tk.Label(self.root, text="Email:").pack()
self.email_entry = tk.Entry(self.root, width=40)
self.email_entry.pack()
def book_trip(self):
name = self.name_entry.get()
email = self.email_entry.get()
destination_name = self.destination_var.get()
13
(destination_name,))
destination_id = cursor.fetchone()
if destination_id:
cursor.execute("INSERT INTO bookings (customer_name, customer_email,
destination_id) VALUES (%s, %s, %s)",
(name, email, destination_id[0]))
connection.commit()
def generate_pdf(self):
if not self.booking_id:
messagebox.showerror("Error", "Booking has not been made yet!")
return
name = self.name_entry.get()
email = self.email_entry.get()
destination = self.destination_var.get()
pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=16)
pdf.cell(200, 10, "Booking Confirmation", ln=True, align='C')
pdf.ln(10)
pdf.set_font("Arial", size=12)
pdf.cell(200, 10, f"Name: {name}", ln=True)
pdf.cell(200, 10, f"Email: {email}", ln=True)
pdf.cell(200, 10, f"Destination: {destination}", ln=True)
pdf.ln(10)
pdf.cell(200, 10, "Thank you for booking with us!", ln=True)
14
files", "*.pdf")])
if file_path:
pdf.output(file_path)
def clear_frame(self):
for widget in self.root.winfo_children():
widget.destroy()
if __name__ == "__main__":
root = tk.Tk()
app = TravelApp(root)
root.mainloop()
DATABASE CODE:-
-- Users Table
CREATE TABLE IF NOT EXISTS users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL
);
-- Destinations Table
CREATE TABLE IF NOT EXISTS destinations (
15
destination_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
description TEXT NULL,
country VARCHAR(255) NOT NULL
);
-- Bookings Table
CREATE TABLE IF NOT EXISTS bookings (
booking_id INT AUTO_INCREMENT PRIMARY KEY,
customer_name VARCHAR(255) NOT NULL,
customer_email VARCHAR(255) NOT NULL,
destination_id INT,
FOREIGN KEY(destination_id) REFERENCES destinations(destination_id) ON DELETE
CASCADE
);
16
('Cairo', 'Egypt'),
('Los Angeles', 'USA'),
('Buenos Aires', 'Argentina'),
('Vancouver', 'Canada'),
('Singapore', 'Singapore'),
('Hong Kong', 'China'),
('Vienna', 'Austria'),
('Toronto', 'Canada'),
('Athens', 'Greece'),
('Seoul', 'South Korea'),
('Lisbon', 'Portugal'),
('Hanoi', 'Vietnam'),
('Mumbai', 'India'),
('Zurich', 'Switzerland'),
('Prague', 'Czech Republic'),
('Stockholm', 'Sweden'),
('Edinburgh', 'Scotland');
17
4 Results:
18
19
20
21
22
5 Conclusion
Conclusion:
The Travel Agency Management System, developed as a GUI-based Python application with
SQL database integration, successfully delivers a streamlined solution for managing travel
bookings. By combining an intuitive interface with efficient backend data handling, the system
allows users to book travel packages and instantly receive confirmation through a message box.
All booking data is securely stored in the database, allowing easy access for record tracking and
future reference. The modular architecture—comprising GUI components, database connectivity,
and functional logic—demonstrates a practical implementation of core DBMS concepts in a
user-centric application.
The use of Python for the frontend and logic, along with structured SQL queries for persistent
storage, ensures smooth interaction between the user interface and the underlying data. The
project not only simplifies the booking process for end-users but also serves as an educational
example of integrating GUI frameworks with database systems in Python. Its simple yet effective
design offers opportunities for scaling—such as adding user login systems, payment gateways, or
travel package filters in future versions.
In conclusion, this project fulfills its objective of providing a functional and accessible travel
booking platform while highlighting the importance of GUI-database integration. It reflects a
strong understanding of software and database development practices and lays the groundwork
for further enhancements in real-world travel management systems.
23
6 References
For book/article,
1."Database System Concepts" by Silberschatz, Korth, and Sudarshan; "Designing
Data-Intensive Applications" by Martin Kleppmann.
2.E. Brown, Learning JavaScript: JavaScript Essentials for Modern Application Development,
O'Reilly Media, 3rd Edition, ISBN 978-1491914915, 2016.
3.B. Forta, SQL in 10 Minutes, Sams Teach Yourself, Sams Publishing, 5th Edition, ISBN
978-0672336072, 2012.
24