ADD file via upload

main
nxist2202005056 1 year ago
parent 0d9ecf0069
commit c0d22fc9a6

@ -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<JiangchengWR> 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<JiangchengWR> 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<Object> row = (Vector<Object>) 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);
}
}
Loading…
Cancel
Save