RAILWAY RESERVATION SYSTEM CS Project
RAILWAY RESERVATION SYSTEM CS Project
PROJECT
2024-2025
Topic:
RAILWAY RESERVATION SYSTEM
Submitted By:
Harrish. T
XII-B
12215
TABLE OF CONTENTS
S.NO SUB-TOPIC
1 Introduction
2 Requirements
3 Source Code
4 Output
5 SQL
6 Bibliography
INTRODUCTION
The Railway Reservation System project is a practical
application designed to simulate and streamline the process of
booking railway tickets, managing train schedules, and
enhancing user experience. This system is developed as part of
the Computer Science curriculum for Class 12, adhering to
CBSE guidelines. It demonstrates the application of Python
programming and database management concepts using
MySQL.
SPECIFICATIONS PRE-REQUISITES
Processor - Intel i5 (or Tabulate and MySQL
above) connector Module
db.commit()
print("Tables created successfully!")
db.close()
# User Registration
def new_user():
db = get_connection()
cursor = db.cursor()
db.commit()
print(f"User {user_id} registered successfully!")
db.close()
# Forgot User ID
def forgot_user_id():
db = get_connection()
cursor = db.cursor()
if result:
print(f"Your User ID is: {result[0]}")
else:
print("Email not found!")
db.close()
if result:
print("Login Successful!")
passenger_panel(user_id)
else:
print("Invalid User ID or Password!")
forgot_user_id()
db.close()
# Admin Panel
# Admin Panel
def admin_panel():
while True:
print("\n--- Admin Panel ---")
print("1. Add Train")
print("2. Update Train Details")
print("3. Cancel Train")
print("4. Logout")
if choice == 1:
add_train()
elif choice == 2:
update_train_details()
elif choice == 3:
cancel_train()
elif choice == 4:
break
else:
print("Invalid Choice!")
# Add Train
def add_train():
db = get_connection()
cursor = db.cursor()
query = """
INSERT INTO train_schedule (train_no, train_name,
origin, destination, distance, time,
seats_ac, seats_sl, seats_gen, fare_ac,
fare_sl, fare_gen, available_days)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
%s)
"""
values = (train_no, train_name, origin, destination,
distance, time, seats_ac,
seats_sl, seats_gen, fare_ac, fare_sl, fare_gen,
available_days)
cursor.execute(query, values)
db.commit()
print("Train added successfully!")
db.close()
if choice == 1:
new_value = input("Enter New Train Name: ")
query = "UPDATE train_schedule SET train_name =
%s WHERE train_no = %s"
elif choice == 2:
new_value = input("Enter New Origin: ")
query = "UPDATE train_schedule SET origin = %s
WHERE train_no = %s"
elif choice == 3:
new_value = input("Enter New Destination: ")
query = "UPDATE train_schedule SET destination =
%s WHERE train_no = %s"
elif choice == 4:
new_value = int(input("Enter New Distance (in km):
"))
query = "UPDATE train_schedule SET distance = %s
WHERE train_no = %s"
elif choice == 5:
new_value = input("Enter New Journey Time (e.g.,
5h30m): ")
query = "UPDATE train_schedule SET time = %s
WHERE train_no = %s"
elif choice == 6:
new_value = int(input("Enter New Seats in AC: "))
query = "UPDATE train_schedule SET seats_ac = %s
WHERE train_no = %s"
elif choice == 7:
new_value = int(input("Enter New Seats in SL: "))
query = "UPDATE train_schedule SET seats_sl = %s
WHERE train_no = %s"
elif choice == 8:
new_value = int(input("Enter New Seats in GEN: "))
query = "UPDATE train_schedule SET seats_gen = %s
WHERE train_no = %s"
elif choice == 9:
new_value = int(input("Enter New Fare for AC: "))
query = "UPDATE train_schedule SET fare_ac = %s
WHERE train_no = %s"
elif choice == 10:
new_value = int(input("Enter New Fare for SL: "))
query = "UPDATE train_schedule SET fare_sl = %s
WHERE train_no = %s"
elif choice == 11:
new_value = int(input("Enter New Fare for GEN: "))
query = "UPDATE train_schedule SET fare_gen = %s
WHERE train_no = %s"
elif choice == 12:
new_value = input("Enter New Available Days (e.g.,
Mon, Wed): ")
query = "UPDATE train_schedule SET available_days
= %s WHERE train_no = %s"
else:
print("Invalid choice!")
db.close()
return
if train:
# Proceed to cancel the train
query_delete = "DELETE FROM train_schedule
WHERE train_no = %s"
cursor.execute(query_delete, (train_no,))
db.commit()
print(f"Train Number {train_no} has been canceled
successfully!")
else:
print(f"Train Number {train_no} does not exist.")
db.close()
# Passenger Panel
def passenger_panel(user_id):
while True:
print("\n--- Passenger Panel ---")
print("1. Search Train")
print("2. Book Ticket")
print("3. Cancel Ticket")
print("4. Logout")
if choice == 1:
search_train()
elif choice == 2:
book_ticket(user_id)
elif choice == 3:
cancel_ticket(user_id)
elif choice == 4:
break
else:
print("Invalid Choice!")
# Search Train
def search_train():
db = get_connection()
cursor = db.cursor()
if trains:
print(tabulate(trains, headers=["Train No", "Train
Name", "Origin", "Destination", "Distance",
"Time", "Seats AC", "Seats SL", "Seats
GEN", "Fare AC",
"Fare SL", "Fare GEN", "Available
Days"]))
else:
print("No trains found!")
db.close()
# Book Ticket
def book_ticket(user_id):
db = get_connection()
cursor = db.cursor()
if train:
print("1. AC Class")
print("2. Sleeper Class")
print("3. General Class")
class_choice = int(input("Enter Class Choice (1-AC,
2-Sleeper, 3-General): "))
if available_seats > 0:
num_tickets = int(input(f"Enter Number of
Tickets to Book (Max {available_seats}): "))
if num_tickets > available_seats:
print(f"Only {available_seats} seats are
available.")
return
# Book tickets
for _ in range(num_tickets):
passenger_name = input("Enter Passenger
Name: ")
age = int(input("Enter Passenger Age: "))
gender = input("Enter Passenger Gender
(M/F/O): ")
db.commit()
print(f"Tickets booked successfully! Total Fare:
{fare * num_tickets}")
else:
print(f"No seats available in {class_type} class.")
else:
print("Invalid Train Number!")
else:
print("No trains available for booking.")
db.close()
# Cancel Ticket
def cancel_ticket(user_id):
db = get_connection()
cursor = db.cursor()
if tickets:
print(tabulate(tickets, headers=["Ticket ID", "Train
No", "Passenger Name", "Class Type", "Fare"],
tablefmt="fancy_grid"))
ticket_id = int(input("Enter Ticket ID to Cancel: "))
if ticket:
train_no, class_type = ticket
db.commit()
print("Ticket canceled successfully!")
else:
print("Invalid Ticket ID!")
else:
print("No tickets booked under this User ID.")
db.close()
# Main Menu
def main_menu():
while True:
print("\n--- Main Menu ---")
print("1. Admin Login")
print("2. User Login")
print("3. Register New User")
print("4. Exit")
if choice == 1:
admin_panel()
elif choice == 2:
old_user()
elif choice == 3:
new_user()
elif choice == 4:
break
else:
print("Invalid Choice!")
# Entry Point
if __name__ == "__main__":
create_tables()
main_menu()
OUTPUT
SQL
BIBLIOGRAPHY
The following sources were used for the
appropriate information required to
complete the project: