CODE:
class Bus:
def __init__(self, bus_route, sp, ep, seats, cost_per_seat):
self.bus_route = bus_route
self.sp = sp
self.ep = ep
self.seats = seats
self.available_seats = seats
self.cost_per_seat = cost_per_seat
self.booked_seats = []
def book_seat(self, seat_number):
if 1 <= seat_number <= self.seats:
if seat_number not in self.booked_seats:
self.available_seats -= 1
self.booked_seats.append(seat_number)
return True
else:
print(f"Seat {seat_number} is already booked. Please choose another seat.")
return False
else:
print("Invalid seat number.")
return False
def __str__(self):
return f"{self.bus_route} ({self.sp} to {self.ep}) - {self.available_seats} seats available"
def get_customer_details():
name = input("Enter your Name: ")
gender = input("Enter your Gender (M/F): ")
age = int(input("Enter your Age: "))
return name, gender, age
def generate_receipt(bus, seat_numbers, customer_name, customer_details, payment_method):
receipt = f"""
***Welcome to SETC Bus Booking System***
Route: {bus.bus_route}
From: {bus.sp}
To: {bus.ep}
Seats Booked: {', '.join(map(str, seat_numbers))}
Customer Name: {customer_name}
Gender: {customer_details[1]}
Age: {customer_details[2]}
Cost: Rs.{bus.cost_per_seat * len(seat_numbers)}
Payment Method: {payment_method}
***Thank You for Choosing Us!***
"""
with open(f"receipt_{bus.bus_route}_{customer_name}.txt", "w") as file:
file.write(receipt)
print("Receipt downloaded.")
def main():
buses = [
Bus("SETC1", "Coimbatore", "Udumalpet", 60, 150),
Bus("SETC2", "Pollachi", "Palani", 55, 120),
Bus("SETC3", "Palani", "Madurai", 50, 180)
]
while True:
print("\n-----Menu-----\n1. View Buses\n2. Book Seats\n3. Exit")
choice = input("Enter choice: ")
if choice == '1':
print("\nAvailable Routes:")
for i, bus in enumerate(buses):
print(f"{i + 1}. {bus}")
elif choice == '2':
print("\n***Welcome to SETC Bus Booking System***")
bus_index = int(input("Choose bus number: ")) - 1
if 0 <= bus_index < len(buses):
seats_requested = int(input("How many seats do you want to book? : "))
if seats_requested > 0:
booked_seats = []
for _ in range(seats_requested):
while True:
try:
seat_number = int(input(f"Enter desired seat number (1-{buses[bus_index].seats}): "))
if buses[bus_index].book_seat(seat_number):
booked_seats.append(seat_number)
break
except ValueError:
print("Invalid seat number. Please enter a number.")
if len(booked_seats) == seats_requested:
customer_details = get_customer_details()
payment_method = input("Enter payment method (Card/Cash): ").upper()
generate_receipt(buses[bus_index], booked_seats, customer_details[0], customer_details, payment_method)
else:
print("Seat booking failed.")
else:
print("Invalid number of seats.")
else:
print("Invalid bus number.")
elif choice == '3':
print("Thank you for using us!.")
break
else:
print("Invalid choice. Please try again.")
if __name__ == "__main__":
main()
OUTPUT: