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

computerscienceprojectofrailwayreservationsystempythonprogramming-230627100223-c244d621 (1)

The document is a project report on a Railway Reservation System prepared by Harshit Kumar for the academic session 2024-2025 at Kendriya Vidyalaya No.1, Patna. It outlines the project's introduction, requirements, programming languages used, database structure, and the scope of functionalities including ticket booking, checking, and cancellation. The project aims to simplify the railway ticket reservation process through a computerized system, utilizing Python and MySQL for implementation.

Uploaded by

Harshit kumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

computerscienceprojectofrailwayreservationsystempythonprogramming-230627100223-c244d621 (1)

The document is a project report on a Railway Reservation System prepared by Harshit Kumar for the academic session 2024-2025 at Kendriya Vidyalaya No.1, Patna. It outlines the project's introduction, requirements, programming languages used, database structure, and the scope of functionalities including ticket booking, checking, and cancellation. The project aims to simplify the railway ticket reservation process through a computerized system, utilizing Python and MySQL for implementation.

Uploaded by

Harshit kumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 37

KENDRIYA VIDYALAYA NO.

1
Kankarbagh, Patna - 800020

PROJECT REPORT
On

RAILWAY RESERVATION
SYSTEM
ACADEMIC SESSION
2024-2025

SUBJECT
COMPUTER SCIENCE (083)

Prepared By :
1. Harshit kumar
CERTIFICATE
This is to certify that HARSHIT KUMAR of
Class XII, has completed his project entitled
“RAILWAY RESERVATION SYSTEM” under my
supervision for the subject “COMPUTER
SCIENCE(083) ” for All India Secondary School
Examination 2024-2025.
He has taken proper care and shown utmost
sincerity in the completion of this project. I certify
that this project is up to my expectation and as per
the guidelines issued by CBSE.

DR.INDRAJEER KR
MP.SINGH
H.O.D (Computer Science) Principal
Kv No.1 kankarbagh, Kv No.1 Kankarbagh,
Patna Patna
ACKNOWLEDGEMENT
Firstly, I would like to express my special thanks of
gratitude to my principal SH. MP. SINGH , who gave
me this opportunity to work on this project. I would
like to thank her for the completion of this project.

Secondly, I would like to thank my subject teacher


DR. INDRAJEET KR who continuously guided me
and helped me from time to time during the
development of this project.

At last, I would like to thank my friends and family


members for their valuable support.
TABLE OF CONTENTS
SN PARTICULARS PAGE TEACHER’S
NO. SIGNATURE
1 INTRODUCTION OF THE
PROJECT 1

2 REQUIREMENTS
2-3

3 PROGRAMMING
LANGUAGE & 4
CONCEPTS USED
4 PACKAGES,
MODULES AND 5-7
FUNCTIONS USED
5 DATABASE & TABLES
USED 8-11

6 SCOPE OF THE
PROJECT 12-13

7 PROJECT CODE
14-30

8 SCREENSHOTS OF THE
OUTPUT 31-34
INTRODUCTION TO THE
PROJECT

The topic of the project is RAILWAY RESERVATION


SYSTEM .The railway reservation system facilitates
the passengers to enquiry about the trains available
on the basis of source and destination, booking and
cancellation of tickets, enquiry about the status of
the booked ticket, etc. The aim of case study is to
design and develop a data base maintaining records
of different trains, train status and passengers.This
project contains introduction to the railways
reservation system. It is the computerized system of
reserving the seats of train seats in advance. It is
mainly used for a long route. Online reservation has
made the process for the reservation of seats very
much easier than ever before.
REQUIREMENTS
HARDWARE REQUIREMENTS :-
• The hardware requirements are laptop of RAM-
4.00 GB32-bit operating system
• printer

SOFTWARE REQUIREMENTS:
• A window based operating system with DOS
support
• The system must be connected with a LAN
connection

PROCESSOR REQUIREMENTS:

• Intel(R) Core(TM) i5-4300M CPU @ 2.60GHz 2.60


