Java课程设计:基于swing的学生信息管理系统
文章目录
- 一、项目介绍
- 二、项目展示
- 三、源码展示
- 四、源码获取
一、项目介绍
这款Java swing实现的学生信息管理系统和jsp版本的功能很相似,简单的实现了班级信息的增删改查,学生信息的增删改查,数据库采用的是mysql,jdk版本不限,是Java学习者学习参考非常好的一个小项目。
二、项目展示
登录
主界面
添加班级信息界面
班级信息管理界面
学生信息管理主界面
修改学生信息管理主界面
删除记录
三、源码展示
数据库工具类
public class DbUtil {private String dbUrl="jdbc:mysql://localhost:3306/db_student_swing?characterEncoding=utf8"; // 数据库连接地址private String dbUserName="root"; // 用户名,填写你自己的数据库用户名private String dbPassword=""; // 密码,你自己的用户名密码,这个就是我的,所以我不修改了private String jdbcName="com.mysql.jdbc.Driver"; // 驱动名称/*** 获取数据库连接* @return* @throws Exception*/public Connection getCon()throws Exception{Class.forName(jdbcName);Connection con=DriverManager.getConnection(dbUrl, dbUserName, dbPassword);return con;}/*** 关闭数据库连接* @param con* @throws Exception*/public void closeCon(Connection con)throws Exception{if(con!=null){con.close();}}public static void main(String[] args) {DbUtil dbUtil=new DbUtil();try {dbUtil.getCon();System.out.println("数据库连接成功!");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("数据库连接失败");}}
}
登录界面类
public class LogOnFrm extends JFrame {private JPanel contentPane;private JTextField userNameTxt;private JPasswordField passwordTxt;private DbUtil dbUtil=new DbUtil();private UserDao userDao=new UserDao();/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {LogOnFrm frame = new LogOnFrm();frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/*** Create the frame.*/public LogOnFrm() {//改变系统默认字体Font font = new Font("Dialog", Font.PLAIN, 12);java.util.Enumeration keys = UIManager.getDefaults().keys();while (keys.hasMoreElements()) {Object key = keys.nextElement();Object value = UIManager.get(key);if (value instanceof javax.swing.plaf.FontUIResource) {UIManager.put(key, font);}}setResizable(false);setTitle("学生信息管理系统");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 450, 343);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));setContentPane(contentPane);JLabel lblNewLabel = new JLabel("学生信息管理系统");lblNewLabel.setFont(new Font("宋体", Font.BOLD, 23));lblNewLabel.setIcon(new ImageIcon(LogOnFrm.class.getResource("/images/logo.png")));JLabel lblNewLabel_1 = new JLabel("\u7528\u6237\u540D\uFF1A");lblNewLabel_1.setIcon(new ImageIcon(LogOnFrm.class.getResource("/images/userName.png")));JLabel lblNewLabel_2 = new JLabel("\u5BC6 \u7801\uFF1A");lblNewLabel_2.setIcon(new ImageIcon(LogOnFrm.class.getResource("/images/password.png")));userNameTxt = new JTextField();userNameTxt.setColumns(10);passwordTxt = new JPasswordField();JButton btnNewButton = new JButton("\u767B\u5F55");btnNewButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {loginActionPerformed(e);}});btnNewButton.setIcon(new ImageIcon(LogOnFrm.class.getResource("/images/login.png")));JButton btnNewButton_1 = new JButton("\u91CD\u7F6E");btnNewButton_1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {resetValueActionPerformed(e);}});btnNewButton_1.setIcon(new ImageIcon(LogOnFrm.class.getResource("/images/reset.png")));GroupLayout gl_contentPane = new GroupLayout(contentPane);gl_contentPane.setHorizontalGroup(gl_contentPane.createParallelGroup(Alignment.LEADING).addGroup(gl_contentPane.createSequentialGroup().addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING).addGroup(gl_contentPane.createSequentialGroup().addGap(111).addComponent(lblNewLabel)).addGroup(gl_contentPane.createSequentialGroup().addGap(101).addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING).addComponent(lblNewLabel_1).addComponent(lblNewLabel_2).addComponent(btnNewButton)).addGap(32).addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING).addComponent(btnNewButton_1).addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING, false).addComponent(passwordTxt).addComponent(userNameTxt, GroupLayout.DEFAULT_SIZE, 128, Short.MAX_VALUE))))).addContainerGap(111, Short.MAX_VALUE)));gl_contentPane.setVerticalGroup(gl_contentPane.createParallelGroup(Alignment.LEADING).addGroup(gl_contentPane.createSequentialGroup().addGap(30).addComponent(lblNewLabel).addGap(26).addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING).addGroup(gl_contentPane.createSequentialGroup().addComponent(lblNewLabel_1).addGap(29).addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE).addComponent(lblNewLabel_2).addComponent(passwordTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))).addComponent(userNameTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)).addGap(36).addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE).addComponent(btnNewButton).addComponent(btnNewButton_1)).addContainerGap(60, Short.MAX_VALUE)));contentPane.setLayout(gl_contentPane);// 设置JFrame居中显示this.setLocationRelativeTo(null);}/*** 登录事件处理* @param e*/private void loginActionPerformed(ActionEvent evt) {String userName=this.userNameTxt.getText();String password=new String(this.passwordTxt.getPassword());if(StringUtil.isEmpty(userName)){JOptionPane.showMessageDialog(null, "用户名不能为空!");return;}if(StringUtil.isEmpty(password)){JOptionPane.showMessageDialog(null, "密码不能为空!");return;}User user=new User(userName,password);Connection con=null;try {con=dbUtil.getCon();User currentUser=userDao.login(con, user);if(currentUser!=null){dispose();new MainFrm().setVisible(true);}else{JOptionPane.showMessageDialog(null, "用户名或者密码错误!");}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {dbUtil.closeCon(con);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}/*** 重置事件处理* @param e*/private void resetValueActionPerformed(ActionEvent evt) {this.userNameTxt.setText("");this.passwordTxt.setText("");}
}
主界面
public class MainFrm extends JFrame {private JPanel contentPane;private JDesktopPane table =null;/*** Create the frame.*/public MainFrm() {setTitle("学生信息管理系统主界面");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 450, 300);JMenuBar menuBar = new JMenuBar();setJMenuBar(menuBar);JMenu mnNewMenu = new JMenu("\u57FA\u672C\u6570\u636E\u7EF4\u62A4");mnNewMenu.setIcon(new ImageIcon(MainFrm.class.getResource("/images/base.png")));menuBar.add(mnNewMenu);JMenu mnNewMenu_1 = new JMenu("班级信息管理");mnNewMenu_1.setIcon(new ImageIcon(MainFrm.class.getResource("/images/bookTypeManager.png")));mnNewMenu.add(mnNewMenu_1);JMenuItem menuItem = new JMenuItem("班级信息添加");menuItem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {SchoolClassAddInterFrm bookTypeAddInterFrm=new SchoolClassAddInterFrm();bookTypeAddInterFrm.setVisible(true);table.add(bookTypeAddInterFrm);}});menuItem.setIcon(new ImageIcon(MainFrm.class.getResource("/images/add.png")));mnNewMenu_1.add(menuItem);JMenuItem menuItem_1 = new JMenuItem("班级信息维护");menuItem_1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {SchoolClassManageInterFrm bookTypeManageInterFrm=new SchoolClassManageInterFrm();bookTypeManageInterFrm.setVisible(true);table.add(bookTypeManageInterFrm);}});menuItem_1.setIcon(new ImageIcon(MainFrm.class.getResource("/images/edit.png")));mnNewMenu_1.add(menuItem_1);JMenu mnNewMenu_2 = new JMenu("学生信息管理");mnNewMenu_2.setIcon(new ImageIcon(MainFrm.class.getResource("/images/bookManager.png")));mnNewMenu.add(mnNewMenu_2);JMenuItem menuItem_2 = new JMenuItem("学生信息添加");menuItem_2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {StudentAddInterFrm bookAddInterFrm=new StudentAddInterFrm();bookAddInterFrm.setVisible(true);table.add(bookAddInterFrm);}});menuItem_2.setIcon(new ImageIcon(MainFrm.class.getResource("/images/add.png")));mnNewMenu_2.add(menuItem_2);JMenuItem menuItem_3 = new JMenuItem("学生信息维护");menuItem_3.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {StudentManageInterFrm bookManageInterFrm=new StudentManageInterFrm();bookManageInterFrm.setVisible(true);table.add(bookManageInterFrm);}});menuItem_3.setIcon(new ImageIcon(MainFrm.class.getResource("/images/edit.png")));mnNewMenu_2.add(menuItem_3);JMenuItem menuItem_4 = new JMenuItem("\u5B89\u5168\u9000\u51FA");menuItem_4.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {int result=JOptionPane.showConfirmDialog(null, "是否退出系统");if(result==0){dispose();}}});menuItem_4.setIcon(new ImageIcon(MainFrm.class.getResource("/images/exit.png")));mnNewMenu.add(menuItem_4);JMenu menu = new JMenu("关于系统");menu.setIcon(new ImageIcon(MainFrm.class.getResource("/images/about.png")));menuBar.add(menu);JMenuItem mntmjava = new JMenuItem("关于");mntmjava.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {ArtisanInterFrm java1234InterFrm=new ArtisanInterFrm();java1234InterFrm.setVisible(true);table.add(java1234InterFrm);}});mntmjava.setIcon(new ImageIcon(MainFrm.class.getResource("/images/about.png")));menu.add(mntmjava);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));setContentPane(contentPane);contentPane.setLayout(new BorderLayout(0, 0));table = new JDesktopPane();contentPane.add(table, BorderLayout.CENTER);// 设置JFrame最大化this.setExtendedState(JFrame.MAXIMIZED_BOTH);}
}
四、源码获取
因为页面与源码太多了,所以页面与源码只展示了一部分,完整源码已经打包了,点击下面蓝色链接获取!
点我获取源码
相关文章:

