news 2026/4/14 12:23:41

基于JAVA实现的学生管理系统_学生管理系统java,零基础入门到精通,收藏这篇就够了

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于JAVA实现的学生管理系统_学生管理系统java,零基础入门到精通,收藏这篇就够了

此项目为博主JAVAEE课设项目,仅供参考,希望能够帮助其他正在学习JAVA的小伙伴。如果有错误或者写的不好的地方,请多多指教。

项目运行后,打开浏览器访问 localhost:8080/login 即可

目录

开发工具和环境

功能说明

项目结构

​编辑

操作步骤

1.创建数据库

(一)创建数据库

(二)创建数据表

(三)插入数据(可选)

2.创建可视化界面

(一)登录界面

(二)主页界面

(三)增加界面

(四)修改界面

3.创建JAVA后端功能

(一)创建实体类

(二)创建Dao层

(三)创建Service层

(四)创建Controller层

源码


开发工具和环境

1.IntelliJ IDEA 2024.2.1

2.MySQL80

3.jdk 1.8

功能说明

实现学生信息的增,删,改,查,以及导出功能

项目结构

controller包 ------ 存放控制层代码

service包 ------ 存放业务层代码

dao包 ------ 存放持久层代码

entity包 ------ 存放实体类代码

mapper包 ------ 存放Mapper映射文件

static.css目录 ------ 存放样式表

templates目录 ------ 存放前端页面代码

application.properties ------ 项目配置文件

appliation.yml ------ 项目配置文件

操作步骤

1.创建数据库

(一)创建数据库
CREATE database sb_jsp_ems;
(二)创建数据表
use sb_jsp_ems; CREATE TABLE `t_user` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID', `username` varchar(50) NOT NULL COMMENT '用户名(唯一)', `password` varchar(60) NOT NULL COMMENT '加密后的密码', PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`) ); CREATE TABLE `user` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(60) NOT NULL, `age` int DEFAULT NULL, `gender` char(10) DEFAULT NULL, `birthday` datetime DEFAULT NULL, PRIMARY KEY (`id`) );
(三)插入数据(可选)
INSERT INTO t_user (username, password) VALUES('admin','123456'); INSERT INTO user (name, age, gender, birthday) VALUES ('张伟', 28, '男', '1995-07-12 09:15:00'), ('王芳', 35, '女', '1988-11-23 14:45:00'), ('李强', 22, '男', '2001-03-05 20:30:00'), ('刘洋', 30, '女', '1993-01-17 11:00:00'), ('陈杰', 40, '男', '1983-05-29 08:20:00'), ('杨敏', 26, '女', '1997-10-10 16:10:00'), ('赵磊', 33, '男', '1990-04-02 13:55:00'), ('黄娜', 29, '女', '1994-12-08 19:05:00'), ('周斌', 31, '男', '1992-06-18 07:40:00'), ('吴静', 24, '女', '1999-02-25 22:25:00');

2.创建可视化界面

因篇幅限制,这里只展示前端页面,感兴趣的小伙伴可以下载源码查看

(一)登录界面

(二)主页界面

(三)增加系统用户界面

(四)增加学生信息界面

(五)修改学生信息界面

3.创建JAVA后端功能

(一)创建实体类

创建系统用户类

