From c0d22fc9a63c320ee00b7a51f9ba22639b759185 Mon Sep 17 00:00:00 2001 From: nxist2202005056 <3387603540@qq.com> Date: Mon, 24 Jun 2024 14:24:54 +0800 Subject: [PATCH] ADD file via upload --- JiangchengPanel.java | 232 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 232 insertions(+) create mode 100644 JiangchengPanel.java diff --git a/JiangchengPanel.java b/JiangchengPanel.java new file mode 100644 index 0000000..2cff266 --- /dev/null +++ b/JiangchengPanel.java @@ -0,0 +1,232 @@ +package com.WR.StudentMS.view; + +import javax.swing.*; +import javax.swing.table.DefaultTableModel; +import java.awt.*; +import java.util.List; +import java.util.Vector; +import java.util.stream.Collectors; + +import com.WR.StudentMS.model.JiangchengWR; +import com.WR.StudentMS.model.Tchengjilzh; +import com.WR.StudentMS.model.ZhuanyeWR; +import com.WR.StudentMS.dao.mysql.JiangchengDaoImpWR; + +public class JiangchengPanel extends JPanel { + private List jiangchengList; + private JiangchengDaoImpWR jiangchengDao; + private JTable table; + private DefaultTableModel model; + private JTextField searchField; + private JButton searchButton; + + public JiangchengPanel() { + super(new BorderLayout()); // 使用BorderLayout布局管理器 + jiangchengDao = new JiangchengDaoImpWR(); + model = new DefaultTableModel(); + initializeUI(); + loadJiangchengs(); + } + + 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("删除选中的奖惩信息"); + JButton saveButton = new JButton("保存更改"); + + + // 创建搜索框和搜索按钮 + searchField = new JTextField(); + searchField.setPreferredSize(new Dimension(200, searchField.getPreferredSize().height)); + searchButton = new JButton("id查询"); + + // 为按钮添加事件监听器 + addButton.addActionListener(e -> addJiangcheng()); + deleteButton.addActionListener(e -> deleteSelectedJiangcheng()); + searchButton.addActionListener(e -> searchJiangcheng()); + saveButton.addActionListener(e -> saveChanges()); + + + // 将按钮添加到面板 + buttonPanel.add(addButton); + buttonPanel.add(deleteButton); + buttonPanel.add(searchField); + buttonPanel.add(searchButton); // 添加搜索按钮到面板 + buttonPanel.add(saveButton); + + + // 将按钮面板添加到底部 + add(buttonPanel, BorderLayout.SOUTH); + } + private void loadJiangchengs() { + try { + // 从数据库加载学籍信息并更新表格 + jiangchengList = jiangchengDao.findAll(); + model.setRowCount(0); // 清空表格 + for (JiangchengWR jiangcheng : jiangchengList) { + Object[] rowData = new Object[]{ + jiangcheng.getId(), + jiangcheng.getStu_id(), + jiangcheng.getShijian(), + jiangcheng.getShuxing(), + jiangcheng.getBeizhu(), + + }; + model.addRow(rowData); + } + } catch (Exception e) { + JOptionPane.showMessageDialog(this, "加载奖惩信息失败: " + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE); + } + } + + // 在JiangchengPanel类中 + + private void addJiangcheng() { + // 弹出输入框让用户输入奖惩记录详情 + String input = (String) JOptionPane.showInputDialog( + this, + "请输入奖惩记录的详细信息(格式:id-学籍id-时间-属性-备注):", + "添加奖惩记录", + JOptionPane.QUESTION_MESSAGE, + null, + null, + null + ); + if (input != null && !input.trim().isEmpty()) { + // 按"-"分割字符串 + String[] parts = input.split("-", 5); + if (parts.length == 5) { // 确保有5个部分 + try { + int id = Integer.parseInt(parts[0].trim()); + int stuId = Integer.parseInt(parts[1].trim()); + String time = parts[2].trim(); + String type = parts[3].trim(); + String note = parts[4].trim(); + + JiangchengWR newJiangcheng = new JiangchengWR(); + newJiangcheng.setId(id); + newJiangcheng.setStu_id(stuId); + newJiangcheng.setShijian(time); + newJiangcheng.setShuxing(type); + newJiangcheng.setBeizhu(note); + + int result = jiangchengDao.create(newJiangcheng); + if (result > 0) { + loadJiangchengs(); // 刷新表格 + JOptionPane.showMessageDialog(this, "奖惩信息添加成功!"); + } else { + JOptionPane.showMessageDialog(this, "奖惩信息添加失败,数据库操作未影响任何行。"); + } + } catch (NumberFormatException e) { + JOptionPane.showMessageDialog(this, "输入包含无效的数字格式。"); + } catch (Exception e) { + JOptionPane.showMessageDialog(this, "发生错误:" + e.getMessage()); + } + } else { + JOptionPane.showMessageDialog(this, "输入格式不正确,需要id-学籍id-时间-属性-备注!"); + } + } + } + + private void deleteSelectedJiangcheng() { + int selectedRow = table.getSelectedRow(); + if (selectedRow >= 0) { + int id = (int) model.getValueAt(selectedRow, 0); + JiangchengWR jiangchengToDelete = new JiangchengWR(); + jiangchengToDelete.setId(id); + int result = jiangchengDao.remove(jiangchengToDelete); + if (result > 0) { + model.removeRow(selectedRow); // 从表格中移除 + JOptionPane.showMessageDialog(this, "奖惩记录删除成功!"); + } else { + JOptionPane.showMessageDialog(this, "奖惩记录删除失败!"); + } + } + } + private void searchJiangcheng() { + String searchQuery = searchField.getText(); + if (!searchQuery.trim().isEmpty()) { + // 过滤奖惩信息列表,仅根据ID进行搜索 + List filteredList = jiangchengList.stream() + .filter(jiangcheng -> String.valueOf(jiangcheng.getId()).equals(searchQuery)) // 仅根据ID过滤 + .collect(Collectors.toList()); + + // 更新表格模型以显示过滤后的奖惩信息 + model.setRowCount(0); // 清空表格 + for (JiangchengWR jiangcheng : filteredList) { + Object[] rowData = new Object[]{ + jiangcheng.getId(), + jiangcheng.getStu_id(), + jiangcheng.getShijian(), + jiangcheng.getShuxing(), + jiangcheng.getBeizhu() + }; + model.addRow(rowData); + } + } else { + // 如果搜索框为空,则重新加载所有奖惩信息 + loadJiangchengs(); + } + } + private void saveChanges() { + // 遍历表格中的每一行 + for (int i = 0; i < model.getRowCount(); i++) { + // 获取表格行数据 + Vector row = (Vector) model.getDataVector().elementAt(i); + // 从 Vector 中获取每个字段的值 + int id = Integer.parseInt(row.elementAt(0).toString()); // 假设ID存储在第一列 + int stuId = Integer.parseInt(row.elementAt(1).toString()); // 学生ID存储在第二列 + String time = (String) row.elementAt(2); // 假设时间存储在第三列 + String type = (String) row.elementAt(3); // 假设属性存储在第四列 + String note = (String) row.elementAt(4); // 假设备注存储在第五列 + + // 创建JiangchengWR对象 + JiangchengWR jiangcheng = new JiangchengWR(); + jiangcheng.setId(id); + jiangcheng.setStu_id(stuId); // 注意这里现在使用int参数 + jiangcheng.setShijian(time); + jiangcheng.setShuxing(type); + jiangcheng.setBeizhu(note); + + // 检查id是否已存在,若存在则更新,否则创建新记录 + JiangchengWR existingJiangcheng = jiangchengDao.findById(id); + if (existingJiangcheng != null) { + // 奖惩信息已存在,执行更新操作 + int updateResult = jiangchengDao.modify(jiangcheng); + if (updateResult <= 0) + { + // 更新成功 + } else { + // 更新失败,显示错误消息 + JOptionPane.showMessageDialog(this, "更新奖惩信息失败。", "错误", JOptionPane.ERROR_MESSAGE); + } + } else { + // 奖惩信息不存在,执行创建操作 + int createResult = jiangchengDao.create(jiangcheng); + if (createResult <= 0) { + // 创建失败,显示错误消息 + JOptionPane.showMessageDialog(this, "创建奖惩信息失败。", "错误", JOptionPane.ERROR_MESSAGE); + } + } + } + + // 保存完成后,刷新表格数据 + loadJiangchengs(); + // 显示保存成功的提示信息 + JOptionPane.showMessageDialog(this, "所有更改已成功保存。", "成功", JOptionPane.INFORMATION_MESSAGE); + } + +} \ No newline at end of file