简介这份资源是面向高校计算机相关专业学生的Java毕业设计完整项目包主题为学生成绩管理系统适合正在准备毕业设计、需要参考Java Web全流程实现的学习者。系统覆盖成绩录入、查询、统计与分析等核心业务技术栈涉及Java面向对象编程、MVC设计模式、MySQL数据库设计、JDBC数据操作、Servlet与JSP动态页面以及Tomcat服务器部署能够帮助读者理解从需求到上线的完整开发链路。压缩包共9个文件约122.79MB包含4个mp4演示与部署视频、1个源代码zip、1个sql数据库脚本、1份doc部署文档及若干txt说明视频直观展示系统演示、代码结构、部署运行与数据库乱码排查等关键环节。目前已有663人学习下载读者可据此快速搭建可运行环境对照源码梳理分层结构并借助文档与录屏完成本地部署与调试对巩固Java Web技能和提升工程实践能力具有参考价值。1. 从一台干净机器开始这套 Java 成绩管理系统到底要装什么很多同学拿到毕业设计压缩包第一反应是双击StudentScore.zip解压完就找main方法结果发现项目根本跑不起来——不是数据库连不上就是 Tomcat 启动报 404。我见过最典型的一次某开发者在自己的笔记本上折腾了一整天最后发现 JDK 装的是 17而项目里的 Servlet 还是javax.servlet包Tomcat 10 直接把它当空气。这套基于 Java 的学生成绩管理系统本质是一个标准的 Java Web 项目源码、SQL 脚本、部署文档和部署视频都在压缩包里但“有手就行”的前提是环境版本对得上。它适合正在做毕业设计、需要一套能跑通的增删改查加统计报表的开发者也适合想拿一个完整 Web 项目练手部署的人。装不好你连登录页都看不到装对了从建库到出成绩单半小时内能跑通。2. 环境清单与版本选择JDK、Tomcat、MySQL 怎么搭2.1 先定版本再动手别让 JDK 和 Tomcat 打架这套项目源码里用的是javax.servlet体系这意味着 Tomcat 9 是稳妥选择Tomcat 10 及以上会把包名迁到jakarta.servlet直接部署会报ClassNotFoundException。JDK 我一般选 8 或 11JDK 8 兼容性最好JDK 11 也能跑但别上 17除非你打算手动改module-info或者换依赖。MySQL 用 5.7 或 8.0 都行score.sql脚本里没有用到 8.0 特有的窗口函数所以 5.7 更省事字符集记得选utf8mb4否则中文姓名和课程名会变问号。组件推荐版本备选版本关键注意点JDK1.811不要用 17javax包被移除Tomcat9.0.x8.5.x不要用 Tomcat 10MySQL5.78.0字符集必须utf8mb4IDEIntelliJ IDEAEclipse社区版够用构建工具Maven手动导 jar看源码里有没有pom.xml提示如果你已经装了 JDK 17不用卸载去 Oracle 官网下个 JDK 8 的压缩包解压后在 IDEA 里单独给这个项目配 SDK 就行系统环境变量不用动。2.2 安装 JDK 8 并验证java -versionWindows 下直接下jdk-8uXXX-windows-x64.exe安装路径别带空格我一般用C:\Java\jdk1.8.0_XXX。装完配JAVA_HOME和Path然后开 cmd 敲java -version javac -version两条命令输出的版本号必须一致如果java是 1.8 而javac是 17说明 Path 里旧版本排前面了把%JAVA_HOME%\bin移到最上面。Linux 下用tar.gz解压然后改/etc/profileexport JAVA_HOME/usr/local/jdk1.8.0_XXX export PATH$JAVA_HOME/bin:$PATH export CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarCLASSPATH里的.表示当前目录少了它编译时找不到自己写的类。改完source /etc/profile生效再敲java -version确认。2.3 Tomcat 9 的安装与端口避让Tomcat 直接下apache-tomcat-9.0.XX.zip解压到D:\tomcat9这种纯英文路径。启动前先改conf/server.xml里的端口默认 8080 经常被占用我一般改成 8081Connector port8081 protocolHTTP/1.1 connectionTimeout20000 redirectPort8443 /改完进bin目录Windows 双击startup.batLinux 用./startup.sh。浏览器访问http://localhost:8081看到 Tomcat 那只猫就算成了。如果闪退大概率是JAVA_HOME没配好去logs/catalina.out看报错第一行通常就写着JAVA_HOME is not defined correctly。2.4 MySQL 建库与score.sql导入先启动 MySQL 服务然后用命令行登录mysql -u root -p输入密码后创建一个专用数据库名字跟score.sql里的CREATE DATABASE语句保持一致通常是score_db或student_scoreCREATE DATABASE score_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE score_db; SOURCE D:/毕业设计/4-SQL/score.sql;SOURCE后面跟绝对路径路径里不要有中文和空格否则会报Failed to open file。导入完用SHOW TABLES;看一眼应该有student、course、score、user这几张表。如果表名是乱码说明score.sql文件本身的编码不是 UTF-8用 Notepad 转成 UTF-8 再导一次。3. 源码导入与数据库连接配置从StudentScore.zip到能登录3.1 IDEA 导入项目与 SDK 绑定把StudentScore.zip解压到一个纯英文路径比如D:\projects\student_score。打开 IDEA选Open指向解压后的根目录。如果项目里有pom.xmlIDEA 会提示作为 Maven 项目导入点确认等依赖下完。如果没有pom.xml就选File - Project Structure - Modules把lib目录下的 jar 全加进去通常会有mysql-connector-java-x.x.x.jar、jstl.jar、servlet-api.jar。接着在Project Structure - Project里把 SDK 设成 1.8Language level也选 8。这一步不做代码里ListString这种泛型会报红虽然不影响编译但看着糟心。3.2 改db.properties或DBUtil.java里的连接串项目里数据库配置一般放在两个地方之一src/db.properties或者src/com/xxx/util/DBUtil.java。打开找到这几行jdbc.drivercom.mysql.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/score_db?useUnicodetruecharacterEncodingutf8useSSLfalse jdbc.usernameroot jdbc.password你的密码useUnicodetrue和characterEncodingutf8必须同时出现少一个中文就乱码。useSSLfalse是给 MySQL 8.0 用的5.7 加不加都行但加了不报错。如果你用的是 MySQL 8.0 的驱动jdbc.driver要改成com.mysql.cj.jdbc.Driver否则会提示驱动类已过时。注意改完配置文件IDEA 里按CtrlShiftF9重新编译一下不然target/classes下的旧配置还在跑起来还是连旧库。3.3 部署到 Tomcat 并启动在 IDEA 右上角点Add Configuration选Tomcat Server - Local。在Deployment标签页点选Artifact通常选war exploded那个。Application context填/score这样访问路径就是http://localhost:8081/score。回到Server标签页确认HTTP port是 8081跟server.xml里改的一致。点绿色虫子启动控制台如果输出Server startup in xxx ms且没有红色异常就打开浏览器访问http://localhost:8081/score/login.jsp。看到登录页说明 Servlet 和 JSP 都正常加载了。如果 404检查web.xml里的url-pattern或者WebServlet注解的路径大概率是 context path 写错了。3.4 登录测试与初始账号部署文档里一般会写默认账号常见的是admin / 123456或者teacher / 123456。如果登录报Unknown column xxx in where clause说明数据库表结构和代码里的实体类字段对不上去score.sql里核对user表的列名把代码里User.java的字段名改成一致的。登录成功后先别急着录成绩点一下“学生管理”和“课程管理”看看列表能不能正常分页这一步能提前暴露 JDBC 查询的编码问题。4. 避坑与排查乱码、驱动、端口这三座大山4.1 中文乱码从数据库到 JSP 的完整链路现象录入学生姓名“张三”列表里显示“å¼ ä¸‰”或者“???”。原因乱码可能出现在三个环节——数据库字符集、JDBC 连接串、JSP 页面编码。score.sql导入时如果没指定utf8mb4表默认是latin1JDBC 连接串少了characterEncodingutf8JSP 页面顶部没写% page contentTypetext/html;charsetUTF-8 %。解决先查数据库字符集SHOW VARIABLES LIKE character%;把character_set_server和character_set_database都改成utf8mb4。然后确认连接串带useUnicodetruecharacterEncodingutf8。最后检查所有 JSP 第一行有没有pageEncodingUTF-8。三处都对了乱码必消。4.2 Tomcat 10 部署报ClassNotFoundException: javax.servlet.http.HttpServlet现象启动时控制台刷红色堆栈核心就是找不到javax.servlet包。原因Tomcat 10 把 Servlet API 的包名从javax.servlet迁到了jakarta.servlet而你的项目编译时用的是旧包。解决换 Tomcat 9或者把项目里所有import javax.servlet.*改成import jakarta.servlet.*同时换jakarta.servlet-api依赖。毕业设计项目一般没人愿意改代码所以直接换 Tomcat 9 最省事。4.3 端口 8080 被占用导致启动失败现象Tomcat 启动日志最后一行是Address already in use: JVM_Bind。原因8080 被其他程序占了常见的是另一个 Tomcat 实例、Jenkins 或者某个前端脚手架。解决Windows 下netstat -ano | findstr :8080找到 PID再去任务管理器结束进程。或者直接改server.xml里的Connector port为 8081IDEA 里同步改。我一般习惯把 Tomcat 端口设成 8081MySQL 保持 3306这样跟本地其他项目不冲突。4.4 MySQL 8.0 时区报错The server time zone value ???ú±ê×??±??现象JDBC 连接时抛SQLException提示时区无法识别。原因MySQL 8.0 的驱动要求显式指定时区而连接串里没写。解决在jdbc.url后面追加serverTimezoneAsia/Shanghai完整写法jdbc.urljdbc:mysql://localhost:3306/score_db?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghai改完重启 Tomcat连接就正常了。4.5 部署视频里的操作和实际不一致现象跟着02-项目的部署运行.mp4做视频里点某个按钮就出结果你点完报错。原因视频录制时的环境版本和你的不一样比如视频里是 JDK 8 Tomcat 8你用的是 JDK 11 Tomcat 9某些配置项位置变了。解决视频看流程别死磕细节。重点看它怎么建库、怎么改连接串、怎么配 Tomcat具体路径和版本以你本机为准。遇到视频里没提的报错去logs目录看日志日志比视频准。5. 装完怎么验证跑通从登录到成绩统计的完整走查装完环境、部署完项目别急着关 IDEA。我一般会走一遍完整业务流确认每个环节都通。第一步登录系统用admin / 123456进去如果提示密码错误去数据库user表看password字段是不是明文有些项目存的是 MD5那就用SELECT MD5(123456);查一下再比对。第二步进“学生管理”新增一个学生姓名填“测试学生”学号填“2024001”保存后刷新列表看能不能查到这一步验证的是INSERT和SELECT是否正常。第三步进“课程管理”新增一门“Java 程序设计”学分填 3。第四步进“成绩录入”选刚才的学生和课程分数填 88保存。第五步进“成绩查询”按学号查应该能看到一条记录分数 88。第六步进“成绩统计”看能不能按课程算出平均分和及格率这一步验证的是GROUP BY和聚合函数。如果第六步报Unknown column avg_score in field list说明 SQL 里的别名和实体类字段对不上去ScoreDao.java里找对应的查询语句把AS avg_score改成实体类里的字段名。如果统计页面空白但没报错检查 JSP 里c:forEach的items是不是空集合大概率是 DAO 返回了null而不是空List。提示走完这一遍把score.sql再导出一份备份改坏了直接还原比重新建库快得多。从那以后我每次部署 Java Web 项目都强制走一遍“登录→增→查→统计”的完整链路不看到统计数字出来不算完。这套学生成绩管理系统的源码和 SQL 都在压缩包里部署文档和视频能帮你省掉不少查配置的时间但环境版本和字符集这两关还是得自己盯紧。希望帮到你。本文还有配套的精品资源点击获取