Java课程设计:基于swing的学生信息管理系统
文章目录 一、项目介绍二、项目展示三、源码展示四、源码获取 一、项目介绍 这款Java swing实现的学生信息管理系统和jsp版本的功能很相似,简单的实现了班级信息的增删改查,学生信息的增删改查,数据库采用的是mysql,jdk版本不限&…...

【代码】3d->video
mesh->video import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from matplotlib.animation import FuncAnimation import matplotlib.animation as animation from pywavefront import Wavefront import osnamedog # 读取OBJ文…...

算法01 递推算法及相关问题详解【C++实现】
目录 递推的概念 训练:斐波那契数列 解析 参考代码 训练:上台阶 参考代码 训练:信封 解析 参考代码 递推的概念 递推是一种处理问题的重要方法。 递推通过对问题的分析,找到问题相邻项之间的关系(递推式&a…...

自动化测试火狐下载文件
本篇文章介绍selenium中火狐浏览器如何下载文件。比如我想把这个MP4的视频文件下载下来。 点击之后查看下载的类型是video/mp4 指定使用火狐浏览器 profile webdriver.FirefoxOptions() # 设置firefox默认的下载路径,0表示桌面,1表示我的下载…...

基于JSP技术的定西扶贫惠农推介系统
开头语:你好呀,我是计算机学长猫哥!如果有相关需求,文末可以找到我的联系方式。 开发语言:JSP 数据库:MySQL 技术:B/S架构、JSP技术 工具:Eclipse、MySQL、Tomcat 系统展示 首…...

Linux 终端窗口设置为透明
Linux 终端窗口设置为透明 打开终端 右键鼠标 选择Profile Preferences 点击Background 选择 Transparent background 拖动滑条调整透明度 完成。...

MySQL 中 Varchar(50) 和 varchar(500) 区别是什么?
一. 问题描述 我们在设计表结构的时候,设计规范里面有一条如下规则: 对于可变长度的字段,在满足条件的前提下,尽可能使用较短的变长字段长度。 为什么这么规定?我在网上查了一下,主要基于两个方面 基于存储空间的考…...

强化RAG:微调Embedding还是LLM?
为什么我们需要微调? 微调有利于提高模型的效率和有效性。它可以减少训练时间和成本,因为它不需要从头开始。此外,微调可以通过利用预训练模型的功能和知识来提高性能和准确性。它还提供对原本无法访问的任务和领域的访问,因为它…...

提取 Excel单元格文本下的超链接
在Excel中,可以使用内置的函数来提取单元格中的超链接地址。如果你有一个包含超链接的单元格,例如B1,你可以使用以下步骤来提取这个超链接: 在一个新的单元格(例如C1)中,输入以下公式ÿ…...

一键安全体检!亚信安全携手鼎捷软件推出企业安全体检活动 正式上线
亚信安全联合鼎捷软件股份有限公司(以下简称“鼎捷软件”)正式推出“一键安全体检”服务。亚信安全网络安全专家将携手鼎捷软件数据安全专家,围绕企业的数智安全状况,进行问题探索与治愈、新问题预测与预警,在全面筛查…...

numpy - array(1)
一维数据:向量 二位数据:矩阵 维度超过三维的数据:张量 这些数据在numpy中统称array (1)使用穷举法创建多为数据,接受列表或者元组类型的数据 a numpy.array([1, 2, 3]) b numpy.array([[1, 2, 3], (4, 5, 6), [7, 8, 9]]) (2)创建所有元…...

师彼长技以助己(6)递归思维
师彼长技以助己(6)递归思维 递归思维-小游戏 思维小游戏 思维 小游戏:1 玩一个从1或2开始往上加的游戏,谁加到20就赢 如何保证一定赢呢?我们倒推,要先到20的话,谁先到17就赢,如此…...

Kali Linux 2024.2
Kali Linux 2024.2 版本(t64、GNOME 46 和社区包) 比平常晚了一点,但 Kali 2024.2 来了!延迟是由于实现这一目标的幕后变化所致,这也是人们关注的焦点。社区提供了大量帮助,这次他们不仅添加了新的软件包&…...

【Spine学习08】之短飘,人物头发动效制作思路
上一节说完了跑步的, 这节说头发发型。 基础过程总结: 1.创建骨骼(头发需要在上方加一个总骨骼) 2.创建网格(并绑定黄线) 3.绑定权重(发根位置的顶点赋予更多总骨骼的权重) 4.切换到…...

chatgpt的命令词
人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…...

用python把docx批量转为pdf
为保证转换质量,本文的方法是通过脚本和com技术调用office自带的程序进行转换的,因此需要电脑已经装有office。如果希望不装office也能用,则需要研究OpenXML技术,后面实在闲的慌(退休)再搞。 安装所需库 …...

项目采购管理
目录 1.概述 2.三个子过程 2.1.规划采购管理 2.2.实施采购 2.3.控制采购 2.4.归属过程组 3.应用场景 3.1.十个应用场景 3.2.软件开发项目 3.2.1. 需求识别和分析 3.2.2. 制定采购计划 3.2.3. 发布采购请求 3.2.4. 供应商评估与选择 3.2.5. 合同签订 3.2.6. 采购…...

Elasticsearch 认证模拟题 - 18
一、题目 为一个索引,按要求设置以下 dynamic Mapping 一切 text 类型的字段,类型全部映射成 keyword一切以 int_ 开头命名的字段,类型都设置成 integer 1.1 考点 字段的动态映射 1.2 答案 # 创建索引和索引模板 PUT my_index {"m…...

Python基础-速记笔记
Python的基础数据类型都有哪些? 1、字符串(string)2、布尔类型(bool)3、整数(int) 4、浮点数(float)5、列表(list)6、集合(set)7、元组(tuple)8、字典(dict) 其中不可变类型有: 字符串(string)、布尔类型(bool)、整数(int) 、浮点数(float)、元组(tup…...

青少年编程与数学 01-001开始使用计算机 02课题、计算机操作系统3_3
青少年编程与数学 01-001开始使用计算机 02课题、计算机操作系统3_3 四、Linux操作系统安装(一) 准备工作(二)设置BIOS/UEFI(三) 安装Linux(四)磁盘分区(五)安…...

填表统计预约打卡表单系统(FastAdmin+ThinkPHP+UniApp)
填表统计预约打卡表单系统:一键搞定你的预约与打卡需求 填表统计预约打卡表单系统是一款基于FastAdminThinkPHPUniApp开发的一款集信息填表、预约报名,签到打卡、活动通知、报名投票、班级统计等功能的自定义表单统计小程序。 📝 一、引言…...

IO模型和多路转接
叠甲:以下文章主要是依靠我的实际编码学习中总结出来的经验之谈,求逻辑自洽,不能百分百保证正确,有错误、未定义、不合适的内容请尽情指出! 文章目录 1.IO 概要1.1.IO 低效原因1.2.IO 常见模型1.2.1.阻塞 IO1.2.2.非阻…...

如何完美解决升级 IntelliJ IDEA 最新版之后遇到 Git 记住密码功能失效的问题
🛠️ 如何完美解决升级 IntelliJ IDEA 最新版之后遇到 Git 记住密码功能失效的问题 摘要 在这篇文章中,我们将详细探讨如何解决在升级到 IntelliJ IDEA 最新版(2024.1.3 Ultimate Edition)后遇到的 Git 记住密码功能失效的问题。…...

SpringCloud微服务架构(eureka、nacos、ribbon、feign、gateway等组件的详细介绍和使用)
一、微服务演变 1、单体架构(Monolithic Architecture) 是一种传统的软件架构模式,应用程序的所有功能和组件都集中在一个单一的应用中。 在单体架构中,应用程序通常由一个大型的、单一的代码库组成,其中包含了所有…...

flinksql BUG : flink hologres-cdc source FINISHED
org.apache.flink.runtime.JobException: The failure is not recoverable or the failure does not allow to restart.at org.apache.flink.runtime.executiongraph.failover.flip1.ExecutionFailureHandler...
现代密码学-国密算法
商用密码算法种类 商用密码算法 密码学概念、协议与算法之间的依赖关系 数字签名、证书-公钥密码、散列类算法 消息验证码-对称密码 ,散列类 安全目标与算法之间的关系 机密性--对称密码、公钥密码 完整性--散列类算法 可用性--散列类、公钥密码 真实性--公…...

Postman简介
目录 1.概述 2.诞生背景 3.历史版本 4.安装和卸载 5.菜单和菜单项 6.使用 7.应用场景 8.示例 8.1.简单的GET请求 8.2.POST请求提交数据 8.3.查询参数 9.未来展望 10.总结 1.概述 Postman是一款用于API开发、测试和文档管理的综合性工具。允许开发者和测试人员创建…...

oracle 删除当前用户下所有表
荆轲刺秦王 通常呢 我们将正式环境的 oracle 数据库 导出成 dmp 文件,然后导入到测试环境或者本地环境,期间可能会出现各种问题。那么如何使错误的导入数据全部删除呢。可以这样做: 1. 本地虚拟机启动 oracle 服务 2. sqldeveloper 连接 o…...

探索C嘎嘎的奇妙世界:第二关---C++的输入与输出
1 C的输入与输出: 新生婴儿会以自己独特的方式向这个崭新的世界打招呼,C刚出来后,也算是一个新事物, 那C是否也应该向这个美好的世界来声问候呢?我们来看下C是如何来实现问候的呢? 在 C的不断发展中,出现了许多新的头…...

实现思路:Vue 子组件高度不固定下实现瀑布流布局
实现思路:Vue 子组件高度不固定下实现瀑布流布局 一、瀑布流布局基础实现原理 在深入解说不定高度子组件的瀑布流如何实现之前,先大体说一下子组件高度固定已知的这种实现原理: 有一个已知组件高度的数组。定义好这个瀑布流的列数ÿ…...