Site icon DataFlair

DSA Python Project – Movie Ticket Booking

Program 1

# Movie Ticket Booking System ( Based on 2 D Array)

class Seat:
    def __init__(self):
        self.booked = False
        self.name = ""
  
class MovieTheater:
    ROWS = 5
    COLS = 10

    def __init__(self):
        self.seats = [[Seat() for _ in range(self.COLS)] for _ in range(self.ROWS)]

    def display_seats(self):
        print("\nSeating Arrangement (1 = Booked, 0 = Available):")
        for i in range(self.ROWS):   # i=0
            print(f"Row {i + 1}: ", end="")   # Row-1
            for j in range(self.COLS):  # j=0
                print("1" if self.seats[i][j].booked else "0", end=" ")
            print()

    def book_seat(self):
        try:
            row = int(input(f"Enter row (1-{self.ROWS}): "))
            col = int(input(f"Enter seat number (1-{self.COLS}): "))
        except ValueError:
            print("Invalid input. Please enter a number.")
            return

        if not self.is_valid_seat(row, col):
            print("Invalid seat selection.")
            return

        seat = self.seats[row - 1][col - 1]   # row =0  col=0
        if seat.booked==True:
            print("Seat already booked.")
        else:
            name = input("Enter your name: ").strip()
            seat.booked = True
            seat.name = name
            print(f"Seat ({row}, {col}) booked successfully for {name}.")

    def cancel_seat(self):
        try:
            row = int(input(f"Enter row to cancel (1-{self.ROWS}): "))
            col = int(input(f"Enter seat number to cancel (1-{self.COLS}): "))
        except ValueError:
            print("Invalid input. Please enter a number.")
            return

        if not self.is_valid_seat(row, col):
            print("Invalid seat selection.")
            return

        seat = self.seats[row - 1][col - 1]    # row=0  col=0
        if seat.booked==True:
            print(f"Booking for {seat.name} canceled.")
            seat.booked = False
            seat.name = ""
        else:
            print("Seat is already available.")

    def show_bookings(self):
        print("\nBooked Seats:")
        found = False
        for i in range(self.ROWS):
            for j in range(self.COLS):
                seat = self.seats[i][j]  
                if seat.booked==True:
                    print(f"Seat ({i + 1}, {j + 1}) - {seat.name}")
                    found = True
        if not found:
            print("No bookings yet.")

    def is_valid_seat(self, row, col):
        return 1 <= row <= self.ROWS and 1 <= col <= self.COLS

    def run(self):
        while True:
            print("\n----------------- Movie Ticket Booking System -----------------")
            print("1. Show Seat Layout")
            print("2. Book a Seat")
            print("3. Cancel a Booking")
            print("4. Show All Bookings")
            print("5. Exit")
            print("----------------------------------------------------------------")
            choice = input("Enter your choice: ").strip()

            if choice == "1":
                self.display_seats()
            elif choice == "2":
                self.book_seat()
            elif choice == "3":
                self.cancel_seat()
            elif choice == "4":
                self.show_bookings()
            elif choice == "5":
                print("Exiting system. Goodbye!")
                break
            else:
                print("Invalid choice. Try again.")

# Run the program
if __name__ == "__main__":
    theater = MovieTheater()
    theater.run()

 

 

Exit mobile version