1.用java编写一个程序并附带注释,程序模拟某电影院三个售票窗口同时出售电影票的过程。 1) 电影票顺序出售,程序模拟显示售票的详细过程(如:“窗口X出售编号XXX电影票”)。 2) 三个窗口同时出票,出票间隔采用随机控制。 3) 不能重复出售相同的电影票。 程序应具有良好的人机交互性能,即:程序应向用户提示功能说明,并可根据用户的功能选择,执行对应的功能,并给出带详细描述信息的最终执行结果。
时间: 2024-02-22 17:58:54 浏览: 90
基于Java的电影售票系统论文.doc
好的,下面是Java代码以及注释,请参考:
```java
import java.util.*;
public class Cinema {
private static final int MAX_TICKET_NUM = 100; // 最大电影票数量
private static final int WINDOW_NUM = 3; // 售票窗口数量
private int[] tickets; // 电影票数组
private boolean[] sold; // 是否售出标记数组
private Random random; // 随机数生成器
public Cinema() {
this.tickets = new int[MAX_TICKET_NUM];
this.sold = new boolean[MAX_TICKET_NUM];
for (int i = 0; i < MAX_TICKET_NUM; i++) {
tickets[i] = i + 1; // 电影票编号从1开始
sold[i] = false; // 初始状态为未售出
}
this.random = new Random();
}
// 模拟售票过程
public void sellTickets() {
for (int i = 0; i < WINDOW_NUM; i++) {
final int windowId = i + 1; // 售票窗口编号从1开始
new Thread(() -> {
while (true) {
int ticketId = random.nextInt(MAX_TICKET_NUM); // 随机选取电影票
if (!sold[ticketId]) { // 如果该电影票未售出
synchronized (Cinema.class) { // 加锁
if (!sold[ticketId]) { // 再次判断是否已售出
sold[ticketId] = true; // 标记为已售出
System.out.println("窗口" + windowId + "出售编号" + tickets[ticketId] + "电影票");
break; // 售票成功后退出循环
}
}
}
}
}).start();
}
}
}
public class CinemaTest {
public static void main(String[] args) {
System.out.println("欢迎使用电影票售票系统!");
Cinema cinema = new Cinema();
System.out.println("请选择功能:");
System.out.println("1. 开始售票");
System.out.println("2. 退出程序");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
if (choice == 1) {
cinema.sellTickets(); // 开始售票
} else {
System.out.println("程序已退出");
}
}
}
```
这个程序实现了一个电影票售票系统,可以模拟三个售票窗口同时出售电影票的过程。其中,`Cinema` 类用于实现售票功能,`CinemaTest` 类用于与用户进行交互和测试。售票过程中,程序会模拟显示售票的详细过程,并且采用随机控制出票间隔,确保三个窗口同时出票。电影票的编号从1开始,不能重复出售相同的电影票。
阅读全文