BMS is a movie ticket booking system provides its customers the ability to purchase theatre seats online. E-ticketing systems allow the customers to browse through movies currently being played and to book seats, anywhere and anytime. The following was discovered as part of building this project:
- User able to register with the following info: Name, DOB, Phone, Email
- User could book movie ticket in the order. Our ticket booking service should be able to list down different cities where its affiliate cinemas are located. Once the user selects the city, the service should display the movies released in that particular city. Once the user selects the movie, the service should display the cinemas running that movie and its available shows. The user should be able to select the show at a particular cinema and book their tickets. The service should be able to show the user the seating arrangement of the cinema hall and the user should be able to select multiple seats according to their preference. The user should be able to distinguish available seats from the booked ones. Users should be able to put a hold on the seats for five minutes before they make a payment to finalize the booking. The user should be able to wait if there is a chance that seats might become available – e.g. when holds by other users expire. Waiting customers should be serviced fairly in a first come first serve manner.
- Design Consideration: For simplicity, let’sassume our service doesn’t require user authentication. The system will not handle partial ticket orders. Either user gets all the tickets they want, or they get nothing. Fairness is mandatory for the system. To stop system abuse, we can restrict users not to book more than ten seats. We can assume that traffic would spike on popular/much-awaited movie releases, and the seats fill up pretty fast. The system should be scalable, highly available to cope up with the surge in traffic.
USER:
- NAME
- DOB
- PHONE
CITY:
- NAME
- STATE
- LIST of THEATER
THEATER
- NAME
- ADDRESS
- LIST of AUDITORIUM
AUDITORIUM:
- NAME
- LIST of SEATS
- LIST of SHOW
- LIST of FEATURES
SEAT:
- NAME
- SEATTYPE
- SEATSTATUS
- ROW
- COLUMN
SHOW:
- MOVIE
- START TIME
- END TIME
- LIST of FEATURES
MOVIE:
- NAME
- DURATION
- ACTORS
- GENRE
- LIST of FEATURE
ACTOR:
- NAME
TICKET:
- BOOKINGID
- LIST of PAYMENT
- SHOW
- USER
- AMOUNT
- LIST of SHOWSEAT
PAYMENT:
- PAYMENT METHOD
- AMOUNT
- PAYMENTSTATUS
- REFERENCEID
- TICKET
ENUMS:
- SEATTYPE : VIP, GOLD, PLATINUM
- SEATSTATUS ENUM : EMPTY, BOOKED, HOLD
- FEATURES ENUM: 2D, IMAX
- GENRE ENUM : ROMANCE
- PAYMENT METHOD: DEBIT, CREDIT, UPI
- PAYMENTSTATUS : SUCC, FAIL
For further reference, please consider the following sections:
- Concurrency In Booking system
- Concurrency and Locking
- Database Isolation Level
- Transaction Iso Level
- @Transactional
The following guides illustrate how to use some features concretely: