java编写一个图形界面的火车票售票程序,有三个窗口用来显示售票及余票信息,两个按钮,分别为 开始售票 和 退出系统 点击开始售票按钮 三个窗口同时进行售票 票售完时 弹出消息框 提示已售完 点击 退出系统按钮 系统退,三个窗口区域 用的是 TextArea 并设置其为只读
时间: 2024-02-18 21:01:06 浏览: 169
java版火车票售票系统
3星 · 编辑精心推荐
好的,这是一个比较简单的 Java GUI 程序,以下是代码实现:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TrainTicketingSystem extends JFrame implements ActionListener {
private JTextArea window1, window2, window3;
private JButton startButton, exitButton;
private int totalTickets = 100;
public TrainTicketingSystem() {
setTitle("火车票售票程序");
setSize(600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(2, 1));
JPanel buttonPanel = new JPanel(new FlowLayout());
startButton = new JButton("开始售票");
startButton.addActionListener(this);
buttonPanel.add(startButton);
exitButton = new JButton("退出系统");
exitButton.addActionListener(this);
buttonPanel.add(exitButton);
add(buttonPanel);
JPanel windowPanel = new JPanel(new GridLayout(1, 3));
window1 = new JTextArea(10, 20);
window1.setEditable(false);
windowPanel.add(new JScrollPane(window1));
window2 = new JTextArea(10, 20);
window2.setEditable(false);
windowPanel.add(new JScrollPane(window2));
window3 = new JTextArea(10, 20);
window3.setEditable(false);
windowPanel.add(new JScrollPane(window3));
add(windowPanel);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == startButton) {
sellTickets();
} else if (e.getSource() == exitButton) {
System.exit(0);
}
}
private synchronized void sellTickets() {
new Thread(() -> {
while (totalTickets > 0) {
int tickets = (int) (Math.random() * 5) + 1;
if (tickets > totalTickets) {
tickets = totalTickets;
}
totalTickets -= tickets;
window1.setText("售出 " + tickets + " 张票,余票 " + totalTickets + " 张");
window2.setText("售出 " + tickets + " 张票,余票 " + totalTickets + " 张");
window3.setText("售出 " + tickets + " 张票,余票 " + totalTickets + " 张");
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
JOptionPane.showMessageDialog(this, "火车票已售完!");
}).start();
}
public static void main(String[] args) {
new TrainTicketingSystem();
}
}
```
这个程序创建了一个 `TrainTicketingSystem` 类,继承自 `JFrame`,实现了 `ActionListener` 接口。在窗口中创建了两个 `JPanel`,一个用于放置按钮,一个用于放置三个文本框。在按钮面板中创建了“开始售票”和“退出系统”两个按钮,并注册了点击事件的监听器。在文本框面板中创建了三个 `JTextArea`,并设置为只读,最后将两个面板添加到窗口中并显示。
当点击“开始售票”按钮时,程序会启动一个新线程,循环售票。每次售票随机售出 1 到 5 张,如果余票不足,则售出全部余票。在售票过程中,程序会更新三个文本框中的余票信息,并休眠 1 秒。当余票为 0 时,程序会弹出消息框提示售票已结束。
当点击“退出系统”按钮时,程序会直接退出。
阅读全文