package ui;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import dao.DBOper;
public class StudentManagementUI extends JFrame {
private JTable table;
private JTextField txtId, txtName, txtAge, txtGender, searchMsg;
private JButton btnAdd, btnUpdate, btnDelete, btnIncreaseAge, btnDecreaseAge, btnSearchById, btnSearchByGender, returnButton, addButton, modifyButton;
private DBOper dbOper;
private DefaultTableModel tableModel;
private JPopupMenu popupMenu;
public StudentManagementUI() {
dbOper = new DBOper();
setTitle("学生管理系统");
setLayout(new BorderLayout(5, 5));
// 表格初始化
String[] columnNames = {"ID", "姓名", "年龄", "性别"};
tableModel = new DefaultTableModel(columnNames, 0);
// 从数据库获取学生信息并添加到表格中
Object[][] students = dbOper.getAllStudents();
for (Object[] student : students) {
tableModel.addRow(student);
}
table = new JTable(tableModel);
add(new JScrollPane(table), BorderLayout.CENTER);
// 创建右键菜单
popupMenu = new JPopupMenu();
JMenuItem deleteMenuItem = new JMenuItem("删除");
popupMenu.add(deleteMenuItem);
// 将右键菜单添加到表格中
table.setComponentPopupMenu(popupMenu);
// 控制面板用于添加、更新和删除操作
JPanel controlPanel = new JPanel(new FlowLayout());
txtId = new JTextField(10);
txtName = new JTextField(10);
txtAge = new JTextField(10);
txtGender = new JTextField(10);
btnAdd = new JButton("添加");
btnUpdate = new JButton("更新");
btnDelete = new JButton("删除");
controlPanel.add(new JLabel("ID"));
controlPanel.add(txtId);
controlPanel.add(new JLabel("Name"));
controlPanel.add(txtName);
controlPanel.add(new JLabel("Age"));
controlPanel.add(txtAge);
controlPanel.add(new JLabel("Gender"));
controlPanel.add(txtGender);
controlPanel.add(btnAdd);
controlPanel.add(btnUpdate);
controlPanel.add(btnDelete);
add(controlPanel, BorderLayout.SOUTH);
JPanel searchPanel = new JPanel(new FlowLayout());
searchMsg = new JTextField(10);
returnButton = new JButton("返回");
btnSearchById = new JButton("按id查询");
btnSearchByGender = new JButton("按性别查询");
searchPanel.add(btnSearchById);
searchPanel.add(btnSearchByGender);
searchPanel.add(searchMsg);
searchPanel.add(returnButton);
// addButton = new JButton("新增");
// searchPanel.add(addButton);
controlPanel.add(new JLabel("searchMsg"));
add(searchPanel, BorderLayout.NORTH);
// addButton = new JButton("新增");
// add(addButton, BorderLayout.CENTER);
JPanel buttonPanel = new JPanel(new FlowLayout());
addButton = new JButton("新增");
modifyButton = new JButton("修改");
btnIncreaseAge = new JButton("增加年龄");
btnDecreaseAge = new JButton("减少年龄");
buttonPanel.add(addButton);
buttonPanel.add(modifyButton);
buttonPanel.add(btnIncreaseAge);
buttonPanel.add(btnDecreaseAge);
add(buttonPanel, BorderLayout.SOUTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
// 添加按钮功能实现
deleteMenuItem.addActionListener(e -> deleteSelectedRow());
btnIncreaseAge.addActionListener(e -> changeAddAge('+'));
btnDecreaseAge.addActionListener(e -> changeAddAge('-'));
btnSearchById.addActionListener(e -> searchById());
btnSearchByGender.addActionListener(e -> searchByGender());
returnButton.addActionListener(e -> returnToMain());
addButton.addActionListener(e -> returnToAdd());
modifyButton.addActionListener(e -> modifyInput());
}
void returnToMain(){
searchMsg.setText("");
Object[][] students = dbOper.getAllStudents();
tableModel.setRowCount(0);
// 将查询结果更新到表格中
for (Object[] student : students) {
tableModel.addRow(student);
}
}
private void deleteSelectedRow() {
int selectedRow = table.getSelectedRow();
System.out.println("getid"+selectedRow);
if (selectedRow >= 0) {
int id = (int) tableModel.getValueAt(selectedRow, 0); // 获取选中行的ID
dbOper.deleteStudent(id);
returnToMain();
}
}
private void changeAddAge(char c) {
int selectedRow = table.getSelectedRow();
System.out.println("getid"+selectedRow);
if (selectedRow >= 0) {
int id = (int) tableModel.getValueAt(selectedRow, 0); // 获取选中行的ID
Object[][] students = dbOper.searchById(id);
new changeAgeUI(this,students[0],c);
returnToMain();
}else {
System.out.println("没选择!!!!!!!!");
JOptionPane.showMessageDialog(null, "请在表格中选择需要修改年龄的学生!", "错误", JOptionPane.ERROR_MESSAGE);
}
}
private void returnToAdd(){
new addStudentUI(this);
// new addStudentUI();
}
private void modifyInput() {
if(searchMsg.getText().isEmpty()){
JOptionPane.showMessageDialog(null, "输入框不能为空!", "错误", JOptionPane.ERROR_MESSAGE);
}
else{
if(searchMsg.getText().matches("\\d+")){
int id = Integer.parseInt(searchMsg.getText());
System.out.println("点击修改按钮了!!!");
Object[][] students = dbOper.searchById(id);
if(students.length == 0) {
System.out.println("学号不存在!!!!!!");
JOptionPane.showMessageDialog(null, "当前查询学号不存在!", "错误", JOptionPane.ERROR_MESSAGE);
searchMsg.setText("");
} else {
System.out.println("主界面的modifyInput "+students[0][0]);
new modifyStudentUI(this, students[0]); // 注意这里传递的是单个学生数据
}
}
else {
JOptionPane.showMessageDialog(null, "输入错误!", "错误", JOptionPane.ERROR_MESSAGE);
searchMsg.setText("");
}
}
}
private void searchById() {
if(searchMsg.getText().isEmpty()){
JOptionPane.showMessageDialog(null, "查询信息不能为空!", "错误", JOptionPane.ERROR_MESSAGE);
searchMsg.setText("");
}
else if (searchMsg.getText().matches("\\d+")){
int id = Integer.parseInt(searchMsg.getText());
Object[][] students = dbOper.searchById(id);
if (students.length == 0 || students[0].length == 0 || students[0][0].toString().isEmpty()){
JOptionPane.showMessageDialog(null, "当前查询学号不存在!", "错误", JOptionPane.ERROR_MESSAGE);
searchMsg.setText("");
}
else{
// 清空表格数据
tableModel.setRowCount(0);
// 将查询结果更新到表格中
for (Object[] student : students) {
tableModel.addRow(student);
}
searchMsg.setText("");
}
}
else{
JOptionPane.showMessageDialog(null, "输入错误!", "错误", JOptionPane.ERROR_MESSAGE);
sea
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论























收起资源包目录





































































































共 108 条
- 1
- 2
资源评论


cccc___
- 粉丝: 47
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- Matlab软包的Logistic回归实现).doc
- JFinal-PHP资源
- 课程视频网站设计方案.doc
- 图解EXCEL中制作控制图.pptx
- 软件项目风险管理ppt课件.ppt
- 系统集成公司表格.doc
- 嵌入式系统培训简介.doc
- 工程项目现场管理组织机构网络图样本.doc
- 网络宣传策划方案.pptx
- 网络突发事件的应急预案.doc
- 计算机组成原理第二版唐朔飞课后习题答案.doc
- 2023年Aimaoue7月自考计算机网络原理试卷及答案.doc
- 现代网络广告分析报告.pptx
- 网络意识形态工作责任制方案.doc
- 中小企业网络营销现状分析资料.doc
- 适用于 Golang 的微信小程序服务端 SDK 工具包
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
