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 branchName

1

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