Low Level Design for BookMyShow

Photo by Myke Simon on Unsplash

Low Level Design for BookMyShow

Requirements,Use Cases, Activities ,Entities and Class Diagrams

ยท

3 min read

Actors

  • Customer(not logged in) and Regular User(logged in)

  • Movie booking booth official

  • Cinema admin

  • System

    Requirements

  • Display all cinemas based on the selected city/Location.

  • Cinemas can be multiple. Cinemas can have multiple halls and each hall can run one movie at a time.

  • Within a day each movie can have multiple shows.

  • User should be able to search movies by their title, language, release date, and city name.

  • On selecting the movie, the system should display cinemas running that movie, cinemas can be filtered based on the selected city.

  • The user should be able to select the cinema and book the ticket.

  • The system should redirect to the seating arrangement and the user should be able to select the seats.

  • The user should be able to complete the payment

  • Seats should be distinguishable between occupied and vacant.

  • Same seat cannot be booked by multiple users.

  • The user should be able to cancel the ticket.

User Flow

  1. User selects the city/location.

    • Display all available cinemas in the selected city/location.
  2. User chooses a cinema.

    • Cinemas may have multiple halls, and the user selects a specific hall to watch a movie.
  3. User searches for a movie.

    • Filter movies by title, language, release date, and city name.
  4. User selects a movie.

    • Display cinemas running that movie in the selected city.
  5. User chooses a showtime.

    • Within a day, each movie can have multiple showtimes.
  6. User selects the desired number of seats.

    • View the seating arrangement for the selected showtime and cinema.

    • Distinguish between occupied and vacant seats.

  7. User books the ticket.

    • Confirm the seat selection and proceed to payment.
  8. User completes the payment.

    • Payment options and confirmation of the booking.
  9. Booking confirmation.

    • Provide a booking reference and details.
  10. User can cancel the ticket.

    • If needed, allow the user to cancel the booking.

Use Case Diagram

Activity Diagram

Creating Class Diagram

Entities/Objects

  1. User, Customer, Admin, Front desk official

  2. City

  3. Cinema

  4. Cinema Hall

  5. Show

  6. Cinema Hall Seat.

  7. Booking

  8. Ticket

  9. Payment

  10. Notification

    • City, SeatCategory

    • Movie

  • MovieController

    • Theater

    • Screen

  • Show

    • Seat

      • Theater Controller

        • Booking

        • Payment

        • BookMyShow

I want to design a system for BookMyShow, I can see how each theatre has multiple screens, and each of these screens has scheduled Shows by time slots (Each show has a Movie associated with it) Actors are customers (non-logged-in users) , users (logged in user), admin(per theatre, this guy schedules shows for each of the screens) Where would you keep what data? here is my thought process

  1. There is a single db where all actual movie objects are stored

  2. There is another db where all Theatre objects are stored, each theatre has a list of screens

  3. Db for screen objects each entry has a list of screen IDS

  4. Db for shows, each entry has a movieID associated to it , which is the same ID as db1

UML

ย