AlgoMaster Logo

Design Movie Ticket Booking System

Ashish

Ashish Pratap Singh

hard

A Movie Ticket Booking System is a software application that enables users to search for movies, view showtimes, select seats, and book tickets at cinemas or multiplexes.

Movie Booking

In this chapter, we will explore the low-level design of a movie ticket booking system in detail.

Let's start by clarifying the requirements:

1. Clarifying Requirements

Before starting the design, it's important to ask thoughtful questions to uncover hidden assumptions and better define the scope of the system.

Here is an example of how a conversation between the candidate and the interviewer might unfold:

After gathering the details, we can summarize the key system requirements.

1.1 Functional Requirements

  • Support listing movies by city, theater, language, and date
  • Allow theater administrators to manage movie schedules and showtimes per screen
  • A movie can be scheduled in multiple theaters, screens, and time slots
  • Each screen can have different seat types (e.g., Standard, Premium, Recliner) with variable pricing
  • Allow users to search for movies and showtimes by city and date
  • Allow users to view a seat map, select specific seats and book one or more seats
  • Temporarily lock selected seats during the booking process. Automatically release locked seats after a timeout if the booking is not completed
  • Allow users to cancel bookings (refund logic not required)
  • Allow users to search for movies, view seat map, select specific seats and book tickets

1.2 Non-Functional Requirements

  • Modularity: The system should follow object-oriented design principles with separate modules for movies, theaters, shows, seats, bookings, and users
  • Consistency: Booking and seat locking should be handled atomically to avoid race conditions and double bookings
  • Extensibility: The design should be easy to extend to support future features like online payments, loyalty programs, discounts, or third-party integrations.

After the requirements are clear, lets identify the core entities/objects we will have in our system.

2. Identifying Core Entities

Premium Content

This content is for premium members only.