|
|
|
@ -0,0 +1,206 @@
|
|
|
|
|
package com.WR.StudentMS.view;
|
|
|
|
|
|
|
|
|
|
import javax.swing.*;
|
|
|
|
|
import javax.swing.table.DefaultTableModel;
|
|
|
|
|
import java.awt.*;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
import com.WR.StudentMS.model.Classmqsy;
|
|
|
|
|
import com.WR.StudentMS.model.ZhuanyeWR;
|
|
|
|
|
import com.WR.StudentMS.dao.mysql.Classmdaoimpqsy;
|
|
|
|
|
|
|
|
|
|
public class ClassmPanel extends JPanel {
|
|
|
|
|
private List<Classmqsy> classmList;
|
|
|
|
|
private Classmdaoimpqsy classmDao;
|
|
|
|
|
private JTable table;
|
|
|
|
|
private DefaultTableModel model;
|
|
|
|
|
private JTextField searchField;
|
|
|
|
|
private JButton searchButton;
|
|
|
|
|
|
|
|
|
|
public ClassmPanel() {
|
|
|
|
|
super(new BorderLayout()); // 使用BorderLayout布局管理器
|
|
|
|
|
classmDao = new Classmdaoimpqsy();
|
|
|
|
|
model = new DefaultTableModel();
|
|
|
|
|
initializeUI();
|
|
|
|
|
loadClass();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void initializeUI() {
|
|
|
|
|
// 定义列名
|
|
|
|
|
String[] columnNames = {"班级ID", "班级名", "专业ID"};
|
|
|
|
|
model.setColumnIdentifiers(columnNames);
|
|
|
|
|
table = new JTable(model);
|
|
|
|
|
|
|
|
|
|
JScrollPane scrollPane = new JScrollPane(table);
|
|
|
|
|
add(scrollPane, BorderLayout.CENTER);
|
|
|
|
|
|
|
|
|
|
// 创建按钮面板
|
|
|
|
|
JPanel buttonPanel = new JPanel();
|
|
|
|
|
buttonPanel.setLayout(new FlowLayout());
|
|
|
|
|
|
|
|
|
|
// 添加按钮
|
|
|
|
|
JButton addButton = new JButton("添加班级信息");
|
|
|
|
|
JButton deleteButton = new JButton("删除选中的班级信息");
|
|
|
|
|
|
|
|
|
|
// 创建搜索框和搜索按钮
|
|
|
|
|
searchField = new JTextField();
|
|
|
|
|
searchField.setPreferredSize(new Dimension(200, searchField.getPreferredSize().height));
|
|
|
|
|
searchButton = new JButton("班级ID查询");
|
|
|
|
|
|
|
|
|
|
// 为按钮添加事件监听器
|
|
|
|
|
addButton.addActionListener(e -> addClass());
|
|
|
|
|
deleteButton.addActionListener(e -> deleteSelectedClass());
|
|
|
|
|
searchButton.addActionListener(e -> searchClasses());
|
|
|
|
|
|
|
|
|
|
// 将按钮添加到面板
|
|
|
|
|
buttonPanel.add(addButton);
|
|
|
|
|
buttonPanel.add(deleteButton);
|
|
|
|
|
buttonPanel.add(searchField);
|
|
|
|
|
buttonPanel.add(searchButton); // 添加搜索按钮到面板
|
|
|
|
|
|
|
|
|
|
// 将按钮面板添加到底部
|
|
|
|
|
add(buttonPanel, BorderLayout.SOUTH);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void loadClass() {
|
|
|
|
|
// 从数据库加载学籍信息并更新表格
|
|
|
|
|
classmList = classmDao.findAllqsy();
|
|
|
|
|
model.setRowCount(0); // 清空表格
|
|
|
|
|
for (Classmqsy classm : classmList) {
|
|
|
|
|
Object[] rowData = new Object[]{
|
|
|
|
|
classm.getClassidqsy(),
|
|
|
|
|
classm.getClassnameqsy(),
|
|
|
|
|
classm.getMajoridqsy(),
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
model.addRow(rowData);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void addClass() {
|
|
|
|
|
String input = (String) JOptionPane.showInputDialog(
|
|
|
|
|
this,
|
|
|
|
|
"请输入班级信息(格式:班级ID-班级名-专业ID):",
|
|
|
|
|
"添加班级信息",
|
|
|
|
|
JOptionPane.QUESTION_MESSAGE,
|
|
|
|
|
null,
|
|
|
|
|
null,
|
|
|
|
|
null
|
|
|
|
|
);
|
|
|
|
|
if (input != null && !input.trim().isEmpty()) {
|
|
|
|
|
String[] parts = input.split("-", 3); // 按"-"分割字符串,最多3部分
|
|
|
|
|
if (parts.length == 3) {
|
|
|
|
|
try {
|
|
|
|
|
Classmqsy newClassm = new Classmqsy();
|
|
|
|
|
newClassm.setClassidqsy(parts[0].trim());
|
|
|
|
|
newClassm.setClassnameqsy(parts[1].trim());
|
|
|
|
|
newClassm.setMajoridqsy(parts[2].trim());
|
|
|
|
|
|
|
|
|
|
// 调用数据库添加班级信息的方法
|
|
|
|
|
int result = classmDao.createqsy(newClassm);
|
|
|
|
|
// 确保在EDT上更新UI和显示消息
|
|
|
|
|
SwingUtilities.invokeLater(new Runnable() {
|
|
|
|
|
@Override
|
|
|
|
|
public void run() {
|
|
|
|
|
if (result > 0) {
|
|
|
|
|
// 刷新班级列表
|
|
|
|
|
loadClass();
|
|
|
|
|
JOptionPane.showMessageDialog(ClassmPanel.this, "班级信息添加成功!");
|
|
|
|
|
} else {
|
|
|
|
|
// 显示添加失败的消息
|
|
|
|
|
JOptionPane.showMessageDialog(ClassmPanel.this, "班级信息添加失败!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
} catch (NumberFormatException e) {
|
|
|
|
|
// 专业ID格式错误
|
|
|
|
|
JOptionPane.showMessageDialog(this, "专业ID必须是整数!");
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
// 其他异常情况
|
|
|
|
|
JOptionPane.showMessageDialog(this, "添加班级信息失败: " + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 输入格式不正确
|
|
|
|
|
JOptionPane.showMessageDialog(this, "输入格式不正确,需要班级ID-班级名-专业ID!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void deleteSelectedClass() {
|
|
|
|
|
int selectedRow = table.getSelectedRow();
|
|
|
|
|
if (selectedRow >= 0) {
|
|
|
|
|
String classmId = (String) model.getValueAt(selectedRow, 0);
|
|
|
|
|
Classmqsy classmToDelete = classmDao.findByClassId(classmId);
|
|
|
|
|
if (classmToDelete != null) {
|
|
|
|
|
int result = classmDao.removeqsy(classmToDelete);
|
|
|
|
|
SwingUtilities.invokeLater(new Runnable() {
|
|
|
|
|
@Override
|
|
|
|
|
public void run() {
|
|
|
|
|
if (result > 0) {
|
|
|
|
|
model.removeRow(selectedRow); // 从表格中移除
|
|
|
|
|
JOptionPane.showMessageDialog(ClassmPanel.this, "班级信息删除成功!");
|
|
|
|
|
} else {
|
|
|
|
|
JOptionPane.showMessageDialog(ClassmPanel.this, "班级信息删除失败,可能班级ID不存在或删除记录未受影响!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
JOptionPane.showMessageDialog(this, "未找到对应的班级信息!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void searchClasses() {
|
|
|
|
|
String searchQuery = searchField.getText();
|
|
|
|
|
if (!searchQuery.trim().isEmpty()) {
|
|
|
|
|
// 过滤班级列表,仅根据班级ID进行搜索
|
|
|
|
|
List<Classmqsy> filteredList = classmList.stream()
|
|
|
|
|
.filter(classm -> classm.getClassidqsy().equals(searchQuery)) // 仅根据班级ID过滤
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
// 更新表格模型以显示过滤后的班级信息
|
|
|
|
|
model.setRowCount(0); // 清空表格
|
|
|
|
|
for (Classmqsy classm : filteredList) {
|
|
|
|
|
Object[] rowData = new Object[]{
|
|
|
|
|
classm.getClassidqsy(),
|
|
|
|
|
classm.getClassnameqsy(),
|
|
|
|
|
classm.getMajoridqsy()
|
|
|
|
|
};
|
|
|
|
|
model.addRow(rowData);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 如果搜索框为空,则重新加载所有班级信息
|
|
|
|
|
loadClass();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|