Skip to main content

Command Palette

Search for a command to run...

Low Level Design for BookMyShow

Requirements,Use Cases, Activities ,Entities and Class Diagrams

Published
โ€ข3 min read
Low Level Design for BookMyShow
P

Hello, I'm Paras Kaushik! ๐Ÿ‘‹ I'm a dedicated software engineer based in India, specializing in C++ and proficient in the MERN stack.

๐Ÿค Interested in collaborating on innovative projects that require my technical expertise.

๐Ÿ’ฌ Passionate about participating in discussions related to software architecture and best practices.

๐Ÿ“ง Feel free to reach out to me via email: [paraskaushik12@gmail.com]

๐Ÿ”— Connect with me on LinkedIn: [https://www.linkedin.com/in/the-paras-kaushik/]

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

117 views

More from this blog

Blogs by Paras

52 posts

Hello, I'm Paras Kaushik! ๐Ÿ‘‹ I'm a dedicated software engineer based in India, specializing in C++ and proficient in the MERN stack. ๐Ÿ’ผ Open to Collaboration