0% found this document useful (0 votes)
2 views11 pages

Data Structure Using Python Project

The document outlines a project on a Railway Ticket Reservation System submitted by Siddharth Sanjay Pawar for a Bachelor of Science in Information Technology. It includes a certificate of completion for a practical subject and features a Python code implementation using a linked list for confirmed tickets and a queue for the waiting list. The application provides a user interface for booking, canceling, and displaying ticket statuses.
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)
2 views11 pages

Data Structure Using Python Project

The document outlines a project on a Railway Ticket Reservation System submitted by Siddharth Sanjay Pawar for a Bachelor of Science in Information Technology. It includes a certificate of completion for a practical subject and features a Python code implementation using a linked list for confirmed tickets and a queue for the waiting list. The application provides a user interface for booking, canceling, and displaying ticket statuses.
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

MAHATMA EDUCATION SOCIETY’S

PILLAI COLLEGE OF ARTS, COMMERCE & SCIENCE


(Autonomous)
NEW PANVEL

IN PARTIAL FULFILLMENT OF
DEGREE OF BACHELOR OF SCIENCE IN

INFORMATION TECHNOLOGY

SEMESTER 4- 2025/ 26
PROJECT ON :Railway Ticket Reservation System

PROJECT GUIDE : Nikita Mam


SUBMITTED BY: Siddharth Sanjay Pawar

CLASS: SY IT (C)

Roll no : 5658
CERTIFICATE

This is to verify that Mr Siddharth Sanjay Pawar

Examination Seat no. 5658 has successfully completed

Practical of the subject Data Structure Using Python


In partial fulfillment for the degree of [Link]. (Information
Technology)

SEM IV, affiliated to the University of

Mumbai for the academic year 2025-2026.

Internal Examiner

Head of the department

External Examiner
Code :
import tkinter as tk
from tkinter import messagebox
from tkinter import simpledialog

# ---------------- LINKED LIST FOR CONFIRMED TICKETS ---------------- #


class Node:
def __init__(self, ticket_id, name, age, train):
self.ticket_id = ticket_id
[Link] = name
[Link] = age
[Link] = train
[Link] = None

class LinkedList:
def __init__(self):
[Link] = None

def add_ticket(self, ticket_id, name, age, train):


new_node = Node(ticket_id, name, age, train)

if not [Link]:
[Link] = new_node
else:
temp = [Link]
while [Link]:
temp = [Link]
[Link] = new_node

def remove_ticket(self, ticket_id):


temp = [Link]
prev = None

while temp:
if temp.ticket_id == ticket_id:
if prev:
[Link] = [Link]
else:
[Link] = [Link]
return True

prev = temp
temp = [Link]
return False

def display(self):
tickets = []
temp = [Link]

while temp:
[Link](
f"ID: {temp.ticket_id} | {[Link]} | {[Link]} | {[Link]}"
)
temp = [Link]

return tickets

# ---------------- QUEUE FOR WAITING LIST ---------------- #


class Queue:
def __init__(self):
[Link] = []

def enqueue(self, item):


[Link](item)

def dequeue(self):
if not self.is_empty():
return [Link](0)
return None

def is_empty(self):
return len([Link]) == 0

def display(self):
return [Link]

# ---------------- MAIN APPLICATION ---------------- #


class RailwayReservation:
def __init__(self, root):
[Link] = root
[Link]("Railway Ticket Reservation System")
[Link]("700x600")
[Link](bg="#f0f8ff")
self.max_seats = 5
self.current_seats = 0
self.ticket_counter = 1001

self.confirmed_list = LinkedList()
self.waiting_queue = Queue()

self.create_widgets()

# ---------------- UI DESIGN ---------------- #


def create_widgets(self):
title = [Link](
[Link],
text="Railway Ticket Reservation System",
font=("Arial", 20, "bold"),
bg="#f0f8ff",
fg="#003366"
)
[Link](pady=15)

# Input Frame
frame = [Link]([Link], bg="#f0f8ff")
[Link](pady=10)

[Link](frame, text="Name:", bg="#f0f8ff").grid(row=0, column=0, pady=5)


