Photo by Myke Simon on Unsplash
Low Level Design for BookMyShow
Requirements,Use Cases, Activities ,Entities and Class Diagrams
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
User selects the city/location.
- Display all available cinemas in the selected city/location.
User chooses a cinema.
- Cinemas may have multiple halls, and the user selects a specific hall to watch a movie.
User searches for a movie.
- Filter movies by title, language, release date, and city name.
User selects a movie.
- Display cinemas running that movie in the selected city.
User chooses a showtime.
- Within a day, each movie can have multiple showtimes.
User selects the desired number of seats.
View the seating arrangement for the selected showtime and cinema.
Distinguish between occupied and vacant seats.
User books the ticket.
- Confirm the seat selection and proceed to payment.
User completes the payment.
- Payment options and confirmation of the booking.
Booking confirmation.
- Provide a booking reference and details.
User can cancel the ticket.
- If needed, allow the user to cancel the booking.
Use Case Diagram
Activity Diagram
Creating Class Diagram
Entities/Objects
User, Customer, Admin, Front desk official
City
Cinema
Cinema Hall
Show
Cinema Hall Seat.
Booking
Ticket
Payment
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
There is a single db where all actual movie objects are stored
There is another db where all Theatre objects are stored, each theatre has a list of screens
Db for screen objects each entry has a list of screen IDS
Db for shows, each entry has a movieID associated to it , which is the same ID as db1