GHz

MEMORY REQUIREMENTS:

• Hard disk of about 152GB

OTHER REQUIREMENTS:
• MySql version 5.7
• Python version 3.10.5
• MySql connectivity
• MS Word 2010
PROGRAMING
LANGUAGE

AND CONCEPTS USED


The programming language of the project is PYTHON
The concepts that we have used in our project are --
we have taken the use of MySql connectivity for this
project , we had made a database in Sql with the help
of python programming and perform every task in
Sql by python programming only. We made various
types of user defined functions for the function of
each and every functioning in the program. We
made the use of if , elif and else approx in every
function for the conditional statements . we have also
imported tabulate and random module , tabulate
module for displaying the data from the database in
a tabular form and random module for generating
random no. from randint() method for generating a
random pnr_no for the tickets.
It regulates all
the activities
main() like ticket and

FUNCTIONS USED
PACKAGE MODULE FUNTION DESCRIPTION
NAME NAME S
Used to
random generate a
randint() Pnr number in
Nil a given range
To make a
mysql. connect() connection
between mysql
connector and python
It provides a
cursor() cursor object
for the working
of the database
through
It regulates
menu() activities like
signup, signin
in the project
User also show the
defined account details
functions of the user
This function is
ticket_boo for the booking
king() of the ticket for
train
This function is
delhi() for the fare of
the train delhi
express
This function is
sabarmati for the fare of
() the train
sabarmati
express
goa() This function is
for the fare of
the train goa
express
chennai() This function is
for the fare of
the train
chennai
express
ticket_che This function is
cking() for the checking
for the booked
tickets
User ticket_can This function is
Defined celling() for the
functions cancellation of
the booked
tickets
checking_ This function is
2() for the deletion
of existing user
account
checking_ This function is
1() for creating a
new account in
the project
checking() This function is
used for logging
in of an existing
account in
project
checking_ This function is
3() for checking
our personal
account details
Used for
displaying the
tabulate() data in a
tabular format
tabulate
DATABASE & TABLES
USED
The Database used in this project is
RAILWAY104
TABLE FIELD DATA TYPE DESCRIPTION
NAME NAME
fname varchar(100) Stores the first
name of the
user
lname varchar(100) Stores the last
name of the
user
User_
user_ varchar(100) Stores the
accounts name username of
the user
password Varchar(100) Stores the
password for
the account of
the user
phno Varchar(15) Stores the
phone no. of
the user
gender Varchar(50) Stores the
gender of the
user
dob Varchar(50) Stores the
date of birth of
the user
age Varchar(4) Stores the age
of the user
TABLE FILED DATA TYPE DESCRIPTION
NAME NAME
TRAIN_ Varchar(30) Stores the
NAME train name
given by the
user
TRAIN_NO Varchar(20) Stores the
train no
given by the
Train_ user
details Source Varchar(30) Stores the
starting point
or location of
the train
Destination Varchar(30) Stores the
destination
of the train
AC1 Varchar(20) Stores the AC1
fare of the
ticket
AC2 Varchar(20) Stores the AC2
fare of the
AC3 Varchar(20) Stores the AC3
fare of the
ticket

Sleeper Varchar(10) Stores the


sleeper fare
of ticket

TABLE FILED DATA DESCRIPTION


