diff --git a/ClassmPanel.java b/ClassmPanel.java new file mode 100644 index 0000000..34d5a9e --- /dev/null +++ b/ClassmPanel.java @@ -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 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 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(); + } + } + +} + + + + + + + + + + + + + + + + + + + + + + + + +