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

Cs Project

The document outlines a Computer Science project on a Railway Reservation System created by Snehal Laxman Alkute, guided by Hari Shankar Rai, for the academic year 2024-2025. It includes acknowledgments, a certification of completion, hardware and software requirements, and detailed functionalities for both user and admin panels, such as user registration, train management, and ticket booking. The project also features Python source code demonstrating the implementation of these functionalities.
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 views35 pages

Cs Project

The document outlines a Computer Science project on a Railway Reservation System created by Snehal Laxman Alkute, guided by Hari Shankar Rai, for the academic year 2024-2025. It includes acknowledgments, a certification of completion, hardware and software requirements, and detailed functionalities for both user and admin panels, such as user registration, train management, and ticket booking. The project also features Python source code demonstrating the implementation of these functionalities.
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/ 35

PM SHRI KENDRIYA VIDYALAYA

No. 2 AFS, PUNE

COMPUTER SCIENCE PROJECT

RAILWAY RESERVATION SYSTEM

Subject: Computer Science (083)

Submitted by: Guided by:

Snehal Laxman Alkute Hari Shankar Rai (PGT CS)


Class: 12th A
Roll no:

Academic Year: 2024 – 2025


ACKNOWLEDGEMENT

I would like to express my special thanks of gratitude to our


Bharat Bhushan, Principal, PM SHRI K V No. 2, AFS, Pune
and to my CS teacher Hari Shankar Rai sir who gave me the
golden opportunity to do this wonderful project and provided all
necessary support to do the project on the topic Railway
Reservation System which also allowed me to do a lot of
research and I came to know about so many new things, I am
really thankful to them.

Secondly, I would also like to thank my parents and friends who


helped me a lot in completing this project within the limited
time frame.

Snehal Laxman Alkute


CERTIFICATE

This to certify that Snehal Laxman Alkute of class 12A has


successfully completed his/her python project on the topic
‘Railway Reservation System’ for the subject Computer
Science (083) as prescribed by CBSE, under the guidance of
Hari Shankar Rai, PGT CS, during the academic year 2024
-2025.

Internal Principal External


Examiner Examiner
HARDWARES AND SOFTWARES
REQUIRED

HARDWARES

1. Desktop / Laptop
2. Mobile Phone

SOFTWARES

1. Python
2. MySQL
3. Python Connector Module
S.no. Topic Page no.

1 Certi cate

2 Acknowledgement

3 Hardwares and Softwares


Required
4 Introduction

5 Python Source Code

6 MySQL Database

7 Outputs

8 References
fi
INTRODUCTION
The project RAILWAY RESERVATION SYSTEM
Objectives of the Project
The core objectives of our project are multi-faceted,
addressing the intricate needs of both administrators and
passengers within the railway ecosystem.

User Registration & Authentication


The project introduces a streamlined User Registration
process, requiring users to provide essential details such
as user ID, name, phone number, email ID, and password.
This information is securely stored in a MySQL database.
Additionally, robust User Authentication mechanisms
ensure the security and integrity of user accounts.

Administrative Functions
The Admin Panel, a focal point of the system, equips
administrators with indispensable tools:

1.Add Train: Administrators can add new trains to the


system, specifying crucial details such as train number,
name, origin, destination, journey distance, journey time,
seat availability, and fares.
2.Update Train Details: The system allows
administrators to modify existing train details, adapting to
dynamic demands and operational changes. This includes
updating seat availability, journey details, and fare
information.
3.Cancel Train: In response to operational constraints
or changing demands, administrators have the authority to
cancel trains, ensuring flexibility and adaptability in the
system.

Passenger Panel Functionalities


The Passenger Panel, an extension of the Customer
Panel, offers a range of functionalities:

1.Train Search: Users can search for trains based on


origin and destination, providing comprehensive details
about available trains, schedules, seat availability, and
fares.
2.Book Tickets: The system facilitates the ticket
booking process, allowing users to select trains, classes,
and passengers for reservation.
3.Cancel Tickets: A streamlined process enables
users to cancel booked tickets, providing flexibility and
convenience in managing travel plans.
User Management Functions

1.The new_user()-
Function employs a systematic approach to register new
users, generating a unique user ID and storing essential
details in the MySQL database.