@Data @ToString @Accessors(chain = true) public class User { private Integer id; // 序号 private String username; // 用户姓名 private String password; // 用户密码 }

创建学生类

@Data @ToString @Accessors(chain = true) public class Stu { private Integer id; // 编号 private String name; // 姓名 private String gender; // 性别 private Integer age; // 年龄 }
(二)创建Dao层

Dao层本文使用的是Mybatis,需要在Dao包中创建数据库操作函数的接口,并且在mapper中的映射文件中完成相关数据库操作语句。这里仅展示其中一个。

函数接口(StuDao)

public interface StuDAO { //查询所有的方法 List<Stu> findAll(); //保存学生的方法 void save(Stu emp); //删除学生的方法 void delete(Integer id); //根据id查询学生信息 Stu findById(Integer id); //更新学生信息 void update(Stu stu); }

映射文件(StuDAOMapper.xml)

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.sjj.dao.StuDAO"> <!--查询所有--> <select id="findAll" resultType="com.sjj.entity.Stu"> select id,name,age,gender from user </select> <!--保存学生--> <insert id="save" parameterType="com.sjj.entity.Stu"> insert into user (id, name, age, gender) values (#{id}, #{name}, #{age}, #{gender}) </insert> <!--删除学生--> <delete id="delete" parameterType="Integer"> delete from user where id = #{id} </delete> <!--根据id查询学生信息--> <select id="findById" parameterType="Integer" resultType="com.sjj.entity.Stu"> select id,name,age,gender from user where id = #{id} </select> <!--更新的实现--> <update id="update" parameterType="com.sjj.entity.Stu"> update user set name=#{name},age=#{age},gender=#{gender} where id = #{id} </update> </mapper>
(三)创建Service层

Service层主要负责业务逻辑的处理和管理。Service层可以调用Dao层中的函数来实现相关功能。受篇幅限制,这里只展示其中一个。

@Service注解表示这是一个服务层组件

@Transactional 是声明式事务管理注解

@Autowired注解是从IOC容器中自动装配对象,避免手动创建对象

@Service @Transactional public class StuServiceImpl implements StuService { @Autowired private StuDAO stuDAO; @Override public void update(Stu emp) { stuDAO.update(emp); } @Override public Stu findById(Integer id) { return stuDAO.findById(id); } @Override public void delete(Integer id) { stuDAO.delete(id); } @Override public void save(Stu emp) { stuDAO.save(emp); } @Override public List<Stu> findAll() { return stuDAO.findAll(); } }
(四)创建Controller层

Controller层主要负责接收用户请求并返回响应Service层可以调用Dao层中的函数来实现相关功能。受篇幅限制,这里只展示其中一个。

@Controller注解表示这是一个控制层组件

@Transactional 是声明式事务管理注解

@Autowired注解是从IOC容器中自动装配对象,避免手动创建对象

@Controller public class StuController { @Autowired private StuService stuService; // ====================== 显示添加学生页面 ====================== @GetMapping("/emp/addstu") public String showAddStudentPage() { return "emp/addstu"; // 直接返回模板,无需重定向 } // ====================== 处理添加学生请求 ====================== @PostMapping("/emp/addstu") public String addStudent(Stu stu, RedirectAttributes redirectAttributes) { try { stuService.save(stu); redirectAttributes.addFlashAttribute("success", "学生添加成功"); return "redirect:/emp/student"; // 跳转到学生列表页 } catch (Exception e) { redirectAttributes.addFlashAttribute("error", "添加失败: " + e.getMessage()); return "redirect:/emp/addstu"; // 失败时返回添加页 } } @GetMapping("/emp/student") public String listStudents( @RequestParam(value = "id", required = false) Integer id, // 接收可选的 id 参数 Model model) { if (id != null) { // 按 id 查询学生 Stu student = stuService.findById(id); if (student != null) { // 将单个学生包装为列表,保持前端模板兼容性 model.addAttribute("students", Collections.singletonList(student)); } else { // 未找到时的错误提示 model.addAttribute("error", "未找到ID为 " + id + " 的学生"); model.addAttribute("students", Collections.emptyList()); } } else { // 未传 id 时查询全部学生 model.addAttribute("students", stuService.findAll()); } return "emp/student"; } // ====================== 处理修改学生请求 ====================== @GetMapping("/emp/updatestu") public String showUpdatePage(@RequestParam("id") Integer id, Model model) { Stu stu = stuService.findById(id); model.addAttribute("student", stu); return "emp/updatestu"; } @PostMapping("/emp/updatestu") public String updStudent(Stu stu, RedirectAttributes redirectAttributes) { try { stuService.update(stu); redirectAttributes.addFlashAttribute("success", "学生修改成功"); } catch (Exception e) { redirectAttributes.addFlashAttribute("error", "修改失败: " + e.getMessage()); return "redirect:/emp/updatestu?id=" + stu.getId(); } return "redirect:/emp/student"; } @GetMapping("/emp/delete/{id}") public String deleteStudent(@PathVariable("id") Integer id, RedirectAttributes redirectAttributes) { try { stuService.delete(id); redirectAttributes.addFlashAttribute("success", "学生删除成功"); } catch (Exception e) { redirectAttributes.addFlashAttribute("error", "删除失败: " + e.getMessage()); } return "redirect:/emp/student"; } @GetMapping("/emp/export") public void exportToExcel(HttpServletResponse response) throws Exception { // 1. 设置响应头 response.setContentType( "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); String fileName = URLEncoder.encode("学生信息.xlsx", "UTF-8"); response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\""); // 2. 从数据库查询数据 List<Stu> list = stuService.findAll(); // 3. 使用 POI 创建 Excel Workbook wb = new XSSFWorkbook(); Sheet sheet = wb.createSheet("学生信息"); // 3.1 写表头 Row header = sheet.createRow(0); header.createCell(0).setCellValue("ID"); header.createCell(1).setCellValue("姓名"); header.createCell(2).setCellValue("性别"); header.createCell(3).setCellValue("年龄"); // 3.2 写数据行 for (int i = 0; i < list.size(); i++) { Stu s = list.get(i); Row row = sheet.createRow(i + 1); row.createCell(0).setCellValue(s.getId()); row.createCell(1).setCellValue(s.getName()); row.createCell(2).setCellValue(s.getGender()); row.createCell(3).setCellValue(s.getAge()); } // 4. 输出到客户端 wb.write(response.getOutputStream()); wb.close(); } }

源码

GitHub:https://github.com/Sjz12345/Student-Manage-System.git

Java开发的就业市场正在经历结构性调整,竞争日益激烈

传统纯业务开发岗位(如仅完成增删改查业务的后端工程师)的需求,特别是入门级岗位,正显著萎缩。随着企业技术需求升级,市场对Java人才的要求已从通用技能转向了更深入的领域经验(如云原生、微服务)或前沿的AI集成能力。这也导致岗位竞争加剧,在一、二线城市,求职者不仅面临技术内卷,还需应对学历与项目经验的高门槛。

大模型为核心的AI领域正展现出前所未有的就业热度与人才红利

2025年,AI相关新发岗位数量同比激增543%,单月增幅最高超过11倍,大模型算法工程师位居热门岗位前列。行业顶尖人才的供需严重失衡,议价能力极强,跳槽薪资涨幅可达30%-50%。值得注意的是,市场并非单纯青睐算法研究员,而是急需能将大模型能力落地于复杂业务系统的工程人才。这使得具备企业级架构思维和复杂系统整合经验的Java工程师,在向“Java+大模型”复合人才转型时拥有独特优势,成为企业竞相争夺的对象,其薪资天花板也远高于传统Java岗位。

说真的,这两年看着身边一个个搞Java、C++、前端、数据、架构的开始卷大模型,挺唏嘘的。大家最开始都是写接口、搞Spring Boot、连数据库、配Redis,稳稳当当过日子。

结果GPT、DeepSeek火了之后,整条线上的人都开始有点慌了,大家都在想:“我是不是要学大模型,不然这饭碗还能保多久?”

先给出最直接的答案:一定要把现有的技术和大模型结合起来,而不是抛弃你们现有技术!掌握AI能力的Java工程师比纯Java岗要吃香的多。

即使现在裁员、降薪、团队解散的比比皆是……但后续的趋势一定是AI应用落地!大模型方向才是实现职业升级、提升薪资待遇的绝佳机遇!

如何学习AGI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2025最新版CSDN大礼包:《AGI大模型学习资源包》免费分享**

一、2025最新大模型学习路线

一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛,没有明确的学习路线可能会导致新人感到迷茫,不知道应该专注于哪些内容。

我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。

L1级别:AI大模型时代的华丽登场

L1阶段:我们会去了解大模型的基础知识,以及大模型在各个行业的应用和分析;学习理解大模型的核心原理,关键技术,以及大模型应用场景;通过理论原理结合多个项目实战,从提示工程基础到提示工程进阶,掌握Prompt提示工程。

L2级别:AI大模型RAG应用开发工程

L2阶段是我们的AI大模型RAG应用开发工程,我们会去学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

L3级别:大模型Agent应用架构进阶实践

L3阶段:大模型Agent应用架构进阶实现,我们会去学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造我们自己的Agent智能体;同时还可以学习到包括Coze、Dify在内的可视化工具的使用。

L4级别:大模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,我们会更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调;并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握;而L3 L4更多的是通过项目实战来掌握大模型的应用开发,针对以上大模型的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。

二、大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

三、大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

四、大模型项目实战

学以致用,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

五、大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2025最新版CSDN大礼包:《AGI大模型学习资源包》免费分享

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/28 18:22:01

零基础玩转MPU6050:从接线到第一个数据读取

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个面向初学者的MPU6050教学项目。要求&#xff1a;1) 图文并茂的接线指南&#xff1b;2) 最简单的Arduino示例代码(仅读取原始数据)&#xff1b;3) 常见问题解答(如I2C地址选…

作者头像 李华
网站建设 2026/4/11 23:49:26

电商系统实战:MILOCO在高并发场景下的部署优化

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请基于电商应用场景生成MILOCO高级部署方案&#xff0c;要求&#xff1a;1. 针对高并发优化&#xff08;包含Redis缓存配置、Nginx负载均衡设置&#xff09;&#xff1b;2. 数据库…

作者头像 李华
网站建设 2026/4/9 15:30:40

VIM vs VSCode:纯键盘操作效率对比测试

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 生成一个代码重构效率对比测试方案&#xff1a;1. 准备一个包含20个文件的Python项目 2. 分别用纯VIM和VSCodeVim插件完成&#xff1a;变量重命名、提取函数、批量添加类型注解三个…

作者头像 李华
网站建设 2026/4/13 21:13:31

对比评测:传统vs云方案安装Kali手机版谁更快

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个Kali Linux安装效率测试工具&#xff0c;功能&#xff1a;1.自动记录各安装步骤耗时 2.生成安装成功率统计报表 3.硬件资源占用监控图表 4.跨方案性能对比可视化 5.最优方…

作者头像 李华
网站建设 2026/4/3 5:00:01

5分钟快速验证:Docker+Nacos原型搭建

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 生成一个极简的Nacos原型环境配置&#xff0c;要求&#xff1a;1. 使用最少的Docker命令 2. 包含Spring Cloud服务注册与发现的示例代码 3. 提供快速测试接口 4. 可随时销毁重建 5…

作者头像 李华
网站建设 2026/4/10 5:06:43

Rembg抠图技术揭秘:U2NET架构原理解析

Rembg抠图技术揭秘&#xff1a;U2NET架构原理解析 1. 智能万能抠图 - Rembg 在图像处理领域&#xff0c;自动去背景&#xff08;Image Matting / Background Removal&#xff09;一直是核心需求之一。无论是电商商品图精修、证件照制作&#xff0c;还是创意设计中的素材提取&…

作者头像 李华