0% found this document useful (0 votes)
19 views38 pages

Project Report: Assisi Convent School

The document is a project report on a Railway Reservation System created by students of Assisi Convent School for their Computer Science course. It details the project's objectives, requirements, programming languages used, and the database structure, along with the functionalities such as ticket booking, checking, and cancellation. The report includes acknowledgments, a certificate of completion, and a comprehensive code section demonstrating the implementation of the system.

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 PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views38 pages

Project Report: Assisi Convent School

The document is a project report on a Railway Reservation System created by students of Assisi Convent School for their Computer Science course. It details the project's objectives, requirements, programming languages used, and the database structure, along with the functionalities such as ticket booking, checking, and cancellation. The report includes acknowledgments, a certificate of completion, and a comprehensive code section demonstrating the implementation of the system.

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 PDF, TXT or read online on Scribd
You are on page 1/ 38

ASSISI CONVENT SCHOOL

Agra Road, Etah (UP) Pin 207001

PROJECT REPORT
On

RAILWAY RESERVATION
SYSTEM
ACADEMIC SESSION
2022-2023

SUBJECT
COMPUTER SCIENCE (083)

Prepared By :
1.AKSHAT TIWARI
2.KUSHAGRA DUBEY
3.ARYAN SINGH TOMAR
4.AMAN PRATAP

ASSISI CONVENT SCHOOL


Agra Road, Etah(UP) Pin 207001

CERTIFICATE
This is to certify that AKSHAT TIWARI 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 2022-2023.
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.

RAHUL JOHRI ANJALI MARIA


H.O.D (Computer Science) Principal
Assisi Convent School Assisi Convent School
Etah Etah

ACKNOWLEDGEMENT
Firstly, I would like to express my special thanks of
gratitude to my principal REV. SR. ANJALI MARIA,
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


MR. RAHUL JOHRI 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.

AKSHAT TIWARI

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.

PACKAGES, MODULES &


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

It regulates all
the activities
main() like ticket
booking,
checking
,cancelling and
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_ varchar(100) Stores the
username of
name
the user
User_ password Varchar(100) Stores the
password for
accounts 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 user
Source Varchar(30) Stores the
starting point
Train_ or location of
the train
details
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 Stores the AC3
Varchar(20) 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 of
the passenger
Railway
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='root',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