利用Java Swing和MySQL实现1. 实现页面菜单,菜单项包括按名字读取、按学号读取、按班级读取; 2. 实现搜索框,用于输入名字或学号,根据名字或学号查询学生信息; 3. 实现班级下拉列表,用于选择班级并按班级查询学生信息。 4. 实现学生信息展示功能,展示从数据库中查询到的学生信息;的代码
时间: 2024-02-25 22:52:38 浏览: 19
以下是一个基于Java Swing和MySQL的学生信息管理系统的代码实现,包括菜单项、搜索框、班级下拉列表和学生信息展示功能的实现。
```java
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
public class StudentInfoManagementSystem extends JFrame implements ActionListener {
// 数据库连接信息
private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static final String DB_URL = "jdbc:mysql://localhost:3306/student_info";
private static final String USER = "root";
private static final String PASSWORD = "root";
// 界面元素
private JTable table;
private DefaultTableModel tableModel;
private JTextField searchTextField;
private JComboBox<String> classComboBox;
private JButton searchButton;
public StudentInfoManagementSystem() {
// 设置窗口属性
setTitle("学生信息管理系统");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建菜单栏
JPanel menuPanel = new JPanel();
JLabel nameLabel = new JLabel("姓名:");
searchTextField = new JTextField();
searchTextField.setPreferredSize(new Dimension(100, 25));
searchButton = new JButton("查询");
searchButton.addActionListener(this);
JLabel classLabel = new JLabel("班级:");
classComboBox = new JComboBox<String>(getClasses());
classComboBox.addActionListener(this);
menuPanel.add(nameLabel);
menuPanel.add(searchTextField);
menuPanel.add(searchButton);
menuPanel.add(classLabel);
menuPanel.add(classComboBox);
getContentPane().add(menuPanel, BorderLayout.NORTH);
// 创建学生信息展示区域
tableModel = new DefaultTableModel();
table = new JTable(tableModel);
JScrollPane tableScroll = new JScrollPane(table);
getContentPane().add(tableScroll, BorderLayout.CENTER);
}
// 获取班级列表
private String[] getClasses() {
String[] classes = null;
Connection conn = null;
try {
// 数据库连接
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
// 查询班级列表
String sql = "SELECT DISTINCT class FROM student";
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
Vector<String> classList = new Vector<String>();
while (rs.next()) {
classList.add(rs.getString("class"));
}
// 转换为数组
classes = new String[classList.size()];
for (int i = 0; i < classList.size(); i++) {
classes[i] = classList.get(i);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 关闭数据库连接
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return classes;
}
// 查询学生信息
private void queryStudentInfo(String nameOrId, String className) {
Connection conn = null;
try {
// 数据库连接
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
// 查询学生信息
String sql = "SELECT * FROM student WHERE name LIKE ? OR id LIKE ? OR class = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "%" + nameOrId + "%");
pstmt.setString(2, "%" + nameOrId + "%");
pstmt.setString(3, className);
ResultSet rs = pstmt.executeQuery();
// 显示查询结果
tableModel.setRowCount(0);
while (rs.next()) {
Vector<Object> rowData = new Vector<Object>();
rowData.add(rs.getString("id"));
rowData.add(rs.getString("name"));
rowData.add(rs.getInt("age"));
rowData.add(rs.getString("gender"));
rowData.add(rs.getString("class"));
tableModel.addRow(rowData);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 关闭数据库连接
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == searchButton) {
// 查询学生信息
String nameOrId = searchTextField.getText();
String className = (String) classComboBox.getSelectedItem();
queryStudentInfo(nameOrId, className);
} else if (e.getSource() == classComboBox) {
// 根据班级查询学生信息
String className = (String) classComboBox.getSelectedItem();
queryStudentInfo("", className);
}
}
public static void main(String[] args) {
StudentInfoManagementSystem frame = new StudentInfoManagementSystem();
frame.setVisible(true);
}
}
```
上述代码实现了一个简单的学生信息管理系统,包括菜单项、搜索框、班级下拉列表和学生信息展示功能。需要注意的是,代码中省略了异常处理等细节处理,仅供参考。