0% found this document useful (0 votes)
10 views8 pages

import mysql

Uploaded by

Poomani
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)
10 views8 pages

import mysql

Uploaded by

Poomani
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/ 8

import mysql.

connector as c

import customtkinter as ctk

from tkinter import messagebox

from reportlab.lib.pagesizes import letter

from reportlab.pdfgen import canvas

import os

# Cost per kilometer

COST_PER_KM = 4

# Function to create a database connection

def create_database_connection():

try:

connection = c.connect(

host="localhost", # Your MySQL host

user="root", # Your MySQL username

password="your_password", # Replace with your password

database="airline_reservation" # Database name

return connection

except c.Error as err:

print(f"Error: {err}")

return None

# Function to create flights table

def create_flights_table():

conn = create_database_connection()
if conn is None:

return

cursor = conn.cursor()

# Create flights table if not exists

cursor.execute('''CREATE TABLE IF NOT EXISTS flights (

flight_id INT AUTO_INCREMENT PRIMARY KEY,

flight_number VARCHAR(10),

origin VARCHAR(100),

destination VARCHAR(100),

departure_time DATETIME,

available_seats INT,

distance INT)''')

# Insert sample flights if the table is empty

cursor.execute("SELECT COUNT(*) FROM flights")

if cursor.fetchone()[0] == 0:

cursor.execute("INSERT INTO flights (flight_number, origin, destination, departure_time,


available_seats, distance) VALUES (%s, %s, %s, %s, %s, %s)",

('AA123', 'New York', 'Los Angeles', '2024-12-15 14:00:00', 50, 4000))

cursor.execute("INSERT INTO flights (flight_number, origin, destination, departure_time,


available_seats, distance) VALUES (%s, %s, %s, %s, %s, %s)",

('BB456', 'Chicago', 'Miami', '2024-12-16 09:00:00', 30, 2000))

conn.commit()

conn.close()
# Function to calculate total cost

def calculate_total_cost():

try:

num_passengers = int(passengers_entry.get())

flight_id = selected_flight_id

conn = create_database_connection()

cursor = conn.cursor()

cursor.execute("SELECT distance FROM flights WHERE flight_id=%s", (flight_id,))

distance = cursor.fetchone()[0]

total_cost = num_passengers * distance * COST_PER_KM

total_cost_label.config(text=f"Total Cost: ₹{total_cost}")

conn.close()

return total_cost

except Exception as e:

total_cost_label.config(text="Error calculating cost.")

print(e)

return 0

# Function to generate the PDF ticket

def generate_ticket_pdf(passenger_name, num_passengers, flight_details, total_cost):

flight_number, origin, destination, departure_time = flight_details

filename = f"{passenger_name}_ticket.pdf"

c = canvas.Canvas(filename, pagesize=letter)

c.drawString(100, 750, f"Ticket for {passenger_name}")

c.drawString(100, 730, f"Flight Number: {flight_number}")

c.drawString(100, 710, f"Origin: {origin}")


c.drawString(100, 690, f"Destination: {destination}")

c.drawString(100, 670, f"Departure Time: {departure_time}")

c.drawString(100, 650, f"Number of Passengers: {num_passengers}")

c.drawString(100, 630, f"Total Cost: ₹{total_cost}")

c.save()

messagebox.showinfo("Ticket Generated", f"Your ticket has been downloaded as {filename}")

# Function to book a flight

def book_flight():

passenger_name = passenger_name_entry.get()

num_passengers = int(passengers_entry.get())

conn = create_database_connection()

if conn is None:

return

cursor = conn.cursor()

# Fetch selected flight details

cursor.execute("SELECT flight_number, origin, destination, departure_time FROM flights WHERE


flight_id=%s", (selected_flight_id,))

flight_details = cursor.fetchone()

flight_number, origin, destination, departure_time = flight_details

# Insert reservation into database

cursor.execute("INSERT INTO reservations (flight_id, passenger_name) VALUES (%s, %s)",


(selected_flight_id, passenger_name))
conn.commit()

total_cost = calculate_total_cost()

generate_ticket_pdf(passenger_name, num_passengers, flight_details, total_cost) # Generate and


download the ticket

messagebox.showinfo("Booking Confirmed", f"Your flight has been booked!\nTotal Cost:


₹{total_cost}")

conn.close()

# Function to search for flights based on origin and destination

def search_available_flights():

origin = origin_entry.get()

destination = destination_entry.get()

conn = create_database_connection()

if conn is None:

return

cursor = conn.cursor()

cursor.execute("SELECT * FROM flights WHERE origin=%s AND destination=%s", (origin, destination))

available_flights = cursor.fetchall()

# Clear previous search results

for widget in results_frame.winfo_children():

widget.destroy()

if available_flights:

for flight in available_flights:


flight_id = flight[0]

flight_number = flight[1]

departure_time = flight[4]

available_seats = flight[5]

ctk.CTkLabel(results_frame, text=f"Flight {flight_number} | {departure_time} | Available Seats:


{available_seats}", anchor="w").pack()

ctk.CTkButton(results_frame, text="Select", command=lambda flight_id=flight_id:


select_flight(flight_id)).pack()

else:

ctk.CTkLabel(results_frame, text="No flights found for this route.", anchor="w").pack()

conn.close()

# Function to select a flight for booking

def select_flight(flight_id):

global selected_flight_id

selected_flight_id = flight_id

calculate_total_cost()

# Create the main window

ctk.set_appearance_mode("Dark")

ctk.set_default_color_theme("blue")

root = ctk.CTk()

root.title("Airline Reservation System")


# Search for flights

search_frame = ctk.CTkFrame(root)

search_frame.pack(padx=20, pady=20)

ctk.CTkLabel(search_frame, text="Enter Origin:").grid(row=0, column=0, padx=10, pady=10)

origin_entry = ctk.CTkEntry(search_frame)

origin_entry.grid(row=0, column=1)

ctk.CTkLabel(search_frame, text="Enter Destination:").grid(row=1, column=0, padx=10, pady=10)

destination_entry = ctk.CTkEntry(search_frame)

destination_entry.grid(row=1, column=1)

ctk.CTkButton(search_frame, text="Search Flights", command=search_available_flights).grid(row=2,


columnspan=2, pady=20)

# Results frame to display flight options

results_frame = ctk.CTkFrame(root)

results_frame.pack(padx=20, pady=20)

# Booking details

booking_frame = ctk.CTkFrame(root)

booking_frame.pack(padx=20, pady=20)

ctk.CTkLabel(booking_frame, text="Passenger Name:").grid(row=0, column=0, padx=10, pady=10)

passenger_name_entry = ctk.CTkEntry(booking_frame)

passenger_name_entry.grid(row=0, column=1)

ctk.CTkLabel(booking_frame, text="No. of Passengers:").grid(row=1, column=0, padx=10, pady=10)

passengers_entry = ctk.CTkEntry(booking_frame)
passengers_entry.grid(row=1, column=1)

total_cost_label = ctk.CTkLabel(booking_frame, text="Total Cost: ₹0")

total_cost_label.grid(row=2, columnspan=2, pady=10)

ctk.CTkButton(booking_frame, text="Book Flight", command=book_flight).grid(row=3, columnspan=2,


pady=20)

# Set up the flights table and sample data

create_flights_table()

root.mainloop()

You might also like