2.Forgot User ID
The `forgot_user_id()` function provides a mechanism for
users to retrieve their registered user IDs via email
verification, ensuring a smooth user experience.

3.Old User Authentication


The `old_user()` function verifies user credentials, allowing
access to registered users and guiding them through the
system functionalities.

Admin Panel Operations

1.Admin Password Verification


The `adminpassword()` function implements a secure
password system for accessing the admin panel, ensuring
restricted access and system security.

2.Train Management Operations


Functions such as `add_train()`, `update_details()`, and
`cancel_train()` constitute essential operations within the
Admin Panel. These functionalities empower
administrators to add new trains, update train details, and
cancel trains when necessary.

Passenger Panel Operations

1.Train Search
The `Train_Search()` function allows users to search for
trains based on origin and destination, providing detailed
information about available trains.

2.Book Tickets
The `Book_Ticket(uid)` function simulates the ticket
booking process, allowing users to select trains, classes,
and passengers for reservation.

3.Cancel Tickets
The `Cancel_Ticket()` function facilitates the cancellation
of booked tickets, showcasing the system's ability to
handle modifications to user bookings.
PYTHON
SOURCE CODE
1. import random
2. from tabulate import tabulate
3. import mysql.connector as con
4.dbo=con.connect(host=“localhost”,user=“root”,password="ad
min",database="train_reservation")
5. co=dbo.cursor()

#NEW USER REGISTRATION SECTION


6. def new_user():
7.dbo=con.connect(host=“localhost",user="root",password="ad
min",database="train_reservation")
8. co=dbo.cursor()
9. import random
10. pid=random.randint(0,1000)*10
11. print("----------------------------------------------------------------------")
12.print(" \n Welcome to our reservation system \n Register
Yourself here to use our system")
13. uid=input("Enter your user id: ")
14. name=input("Enter your name: ")
15. pno=input("Enter your phone no: ")
16. eid=input("Enter your email_id: ")
17. pwd=input("Enter your password: ")
18. co.execute("insert into user values
('{}',{},'{}',{},'{}','{}')".format(uid,pid,name,pno,eid,pwd))
19. print("************* Congratulations!!! Your id is successfully
created **************")
20. print("----------------------------------------------------------------------")
21. dbo.commit()

#FORGET USER ID
22. def forgot_user_id():
23.dbo=con.connect(host="localhost",user="root",password="ad
min",database="train_reservation")
24. co=dbo.cursor()
25. email=input("Enter your registered email: ")
26. co.execute("select user_id from user where email_id like
'{}'".format(email))
27. emel=co.fetchall()
28. for i in emel:
29. print("Your user_id is: ",(i[0]))

# old user id
30. def old_user():
reservation")
32. co=dbo.cursor()
31.dbo=con.connect(host=“localhost”,user="root",password="ad
min",database="train_reservation")
33. print("\n---------------------------------------------------------------\n")
34. uid=input("Enter your user id: ")
35. co.execute("select user_id from user where user_id like
'{}'".format(uid))
36. b=co.fetchall()
37. c=len(b)
38. if c==0:
39. print("---------------- Your given id is not registered-----------------")
40. print("\n------------------------------------------------------------------\n")
41. print("1. Try again")
42. print("2. Forgot user id")
43. print("3. Register as a new user")
44. choose=int(input("Choose an option from above: "))
45. if choose==1:
46. old_user()
47. elif choose==2:
48. forgot_user_id()
49. elif choose==3:
50. new_user()
51. else:
52. pas=input("Enter your password: ")
53. co.execute("select password from user where password like
'{}'".format(pas))
54. n=co.fetchall()
55. for i in n:
56. if pas==(i[0]):
a. print("\n---------------------------------------------------------------\n")
b. print("-----------Welcome back sir/ma'am what's your plan
today??————-?n”)
c. passenger_panel(uid)

# PASSWORD FUNCTION FOR ACCESS TO USER PANEL


57. def user_panel():
58. print(" 1. Register")
59. print(" 2. Login")
60. print(" 3. Back")
61. out=int(input("Enter your choice: "))
62. if out==1:
63. new_user()
64. elif out==2:
65. old_user()
66. elif out==3:
67. main_menu()

#PASSWORD FUNCTION FOR ACCESS TO ADMIN FUNCTION


68. def adminpassword():
69. password=(input("Enter your password: "))
70. if password=="CLASS12CS":
71. print("******************Access Granted********************")
72. print("---------------------------------------------------------------------")
73. admin_panel()
74. else:
75. print("***************ACCESS NOT GRANTED ENTER
CORRECT PASSWORD************")
76. print("---------------------------------------------------------------------")
77. adminpassword()

#ADD TRAIN
78. def add_train():
79.dbo=con.connect(host="localhost",user="root",password="ad
min",database="train_reservation")
80. co=dbo.cursor()
81. print("---------------------------------------------------------------------")
82. a=int(input("Enter train no: "))
83. b=input("Enter train name: ")
84. c=input("Enter train origin: ")
85. d=input("Enter train destination: ")
86. e=int(input("Enter train journey distance: "))
87. g=input("Enter train journey time: ")
88. h=int(input("Enter no of seats in AC: "))
89. i=int(input("Enter no of seats in SL: "))
90. j=int(input("Enter no of seats in GEN: "))
91. k=int(input("Enter price of AC: "))
92. l=int(input("Enter price of SL: "))
93. m=int(input("Enter price of GEN: "))
94. n=input("Enter days available: ")
95. print("---------------------------------------------------------------------")
96. co.execute("insert into train_schedule values
({},'{}','{}','{}',{},'{}',{},{},{},{},{},
{},'{}')".format(a,b,c,d,e,g,h,i,j,k,l,m,n))
97. print("*********You have added a new train details
successfully************")
98. dbo.commit()

#UPDATE TRAIN TABLE


99. def update_details():
100.dbo=con.connect(host="localhost",user="root",password="a
dmin",database="train_reservation")
101. co=dbo.cursor()
102. print("---------------------------------------------------------------------")
103. print("******Welcome to update train system******")
104. print("1. Update train no")
105. print("2. Update train name")
106. print("3. Update train origin")
107. print("4. Update train destination")
108. print("5. Update journey dist")
109. print("6. Update available days")
110. print("7. Update journey time")
111. print("8. Update no of seats in AC")
112. print("9. Update no of seats in SL")
113. print("10. Update no of seats in GEN")
114. print("11. Update price of AC")
115. print("12. Update price of SL")
116. print("13. Update price of GEN")
117. print("14. Exit")
118. x=int(input("Enter your choice to use: "))
119. while True:

# To Update train no
120. if x==1:
121. print("---------------------------------------------------------------------")
122. print("**********YOU ARE GOING TO UPDATE TRAIN
NO***********")
123. tname=input("Enter train name whose no you want to
update: ")
124. tno=int(input("Enter updated train no: "))
125. co.execute("update train_schedule set train_no={} where
train_name=‘{}'". format(tno,tname))
126. print("*******UPDATED SUCCESSFULLY********")
127. print("---------------------------------------------------------------------")
128. dbo.commit()
129. return

# To Update train name


130. elif x==2:
131. print("---------------------------------------------------------------------")
132. print("**********YOU ARE GOING TO UPDATE TRAIN
NAME***********")
133. tno=int(input("Enter train no whose name you want to
update: "))
134. tname=input("Enter updated train name: ")
135. co.execute("update train_schedule set train_name='{}' where
train_no={}”. format(tname,tno))
136. print("*******UPDATED SUCCESSFULLY********")
137. print("---------------------------------------------------------------------")
138. dbo.commit()
139. return

# To Update train origin


140. elif x==3:
141. print("---------------------------------------------------------------------")
142. print("**********YOU ARE GOING TO UPDATE TRAIN
ORIGIN***********")
143. tno=int(input("Enter train no whose origin you want to
update: "))
144. orgn=input("Enter updated train origin: ")
145. co.execute("update train_schedule set origin='{}' where
train_no={}”. format(orgn,tno))
146. print("*******UPDATED SUCCESSFULLY********")
147. print("---------------------------------------------------------------------")
148. dbo.commit()
149. return

# To Update train destination


150. elif x==4:
151. print("---------------------------------------------------------------------")
152. print("**********YOU ARE GOING TO UPDATE TRAIN
DESTINATION***********")
153. tno=int(input("Enter train no whose destination you want to
update: "))
154. td=input("Enter updated train destination: ")
155. co.execute("update train_schedule set destination='{}' where
train_no={}".format(td,tno))
156. print("*******UPDATED SUCCESSFULLY********")
157. print("---------------------------------------------------------------------")
158. dbo.commit()
159. return
# To Update journey distance
160. elif x==5:
161. print("---------------------------------------------------------------------")
162. print("**********YOU ARE GOING TO UPDATE JOURNEY
DISTANCE ***********")
163. tno=int(input("Enter train no whose journey dist you want to
update: "))
164. tjd=input("Enter updated journey dist: ")
165. co.execute("update train_schedule set journey_distance='{}'
wheretrain_no={}". format(tjd,tno))
166. print("*******UPDATED SUCCESSFULLY********")
167. print("---------------------------------------------------------------------")
168. dbo.commit()
169. return

# To Update the days train is available


170. elif x==6:
171. print("---------------------------------------------------------------------")
172. print("**********YOU ARE GOING TO UPDATE AVAILABLE
DAYS***********")
173. tno=int(input("Enter train no whose avl_days you want to
update: "))
174. tad=input("Enter updated available days: ")
175. co.execute("update train_schedule set avl_days ='{}' where
train_no={}".
format(tad,tno))
176. print("*******UPDATED SUCCESSFULLY********")
177. print("-----------------------------------------------------------------------")
178. dbo.commit()
179. return

# To Update journey time


180. elif x==7:
181. print("---------------------------------------------------------------------")
182. print("**********YOU ARE GOING TO UPDATE JOURNEY
TIME***********")
183. tno=int(input("Enter train no whose journey_time you want
to update: "))
184. tj=input("Enter updated journey time: ")
185. co.execute("update train_schedule set total_time='{}' where
train_no={}".format(tj,tno))
186. print("*******UPDATED SUCCESSFULLY********")
187. print("---------------------------------------------------------------------")
188. dbo.commit()
189. return

# To Update no of seats in ac coach of that train


190. elif x==8:
191. print("---------------------------------------------------------------------")
192. print("**********YOU ARE GOING TO UPDATE SEATS IN
AC***********")
193. tno=int(input("Enter train no whose no of seats in AC you
want to update: "))
194. tsa=input("Enter updated no of seats in AC: ")
195. co.execute("update train_schedule set ac1='{}' where
train_no={}".format(tsa,tno))
196. print("*******UPDATED SUCCESSFULLY********")
197. print("---------------------------------------------------------------------")
198. dbo.commit()
199. return

# To Update no of seats in SL coach of that train


200. elif x==9:
201. print("---------------------------------------------------------------------")
202. print("**********YOU ARE GOING TO UPDATE SEATS IN
SL***********")
203. tno=int(input("Enter train no whose no of seats in Sl you
want to update: "))
204. tss=input("Enter updated no of seats in Sl: ")
205. co.execute("update train_schedule set sl='{}' where
train_no={}".format(tss,tno))
206. print("*******UPDATED SUCCESSFULLY********")
207. print("---------------------------------------------------------------------")
208. dbo.commit()
209. return

# To Update no of seats in GEN coach of that train


210. elif x==10:
211. print("---------------------------------------------------------------------")
212. print("**********YOU ARE GOING TO UPDATE SEATS IN
GEN***********")
213. tno=int(input("Enter train no whose no of seats in GEN you
want to update: "))
214. tsg=input("Enter updated no of seats in GEN: ")
215. co.execute("update train_schedule set gen='{}' where
train_no={}".
format(tsg,tno))
216. print("*******UPDATED SUCCESSFULLY********")
217. print("---------------------------------------------------------------------")
218. dbo.commit()
219. return

# To Update fare price of AC of that train


220. elif x==11:
221. print("---------------------------------------------------------------------")
222. print("**********YOU ARE GOING TO UPDATE FARE PRICE OF
AC***********")
223. tno=int(input("Enter train no whose fare price of ac you want
to update: "))
224. tfa=input("Enter updated fare price of ac: ")
225. co.execute("update train_schedule set ac_fare={} where
train_no={}".format(tfa,tno))
226. print("*******UPDATED SUCCESSFULLY********")
227. print("---------------------------------------------------------------------")
228. dbo.commit()
229. return
# To Update fare price of SL of that train
230. elif x==12:
231. print("---------------------------------------------------------------------")
232. print("**********YOU ARE GOING TO UPDATE FARE PRICE OF
SL***********")
233. tno=int(input("Enter train no whose fare price of SL you
want to update: "))
234. tfs=input("Enter updated fare price of SL: ")
235. co.execute("update train_schedule set sl_fare={} where
train_no={}".format(tfs,tno))
236. print("*******UPDATED SUCCESSFULLY********")
237. print("---------------------------------------------------------------------")
238. dbo.commit()
239. return

# To Update fare price of GEN of that train


240. elif x==13:
241. print("---------------------------------------------------------------------")
242. print("**********YOU ARE GOING TO UPDATE FARE PRICE OF
GEN***********")
243. tno=int(input("Enter train no whose fare price of GEN you
want to update: "))
244. tfg=input("Enter updated fare price of GEN: ")
245. co.execute("update train_schedule set gen_fare={} where
train_no={}".
format(tfg,tno))
246. print("*******UPDATED SUCCESSFULLY********")
247. print("---------------------------------------------------------------------")
248. dbo.commit()
249. return
250. elif x==14:
251. 252. break
253. return
print("**********YOU ARE NOW OUT OF UPDATE DETAILS
SECTION***********")
#CANCEL TRAIN
254. def cancel_train():
255.dbo=con.connect(host="localhost",user="root",password="a
dmin",database="train_reservation")
256. co=dbo.cursor()
257. ct=int(input("enter train no which you want to cancel: "))
258. co.execute("delete from train_schedule where
train_no={}".format(ct))
259. dbo.commit()
260. print("*********** Train cancelled Successfully ****************")

#ADMIN PANEL OPTIONS


261. def admin_panel():
262. while True:
263. try:
264. print("---------------------------------------------------------------------")
265. print("******Welcome to admin panel******")
266. print("1. Add train")
267. print("2. Update details")
268. print("3. Cancel Train")
269. print("4. Log out")
270. opt=int(input("Choose your option: "))
271. if opt==1:
a. add_train()
272. elif opt==2:
a. update_details()
273. elif opt==3:
a. cancel_train()
274. elif opt==4:
a. print("**********You are out of admin panel***********")
b. print("---------------------------------------------------------------------")
c. main_menu()
275. except InvalidOptionError as e:
276. print(f"Error: {e}")
277. except:
278. print("**********Choose a correct option***********")
279. print("---------------------------------------------------------------------")
#PASSENGER PANEL FUNCTIONALITIES
280. def Train_Search():
281.dbo=con.connect(host="localhost",user="root",password="a
dmin",database="train_reservation")
282. co=dbo.cursor()
283. o=input("Enter your origin: ")
284. d=input("Enter your destination: ")
285. co.execute("select * from train_schedule where origin like '%
{}%' and destination like '%{}%'".format(o,d))
286. a=co.fetchall()
287. for i in a:
288. print("Train no.: ",a[0][0])
289. print("Train name: ",a[0][1])
290. print("Origin: ",a[0][2])
291. print("Destination: ",a[0][3])
292. print("Journey distance: ",a[0][4])
293. print("Available days: ",a[0][12])
294. print("total time: ",a[0][5])
295. print("Seats in ac1: ",a[0][6])
296. print("Seats in sl: ",a[0][7])
297. print("Seats in GEN: ",a[0][8])
298. print("Fare of ac1: ",a[0][9])
299. print("Fare of sl: ",a[0][10])
300. print("Fare of gen: ",a[0][11])
301. dbo.commit()

#BOOK TICKETS
302. def Book_Ticket(uid):
303.dbo=con.connect(host=“localhost",user="root",password="a
dmin",database="train_reservation")
304. co=dbo.cursor()
305. print("THIS IS OUR ALL TRAINS AVAILABLE \n
---------------------------------------------
------------------------")
306. op="select train_no,train_name,origin,destination from
train_schedule"
307. co.execute(op)
308. r=co.fetchall()
309. columns=[i[0] for i in co.description]
310. print(tabulate(r,headers=columns,tablefmt="fancy_grid"))
311. print("---------------------------------------------------------------------\n\n")
312. trainno=int(input("Enter your Train no: "))
313. tcktno=int(input("Enter no of seats you want to book: "))
314. print("1. AC TICKET")
315. print("2. SL TICKET")
316. print("3. GEN TICKET")
317. typ=int(input("Enter your choice of class: "))
318. if typ==1:
319. a=co.execute("select ac1_fare from train_schedule where
train_no={}".format(trainno))
320. b=co.fetchall()
321. print(b[0][0])
322. elif typ==2:
323. a=co.execute("select sl_fare from train_schedule where
train_no={}".format(trainno))
324. b=co.fetchall()
325. print(b[0][0])
326. elif typ==3:
327. a=co.execute("select gen_fare from train_schedule where
train_no={}".format(trainno))
328. b=co.fetchall()
329. print(b[0][0])
330. for i in range (tcktno):
331. cus1=input("Enter customer name: ")
332. age=int(input("Enter your age: "))
333. print("--------------- For gender M=Male, F=Female, O=Other
------------------")
334. gender=input("Enter your gender: ")
335. j=random.randint(100000,999999)
336. print("Your PNR no is: ",j)
337. cnf="Confirmed"
338. p=b[0][0]
339. co.execute("insert into booked_tickets values
(‘{}',{},{},'{}'
{},'{}'{},'{}')".format(uid,j,trainno,cus1,age,gender,p,cnf))
340. p=b[0][0]
341. amt=tcktno*p
342. print("Your total ticket price is: ",amt)
343. dbo.commit()
344. def Cancel_Ticket():
345.dbo=con.connect(host="localhost",user="root",password="a
dmin",database="train_reservation")
346. co=dbo.cursor()
347. pnr=int(input("enter pnr no. you want to cancel: "))
348. co.execute("delete from booked_tickets where
pnr_no={}".format(pnr))
349. dbo.commit()
350. print("*********** Your ticket cancelled Successfully
****************")

#PASSENGER PANEL
351. def passenger_panel(uid):
352.dbo=con.connect(host="localhost",user="root",password="a
dmin",database="train_reservation")
353. co=dbo.cursor()
354. while True:
355. print("---------------------------------------------------------------------")
356. print("******Welcome to passenger panel******")
357. print("1. Train Search")
358. print("2. Book Ticket")
359. print("3. Cancel Ticket")
360. print("4. Log out")
361. choic=int(input("Enter your choice to use: "))
362. if choic==1:
363. Train_Search()
364. elif choic==2:
365. Book_Ticket(uid)
366. elif choic==3:
367. Cancel_Ticket()
368. elif choic==4:
369. main_menu()
370. print("*****You are successfully logged out of Passenger
panel*****")
371. print("---------------------------------------------------------------------")

#Panel functions
372. def main_menu():
373. print("-----------------------------------------------------")
374. print("********WELCOME TO TRAIN RESERVATION
SYSTEM********")
375. print("1. Admin panel")
376. print("2. Passenger panel")
377. print("3. Exit")
378. ch=int(input("Enter your choice: "))
379. while True:
380. if ch==1:
381. adminpassword()
382. elif ch==2:
383. user_panel()
384. elif ch==3:
385. print("***** Thank You for using reservation system*****")
386. print("---------------------------------------------------------------------")
387. break
388. main_menu()
MY SQL
DATABASE
TRAIN TABLE
USER DETAILS
BOOKED TICKETS
OUTPUTS
TRAIN RESERvATION MAIN PAgE:

27 | P a g e
THE ADMIN lOgIN PANEl:

28 | P a g e
CANCEl TICKET:

bOOKINg TICKETS :

29 | P a g e
SEARCH TRAIN:

30 | P a g e
REFERENCES:
1. CLASS 11th& 12th Computer
Science Book
(SUMITA ARORA)

2.PYTHON
https://www.python.org/

3.MySQL
https://www.mysql.com/

4.KV Coders
https://kvcoders.in

79874: 5. IRCTC:
https://www.irctc.co.in/nget/
train-search

31 | P a g e

You might also like