diff --git a/CoursemPanel.java b/CoursemPanel.java new file mode 100644 index 0000000..c2d9a4c --- /dev/null +++ b/CoursemPanel.java @@ -0,0 +1,162 @@ +package com.WR.StudentMS.view; + +import javax.swing.*; +import javax.swing.table.DefaultTableModel; +import com.WR.StudentMS.dao.mysql.Coursemdaoimplqsy; +import com.WR.StudentMS.model.Coursemqsy; +import java.awt.*; +import java.util.List; +import java.util.stream.Collectors; + +public class CoursemPanel extends JPanel { + + private List coursemList; // 存储从数据库加载的课程信息列表 + private Coursemdaoimplqsy coursemDao; // 数据访问对象 + private JTable table; // 显示课程信息的表格 + private DefaultTableModel model; // 表格的数据模型 + private JTextField searchField; + private JButton searchButton; + + public CoursemPanel() { + super(new BorderLayout()); // 使用BorderLayout布局管理器 + coursemDao = new Coursemdaoimplqsy(); + model = new DefaultTableModel(); + initializeUI(); + loadCourses(); // 加载课程信息 + } + + private void initializeUI() { + // 定义列名 + String[] columnNames = {"课程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 -> addCourse()); + deleteButton.addActionListener(e -> deleteSelectedCourse()); + searchButton.addActionListener(e -> searchCourses()); + // 将按钮添加到面板 + buttonPanel.add(addButton); + buttonPanel.add(deleteButton); + buttonPanel.add(searchField); + buttonPanel.add(searchButton); // 添加搜索按钮到面板 + + // 将按钮面板添加到底部 + add(buttonPanel, BorderLayout.SOUTH); + } + + private void loadCourses() { + try { + // 从数据库加载课程信息并更新表格和列表 + coursemList = coursemDao.findAllqsy(); + model.setRowCount(0); // 清空表格 + for (Coursemqsy coursem : coursemList) { + Object[] rowData = { + coursem.getCourseidqsy(), + coursem.getCoursenameqsy(), + coursem.getJieshaoqsy() + }; + model.addRow(rowData); + } + } catch (Exception e) { + JOptionPane.showMessageDialog(this, "加载课程信息失败: " + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE); + } + } + + private void addCourse() { + // 弹出对话框让用户输入课程信息 + String input = (String) JOptionPane.showInputDialog( + this, + "请输入课程信息(格式:课程ID-课程名-课程介绍):", + "添加课程", + JOptionPane.QUESTION_MESSAGE, + null, + null, + null + ); + if (input != null && !input.trim().isEmpty()) { + String[] parts = input.split("-", 3); // 修改为分割三部分 + if (parts.length == 3) { // 确保分割成三部分 + Coursemqsy newCourse = new Coursemqsy(); + newCourse.setCourseidqsy(parts[0].trim()); + newCourse.setCoursenameqsy(parts[1].trim()); + newCourse.setJieshaoqsy(parts[2].trim()); + + int result = coursemDao.createqsy(newCourse); + if (result > 0) { + newCourse = coursemDao.findByIdqsy(newCourse.getCourseidqsy()); // 确保可以检索到新添加的课程信息 + if (newCourse != null) { + Object[] rowData = { + newCourse.getCourseidqsy(), + newCourse.getCoursenameqsy(), + newCourse.getJieshaoqsy() + }; + model.addRow(rowData); // 添加到表格 + JOptionPane.showMessageDialog(this, "课程信息添加成功!"); + } else { + JOptionPane.showMessageDialog(this, "课程信息添加失败!"); + } + } + else { + JOptionPane.showMessageDialog(this, "输入格式不正确,需要课程ID-课程名-课程介绍"); + } + } + } + } + + private void deleteSelectedCourse() { + int selectedRow = table.getSelectedRow(); + if (selectedRow >= 0) { + String courseId = (String) model.getValueAt(selectedRow, 0); + Coursemqsy coursemToDelete = new Coursemqsy(); + coursemToDelete.setCourseidqsy(courseId); + int result = coursemDao.removeqsy(coursemToDelete); + if (result > 0) { + model.removeRow(selectedRow); // 从表格中移除 + JOptionPane.showMessageDialog(this, "课程信息删除成功!"); + } else { + JOptionPane.showMessageDialog(this, "课程信息删除失败!"); + } + } + } + private void searchCourses() { + String searchQuery = searchField.getText(); + if (!searchQuery.trim().isEmpty()) { + // 过滤课程列表,仅根据课程ID进行搜索 + List filteredList = coursemList.stream() + .filter(course -> course.getCourseidqsy().equals(searchQuery)) // 仅根据课程ID过滤 + .collect(Collectors.toList()); + + // 更新表格模型以显示过滤后的课程信息 + model.setRowCount(0); // 清空表格 + for (Coursemqsy course : filteredList) { + Object[] rowData = { + course.getCourseidqsy(), + course.getCoursenameqsy(), + course.getJieshaoqsy() + }; + model.addRow(rowData); + } + } else { + // 如果搜索框为空,则重新加载所有课程信息 + loadCourses(); + } + } +} \ No newline at end of file