Build Complete Railway Reservation System
Business Scenario
Welcome!
Today is your last day as a Junior Data Analyst at the Indian Railways Reservation Department
Till now you have successfully implemented all the basic as well as advanced fundamentals in Python Programming language
After successfully developing individual modules across previous labs, the department now requires one integrated Railway Reservation Automation System capable of handling booking, validation and reporting operations together
Pre-Lab Preparation
Topic: Build Complete Reservation System
1) Combine modules
2) Build full system
Git Pull
Task 1: Initialize Railway Reservation System Core
git pull origin branchName1
Import the Regular Expression module & Create the RailwayReservationSystem class
Click here for previous lab : Python Lab 17
import re
class RailwayReservationSystem:
def __init__(self):
self.train_name = "Rajdhani Express"
self.available_seats = 5
self.passengers = []
def book_ticket(self, name, pnr, seat, fare):
passenger = {
"name": name,
"pnr": pnr,
"seat": seat,
"fare": fare
}
self.passengers.append(passenger)
def validate_ticket(self, pnr, seat):
pnr_pattern = r'^\d{8}$'
seat_pattern = r'^[A-Z][0-9]{1,2}$'
pnr_valid = re.fullmatch(pnr_pattern, pnr)
seat_valid = re.fullmatch(seat_pattern, seat)
Create Object
2
import re
class RailwayReservationSystem:
def __init__(self):
self.train_name = "Rajdhani Express"
self.available_seats = 5
self.passengers = []
def book_ticket(self, name, pnr, seat, fare):
passenger = {
"name": name,
"pnr": pnr,
"seat": seat,
"fare": fare
}
self.passengers.append(passenger)
def validate_ticket(self, pnr, seat):
pnr_pattern = r'^\d{8}$'
seat_pattern = r'^[A-Z][0-9]{1,2}$'
pnr_valid = re.fullmatch(pnr_pattern, pnr)
seat_valid = re.fullmatch(seat_pattern, seat)
return pnr_valid and seat_valid
def allocate_seat(self):
if self.available_seats > 0:
self.available_seats -= 1
return "Seat Allocated"
return "No Seats Available"system = RailwayReservationSystem()Add Passenger Bookings
1
Task 2: Implement Passenger Booking Module
system.book_ticket(
"Rahul Sharma",
"43821756",
"A1",
1200
)
system.book_ticket(
"Priya Singh",
"67934521",
"A2",
1200
)
print(system.passengers)Output
2
Task 3: Implement Ticket Validation Module
for passenger in system.passengers:
result = system.validate_ticket(
passenger["pnr"],
passenger["seat"])
print(
passenger["name"],
"-",
result)Validate the tickets
1
Output
2
Task 4: Implement Seat Allocation System
Check Seat Allocation
1
for passenger in system.passengers:
print(
passenger["name"],
"-",
system.allocate_seat())Task 5: Generate Final Reservation Report
Check Seat Availability
2
print(
"Available Seats :",
system.available_seats)for passenger in system.passengers:
print("=" * 40)
print("Passenger :", passenger["name"])
print("PNR :", passenger["pnr"])
print("Seat :", passenger["seat"])
print("Fare :", passenger["fare"])
print("=" * 40)
print("\nBooking Summary")
print("-" * 30)
print(
"Total Passengers :",
len(system.passengers))
print(
"Available Seats :",
system.available_seats)
if system.available_seats > 0:
print("Reservation Status : Open")
else:
print("Reservation Status : Full")Output
2
Great job!
You have successfully completed the Railway Reservation System project and applied concepts ranging from Python fundamentals to advanced programming techniques through a continuous real world application
Checkpoint
Git Push
git push origin branchName