NAME NAME TYPE
PNR_NO Varchar(10) Stores the
generated pnr
no.
pname Varchar(30) Stores the
passenger
name
Age Int(11) Store the age
Railway
of the
passenger
Train_no Varchar(10) Store the train
no of that train
with which the
passenger is
travelling
Train_name Varchar(30) Store the train
name of that
train with
which the
passenger is
travelling
gender Varchar(10) Stores the
gender of the
passemger
Class Varchar(10) Stores the
class of the
train
source Varchar(20) Stores the
starting point
of the train
Destination Varchar(30) Stores the
destination
of the train
fare int(11) Stores the fare
of the train of
the pasengers
SCOPE OF THE PROJECT
The scope of the project railway reservation system is
we can perfrom a various types of activities through
this project. When you run the code the most starting
you will get to see is there will be four options 1.
SIGN IN 2. SIGN UP 3. DELETE ACCOUNT 4. EXIT
first you should sign up for new user account , when
you made it just select the 1st option and sign in with
the same account you made above . now you will get
to see 4 options again 1.TICKET BOOKING, 2.TICKET
CHECKING, 3. TICKET CANCELLING AND ACCOUNT
DETAILS you have to choose the first option first and
by following the steps you can book a ticket , for
booking you have 4 trains available in this project
that will also be shown to you at the time of booking .
so just select the type of seat and book the train.
After booking the train you can choose 2nd option
that is TICKET CHECKING , while booking of the train
you will have gotten a PNR Number so now while
checking just insert your generated PNR number and
you will get to know the no of tickets you have
booked with that PNR no. In this project we have only
given a limit of 2 tickets with one PNR number at a
time

Now just select the 3rd option that is TICKET


CANCELLING here also you will be asked by the same
PNR no generated at that time . just type the no and
your all tickets will be cancelled

Our last option is account details ,here you get all


the details about the account you made at first .

You can log out your account with this project and
also can delete the existing account that you have
made

That’s all this project can perform for the users


PROJECT CODE
TABLES CODE:-
import mysql.connector
db=mysql.connector.connect(host='localhost',user='root',
pass word='akshat@123') c=db.cursor()
s="create database railway104"
c.execute(s)
s="use
railway104"
c.execute(s)
s="create table railway(PNR_No varchar(10),pname
varchar(30), Age integer,Train_No varchar(10),train_name
varchar(30),gender varchar(10),Class varchar(10),source
varchar(20),Destination varchar(30),fare integer)"
c.execute(s)
s="create table user_accounts(fname varchar(100),lname
varchar(100),user_name varchar(100),password
varchar(100) ,phno varchar(15),gender varchar(50),dob
varchar(50),age varchar(4))" c.execute(s)
s="create table train_details(Train_Name varchar(30),
Train_No varchar(20),Source varchar(30), Destination
varchar(30), Ac1 varchar(20),Ac2 varchar(20), Ac3
varchar(20), Sleeper varchar(10))"
c.execute(s)
s="insert into train_details values('delhi
express','2365','delhi','jaipur',6000,'5000','4000','4000')"
c.execute(s)
s="insert into train_details values('goa
express','3425','agra','goa',10000,'9000','8000','7000')"
c.execute(s)
s="insert into train_details values('chennai
express','1267','delhi','chennai',12000,'10000','9000','7000'
)" c.execute(s)
s="insert into train_details values('sabarmati
express','2365','agra','gujarat',9000,'8000','7000','5000')"
c.execute(s)
db.commit()

