编写java程序实现电影票售卖,具体需求如下。 某电影院目前正在上映贺岁大片,共有100张票,电影院提供3个售票窗口售票,请编写一个程序实现电影院售票。
时间: 2024-09-14 09:03:17 浏览: 70
基于JavaWeb的在线电影院票务管理系统论文参考
为了实现这个电影票售卖系统,我们可以创建一个Java类来模拟影院、票务窗口和票。下面是一个简化的示例代码结构:
首先,定义一个`MovieTicket`类来代表电影票:
```java
public class MovieTicket {
private boolean available; // 票是否已经售出
public MovieTicket() {
this.available = true;
}
public boolean isAvailable() {
return available;
}
public void sell() {
if (available) {
available = false;
System.out.println("票已售出!");
} else {
System.out.println("票已售罄,无法购买!");
}
}
}
```
然后,创建一个`BoxOffice`类来管理票务窗口:
```java
public class BoxOffice {
private int totalTickets = 100; // 总票数
private int windows = 3; // 窗口数量
private List<MovieTicket> tickets;
public BoxOffice() {
tickets = Collections.synchronizedList(new ArrayList<>());
// 初始化100张票
for (int i = 0; i < totalTickets; i++) {
tickets.add(new MovieTicket());
}
}
public synchronized void sellTicketAtWindow(int windowIndex) {
if (windowIndex >= 0 && windowIndex < windows && !tickets.get(windowIndex).isAvailable()) {
// 如果窗口未满且票还有,则出售
tickets.get(windowIndex).sell();
} else {
System.out.println("错误操作:窗口索引无效或票已售罄!");
}
}
}
```
现在,你可以创建一个`main`方法来测试这个系统:
```java
public class Main {
public static void main(String[] args) {
BoxOffice boxOffice = new BoxOffice();
for (int i = 0; i < 50; i++) { // 假设卖出前50张票
boxOffice.sellTicketAtWindow(i % boxOffice.windows); // 选择一个窗口
}
// 可能剩下的票会继续尝试售卖
for (int i = 50; i < 100; i++) {
boxOffice.sellTicketAtWindow(i % boxOffice.windows);
}
}
}
```
在这个例子中,我们限制了每个窗口只能操作总票数除以窗口数的结果,防止非法操作。`卖票`方法通过同步列表保证多线程下的数据安全。
阅读全文