From cc82ba6bec3624dbff208f325c2bc4d7d242a78e Mon Sep 17 00:00:00 2001 From: nxist2202005056 <3387603540@qq.com> Date: Wed, 26 Jun 2024 09:36:39 +0800 Subject: [PATCH] ADD file via upload --- TchengjiPanel.java | 235 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 235 insertions(+) create mode 100644 TchengjiPanel.java diff --git a/TchengjiPanel.java b/TchengjiPanel.java new file mode 100644 index 0000000..4dbf583 --- /dev/null +++ b/TchengjiPanel.java @@ -0,0 +1,235 @@ +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.Tchengjilzh; +import com.WR.StudentMS.dao.mysql.Tchengjidaoimplzh; + +public class TchengjiPanel extends JPanel { + private List tchengjiList; + private Tchengjidaoimplzh tchengjiDao; + private JTable table; + private DefaultTableModel model; + private JTextField searchField; + private JButton searchButton; + + public TchengjiPanel() { + super(new BorderLayout()); // 使用BorderLayout布局管理器 + tchengjiDao = new Tchengjidaoimplzh(); + model = new DefaultTableModel(); + initializeUI(); + loadTchengjiRecords(); + } + + 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 -> addTchengjiRecord()); + deleteButton.addActionListener(e -> deleteSelectedTchengjiRecord()); + searchButton.addActionListener(e -> searchTchengji()); + 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 loadTchengjiRecords() { + // 从数据库加载成绩记录数据并更新表格 + tchengjiList = tchengjiDao.findAll(); + model.setRowCount(0); // 清空表格 + for (Tchengjilzh record : tchengjiList) { + Object[] rowData = new Object[]{ + record.getId(), + record.getStu_id(), + record.getKecheng_id(), + record.getChengji(), + record.getXuenian(), + record.getStu_xuehao(), + record.getKecheng_name() + }; + model.addRow(rowData); + } + } + + private void addTchengjiRecord() { + // 弹出对话框让用户输入成绩记录信息 + String input = (String) JOptionPane.showInputDialog( + this, + "请输入成绩记录信息(格式:排名-学号ID-课程ID-成绩-学年-学生学号-课程名称):", + "添加成绩记录", + JOptionPane.QUESTION_MESSAGE, + null, + null, + null + ); + if (input != null && !input.trim().isEmpty()) { + String[] parts = input.split("-", 7); // 按"-"分割字符串 + if (parts.length >= 7) { + Tchengjilzh newRecord = new Tchengjilzh(); + newRecord.setId(Integer.parseInt(parts[0].trim())); + newRecord.setStu_id(Integer.parseInt(parts[1].trim())); + newRecord.setKecheng_id(Integer.parseInt(parts[2].trim())); + newRecord.setChengji(Integer.parseInt(parts[3].trim())); + newRecord.setXuenian(parts[4].trim()); + newRecord.setStu_xuehao(parts[5].trim()); + newRecord.setKecheng_name(parts[6].trim()); + int result = tchengjiDao.create(newRecord); + if (result > 0) { + Object[] rowData = new Object[]{ + newRecord.getId(), + newRecord.getStu_id(), + newRecord.getKecheng_id(), + newRecord.getChengji(), + newRecord.getXuenian(), + newRecord.getStu_xuehao(), + newRecord.getKecheng_name() + }; + model.addRow(rowData); // 添加到表格 + JOptionPane.showMessageDialog(this, "成绩记录添加成功!"); + } + else { + JOptionPane.showMessageDialog(this, "成绩记录添加失败!"); + } + } + + else { + JOptionPane.showMessageDialog(this, "输入格式不正确,需要排名-学号ID-课程ID-成绩-学年-学生学号-课程名称!"); + } + } + } + + private void deleteSelectedTchengjiRecord() { + int selectedRow = table.getSelectedRow(); + if (selectedRow >= 0) { + int id = (int) model.getValueAt(selectedRow, 0); + Tchengjilzh recordToDelete = new Tchengjilzh(); + recordToDelete.setId(id); + int result = tchengjiDao.remove(recordToDelete); + if (result > 0) { + model.removeRow(selectedRow); // 从表格中移除 + JOptionPane.showMessageDialog(this, "成绩记录删除成功!"); + } else { + JOptionPane.showMessageDialog(this, "成绩记录删除失败!"); + } + } + } + private void searchTchengji() { + String searchQuery = searchField.getText(); + if (!searchQuery.trim().isEmpty()) { + // 过滤成绩记录列表,仅根据班级ID进行搜索 + + List filteredList = tchengjiList.stream() + .filter(record -> String.valueOf(record.getId()).equals(searchQuery)) // 仅根据班级ID过滤 + .collect(Collectors.toList()); + + // 更新表格模型以显示过滤后的成绩记录 + model.setRowCount(0); // 清空表格 + for (Tchengjilzh record : filteredList) { + Object[] rowData = new Object[]{ + record.getId(), + record.getStu_id(), + record.getKecheng_id(), + record.getChengji(), + record.getXuenian(), + record.getStu_xuehao(), + record.getKecheng_name() + }; + model.addRow(rowData); + } + } else { + // 如果搜索框为空,则重新加载所有成绩记录 + loadTchengjiRecords(); + } + } + private void saveChanges() { + // 遍历表格中的每一行 + for (int i = 0; i < model.getRowCount(); i++) { + // 从表格模型获取第 i 行的 Vector + 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存储在第二列 + int kechengId = Integer.parseInt(row.elementAt(2).toString()); // 课程ID存储在第三列 + int chengji = Integer.parseInt(row.elementAt(3).toString()); // 成绩存储在第四列 + String xuenian = (String) row.elementAt(4); // 学年存储在第五列 + String stuxuehao = (String) row.elementAt(5); // 学生学号存储在第六列 + String kechengName = (String) row.elementAt(6); // 课程名称存储在第七列 + + // 创建Tchengjilzh对象 + Tchengjilzh tchengji = new Tchengjilzh(); + tchengji.setId(id); + tchengji.setStu_id(stuId); + tchengji.setKecheng_id(kechengId); + tchengji.setChengji(chengji); + tchengji.setXuenian(xuenian); + tchengji.setStu_xuehao(stuxuehao); + tchengji.setKecheng_name(kechengName); + + // 检查ID是否已存在,若存在则更新,否则创建新记录 + Tchengjilzh existingRecord = tchengjiDao.findById(String.valueOf(id)); + if (existingRecord != null) { + // 记录已存在,执行更新操作 + int updateResult = tchengjiDao.modify(tchengji); + if (updateResult > 0) { + JOptionPane.showMessageDialog(this, "更新成绩记录成功。", "正确", JOptionPane.INFORMATION_MESSAGE); + + // 更新成功 + } else { + // 更新失败,提示错误信息 + JOptionPane.showMessageDialog(this, "更新成绩记录失败。", "错误", JOptionPane.ERROR_MESSAGE); + } + } else { + // 记录不存在,执行创建操作 + int createResult = tchengjiDao.create(tchengji); + if (createResult > 0) { + // 创建成功 + } else { + // 创建失败,提示错误信息 + JOptionPane.showMessageDialog(this, "创建成绩记录失败。", "错误", JOptionPane.ERROR_MESSAGE); + } + } + } + + // 保存完成后,刷新表格数据 + loadTchengjiRecords(); + // 显示保存成功的提示信息 + JOptionPane.showMessageDialog(this, "所有更改已成功保存。", "成功", JOptionPane.INFORMATION_MESSAGE); + } +} \ No newline at end of file