使用java模拟三个窗口同时卖电影票的程序,电影票有第几排第几号两个参数,接受单张和联票(就是2-10张连续座位的票)两种订单。自行设计订单来验证你的程序的正确性
时间: 2024-03-08 20:51:15 浏览: 254
好的,我会尽力解答你的问题。首先,我们需要设计一个电影票类,包含电影票的排数、座位号、是否已售等属性。代码如下:
```java
public class MovieTicket {
private int row; // 排数
private int seatNum; // 座位号
private boolean isSold; // 是否已售
public MovieTicket(int row, int seatNum) {
this.row = row;
this.seatNum = seatNum;
this.isSold = false;
}
public int getRow() {
return row;
}
public int getSeatNum() {
return seatNum;
}
public boolean isSold() {
return isSold;
}
public void sell() {
isSold = true;
}
}
```
接下来,我们需要设计一个电影票窗口类,模拟售票过程。每个窗口都有一个售票员和一个售票队列,队列中存放的是待售的电影票。售票员会从队列中取出电影票进行售卖。代码如下:
```java
import java.util.LinkedList;
import java.util.Queue;
public class TicketWindow {
private String sellerName;
private Queue<MovieTicket> ticketQueue;
public TicketWindow(String sellerName) {
this.sellerName = sellerName;
this.ticketQueue = new LinkedList<>();
}
public void addTicket(MovieTicket ticket) {
ticketQueue.offer(ticket);
}
public void sellTicket() {
MovieTicket ticket = ticketQueue.poll();
if (ticket != null) {
ticket.sell();
System.out.println(sellerName + "售出电影票:" + ticket.getRow() + "排" + ticket.getSeatNum() + "号");
} else {
System.out.println(sellerName + "当前无待售电影票");
}
}
}
```
最后,我们需要编写一个主程序,模拟三个窗口同时卖电影票。我们先创建一些电影票,然后将它们加入到三个售票窗口的队列中。为了验证程序的正确性,我们设计了两种订单,一种是单张电影票,一种是连续多张电影票。代码如下:
```java
public class Main {
public static void main(String[] args) {
// 创建一些电影票
MovieTicket[] tickets = new MovieTicket[30];
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 6; j++) {
tickets[(i-1)*6+j-1] = new MovieTicket(i, j);
}
}
// 创建三个售票窗口
TicketWindow window1 = new TicketWindow("售票员1");
TicketWindow window2 = new TicketWindow("售票员2");
TicketWindow window3 = new TicketWindow("售票员3");
// 将电影票加入窗口队列
for (int i = 0; i < 30; i++) {
window1.addTicket(tickets[i]);
window2.addTicket(tickets[i]);
window3.addTicket(tickets[i]);
}
// 模拟售票过程
// 单张电影票
window1.sellTicket();
window2.sellTicket();
window3.sellTicket();
// 连续多张电影票
for (int i = 1; i <= 4; i++) {
MovieTicket ticket = new MovieTicket(i, 2);
window1.addTicket(ticket);
window2.addTicket(ticket);
window3.addTicket(ticket);
}
window1.sellTicket();
window1.sellTicket();
window1.sellTicket();
window1.sellTicket();
window2.sellTicket();
window2.sellTicket();
window2.sellTicket();
window2.sellTicket();
window3.sellTicket();
window3.sellTicket();
window3.sellTicket();
window3.sellTicket();
}
}
```
这样,我们就完成了一个简单的电影票售卖程序。当然,这只是一个示例程序,实际的电影票售卖系统要更加复杂,需要考虑更多的情况,如售票员数量、售票优先级等。
阅读全文