Untitled Document 2
Untitled Document 2
import pickle
import time
import random
import os
# Cancels a ticket
def cancellation(self):
found = False
pnr_number = int(input("ENTER
PNR NUMBER: "))
try:
with open("tickets.dat",
"rb") as fin, open("temp.dat", "wb") as
fout:
while True:
ticket =
pickle.load(fin)
if ticket.ret() !=
pnr_number:
pickle.dump(tic
ket, fout)
else:
found = True
except EOFError:
pass
except FileNotFoundError:
print("ERROR: 'tickets.dat'
file not found.")
os.remove("tickets.dat")
os.rename("temp.dat",
"tickets.dat")
if not found:
print("NO SUCH RESERVATION
NUMBER FOUND")
else:
print("TICKET CANCELLED")
# Reserves a ticket
def reservation(self):
train_no = int(input("ENTER THE
TRAIN NO: "))
try:
with open("trdetails.dat",
"rb") as fin:
while True:
train =
pickle.load(fin)
if train_no ==
train.gettrainno():
print("TRAIN
NAME IS:", train.gettrainname())
self.name =
input("ENTER THE PASSENGER'S NAME: ")
self.age =
int(input("PASSENGER'S AGE: "))
print("SELECT A
CLASS YOU WOULD LIKE TO TRAVEL IN:")
print("1. AC
FIRST CLASS")
print("2. AC
SECOND CLASS")
print("3. AC
THIRD CLASS")
print("4.
SLEEPER CLASS")
choice =
int(input("ENTER YOUR CHOICE: "))
if choice == 1:
self.no_oft
ickets = int(input("ENTER NO_OF FIRST
CLASS AC SEATS TO BE BOOKED: "))
self.total_
fare = 1000 * self.no_oftickets
elif choice ==
2:
self.no_oft
ickets = int(input("ENTER NO_OF SECOND
CLASS AC SEATS TO BE BOOKED: "))
self.total_
fare = 900 * self.no_oftickets
elif choice ==
3:
self.no_oft
ickets = int(input("ENTER NO_OF THIRD
CLASS AC SEATS TO BE BOOKED: "))
self.total_
fare = 800 * self.no_oftickets
elif choice ==
4:
self.no_oft
ickets = int(input("ENTER NO_OF SLEEPER
CLASS SEATS TO BE BOOKED: "))
self.total_
fare = 550 * self.no_oftickets
print("TOTAL
AMOUNT TO BE PAID =", self.total_fare)
self.resno =
random.randint(1000, 9999)
self.confirmati
on()
with
open("tickets.dat", "ab") as fout:
pickle.dump
(self, fout)
break
except EOFError:
print("NO SUCH TRAINS
FOUND!")
except FileNotFoundError:
print("ERROR:
'trdetails.dat' file not found.")
def gettrainno(self):
return self.trainno
# Main menu
def menu():
tr = Train()
tick = Tickets()
while True:
print("\nRAILWAY RESERVATION
SYSTEM")
print("1. UPDATE TRAIN
DETAILS")
print("2. TRAIN DETAILS")
print("3. RESERVATION OF
TICKETS")
print("4. CANCELLATION OF
TICKETS")
print("5. DISPLAY PNR STATUS")
print("6. QUIT")
choice = int(input("ENTER YOUR
CHOICE: "))
if choice == 1:
password = input("ENTER THE
PASSWORD: ")
if password == "***":
tr.getinput()
with
open("trdetails.dat", "ab") as fout:
pickle.dump(tr,
fout)
else:
print("WRONG PASSWORD")
elif choice == 2:
try:
with
open("trdetails.dat", "rb") as fin:
while True:
tr =
pickle.load(fin)
tr.output()
input("PRESS
ENTER TO VIEW NEXT TRAIN DETAILS")
except EOFError:
pass
except FileNotFoundError:
print("ERROR:
'trdetails.dat' file not found.")
elif choice == 3:
tick.reservation()
elif choice == 4:
tick.cancellation()
elif choice == 5:
tick.display()
elif choice == 6:
break
else:
print("INVALID CHOICE!")
menu()