[Link](frame, text="Age:", bg="#f0f8ff").grid(row=1, column=0, pady=5)
[Link](frame, text="Train:", bg="#f0f8ff").grid(row=2, column=0, pady=5)

self.name_entry = [Link](frame, width=25)


self.age_entry = [Link](frame, width=25)
self.train_entry = [Link](frame, width=25)

self.name_entry.grid(row=0, column=1)
self.age_entry.grid(row=1, column=1)
self.train_entry.grid(row=2, column=1)

# Buttons
btn_frame = [Link]([Link], bg="#f0f8ff")
btn_frame.pack(pady=15)

[Link](
btn_frame,
text="Book Ticket",
width=15,
bg="#4CAF50",
fg="white",
command=self.book_ticket
).grid(row=0, column=0, padx=10)

[Link](
btn_frame,
text="Cancel Ticket",
width=15,
bg="#f44336",
fg="white",
command=self.cancel_ticket
).grid(row=0, column=1, padx=10)

[Link](
btn_frame,
text="Show Status",
width=15,
bg="#2196F3",
fg="white",
command=self.show_status
).grid(row=0, column=2, padx=10)

# Display Area
display_frame = [Link]([Link], bg="#f0f8ff")
display_frame.pack(pady=10, fill="both", expand=True)

[Link](
display_frame,
text="Reservation Status",
font=("Arial", 14, "bold"),
bg="#f0f8ff"
).pack()

self.text_area = [Link](display_frame, height=18, width=80)


self.text_area.pack(pady=10)

# ---------------- FUNCTIONS ---------------- #


def book_ticket(self):
name = self.name_entry.get()
age = self.age_entry.get()
train = self.train_entry.get()

if not name or not age or not train:


[Link]("Warning", "Please fill all fields")
return

if not [Link]():
[Link]("Error", "Age must be a number")
return

ticket_id = self.ticket_counter
self.ticket_counter += 1

if self.current_seats < self.max_seats:


# Confirmed ticket
self.confirmed_list.add_ticket(ticket_id, name, age, train)
self.current_seats += 1

[Link](
"Success",
f"Ticket Confirmed!\nTicket ID: {ticket_id}"
)
else:
# Waiting list
self.waiting_queue.enqueue((ticket_id, name, age, train))
[Link](
"Waiting List",
f"Added to Waiting List!\nTicket ID: {ticket_id}"
)

self.clear_fields()
self.show_status()

def cancel_ticket(self):
ticket_id = [Link](
"Cancel Ticket",
"Enter Ticket ID:"
)

if not ticket_id:
return

removed = self.confirmed_list.remove_ticket(ticket_id)

if removed:
self.current_seats -= 1
[Link]("Cancelled", "Ticket Cancelled Successfully")
# Move from waiting list to confirmed
if not self.waiting_queue.is_empty():
data = self.waiting_queue.dequeue()
self.confirmed_list.add_ticket(*data)
self.current_seats += 1

[Link](
"Updated",
f"Waiting Ticket Confirmed!\nTicket ID: {data[0]}"
)
else:
[Link]("Error", "Ticket ID Not Found")

self.show_status()

def show_status(self):
self.text_area.delete("1.0", [Link])

self.text_area.insert([Link], "CONFIRMED TICKETS:\n")


self.text_area.insert([Link], "----------------------------\n")

confirmed = self.confirmed_list.display()

if confirmed:
for t in confirmed:
self.text_area.insert([Link], t + "\n")
else:
self.text_area.insert([Link], "No Confirmed Tickets\n")

self.text_area.insert([Link], "\nWAITING LIST:\n")


self.text_area.insert([Link], "----------------------------\n")

waiting = self.waiting_queue.display()

if waiting:
for w in waiting:
self.text_area.insert(
[Link],
f"ID: {w[0]} | {w[1]} | {w[2]} | {w[3]}\n"
)
else:
self.text_area.insert([Link], "No Waiting Tickets\n")
def clear_fields(self):
self.name_entry.delete(0, [Link])
self.age_entry.delete(0, [Link])
self.train_entry.delete(0, [Link])

# ---------------- RUN APPLICATION ---------------- #


if __name__ == "__main__":
root = [Link]()
app = RailwayReservation(root)
[Link]()

Output :

You might also like