import javax.swing.*;import java.awt.*;import java.util.Random;public class TicketSeller { private JFrame mainFrame; private JPanel panel; private JProgressBar progressBar1; private JProgressBar progressBar2; private JLabel label1; private JLabel label2; private JButton startButton; private int totalTickets = 108; private int ticketSold1 = 0; private int ticketSold2 = 0; public TicketSeller() { prepareGUI(); addComponents(); } private void prepareGUI() { mainFrame = new JFrame("Ticket Seller"); mainFrame.setSize(400, 200); mainFrame.setLayout(new GridLayout(2, 1)); mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private void addComponents() { panel = new JPanel(new GridLayout(2, 2)); label1 = new JLabel("LYH_1_108_1"); progressBar1 = new JProgressBar(0, totalTickets); progressBar1.setValue(0); panel.add(label1); panel.add(progressBar1); label2 = new JLabel("LYH_1_108_2"); progressBar2 = new JProgressBar(0, totalTickets); progressBar2.setValue(0); panel.add(label2); panel.add(progressBar2); mainFrame.add(panel); startButton = new JButton("Start"); startButton.addActionListener(e -> { Thread thread1 = new Thread(() -> sellTickets(1)); Thread thread2 = new Thread(() -> sellTickets(2)); thread1.start(); thread2.start(); }); mainFrame.add(startButton); mainFrame.setVisible(true); } private void sellTickets(int windowNum) { while (ticketSold1 + ticketSold2 < totalTickets) { int ticketSold = new Random().nextInt(5) + 1; if (windowNum == 1) { if (ticketSold1 + ticketSold <= totalTickets) { ticketSold1 += ticketSold; progressBar1.setValue(ticketSold1); } } else { if (ticketSold2 + ticketSold <= totalTickets) { ticketSold2 += ticketSold; progressBar2.setValue(ticketSold2); } } try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String[] args) { new TicketSeller(); }}
时间: 2024-01-15 21:03:15 浏览: 44
这段代码是一个简单的模拟售票程序,它创建了一个窗口,包含两个进度条和一个“开始”按钮。总共有 108 张票,两个窗口分别出售随机数量的票,直到所有票都售出为止。
要显示已售票的份数,可以在程序中添加一个标签或文本框,每次销售后更新它的文本。例如,在 `sellTickets()` 方法中,可以添加以下代码:
```java
if (windowNum == 1) {
if (ticketSold1 + ticketSold <= totalTickets) {
ticketSold1 += ticketSold;
progressBar1.setValue(ticketSold1);
label1.setText("LYH_1_108_1: " + ticketSold1 + " sold");
}
} else {
if (ticketSold2 + ticketSold <= totalTickets) {
ticketSold2 += ticketSold;
progressBar2.setValue(ticketSold2);
label2.setText("LYH_1_108_2: " + ticketSold2 + " sold");
}
}
```
这将在售票时更新标签的文本,以显示已售票的份数。
相关问题
javaswing编写大学社团管理系统
以下是一个使用Java Swing编写的大学社团管理系统的示例:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
public class MainFrame extends JFrame implements ActionListener {
private JButton addButton;
private JButton deleteButton;
private JList<String> activityList;
public MainFrame() {
// 设置窗口标题
setTitle("大学社团管理系统");
// 创建按钮和列表
addButton = new JButton("添加社团");
deleteButton = new JButton("删除社团");
activityList = new JList<>();
// 设置布局管理器
setLayout(new BorderLayout());
// 添加按钮和列表到窗口
add(addButton, BorderLayout.NORTH);
add(deleteButton, BorderLayout.SOUTH);
add(new JScrollPane(activityList), BorderLayout.CENTER);
// 添加按钮的点击事件监听器
addButton.addActionListener(this);
deleteButton.addActionListener(this);
// 设置窗口大小和可见性
setSize(400, 300);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == addButton) {
// 处理添加社团按钮点击事件
String activityName = JOptionPane.showInputDialog("请输入社团名称:");
// 在这里执行添加社团的逻辑
} else if (e.getSource() == deleteButton) {
// 处理删除社团按钮点击事件
String selectedActivity = activityList.getSelectedValue();
// 在这里执行删除社团的逻辑
}
}
public static void main(String[] args) {
// 获取社团信息
List<Activity> activities = new ActivityDao().getInformation(pr.getAdmin_academy(), pr.getAdmin_major(), pr.getAdmin_class());
// 创建主窗口
MainFrame mainFrame = new MainFrame();
// 将社团信息显示在列表中
DefaultListModel<String> model = new DefaultListModel<>();
for (Activity activity : activities) {
model.addElement(activity.getName());
}
mainFrame.activityList.setModel(model);
}
}
```
帮我写一份Javaswing基于SQLserver的学生信息管理系统
好的,以下是一个基于Java Swing和SQL Server的学生信息管理系统的示例代码:
1. 数据库连接部分
```java
import java.sql.*;
public class DatabaseConnection {
static final String JDBC_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
static final String DB_URL = "jdbc:sqlserver://localhost:1433;databaseName=student";
static final String USER = "yourusername";
static final String PASSWORD = "yourpassword";
public Connection getConnection() {
Connection conn = null;
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
```
2. 主界面部分
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MainFrame extends JFrame implements ActionListener {
private JButton addButton, searchButton, updateButton, deleteButton, reportButton;
public MainFrame() {
super("学生信息管理系统");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
addButton = new JButton("添加");
searchButton = new JButton("查询");
updateButton = new JButton("修改");
deleteButton = new JButton("删除");
reportButton = new JButton("报告");
addButton.addActionListener(this);
searchButton.addActionListener(this);
updateButton.addActionListener(this);
deleteButton.addActionListener(this);
reportButton.addActionListener(this);
add(addButton);
add(searchButton);
add(updateButton);
add(deleteButton);
add(reportButton);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == addButton) {
new AddFrame();
} else if (e.getSource() == searchButton) {
new SearchFrame();
} else if (e.getSource() == updateButton) {
new UpdateFrame();
} else if (e.getSource() == deleteButton) {
new DeleteFrame();
} else if (e.getSource() == reportButton) {
new ReportFrame();
}
}
}
```
3. 添加学生信息部分
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class AddFrame extends JFrame implements ActionListener {
private JLabel nameLabel, genderLabel, ageLabel, majorLabel;
private JTextField nameText, genderText, ageText, majorText;
private JButton addButton, cancelButton;
public AddFrame() {
super("添加学生信息");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLayout(new GridLayout(5, 2));
nameLabel = new JLabel("姓名:");
genderLabel = new JLabel("性别:");
ageLabel = new JLabel("年龄:");
majorLabel = new JLabel("专业:");
nameText = new JTextField(20);
genderText = new JTextField(20);
ageText = new JTextField(20);
majorText = new JTextField(20);
addButton = new JButton("添加");
cancelButton = new JButton("取消");
addButton.addActionListener(this);
cancelButton.addActionListener(this);
add(nameLabel);
add(nameText);
add(genderLabel);
add(genderText);
add(ageLabel);
add(ageText);
add(majorLabel);
add(majorText);
add(addButton);
add(cancelButton);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == addButton) {
String name = nameText.getText().trim();
String gender = genderText.getText().trim();
int age = Integer.parseInt(ageText.getText().trim());
String major = majorText.getText().trim();
Connection conn = new DatabaseConnection().getConnection();
try {
PreparedStatement ps = conn.prepareStatement("INSERT INTO student VALUES (?, ?, ?, ?)");
ps.setString(1, name);
ps.setString(2, gender);
ps.setInt(3, age);
ps.setString(4, major);
ps.executeUpdate();
JOptionPane.showMessageDialog(this, "添加成功!");
dispose();
} catch (SQLException ex) {
ex.printStackTrace();
}
} else if (e.getSource() == cancelButton) {
dispose();
}
}
}
```
4. 查询学生信息部分
```java
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class SearchFrame extends JFrame implements ActionListener {
private JLabel nameLabel;
private JTextField nameText;
private JButton searchButton, cancelButton;
private JTable table;
public SearchFrame() {
super("查询学生信息");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLayout(new BorderLayout());
nameLabel = new JLabel("姓名:");
nameText = new JTextField(20);
searchButton = new JButton("查询");
cancelButton = new JButton("取消");
searchButton.addActionListener(this);
cancelButton.addActionListener(this);
JPanel topPanel = new JPanel();
topPanel.add(nameLabel);
topPanel.add(nameText);
topPanel.add(searchButton);
topPanel.add(cancelButton);
table = new JTable();
JScrollPane scrollPane = new JScrollPane(table);
add(topPanel, BorderLayout.NORTH);
add(scrollPane, BorderLayout.CENTER);
setSize(500, 300);
setLocationRelativeTo(null);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == searchButton) {
String name = nameText.getText().trim();
Connection conn = new DatabaseConnection().getConnection();
try {
PreparedStatement ps = conn.prepareStatement("SELECT * FROM student WHERE name=?");
ps.setString(1, name);
ResultSet rs = ps.executeQuery();
DefaultTableModel model = new DefaultTableModel();
model.addColumn("姓名");
model.addColumn("性别");
model.addColumn("年龄");
model.addColumn("专业");
while (rs.next()) {
Object[] row = new Object[4];
row[0] = rs.getString("name");
row[1] = rs.getString("gender");
row[2] = rs.getInt("age");
row[3] = rs.getString("major");
model.addRow(row);
}
table.setModel(model);
} catch (SQLException ex) {
ex.printStackTrace();
}
} else if (e.getSource() == cancelButton) {
dispose();
}
}
}
```
5. 修改学生信息部分
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UpdateFrame extends JFrame implements ActionListener {
private JLabel nameLabel, genderLabel, ageLabel, majorLabel;
private JTextField nameText, genderText, ageText, majorText;
private JButton searchButton, updateButton, cancelButton;
public UpdateFrame() {
super("修改学生信息");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLayout(new GridLayout(5, 2));
nameLabel = new JLabel("姓名:");
genderLabel = new JLabel("性别:");
ageLabel = new JLabel("年龄:");
majorLabel = new JLabel("专业:");
nameText = new JTextField(20);
genderText = new JTextField(20);
ageText = new JTextField(20);
majorText = new JTextField(20);
searchButton = new JButton("查询");
updateButton = new JButton("修改");
cancelButton = new JButton("取消");
searchButton.addActionListener(this);
updateButton.addActionListener(this);
cancelButton.addActionListener(this);
nameText.setEditable(false);
genderText.setEditable(false);
ageText.setEditable(false);
majorText.setEditable(false);
add(nameLabel);
add(nameText);
add(genderLabel);
add(genderText);
add(ageLabel);
add(ageText);
add(majorLabel);
add(majorText);
add(updateButton);
add(cancelButton);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == searchButton) {
String name = JOptionPane.showInputDialog(this, "请输入要修改的学生姓名:");
Connection conn = new DatabaseConnection().getConnection();
try {
PreparedStatement ps = conn.prepareStatement("SELECT * FROM student WHERE name=?");
ps.setString(1, name);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
nameText.setText(rs.getString("name"));
genderText.setText(rs.getString("gender"));
ageText.setText(Integer.toString(rs.getInt("age")));
majorText.setText(rs.getString("major"));
nameText.setEditable(true);
genderText.setEditable(true);
ageText.setEditable(true);
majorText.setEditable(true);
} else {
JOptionPane.showMessageDialog(this, "未找到该学生信息!");
}
} catch (SQLException ex) {
ex.printStackTrace();
}
} else if (e.getSource() == updateButton) {
String name = nameText.getText().trim();
String gender = genderText.getText().trim();
int age = Integer.parseInt(ageText.getText().trim());
String major = majorText.getText().trim();
Connection conn = new DatabaseConnection().getConnection();
try {
PreparedStatement ps = conn.prepareStatement("UPDATE student SET gender=?, age=?, major=? WHERE name=?");
ps.setString(1, gender);
ps.setInt(2, age);
ps.setString(3, major);
ps.setString(4, name);
ps.executeUpdate();
JOptionPane.showMessageDialog(this, "修改成功!");
dispose();
} catch (SQLException ex) {
ex.printStackTrace();
}
} else if (e.getSource() == cancelButton) {
dispose();
}
}
}
```
6. 删除学生信息部分
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DeleteFrame extends JFrame implements ActionListener {
private JLabel nameLabel;
private JTextField nameText;
private JButton searchButton, deleteButton, cancelButton;
public DeleteFrame() {
super("删除学生信息");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLayout(new GridLayout(2, 2));
nameLabel = new JLabel("姓名:");
nameText = new JTextField(20);
searchButton = new JButton("查询");
deleteButton = new JButton("删除");
cancelButton = new JButton("取消");
searchButton.addActionListener(this);
deleteButton.addActionListener(this);
cancelButton.addActionListener(this);
add(nameLabel);
add(nameText);
add(searchButton);
add(deleteButton);
add(cancelButton);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == searchButton) {
String name = nameText.getText().trim();
Connection conn = new DatabaseConnection().getConnection();
try {
PreparedStatement ps = conn.prepareStatement("SELECT * FROM student WHERE name=?");
ps.setString(1, name);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
int option = JOptionPane.showConfirmDialog(this, "是否确认删除该学生信息?");
if (option == JOptionPane.YES_OPTION) {
ps = conn.prepareStatement("DELETE FROM student WHERE name=?");
ps.setString(1, name);
ps.executeUpdate();
JOptionPane.showMessageDialog(this, "删除成功!");
dispose();
}
} else {
JOptionPane.showMessageDialog(this, "未找到该学生信息!");
}
} catch (SQLException ex) {
ex.printStackTrace();
}
} else if (e.getSource() == deleteButton) {
dispose();
} else if (e.getSource() == cancelButton) {
dispose();
}
}
}
```
7. 生成报告部分
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileOutputStream;
import java.net.URL;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
public class ReportFrame extends JFrame implements ActionListener {
private JButton reportButton, cancelButton;
public ReportFrame() {
super("生成报告");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLayout(new FlowLayout());
reportButton = new JButton("生成报告");
cancelButton = new JButton("取消");
reportButton.addActionListener(this);
cancelButton.addActionListener(this);
add(reportButton);
add(cancelButton);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == reportButton) {
Connection conn = new DatabaseConnection().getConnection();
try {
URL url = getClass().getResource("/report/student_info.jrxml");
JasperReport jasperReport = JasperCompileManager.compileReport(url.openStream());
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, conn);
JasperViewer.viewReport(jasperPrint, false);
File file = new File("D:/student_info.pdf");
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream fos = new FileOutputStream(file);
net.sf.jasperreports.engine.JasperExportManager.exportReportToPdfStream(jasperPrint, fos);
fos.close();
JOptionPane.showMessageDialog(this, "报告已生成!");
dispose();
} catch (Exception ex) {
ex.printStackTrace();
}
} else if (e.getSource() == cancelButton) {
dispose();
}
}
}
```
这是一个简单的学生信息管理系统的示例代码,您可以根据需求进行修改和完善。希望对您有帮助!