0% found this document useful (0 votes)
14 views13 pages

Untitled Document 2

Uploaded by

chessaadil
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)
14 views13 pages

Untitled Document 2

Uploaded by

chessaadil
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/ 13

# Import necessary modules

import pickle
import time
import random
import os

# Class to manage tickets


class Tickets:
def _init_(self):
self.no_ofac1stclass = 0
self.no_ofac2ndclass = 0
self.no_ofac3rdclass = 0
self.no_ofsleeper = 0
self.no_oftickets = 0
self.name = ''
self.age = 0
self.resno = 0
self.status = ''
self.total_fare = 0

# Returns reservation number


def ret(self):
return self.resno

# Returns passenger name


def retname(self):
return self.name

# Displays PNR status


def display(self):
found = False
try:
with open("tickets.dat",
"rb") as fin:
pnr_number =
int(input("ENTER PNR NUMBER: "))
print("\nFetching
data... Please wait.")
time.sleep(1)
os.system('cls' if
os.name == 'nt' else 'clear')
while True:
ticket =
pickle.load(fin)
if pnr_number ==
ticket.ret():
found = True
print("=" * 80)
print("PNR
STATUS".center(80))
print("=" * 80)
print("\
nPASSENGER'S NAME:", ticket.name)
print("PASSENGE
R'S AGE:", ticket.age)
print("PNR
NO:", ticket.resno)
print("STATUS:"
, ticket.status)
print("NO OF
SEATS BOOKED:", ticket.no_oftickets)
break
except EOFError:
pass
except FileNotFoundError:
print("ERROR: 'tickets.dat'
file not found.")
if not found:
print("WRONG PNR NUMBER!")

# Sets pending status


def pending(self):
self.status = "WAITING LIST"
print("PNR NUMBER:",
self.resno)
print("STATUS:", self.status)
print("NO OF SEATS BOOKED:",
self.no_oftickets)

# Sets confirmed status


def confirmation(self):
self.status = "CONFIRMED"
print("PNR NUMBER:",
self.resno)
print("STATUS:", self.status)

# 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.")

# Class to manage trains


class Train:
def _init_(self):
self.trainno = 0
self.trainname = ''
self.no_ofac1stclass = 0
self.no_ofac2ndclass = 0
self.no_ofac3rdclass = 0
self.no_ofsleeper = 0
self.startingpt = ""
self.destination = ""

# Input train details


def getinput(self):
print("ENTER THE TRAIN
DETAILS")
self.trainname = input("ENTER
THE TRAIN NAME: ").upper()
self.trainno = int(input("ENTER
THE TRAIN NUMBER: "))
self.no_ofac1stclass =
int(input("ENTER NO_OF AC FIRST CLASS
SEATS TO BE RESERVED: "))
self.no_ofac2ndclass =
int(input("ENTER NO_OF AC SECOND CLASS
SEATS TO BE RESERVED: "))
self.no_ofac3rdclass =
int(input("ENTER NO_OF AC THIRD CLASS
SEATS TO BE RESERVED: "))
self.no_ofsleeper =
int(input("ENTER NO_OF SLEEPER CLASS
SEATS TO BE RESERVED: "))
self.startingpt = input("ENTER
THE STARTING POINT: ")
self.destination = input("ENTER
THE DESTINATION POINT: ")

# Display train details


def output(self):
print("TRAIN NAME:",
self.trainname)
print("TRAIN NUMBER:",
self.trainno)
print("STARTING POINT:",
self.startingpt)
print("DESTINATION POINT:",
self.destination)
print("NO_OF AC FIRST CLASS
SEATS RESERVED:", self.no_ofac1stclass)
print("NO_OF AC SECOND CLASS
SEATS RESERVED:", self.no_ofac2ndclass)
print("NO_OF AC THIRD CLASS
SEATS RESERVED:", self.no_ofac3rdclass)
print("NO_OF SLEEPER CLASS
SEATS RESERVED:", self.no_ofsleeper)

# Getter for train name and number


def gettrainname(self):
return self.trainname

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()

You might also like