MAIN CODE:-
import random import
mysql.connector
mycon=mysql.connector.connect(host='localhost',user='roo
t',p asswd='akshat@123',database='railway104')
cursor=mycon.cursor() mycon.autocommit=True
from tabulate import tabulate
def menu():
ch=1
while ch==1:
print('\t\t-------WELECOME TO ONLINE RAILWAY
RESERVATION SYSTEM-------\t\t')
print('1.SIGN IN')
print('2.SIGN UP')
print('3.DELETE ACCOUNT')
print('4.EXIT')
ch1=int(input('ENTER YOUR CHOICE:'))
if ch1==1:
a=checking()
if a==True:
print('WELCOME')
main()
else:
continue elif
ch1==2:

a=checking_1()
if a==True:
main() else:
print('PASSWORD ALREADY EXISTS')
continue
elif ch1==3:
c=checking_2()
if c==True:

print('ACCOUNT DELETED')
continue else:
print('YOUR PASSWAORD OR USER_NAME IS
INCORRECT')
continue
elif ch1==4:
print('THANK YOU')
break else:
print('ERROR 404:PAGE NOT FOUND')
break
print('1.YES')
print('2.NO')
ch=int(input('DO YOU WANT TO CONTINUE OR NOT:'))
def main():
print('1.YES')
print('2.NO')
c=int(input("DO YOU WANT TO CONTINUE OR NOT:"))
while (c==1):
print(' 1.TICKET BOOKING',"\n", '2.TICKET
CHECKING',"\n",'3.TICKET CANCELLING',"\n",'4.ACCOUNT
DETAILS',"\n",'5.LOG OUT')
ch=int(input('enter ur choice:'))
if ch==1:
ticket_booking()
elif ch==2:
ticket_checking()
elif ch==3:
ticket_cancelling()
elif ch==4:
checking_3()

elif
ch==5:
print('THANK YOU')
break else:
print('WRONG INPUT')
else:
print('ERROR 404: ERROR PAGE NOT FOUND')

def ticket_booking():
mycon.autocommit=True
print("******AVAILABLE
TRAINS******") g="select*from
train_details" cursor.execute(g)
data=cursor.fetchall()
Data=list(data)

a=['TRAIN_NAME','TRAIN_NO','SOURCE','DESTINATION','AC1'
,'AC2','AC3','SLEEPER']
print(tabulate(data,headers=a,tablefmt="psql"))
print("2365.DELHI EXPRESS")
print("3425.GOA EXPRESS")
print("1267.CHENNAI EXPRESS")
print("2564.SABARMATI EXPRESS")
x=input("ENTER THE TRAIN NO. FOR MORE TICKET
OPTIONS:")
n=int(input("HOW MANY TICKETS YOU WANT\n(YOU CAN
BOOK ONLY 2 TICKETS):"))

if n<=2:
if
x=='2365':

g=delhi()
h="JAIPUR"
c1="DELHI"
c2="DELHI
EXPRESS"
elif x=='3425':
g=goa() h="GOA"
c1="AGRA" c2="GOA
EXPRESS" elif x=='1267':
g=chennai()
h="CHENNAI"
c1="DELHI"
c2="CHENNAI EXPRESS"
elif x=='2564':
g=sabarmati()
h="GUJARAT"
c1="AGRA"
c2="SABARMATI EXPRESS"
else:
print("INVALID OPTION")
pnrno=random.randint(1000,3000)
for i in range (n):
b=input("ENTER THE PERSON'S NAME:")
c=input("ENTER THE AGE:")
print(' M=MALE','\n','F=FEMALE','\n','N=NOT TO
MENTION')
v={'m':'MALE','f':'FEMALE','n':'NOT TO MENTION'}
s=input("ENTER THE GENDER:")
s2="insert into railway
values('{}','{}',
{},'{}','{}','{}','{}','{}','{}','{}')".format(pnrno,b,c,x,c2,s,g
[1]
,c1,h,g[0])
cursor.execute(s2)

print('BOOKED SUCCESSFULLY')
print("YOUR PNR NO. GENERATED IS :",pnrno)
else:
print("MORE THAN 2 TICKETS ARE NOT ALLOWED")
def delhi():
x=input("ENTER YOUR CHOICE OF
TICKET(AC1/AC2/AC3/SLEEPER):")
if(x=='ac1'):
print ("YOU HAVE Chosen FIRST CLASS AC TICKET")
s=6000 elif (x=='ac2'):
print ("YOU HAVE Chosen SECOND CLASS AC TICKET")
s=5000 elif (x=='ac3'):
print ("YOU HAVE Chosen THIRD CLASS AC TICKET")
s=4000 elif (x=='sleeper'):
print ("YOU HAVE Chosen SLEEPER TICKET")
s=3000 else:
print("Invalid option")
print("YOUR TICKET PRICE FOR EACH IS ",s,"\n")
return s,x

def sabarmati():
x=input("ENTER YOUR CHOICE OF
TICKET(AC1/AC2/AC3/SLEEPER):")
if(x=='ac1'):
print ("YOU HAVE Chosen FIRST CLASS AC TICKET")
s=9000 elif (x=='ac2'):
print ("YOU HAVE Chosen SECOND CLASS AC TICKET")
s=8000 elif (x=='ac3'):
print ("YOU HAVE Chosen THIRD CLASS AC TICKET")
s=7000 elif (x=='sleeper'):
print ("YOU HAVE Chosen SLEEPER TICKET")
s=5000 else:
print("Invalid option")
print("YOUR TOTAL TICKET PRICE FOR EACH IS ",s,"\n")
return s,x

def goa():
x=input("ENTER YOUR CHOICE OF
TICKET(AC1/AC2/AC3/SLEEPER):")

if(x=='ac1'):
print ("YOU HAVE Chosen FIRST CLASS AC TICKET")
s=10000 elif (x=='ac2'):
print ("YOU HAVE Chosen SECOND CLASS AC TICKET")
s=9000 elif (x=='ac3'):
print ("YOU HAVE Chosen THIRD CLASS AC TICKET")
s=8000 elif (x=='sleeper'):
print ("YOU HAVE Chosen SLEEPER TICKET")
s=7000 else:
print("Invalid option")
print("YOUR TOTAL TICKET PRICE FOR EACH IS ",s,"\n")
return s,x
def chennai():
x=input("ENTER YOUR CHOICE OF
TICKET(AC1/AC2/AC3/SLEEPER):") if(x=='ac1'):
print ("YOU HAVE Chosen FIRST CLASS AC TICKET")
s=12000 elif (x=='ac2'):
print ("YOU HAVE Chosen SECOND CLASS AC TICKET")
s=10000 elif (x=='ac3'):
print ("YOU HAVE Chosen THIRD CLASS AC TICKET")
s=9000 elif (x=='sleeper'):
print ("YOU HAVE Chosen SLEEPER TICKET")
s=7000 else:
print("Invalid option")
print("YOUR TOTAL TICKET PRICE FOR EACH IS ",s,"\n")
return s,x

def ticket_checking():
print('1.yes')
print('2.no')

ch=int(input("WANT TO CHECK A TICKET:"))

if ch==1: pnrno=int(input('ENTER YOUR


GENERATED PNR NO.:')) try:
s1="select * from railway where
pnr_no='{}'".format(pnrno)
cursor.execute(s1)
data=cursor.fetchall()
Data=list(data)
a=['PNRNO','P.NAME','AGE','TRAIN NO.','TRAIN
NAME','GENDER','CLASS','SOURCE','DESTINATION','FARE']
print(tabulate(data,headers=a,tablefmt="psql"))
except: print('TICKET DOES NOT EXISTS') elif
ch==2:
print('THANK YOU')
else:
print('ERROR 404:PAGE NOT FOUND')

def ticket_cancelling():
print('1.yes')
print('2.no')
ch=int(input("WANT TO CANCEL A TICKET:"))
if ch==1:
pnrno=input('ENTER THE PNR NO:')
s1="delete from railway where
pnr_no='{}'".format(pnrno) cursor.execute(s1)
print('TICKET CANCELLED') elif ch==2:
print('THANK YOU')
else:
print('ERROR 404:PAGE NOT FOUND')

def checking_2():
a=input('USER NAME:')
b=input('PASS WORD:')
try:
s1="select user_name from user_accounts
where password='{}'".format(b)
cursor.execute(s1) data=cursor.fetchall()[0]
data=list(data) if data[0]==a:
print('IS THIS YOUR ACCOUNT')
s1="select user_name from user_accounts where
password='{}'".format(b)
c1="select fname,lname from user_accounts
where password='{}'".format(b)
cursor.execute(c1) data1=cursor.fetchall()[0]
data1=list(data1) data1=data1[0]+' '+data1[1]
cursor.execute(s1) data=cursor.fetchall()[0]
data=list(data) if data[0]==a:
x=['FIRST NAME','LAST NAME','PHONE
NUMBER','GENDER','DATE OF BIRTH','AGE']
s1="select fname,lname,phno,gender,dob,age
from user_accounts where password='{}'".format(b)
cursor.execute(s1)
data=cursor.fetchall()
[0] data=list(data)
for i in range(0,6):
print(x[i],':::',data[i])
print('1.yes')
print('2.no')
vi=int(input('enter your choice:'))
if vi==1:
b1="delete from user_accounts where
password
= '{}'".format(b)
cursor.execute(b1
) return True
elif vi==2:
print('SORRY,RETRY')
else:
print('ERROR 404:PAGE NOT FOUND')
else:
return False
except:
print('ACCOUNT DOES NOT EXIST')

def checking_1():
f=input("FIRST NAME\t\t:")
l=input("LAST NAME \t\t:")
n=f+" "+l
a=input('USER NAME \t\t:')
b=input('PASS WORD \t\t:') c=input('RE-
ENTER YOUR PASS WORD :')
ph=input("PHONE NUMBER\t\t:")
print(' M=MALE','\n','F=FEMALE','\n','N=NOT TO
MENTION')
gen=input('ENTER YOUR GENDER\t:')
print("ENTER YOR DATE OF BIRTH")
d=input("Date(DD) :")
o=input("Month(MM) :")
p=input("Year(YYYY) :")
dob=d+'/'+o+'/'+p age=input('YOUR
AGE \t\t:')
v={'m':'MALE','f':'FEMALE','n':'NOT TO
MENTION'} if b==c: try:
c1="insert into user_accounts
values('{}','{}','{}','{}','{}','{}','{}','{}')".format(f,l,a,b,ph,
v[gen],dob,age) cursor.execute(c1)
print('WELCOME',f,' ',l) return True except:
print('PASSWORD ALREADY EXISTS')
return False else:
print('BOTH PASSWORDS ARE NOT MATCHING')

def checking():
a=input('USER NAME:')
b=input('PASS WORD:') try:

s1="select user_name from user_accounts where


password='{}'".format(b)
c1="select fname,lname from user_accounts
where password='{}'".format(b)
cursor.execute(c1) data1=cursor.fetchall()[0]
data1=list(data1)
data1=data1[0]+' '+data1[1]
cursor.execute(s1)
data=cursor.fetchall()[0]
data=list(data)[0] if
data==a:
print(' HII
',data1) return
True else:
return False
except:
print('ACCOUNT DOES NOT EXIST')

def checking_3():
a=input('USER NAME:')
b=input('PASS WORD:')
try:
s1="select user_name from user_accounts where
password='{}'".format(b)
c1="select fname,lname from user_accounts
where password='{}'".format(b)
cursor.execute(c1) data1=cursor.fetchall()[0]
data1=list(data1) data1=data1[0]+' '+data1[1]
cursor.execute(s1) data=cursor.fetchall()[0]
data=list(data) if data[0]==a:
x=['FIRST NAME','LAST NAME','PHONE
NUMBER','GENDER','DATE OF BIRTH','AGE']
s1="select fname,lname,phno,gender,dob,age from
user_accounts where password='{}'".format(b)
cursor.execute(s1) data=cursor.fetchall()
data=list(data)
print(tabulate(data,headers=x,tablefmt="psql"))
else:
return False
except:
print('ACCOUNT DOES NOT EXIST')

menu()
SCREENSHOTS OF
OUTPUT
SIGNING UP FOR A NEW ACCOUNT:-

NOW SIGNING IN WITH THE ABOVE ACCOUNT:-


NOW MOVING TOWARDS MORE OPTIONS AND
BOOK A RAILWAY TICKET:-
CHECKING THE TICKET WE BOOKED ABOVE:-

CANCELLATION OF THE ABOVE TICKET:-

CHECK THE ACCOUNT DETAILS:-


NOW LOG OUT THE ACCOUNT :-

LETS DELETE THE ACCOUNT:-

You might also like