Design a Concert Ticket Booking System

Difficulty: Medium Source: awesome-low-level-design

Requirements

  1. View available concerts and seating
  2. Search by artist, venue, date, time
  3. Select seats and purchase tickets
  4. Handle concurrent booking (no double-booking)
  5. Fair booking opportunities
  6. Secure payment processing
  7. Booking confirmations via email/SMS
  8. Waiting list for sold-out concerts

Class Diagram

Class Diagram


Classes, Interfaces and Enumerations

Class/Interface Description
Concert Id, artist, venue, date/time, seats list
Seat Id, number, type, price, status
SeatType Enum: regular, premium, VIP
SeatStatus Enum: available, booked, reserved
Booking Id, user, concert, seats, total price, status
BookingStatus Enum: pending, confirmed, cancelled
User Id, name, email
ConcertTicketBookingSystem Singleton
SeatNotAvailableException Custom exception

Design Patterns Used

Pattern Application
Singleton ConcertTicketBookingSystem ensures centralized booking coordination and prevents double-booking

Code Implementations

Language Source Code
Java View on GitHub
Python View on GitHub
C++ View on GitHub
C# View on GitHub
Go View on GitHub