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

import mysql

Uploaded by

Poomani
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views

import mysql

Uploaded by

Poomani
Copyright
© © All Rights Reserved
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