项目——学生信息管理系统3

目录

班级添加的界面实现

创建班级的实体类

在org.xingyun.dao 包下 编写 ClassDao

创建 AddStudentClassFrm 添加班级页面

注意创建成 JInternalFrame 类型

给控件起个名字

注释掉main方法

给提交按钮绑定事件

回到 MainFrm.java 给添加班级按钮绑定事件

启动测试

班级列表页面的制作

创建 ManageClassFrm 注意创建成 JInternalFrame

布局设置成绝对定位

添加滚动容器

滚动容器中,添加 表格

设置表头

给各个组件起个名字

回到 MainFrm.java 给班级列表按钮绑定事件

在 ClassDao 里面提供查询的方法

当 ManageClassFrm 页面打开后,查询班级信息展示到表格中

在 ManageClassFrm 提供一个方法,展示班级数据

在 ManageClassFrm 的构造方法中调用 setTable()方法执行

测试

给查询按钮绑定事件

继续制作 ManageClassFrm 页面 加上删除 修改功能

给表格中的每一行数据绑定事件

测试

给确认删除按钮,添加事件

编写ClassDao 提供删除操作

编写代码进行删除

给确认修改按钮添加点击事件

编写ClassDao提供修改的方法


班级添加的界面实现

创建班级的实体类

public class StudentClass {private int id;private String name;private String info;//get set 方法自己补上
}   

在org.xingyun.dao 包下 编写 ClassDao

public class ClassDao {// 添加班级public boolean addClass(StudentClass scl) {try {Connection con = JDBCUtils.getConnection();String sql = "insert into s_class values(null,?,?)";java.sql.PreparedStatement preparedStatement = con.prepareStatement(sql);preparedStatement.setString(1, scl.getName());preparedStatement.setString(2, scl.getInfo());if (preparedStatement.executeUpdate() > 0) {return true;}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return false;}
}
​

创建 AddStudentClassFrm 添加班级页面

注意创建成 JInternalFrame 类型

页面制作,自己拖一下

给控件起个名字

classNameTextField 班级名称

classInfoTextArea 班级信息 addClassBtnNewButton 按钮

注释掉main方法

给提交按钮绑定事件

//添加班级按钮的事件绑定addClassBtnNewButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//抽取个方法addClass(e);}});
// 添加班级protected void addClass(ActionEvent e) {// TODO Auto-generated method stub// TODO Auto-generated method stubString className = classNameTextField.getText().toString();String classInfo = classInfoTextArea.getText().toString();if (StringUtil.isEmpty(className)) {JOptionPane.showMessageDialog(this, "班级名称不能为空!");return;}StudentClass scl = new StudentClass();scl.setName(className);scl.setInfo(classInfo);ClassDao classDao = new ClassDao();if (classDao.addClass(scl)) {JOptionPane.showMessageDialog(this, "班级添加成功!");} else {JOptionPane.showMessageDialog(this, "班级添加失败!");}// 添加完后,清空表单classNameTextField.setText("");classInfoTextArea.setText("");
​}

回到 MainFrm.java 给添加班级按钮绑定事件

//添加班级menuItem_4.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {openAddClassFrm(e);}});
    //打开添加班级页面protected void openAddClassFrm(ActionEvent e) {// TODO Auto-generated method stubAddStudentClassFrm addStudentClassFrm = new AddStudentClassFrm();addStudentClassFrm.setVisible(true);desktopPane.add(addStudentClassFrm);}

启动测试

班级列表页面的制作

创建 ManageClassFrm 注意创建成 JInternalFrame

注释掉main方法

布局设置成绝对定位

添加滚动容器

滚动容器中,添加 表格

设置表头

给各个组件起个名字

classListTable;

selectBtnNewButton

classNametextField;

回到 MainFrm.java 给班级列表按钮绑定事件

//班级列表绑定事件menuItem_5.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//抽个方法openManageClassFrm(e);}});
// 打开班级列表页面protected void openManageClassFrm(ActionEvent e) {// TODO Auto-generated method stubManageClassFrm manageClassFrm = new ManageClassFrm();manageClassFrm.setVisible(true);desktopPane.add(manageClassFrm);}
​

在 ClassDao 里面提供查询的方法

