ADD file via upload

main
nxist2202005056 1 year ago
parent 10dc2669e7
commit cc82ba6bec

@ -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<Tchengjilzh> 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<Tchengjilzh> 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<Object>
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存储在第二列
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);
}
}
Loading…
Cancel
Save