售票管理系统。 有A、B、C三班车次,共20个售票员,每班车次各20张票,售完为止,每个售票员卖出5张票之后就休息,不再卖票,模拟该售票过程。Java包括图像化界面的代码
时间: 2024-03-05 09:55:05 浏览: 24
以下是一个简单的Java图像化界面的代码,用于展示售票进度和剩余票数:
```java
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
public class TicketSystem extends JFrame {
private JLabel aLabel, bLabel, cLabel;
private ArrayList<JLabel> sellerLabels;
public TicketSystem() {
setTitle("售票管理系统");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 车次信息展示
JPanel trainPanel = new JPanel(new GridLayout(1, 3));
aLabel = new JLabel("A车次剩余票数:20");
bLabel = new JLabel("B车次剩余票数:20");
cLabel = new JLabel("C车次剩余票数:20");
trainPanel.add(aLabel);
trainPanel.add(bLabel);
trainPanel.add(cLabel);
add(trainPanel, BorderLayout.NORTH);
// 售票员信息展示
JPanel sellerPanel = new JPanel(new GridLayout(5, 4));
sellerLabels = new ArrayList<>();
for (int i = 1; i <= 20; i++) {
JLabel label = new JLabel("售票员" + i + ":已售0张,剩余5张");
sellerLabels.add(label);
sellerPanel.add(label);
}
add(sellerPanel, BorderLayout.CENTER);
setVisible(true);
}
// 更新车次信息
public void updateTrainInfo(String trainName, int remainingTickets) {
switch (trainName) {
case "A":
aLabel.setText("A车次剩余票数:" + remainingTickets);
break;
case "B":
bLabel.setText("B车次剩余票数:" + remainingTickets);
break;
case "C":
cLabel.setText("C车次剩余票数:" + remainingTickets);
break;
}
}
// 更新售票员信息
public void updateSellerInfo(int sellerIndex, int soldTickets, int remainingTickets) {
JLabel label = sellerLabels.get(sellerIndex - 1);
label.setText("售票员" + sellerIndex + ":已售" + soldTickets + "张,剩余" + remainingTickets + "张");
}
public static void main(String[] args) {
TicketSystem ticketSystem = new TicketSystem();
}
}
```
接下来,您需要编写售票员类和车次类,以及主程序来模拟售票过程。以下是一个简单的示例代码:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class TicketSystemSimulator {
private static final int NUM_SELLERS = 20;
private static final int MAX_TICKETS_PER_SELLER = 5;
private static final int NUM_TRAINS = 3;
private static final int NUM_TICKETS_PER_TRAIN = 20;
private List<Seller> sellers;
private List<Train> trains;
private TicketSystem ticketSystem;
public TicketSystemSimulator() {
sellers = new ArrayList<>();
for (int i = 1; i <= NUM_SELLERS; i++) {
sellers.add(new Seller(i));
}
trains = new ArrayList<>();
for (int i = 1; i <= NUM_TRAINS; i++) {
trains.add(new Train(i, NUM_TICKETS_PER_TRAIN));
}
ticketSystem = new TicketSystem();
}
public void start() {
Random random = new Random();
while (!trains.isEmpty()) {
for (Train train : trains) {
// 检查该车次是否还有票
if (train.getRemainingTickets() <= 0) {
ticketSystem.updateTrainInfo(train.getName(), 0);
trains.remove(train);
break;
}
// 售票员随机抢票
for (Seller seller : sellers) {
if (!seller.isWorking()) {
continue;
}
if (seller.getNumSoldTickets() >= MAX_TICKETS_PER_SELLER) {
seller.setWorking(false);
continue;
}
int numTicketsToSell = random.nextInt(3) + 1; // 每个售票员最多抢3张票
if (numTicketsToSell > train.getRemainingTickets()) {
numTicketsToSell = train.getRemainingTickets();
}
if (numTicketsToSell > MAX_TICKETS_PER_SELLER - seller.getNumSoldTickets()) {
numTicketsToSell = MAX_TICKETS_PER_SELLER - seller.getNumSoldTickets();
}
train.sellTickets(numTicketsToSell);
seller.sellTickets(numTicketsToSell);
ticketSystem.updateTrainInfo(train.getName(), train.getRemainingTickets());
ticketSystem.updateSellerInfo(seller.getId(), seller.getNumSoldTickets(), MAX_TICKETS_PER_SELLER - seller.getNumSoldTickets());
}
}
}
}
public static void main(String[] args) {
TicketSystemSimulator simulator = new TicketSystemSimulator();
simulator.start();
}
}
class Seller {
private int id;
private int numSoldTickets;
private boolean working;
public Seller(int id) {
this.id = id;
this.numSoldTickets = 0;
this.working = true;
}
public int getId() {
return id;
}
public int getNumSoldTickets() {
return numSoldTickets;
}
public boolean isWorking() {
return working;
}
public void setWorking(boolean working) {
this.working = working;
}
public void sellTickets(int numTickets) {
numSoldTickets += numTickets;
}
}
class Train {
private int id;
private String name;
private int remainingTickets;
public Train(int id, int numTickets) {
this.id = id;
switch (id) {
case 1:
name = "A";
break;
case 2:
name = "B";
break;
case 3:
name = "C";
break;
}
remainingTickets = numTickets;
}
public String getName() {
return name;
}
public int getRemainingTickets() {
return remainingTickets;
}
public void sellTickets(int numTickets) {
remainingTickets -= numTickets;
}
}
```
这段代码模拟了售票员随机抢票,每个售票员最多抢3张票,每个售票员卖出5张票之后就休息,不再卖票的过程。每售出一张票,更新界面信息。
希望这份代码能帮助到您!