public List<StudentClass> getClassList(StudentClass studentClass) {List<StudentClass> retList = new ArrayList<StudentClass>();String sqlString = "select * from s_class";if (!StringUtil.isEmpty(studentClass.getName())) {sqlString += " where name like '%" + studentClass.getName() + "%'";}try {Connection con = JDBCUtils.getConnection();PreparedStatement preparedStatement = con.prepareStatement(sqlString);ResultSet executeQuery = preparedStatement.executeQuery();while (executeQuery.next()) {StudentClass sc = new StudentClass();sc.setId(executeQuery.getInt("id"));sc.setName(executeQuery.getString("name"));sc.setInfo(executeQuery.getString("info"));retList.add(sc);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return retList;}

当 ManageClassFrm 页面打开后,查询班级信息展示到表格中

在 ManageClassFrm 提供一个方法,展示班级数据

//给表格填充数据private void setTable(StudentClass studentClass){//获取表格控件模型DefaultTableModel dft = (DefaultTableModel) classListTable.getModel();dft.setRowCount(0); //清空表格数据ClassDao classDao = new ClassDao();List<StudentClass> classList = classDao.getClassList(studentClass);//遍历集合for (StudentClass sc : classList) {Vector v = new Vector();v.add(sc.getId());v.add(sc.getName());v.add(sc.getInfo());//把数据添加 表格中dft.addRow(v);}}

在 ManageClassFrm 的构造方法中调用 setTable()方法执行

测试

给查询按钮绑定事件

//查询按钮绑定事件selectBtnNewButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//获取输入框输入的内容String className = classNametextField.getText().toString().trim();StudentClass studentClass = new StudentClass();studentClass.setName(className);//调用方法setTable(studentClass);}});

继续制作 ManageClassFrm 页面 加上删除 修改功能

给组件起个名字

editClassNameTextField

okEditButton

okDeleteBtnNewButton

editClassInfoTextArea

给表格中的每一行数据绑定事件

// 给表格中每一行绑定鼠标点击事件classListTable.addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent e) {// 弹框个框测试下//JOptionPane.showMessageDialog(null, "点击了");selectedTableRow(e);}});
//选中的哪一行,把数据展示到编辑框里面protected void selectedTableRow(MouseEvent me) {// TODO Auto-generated method stubDefaultTableModel dft = (DefaultTableModel) classListTable.getModel();editClassNameTextField.setText(dft.getValueAt(classListTable.getSelectedRow(), 1).toString().trim());editClassInfoTextArea.setText(dft.getValueAt(classListTable.getSelectedRow(), 2).toString().trim());}

测试

给确认删除按钮,添加事件

编写ClassDao 提供删除操作

public boolean delete(int id) {String sql = "delete from s_class where id=?";try {Connection con = JDBCUtils.getConnection();PreparedStatement preparedStatement = con.prepareStatement(sql);preparedStatement.setInt(1, id);if (preparedStatement.executeUpdate() > 0) {return true;}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return false;}

编写代码进行删除

//删除按钮,绑定事件okDeleteBtnNewButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//抽取一个删除方法deleteClassAct(e);}});

// 删除班级操作protected void deleteClassAct(ActionEvent ae) {// TODO Auto-generated method stubif (JOptionPane.showConfirmDialog(this, "您确定删除么?") != JOptionPane.OK_OPTION) {return;}// 获取选中行的索引int index = classListTable.getSelectedRow();if (index == -1) {JOptionPane.showMessageDialog(this, "请选中要删除的数据!");return;}//获取表格模型DefaultTableModel dft = (DefaultTableModel) classListTable.getModel();// 获取选中行的第一列int id = Integer.parseInt(dft.getValueAt(classListTable.getSelectedRow(), 0).toString());ClassDao classDao = new ClassDao();if (classDao.delete(id)) {JOptionPane.showMessageDialog(this, "删除成功!");} else {JOptionPane.showMessageDialog(this, "删除失败!");}//查询数据setTable(new StudentClass());}

给确认修改按钮添加点击事件

编写ClassDao提供修改的方法

public boolean update(StudentClass sc) {String sql = "update s_class set name=?, info=? where id=?";try {Connection con = JDBCUtils.getConnection();PreparedStatement preparedStatement = con.prepareStatement(sql);preparedStatement.setString(1, sc.getName());preparedStatement.setString(2, sc.getInfo());preparedStatement.setInt(3, sc.getId());if (preparedStatement.executeUpdate() > 0) {return true;}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return false;}

// 确认修改按钮绑定事件okEditButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {submitEditAct(e); }});
//修改操作protected void submitEditAct(ActionEvent ae) {// TODO Auto-generated method stubClassDao classDao = new ClassDao();int index = classListTable.getSelectedRow();if(index == -1){JOptionPane.showMessageDialog(this, "请选中要修改的数据!");return;}DefaultTableModel dft = (DefaultTableModel) classListTable.getModel();String className = dft.getValueAt(classListTable.getSelectedRow(), 1).toString();String classInfo = dft.getValueAt(classListTable.getSelectedRow(), 2).toString();String editClassName = editClassNameTextField.getText().toString();String editClassInfo = editClassInfoTextArea.getText().toString();if(StringUtil.isEmpty(editClassName)){JOptionPane.showMessageDialog(this, "请填写要修改的名称!");return;}if(className.equals(editClassName) && classInfo.equals(editClassInfo)){JOptionPane.showMessageDialog(this, "您还没有做任何修改!");return;}int id = Integer.parseInt(dft.getValueAt(classListTable.getSelectedRow(), 0).toString());StudentClass sc = new StudentClass();sc.setId(id);sc.setName(editClassName);sc.setInfo(editClassInfo);if(classDao.update(sc)){JOptionPane.showMessageDialog(this, "更新成功!");}else{JOptionPane.showMessageDialog(this, "更新失败!");}//修改后,再次查询数据setTable(new StudentClass());}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/1762.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于卡尔曼滤波进行四旋翼动力学建模(SimulinkMatlab)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

网络安全实战植入后门程序

在 VMware 上建立两个虚拟机&#xff1a;win7 和 kali。 Kali&#xff1a;它是 Linux 发行版的操作系统&#xff0c;它拥有超过 300 个渗透测试工具&#xff0c;就不用自己再去找安装包&#xff0c;去安装到我们自己的电脑上了&#xff0c;毕竟自己从网上找到&#xff0c;也不…

通俗易懂,十分钟读懂DES,详解DES加密算法原理,DES攻击手段以及3DES原理。Python DES实现源码

文章目录 1、什么是DES2、DES的基本概念3、DES的加密流程4、DES算法步骤详解4.1 初始置换(Initial Permutation&#xff0c;IP置换)4.2 加密轮次4.3 F轮函数4.3.1 拓展R到48位4.3.2 子密钥K的生成4.3.3 当前轮次的子密钥与拓展的48位R进行异或运算4.3.4 S盒替换&#xff08;Sub…

Object counting——生成密度图density map

文章目录 过程代码参考 过程 首先构造一个和原始图片大小相同的矩阵&#xff0c;并将其全部置为0&#xff0c;然后将每个被标记的人头对应的位置置为1&#xff0c;这样就得到了一个只有0和1的矩阵&#xff0c;最后通过高斯核函数进行卷积得到一个连续的密度图。 代码 import…

CSS知识点汇总(十)--移动端适配

文章目录 怎么做移动端的样式适配&#xff1f;1、方案选择2. iPhoneX 适配方案 怎么做移动端的样式适配&#xff1f; 在移动端虽然整体来说大部分浏览器内核都是 webkit&#xff0c;而且大部分都支持 css3 的所有语法。但手机屏幕尺寸不一样&#xff0c;分辨率不一样&#xff0…

架构-嵌入式模块

章节架构 约三分&#xff0c;主要为选择题 #mermaid-svg-z6RGCDSEQT5AhE1p {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-z6RGCDSEQT5AhE1p .error-icon{fill:#552222;}#mermaid-svg-z6RGCDSEQT5AhE1p .error-text…

Pytorch--模型微调finetune--迁移学习 (待继续学习)

https://www.bilibili.com/video/BV1Z84y1T7Zh/?spm_id_from333.788&vd_source3fd64243313f29b58861eb492f248b34 主要方法 torchvision 微调timm 微调半精度训练 背景&#xff08;问题来源&#xff09; 解决方案 大模型无法避免过拟合&#xff0c;

深度学习之目标检测R-CNN模型算法流程详解说明(超详细理论篇)

1.R-CNN论文背景 2. R-CNN算法流程 3. R-CNN创新点 一、R-CNN论文背景 论文网址https://openaccess.thecvf.com/content_cvpr_2014/papers/Girshick_Rich_Feature_Hierarchies_2014_CVPR_paper.pdf   RCNN&#xff08;Region-based Convolutional Neural Networks&#xff…

Linux信号概念、认识、处理动作 ( 2 ) -【Linux通信架构系列 】

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 期待你的关注哦&#xff01;&#xff01;&#xff01; 现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everything is for the…

阿里云docker启动xxljob,部署自己的定时任务

本次安装版本xxl-job-admin:2.3.0 一&#xff1a;创建xxl-job数据库的各种表 作者官方地址 下载sql执行 二&#xff1a;docker拉取xxl-job镜像 docker pull xuxueli/xxl-job-admin:2.3.0 三&#xff1a;docker启动xxl-job服务 docker run -e PARAMS"--spring.datasour…

PCA主成分分析

PCA降维算法 目前图像特征的提取主要有两种方法&#xff1a;传统图像特征提取方法 和 深度学习方法。 传统的特征提取方法&#xff1a;基于图像本身的特征进行提取&#xff08;PCA&#xff09;&#xff1b;深度学习方法&#xff1a;基于样本自动训练出区分图像的特征分类器&a…

《微服务实战》 第三十二章 微服务链路跟踪-sleuth zipkin

系列文章目录 第三十二章 微服务链路跟踪-sleuth zipkin 第三十章 分布式事务框架seata TCC模式 第二十九章 分布式事务框架seata AT模式 第十二章 Spring Cloud Alibaba Sentinel 第十一章 Spring Cloud Alibaba nacos配置中心 第十章 SpringCloud Alibaba 之 Nacos discover…