电影票预订系统
添加时间:2022-01-29 17:39:27
来源:
我们需要设计一个在线电影票预订系统,用户可以在其中搜索给定城市的电影并进行预订。本文将向您解释预订系统的架构。
如何实施座位预订流程?
解决方案 :
用于用户角色的主要类:
用户
电影
剧院
预订
地址
设施
// Java skeleton code to design an online movie
// booking system.
Enums :
public enum SeatStatus {
SEAT_BOOKED,
SEAT_NOT_BOOKED;
}
public enum MovieStatus {
Movie_Available,
Movie_NotAvailable;
}
public enum MovieType {
ENGLISH,
HINDI;
}
public enum SeatType {
NORMAL,
EXECUTIVE,
PREMIUM,
VIP;
}
public enum PaymentStatus {
PAID,
UNPAID;
}
class User {
int userId;
String name;
Date dateOfBirth;
String mobNo;
String emailId;
String sex;
}
class Movie {
int movieId;
int theaterId;
MovieType movieType;
MovieStatus movieStatus;
}
class Theater {
int theaterId;
String theaterName;
Address address;
List<Movie> movies;
float rating;
}
class Booking {
int bookingId;
int userId;
int movieId;
List<Movie> bookedSeats;
int amount;
PaymentStatus status_of_payment;
Date booked_date;
Time movie_timing;
}
class Address {
String city;
String pinCode;
String state;
String streetNo;
String landmark;
}
这是一个 OOP 设计问题,因此不需要完整的代码。上面的代码只有类和属性。在上面的代码中,你可以看到枚举是不言自明的。
我们有用户类,其中保存了用户的详细信息。
剧院类,其中保留了剧院的名称、地址和当前正在播放的电影列表。
预订舱位可让您预订特定剧院的座位。它在 Movie, Payment 类中保留一个引用。
如何处理两个人试图同时进入同一个座位的情况?
让我们使用将从主类调用的 SeatBook 和 Transactions 类。这里从上面的代码中,我们稍微扩展一下上面代码中没有显示的支付过程。在 SeatBook 类中,我们还将参考 Transaction 类。
现在,为了确保两个人几乎同时尝试访问同一个座位,我们将使用 Thread 类的 Synchronized 方法,并调用一个属于每个登录用户的线程。
Class SeatBook
{
Transaction transaction_obj;
bool seats[total_seats];
String place;
String ticketType;
bool check_availability();
int position_of_seat()
{
return seat_pos_in_theater;
}
void multiple tickets();
void final_booking()
{
place = positon_of_seat();
if (single_ticket)
continue;
else
mutliple_ticket_booking();
Transaction_obj.pay(ticketType, seats_booked, place);
}
}
2022-02
主机之间通信有两种主要的传输层协议:TCP和UDP。创建 TCP Server/Client 已在上一篇文章中讨论过。先决条件:创建 TCP 服务器/客户端理论在 UDP 中,客户端不会像 TCP 那样与服务器形成连接,而只是发送数据报。同样,服务器不需要接受连接,只是等待数据报… [了解更多]
2022-02
基础传输控制协议 (TCP)用户数据报协议 (UDP)服务类型TCP 是一种面向连接的协议。面向连接的意思是通信设备在传输数据之前应该建立连接,在传输数据之后应该关闭连接。UDP是面向数据报的协议。这是因为打开连接、维护连接和终止连接没有开销。UDP 对于广播和多播类型的网络传输… [了解更多]
2022-02
浏览电子邮件的“垃圾邮件”部分。你看到了什么??您可能已经赢得了一辆全新的奥迪,或者您甚至没有购买的彩票中了令人难以置信的金额,要求您提供信用卡详细信息。或者您的银行可能会紧急要求通过电子邮件验证您的帐户详细信息。您是否在垃圾邮件部分看到与上述情况类似的情况?这就是网络钓鱼出现的… [了解更多]
2022-02
足迹意味着收集有关可用于执行成功网络攻击的目标系统的信息。为了获取此信息,黑客可能会使用各种方法和变体工具。这些信息是黑客破解系统的第一条道路。有以下两种类型的脚印。主动足迹:主动足迹意味着通过直接接触目标机器来执行足迹。被动足迹:被动足迹是指收集远离攻击者的系统的信息。可以从足… [了解更多]
2022-02
在当今世界,信息是我们生活的重要组成部分之一。在此,我们将讨论基于不同组织和不同参数的信息分类。组织中的信息应该分类并且必须保密,这就是信息安全出现的原因,它对任何组织都起着至关重要的作用。对信息进行分类的主要原因是,并非所有数据/信息对组织都具有相同的重要性或相同的相关性/关键… [了解更多]