马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
SSM学生日常行为评分系统 Spring + SpringMVC + MyBatis 完整项目源码 资料整理与技术解读 SSM框架 | JSP | Bootstrap | ECharts | MySQL | 学生管理 | 行为评分 | 教育信息化 一、项目概览 本项目是一套基于SSM(Spring + SpringMVC + MyBatis)框架开发的学生日常行为评分系统,属于高校教育管理信息化领域的典型应用。系统采用B/S架构,前端使用JSP + Bootstrap + ECharts技术栈,后端基于SSM三大框架整合开发,数据库使用MySQL。系统围绕学生日常行为的量化考核这一核心需求,实现了从基础信息管理到评分考核、统计分析的全流程数字化管理。7 ?1 f0 }3 H- m" N9 U
系统最大的特点是"三角色权限体系"——学生、教师、管理员三类用户各司其职。学生可以查看自己的加分扣分记录和评分项目;教师负责对学生进行日常行为评分、查看历史记录;管理员则拥有系统全部权限,负责基础数据维护和全局统计管理。这种角色划分清晰地模拟了真实校园管理场景,业务逻辑完整,功能模块丰富,是学习SSM框架开发和校园管理系统的优质实战项目。5 Z J6 D9 A- O
表1-1 项目基本信息 项目 | 内容 | 项目名称 | SSM学生日常行为评分系统 | 项目编号 | 445 | 项目类型 | 高校学生管理系统(行为评分方向) | 技术栈 | SSM(Spring + SpringMVC + MyBatis)+ JSP + Bootstrap + ECharts | 开发工具 | IntelliJ IDEA / Eclipse | 运行环境 | JDK 1.8 + Tomcat 7.0+ + MySQL 5.5/5.7/8.0 | 系统架构 | B/S 架构(浏览器/服务器模式) | 系统角色 | 学生、教师、管理员(三角色权限体系) | 核心功能 | 学生管理、班级管理、评分项目、加分扣分、统计查询 | 配套资料 | 完整源码 + 数据库脚本 + 部署视频 + PPT模板 | 适用场景 | 计算机毕业设计、SSM框架学习、校园管理系统开发 | , q) l; S2 @) J/ J
图1-1 校园学习场景 二、技术架构详解
- e5 Z( m7 p$ k2.1 整体技术栈 表2-1 技术栈一览 技术层级 | 技术选型 | 说明 | 后端框架 | Spring + SpringMVC + MyBatis | 经典SSM三大框架整合,企业级开发标准方案 | 持久层 | MyBatis | 半自动ORM框架,SQL灵活可控,性能优异 | 数据库 | MySQL 5.5/5.7/8.0 | 关系型数据库,支持事务和复杂查询 | 前端页面 | JSP + JSTL + EL | Java Web经典视图层技术,与后端无缝集成 | 前端框架 | Bootstrap | 响应式UI框架,快速构建美观界面 | 图表组件 | ECharts | 百度开源图表库,数据可视化展示 | 前端脚本 | JavaScript + jQuery | 页面交互和AJAX异步请求 | 服务器 | Tomcat 7.0+ | Servlet容器,部署Java Web应用 | 构建工具 | Maven | 项目构建和依赖管理 | 1 M1 L6 P& |8 v3 y: ?
3 F- w/ r& f" @! s5 O0 T2 o
2.2 SSM框架整合架构 SSM是Spring + SpringMVC + MyBatis三个框架的缩写,是Java Web开发中最经典的框架组合之一。Spring负责业务对象的创建和管理(IoC容器),SpringMVC负责请求的接收和响应(MVC控制层),MyBatis负责数据库操作(持久层)。三者各司其职,又无缝协作,形成了完整的Web应用开发体系。2 @# ^1 U9 X" U/ H$ T
┌─────────────────────────────────────────────────┐: }+ C% |% s' N2 e2 M( k+ p
│ 浏览器端 │7 A0 A" L' n) t# [
│ JSP页面 + Bootstrap + jQuery + ECharts │+ B6 ?: u* ]0 `" Q- u9 e3 V
│ (视图层:页面展示、表单提交、AJAX请求) │1 k6 B8 B5 r9 @$ ^0 }
└───────────────────────┬─────────────────────────┘# a" F' a" i- \0 {
│ HTTP请求 / JSON响应
+ c: o" ~1 Z) K9 p" K# O ▼/ n6 s* J. G3 k& m% p
┌─────────────────────────────────────────────────┐ a. Y" ~& w0 Z, x/ S, |
│ SpringMVC 控制层 │4 Z6 i" O; f: j% }
│ Controller → 接收请求 / 参数绑定 / 返回视图 │) O" S! m- @; d7 i% L8 W0 {* N
│ Interceptor → 登录拦截 / 权限校验 │
; ?0 F* y# U4 R! U└───────────────────────┬─────────────────────────┘ F4 P: Y8 i6 u5 D b8 B
▼* G) \3 S: V) D
┌─────────────────────────────────────────────────┐# R5 t, _5 `# e. H' F5 Z3 X
│ Spring 业务层 │! `3 K$ S0 A' i! X7 v
│ Service → 业务逻辑处理 / 事务管理 │$ [( {+ q" f4 N) h3 s: ?5 l( W0 X
│ (IoC容器:管理所有Bean的生命周期) │
6 S( @ n: o5 E└───────────────────────┬─────────────────────────┘; x7 c+ X. p/ k) f
▼
+ b) ~( P$ V+ G┌─────────────────────────────────────────────────┐, I, W; e$ u. P3 D
│ MyBatis 持久层 │
0 l' ?. T. L$ A% R; r│ Mapper接口 + XML映射文件 / SQL语句 │8 R, o. K x7 D1 k, {8 I# |
│ (数据库CRUD操作,结果集映射) │, f3 q7 i. E4 ?1 n, U
└───────────────────────┬─────────────────────────┘
& T% k2 {" Z+ s; d ▼
Q- ~2 Q- M, m: V. p- m┌─────────────────────────────────────────────────┐
" Y8 f/ l, L$ b f( D3 g% u│ MySQL 数据库 │
4 j5 j8 R* }0 F7 N3 R& h* |│ 学生表 / 教师表 / 班级表 / 评分项目表 / 评分记录表 │; h5 c# m8 |5 M+ R: P. ~
└─────────────────────────────────────────────────┘1 |1 s$ ~4 h Y
( E2 R1 e9 G7 ?7 o2.3 三大框架核心职责, v A; c$ P l, h) }# V
2.3.1 Spring 框架: p8 c2 ^9 X" T6 x: r
Spring是整个项目的核心容器,负责管理所有Java对象(Bean)的创建和生命周期。通过依赖注入(DI)和面向切面编程(AOP),Spring实现了组件之间的松耦合。在本项目中,Spring主要承担以下职责:管理Service层和Mapper层的Bean、声明式事务管理、统一异常处理、依赖注入等。 G8 z3 v6 ]2 G& S) r
【Spring核心功能】" w7 U2 g' ~5 G9 y/ g! M/ Y+ N
▸ IoC容器:管理所有Bean的创建、装配和销毁. d' e* _2 a4 l& O
▸ DI依赖注入:通过注解自动注入依赖对象" Y- R( T o- P/ i: s" r
▸ AOP面向切面:事务管理、日志记录、权限校验
9 k/ i1 G# N$ O▸ 声明式事务:@Transactional注解管理事务$ m8 s) V6 n: n4 O6 ^! P# n
▸ 统一异常处理:@ControllerAdvice全局异常捕获# J% g) @( i) K2 F; t) k$ w
- H3 @: w8 L$ p/ k. X% G2.3.2 SpringMVC 框架7 o3 Y1 l' M: R9 }7 E* c
SpringMVC是Spring框架的Web模块,负责处理HTTP请求和响应。它基于MVC设计模式,将请求处理分为控制器(Controller)、模型(Model)和视图(View)三部分。前端浏览器发送请求到DispatcherServlet,由DispatcherServlet分发给对应的Controller处理,最后返回视图或JSON数据。+ l: H* }) k7 b7 o2 k; @5 j
// Controller 示例, @! L: \9 i8 S) b
@Controller* B3 E s, C4 A1 `# {# x
@RequestMapping("/score"); N/ y3 t7 ^1 `' g; }: k
public class ScoreController {
' C+ M g/ Y% V3 A0 m; f: m# N
9 r o3 E" C* L8 m2 J6 U* v @Autowired$ \/ e& v9 x- t- `! m5 U& u
private ScoreService scoreService;
! ?. ~: s' j M- ~) q
* n k8 f! B& f. {8 m // 查询加分记录列表
: W: I# @6 L( G& H5 F. f7 @ @RequestMapping("/bonusList")
3 \, _, K4 p$ h public String bonusList(Model model, ) R. ?$ r" F- x- \+ V+ {
@RequestParam(defaultValue = "1") int page,
; A0 M6 C0 J, N, y' [4 x: h: f @RequestParam(defaultValue = "10") int size) {- T* n' y% d3 R( O
PageResult<ScoreVO> result = scoreService.getBonusList(page, size);" P9 o# y. X6 \4 d$ H) }9 o0 E
model.addAttribute("result", result);& t% G2 E' c' M' |8 g" c
return "score/bonusList";( [- T) W$ @& f
}! |1 j/ H) a0 l v. x! l
- B( q+ q3 J; E P( _: q
// 添加加分记录(AJAX)7 z. ` N5 X$ R+ A) O, E6 x! v4 z$ z
@RequestMapping("/addBonus")' n( B- Y+ ? }4 `: T
@ResponseBody* ?, w1 s3 K; Z: D7 G8 c; _/ ~
public Result<String> addBonus(@RequestBody ScoreDTO dto) {0 Y! ]0 f. q& a0 v
scoreService.addBonus(dto);
4 }& Q3 D1 c. K: a, B- @ return Result.success("加分成功");
# c) ~% N3 ?$ l! L0 `0 O$ ?% | }$ T' C; E& z& r% O0 X: B9 X
}
1 v/ X' Z& v3 V5 Q( Q' I+ W! g4 i ' g) B# v# F9 Z% r9 t, m" D# n9 j
2.3.3 MyBatis 框架9 Z+ u. _8 M5 H/ b3 @5 z; h
MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的繁琐工作。它可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJOs映射成数据库中的记录。
2 B# W6 `2 ? m' i& ^+ J// Mapper 接口
5 n# S8 o5 M4 Bpublic interface ScoreMapper {8 ~3 X; a0 L8 y P8 V( v* _
* e9 b6 J4 L8 Y9 k7 @' G' [
// 查询加分记录(分页)' V- F: n, g+ ]( `
List<ScoreVO> selectBonusList(Page<ScoreVO> page,
) `6 Q* ]" E M+ x @Param("studentId") Integer studentId,! K# Y9 @. z9 @$ x7 ~8 V9 z
@Param("type") Integer type);; D$ A/ f; c2 K- g- U! t) o
( G- j- z1 q0 f$ L' X& @ // 新增加分记录
& @) K' i) Y& A4 a- \1 X1 f% a int insertBonus(Score score);
K; ~8 V; O. n% y- } 4 z7 e7 @- F. r# F1 D# |
// 更新评分记录" z% C8 R* }+ x$ n8 J9 @; j! I `$ H
int updateScore(Score score);4 y) v# W, `: N! C
" b J# F6 y$ p
// 根据ID删除( Z( _' I6 g3 l6 o
int deleteById(Integer id);2 O8 x! p) ^4 u8 O. v( x
% {3 `1 F' n4 x/ L7 d
// 统计某学生总分
, Z. @% P8 N! {3 m; i Integer countTotalScore(@Param("studentId") Integer studentId);3 H: {* S8 `0 H2 C9 E
}" f t# ^; ] L
( n. \ q8 }. N3 L) {1 K
// Mapper XML 映射文件; H# s- s0 i. h% Q- @9 m4 }
<select id="selectBonusList" resultType="ScoreVO">; ?, o" }' V' A' @* o
SELECT s.*, st.name as studentName, st.student_no8 t) U6 \ R+ V! o8 G$ q
FROM score s0 e2 A+ Z$ u- b4 Y; \/ w
LEFT JOIN student st ON s.student_id = st.id8 Z* z L3 e* _( T. @# ?4 {' m/ l, z1 U0 _
WHERE s.type = 1: X& K7 _' h+ p
<if test="studentId != null">3 d! { K" j1 i$ }( ?6 R
AND s.student_id = #{studentId}2 v; ~) ]! q& [
</if>
+ A2 T9 e8 g9 ?0 Q9 Y- Z7 B4 ~ ORDER BY s.create_time DESC
/ Q! ]! M9 b O/ l" A' Z$ I</select>
3 r% F) U) C N g2 h" w
5 Y0 z7 {( q) }' l' l 三、功能模块详解0 C1 z: s9 i; x. U
3.1 系统角色与权限体系 系统采用三角色权限设计,不同角色拥有不同的功能权限,形成完整的校园管理权限体系。学生是评分的对象,只能查看自己的评分信息;教师是评分的执行者,负责对学生进行日常行为考核;管理员是系统的管理者,负责基础数据维护和全局管理。# }5 X1 q/ v& i: K
表3-1 系统角色与权限 角色 | 权限等级 | 核心功能 | 使用场景 | 学生 | 基础权限 | 查看评分项目、查看加分/扣分记录、修改密码 | 学生自助查询个人行为评分情况 | 教师 | 业务权限 | 学生管理、班级管理、评分考核、历史记录查询 | 辅导员/班主任对学生进行日常行为考核 | 管理员 | 全部权限 | 所有基础数据管理、评分管理、统计查询 | 系统管理员/教务处维护系统和数据 | ! E# e) M5 \& t( G" n0 T
2 _- _. n# u, o
3.2 学生端功能模块
% M( w0 b4 p- J. N3.2.1 登录与个人中心 学生使用学号和密码登录系统,登录后进入学生端首页。个人中心可以查看个人基本信息,修改登录密码。系统通过Session记录用户登录状态,配合拦截器实现未登录拦截,保障系统安全。
9 n5 p4 x+ N. `1 G) k9 ]8 T& v, b3.2.2 评分项目查看: W4 k" \( a! q
学生可以查看所有评分项目的详细信息,包括项目名称、分值、评分标准、适用范围等。了解评分规则有助于学生规范自身行为,明确哪些行为可以加分、哪些行为会被扣分。
% E0 v' L- m, j: [3.2.3 加分记录查询* t" `" ~$ J% p5 D3 q( ^
学生可以查看自己的所有加分记录,包括加分项目、加分原因、加分分值、加分日期、操作教师、备注等信息。支持按时间范围筛选,方便学生回顾自己的正向行为表现。7 x6 m1 d$ ~8 L3 B& w' \
3.2.4 扣分记录查询
- ^0 D) a3 {6 ^% g# y2 Y1 p学生可以查看自己的所有扣分记录,包括扣分项目、扣分原因、扣分值、扣分日期、操作教师、备注等信息。帮助学生及时了解自己的不足,有针对性地改进。
& z, {: D9 v6 y. w7 }1 c# d【学生端功能清单】( ^3 Q u- T n, o0 V
▸ 用户登录:学号 + 密码登录系统
T. w: u$ C0 J▸ 个人信息:查看个人基本资料
n- X) Q6 k, [, W$ n2 `▸ 修改密码:修改登录密码,保障账号安全
`% s6 U0 s8 G1 Q▸ 评分项目:查看所有评分项目和评分标准
. g& x% \9 Z0 H+ P7 `9 u. U4 r; \▸ 加分记录:查看个人加分历史记录
* H0 A6 q% D; O% d8 }▸ 扣分记录:查看个人扣分历史记录3 h; q' z* G$ J
▸ 总分查询:查看个人行为评分总分和排名2 B e H8 s: o0 ^2 {+ M
3 a5 S/ e. X; q8 E0 _9 O; i% S3.3 教师端功能模块
b, [- N8 P9 f, w9 k3.3.1 基础信息查询" R4 N9 X5 T2 v$ V# w9 }6 L6 z
教师可以查看班级信息、教师信息和学生信息。班级信息展示所有班级的基本情况;教师信息展示同校教师列表;学生信息可以按班级筛选,查看学生的详细资料。这些基础信息是教师进行评分操作的前提。
+ k' Q0 U. M3 n' E+ C; B3.3.2 评分项目管理
9 t. _, Q! q, n% a7 ?. f教师可以查看系统设置的所有评分项目,包括加分项目和扣分项目。每个评分项目包含项目名称、分值、类型(加分/扣分)、说明等信息。教师在进行评分时,从评分项目中选择对应的项目进行操作。) K" d7 P ]9 \* Y
3.3.3 学生评分考核
8 H# k' n8 Y9 R7 H. w( I这是教师端的核心功能。教师可以对学生进行日常行为评分,包括加分和扣分两种操作。评分时需要选择学生、选择评分项目、填写分值、填写原因和备注。提交后系统自动记录评分历史,并更新学生的总分。* M: Z* G* p7 P& z" m9 l" S
【评分操作流程】- c7 r% e1 N8 t2 ~- S) p* p( B
▸ 第一步:选择要评分的学生(支持按班级筛选和搜索)
8 R1 f. O7 G- d1 @9 `8 p' j▸ 第二步:选择评分类型(加分 / 扣分)
4 z# Q. P8 B' P3 _ b▸ 第三步:选择评分项目(从预设项目中选择)
! \0 p0 Y) E4 D1 K: a" t7 P9 Z▸ 第四步:填写评分分值(可自定义或使用项目默认值)$ g- Z+ J. R. c- D# Y# e
▸ 第五步:填写评分原因和备注(说明具体情况)
" A. C) U- ?2 I+ l# O4 j j▸ 第六步:提交评分(系统自动记录并更新总分)
s) ^% Y$ C3 m) d: F# P2 |+ ?% A x
2 p" q W- E- g* q5 L0 {3.3.4 评分历史记录
1 v( h3 C8 t# {教师可以查看所有评分历史记录,支持按学生、按班级、按时间、按类型等多维度筛选查询。每条记录包含详细的评分信息,便于追溯和核对。教师也可以对自己操作的评分记录进行修改或撤销(根据权限设置)。- ]* W5 k2 L9 W6 L# ?, x6 S
【教师端功能清单】
e, K, j% y% y* B▸ 登录系统:教师工号 + 密码登录$ C3 {1 d5 m6 l2 ?7 h6 E+ \+ @
▸ 班级信息:查看所有班级信息0 ?6 J1 W0 r4 o$ g
▸ 教师信息:查看教师列表
; V# U4 h8 q2 v! h▸ 学生信息:查看学生信息,按班级筛选" C6 `4 J9 K2 ^$ Y' M
▸ 评分项目:查看所有评分项目和标准: p& n# C$ j" }9 Q/ H1 D. L6 T
▸ 评分考核:对学生进行加分/扣分操作 }* f. {. Y9 M( t5 P, A
▸ 历史记录:查看评分历史,支持多维度筛选( u x k3 y- o) [, _2 i8 Y
▸ 个人中心:修改个人信息和密码
. b0 B+ H; n# w) R1 _ 5 `: p/ O* R8 s# X& L
3.4 管理员端功能模块
0 i; E6 N2 v2 ~; f3.4.1 管理员信息管理
" }( `# @' `; k! H' I t% {管理员可以管理系统的管理员账号,支持添加、修改、删除、查询操作。可以设置不同级别的管理员,分配不同的管理权限,实现分级管理。; ~1 W. X, P4 u) }
3.4.2 班级信息管理
) o3 }% @5 z; n0 R+ o2 W管理员负责维护班级基础信息,包括班级编号、班级名称、所属专业、所属年级、班主任等信息。支持班级的增删改查,是学生管理的基础数据。% T: ?/ A* \: Z2 Z: ]+ C! n, x
3.4.3 教师信息管理
8 l8 Z7 u. r- u% D7 V管理员负责维护教师信息,包括工号、姓名、性别、职称、所属院系、联系电话等。支持教师信息的增删改查,以及教师账号的启用/禁用管理。
6 B3 g: G6 K0 d/ u7 p3.4.4 学生信息管理5 n% ~% g5 u# X" S* }
管理员负责维护学生信息,包括学号、姓名、性别、班级、专业、入学年份、联系电话等。支持批量导入导出、按条件筛选查询、学生信息的增删改查等功能。学生信息是整个系统的核心基础数据。1 {* D) v5 v2 P/ L. D
3.4.5 评分项目管理. m/ r u0 z4 C* A* C- ?; [
管理员负责设置和维护评分项目,这是系统的核心配置。评分项目分为加分项目和扣分项目两大类,每个项目包含项目名称、默认分值、类型、说明、适用范围等。管理员可以根据学校的实际管理制度,灵活配置评分项目体系。% ~% O; n/ R. L) {+ s, E+ N" S* L
表3-2 评分项目示例 评分项目类型 | 示例项目 | 分值范围 | 说明 | 加分项目 | 志愿服务 | +2~+5分 | 参与校内外志愿服务活动 | 加分项目 | 获得荣誉 | +5~+10分 | 获得校级及以上荣誉称号 | 加分项目 | 学习进步 | +3分 | 学期成绩显著进步 | 加分项目 | 课外活动 | +2分 | 积极参加课外活动 | 扣分项目 | 旷课 | -2分/节 | 无故旷课 | 扣分项目 | 迟到早退 | -0.5分/次 | 上课迟到或早退 | 扣分项目 | 宿舍卫生 | -1分 | 宿舍卫生检查不合格 | 扣分项目 | 违纪行为 | -5~-10分 | 违反校规校纪 |
# x) Y4 a% C1 f9 k6 P0 A: V 5 [! o9 U, [9 P! s8 y& i2 @4 D- B
3.4.6 考核评分管理 管理员可以查看和管理所有评分记录,支持按学生、班级、教师、时间、类型等多维度筛选和统计。可以导出评分数据,生成报表,为学校管理决策提供数据支持。
6 o: F0 J8 q4 c6 {9 K. u0 d3.4.7 加分/扣分信息统计
0 W9 a: g; d$ \' ]' Z2 r系统提供专门的加分信息和扣分信息统计模块,可以按班级、按学生、按项目等维度进行统计分析。配合ECharts图表组件,可以直观展示评分数据的分布和趋势,帮助管理者全面掌握学生日常行为状况。7 n: g, W7 L; E; M( k" e& l# `
【管理员端功能清单】
& j0 `1 j+ ]2 K8 v3 M/ }2 q/ O▸ 管理员管理:管理员账号增删改查、权限分配
$ [- u1 Y w! v4 N* J) B- j" I8 G▸ 班级管理:班级信息增删改查
& o* d* s( {; m+ x# c2 s, H▸ 教师管理:教师信息增删改查、账号管理5 [% V2 \& L. j/ C2 a& p9 |
▸ 学生管理:学生信息增删改查、批量导入导出6 r! @2 {, i7 e
▸ 评分项目管理:评分项目配置、分值设置; ~7 Q5 n& h& L2 x8 v- p
▸ 考核评分管理:所有评分记录查看、统计、导出
$ e7 v) G" ]6 j▸ 加分信息管理:加分记录查询和统计' w; i6 V1 U+ A& [( @
▸ 扣分信息管理:扣分记录查询和统计+ }& u% C. P4 Q' Z4 `# ]# _' ^
▸ 系统设置:系统参数配置、数据备份
' l; t: Q" u; e- R/ b! B# D) U+ }
' T: S$ [/ s; \% g7 L5 o
图3-1 校园学习场景 四、数据库设计 系统数据库采用MySQL,设计了多张数据表来支撑学生日常行为评分系统的各项功能。主要数据表包括管理员表、教师表、学生表、班级表、评分项目表、评分记录表等。表结构设计遵循第三范式,保证数据的一致性和完整性。
1 C# `! N: c& j% ?% J2 C( `: J9 D4.1 核心数据表
9 p. {6 }7 }% y* ^表4-1 核心数据表一览 表名 | 说明 | 核心字段 | admin | 管理员表 | id, username, password, name, role, status, create_time | teacher | 教师表 | id, teacher_no, name, gender, title, dept, phone, password | student | 学生表 | id, student_no, name, gender, class_id, major, grade, phone | clazz | 班级表 | id, class_no, class_name, major, grade, teacher_id, student_count | score_item | 评分项目表 | id, name, type, score, description, status | score_record | 评分记录表 | id, student_id, teacher_id, item_id, type, score, reason, remark, create_time |
$ Q% x( v3 z" j& t1 { z5 g$ S
' e9 c Y3 v' Q5 U$ m4.2 建表语句示例+ _6 t* W( V4 `1 b6 l& d
-- 学生表
) o' K" h! N) U5 n; C, FCREATE TABLE `student` (
& T# C0 ~/ N, l `id` int(11) NOT NULL AUTO_INCREMENT,& y/ l2 z3 I2 U1 [7 a% k
`student_no` varchar(50) NOT NULL COMMENT '学号',
. r2 |5 A4 \0 p6 I `name` varchar(50) NOT NULL COMMENT '姓名',! |2 d0 Z1 l& i' m' _6 G
`gender` int(11) DEFAULT NULL COMMENT '性别:1男 2女',3 t5 [; u/ \4 u3 V) ]0 P9 l0 n
`class_id` int(11) DEFAULT NULL COMMENT '班级ID',. |5 @7 H0 H' z2 f$ X4 h
`major` varchar(100) DEFAULT NULL COMMENT '专业'," J, \3 U" p1 t1 y" V
`grade` varchar(20) DEFAULT NULL COMMENT '年级',
8 g1 p) }3 _" i8 Y8 K- J( Q1 [8 ? `phone` varchar(20) DEFAULT NULL COMMENT '联系电话'," x* v4 @2 V4 j- Z$ L. x3 j
`password` varchar(100) DEFAULT '123456' COMMENT '密码',7 i7 |7 |, k6 O7 R5 D# D! F6 S
`status` int(11) DEFAULT '1' COMMENT '状态:1正常 0禁用',% \2 r5 M8 q* |& Q
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
# F7 z, |# I# w u `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
! P4 N( u) b1 u& ~% { { PRIMARY KEY (`id`),! U: r* X3 f# b: b$ Y4 [) G
UNIQUE KEY `uk_student_no` (`student_no`),5 ]" L8 S. q- t) k! ` G
KEY `idx_class_id` (`class_id`)
$ i2 \* A# W9 W; J% X+ p1 H) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生表';
# E7 _9 Q p {6 B& n; R* k# t4 l* X n/ K
-- 评分记录表- R4 o, f" n: h% M
CREATE TABLE `score_record` (
2 Y% y& R* p& a& v, S4 j% ]' Q `id` int(11) NOT NULL AUTO_INCREMENT,& e# r/ J: p9 }6 j: x9 F; y
`student_id` int(11) NOT NULL COMMENT '学生ID',& E; s6 j. p, q' k. ]
`teacher_id` int(11) NOT NULL COMMENT '教师ID',' N+ l# y3 S# U: \. K
`item_id` int(11) DEFAULT NULL COMMENT '评分项目ID',
. X: m( o7 y4 N! h) h" H( h& \ `type` int(11) NOT NULL COMMENT '类型:1加分 2扣分',: G ]! S0 |0 u+ b% A9 ^$ |
`score` decimal(5,1) NOT NULL COMMENT '分值',
9 G- c% ?2 K( M/ }/ A( E `reason` varchar(255) DEFAULT NULL COMMENT '评分原因',0 ^) n; X ^( P9 a- p
`remark` varchar(500) DEFAULT NULL COMMENT '备注',2 {1 q1 k: S( ?! [2 p8 U0 o
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,1 g/ f! \- j1 E0 T" Y; ]$ B3 x
PRIMARY KEY (`id`),# j# r( x6 ?6 j' T9 T! w
KEY `idx_student_id` (`student_id`),
7 @5 |6 U' Z/ _2 h$ I1 g/ k; h KEY `idx_teacher_id` (`teacher_id`), Y9 S2 \6 r: q* r6 ~8 D- L
KEY `idx_create_time` (`create_time`)
9 Z. ]- m( B1 G1 _! X; y) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='评分记录表';
# O/ R9 Y* _" a+ L% p: H 五、核心代码示例, Q, n: Y3 r% N, l* r& w
5.1 评分业务逻辑
8 S* f" U) c5 U// 评分Service9 p4 N; q- I6 d, i# [, ^
@Service6 Q z9 P' N4 |9 T# t: E
@Transactional9 O4 B# f: w- u! n6 p# g/ M( V0 D( _
public class ScoreServiceImpl implements ScoreService {
3 q& Z# E% S& t6 j
% i1 T( X6 ]. e$ [ @Autowired
% F }) q/ M1 V private ScoreMapper scoreMapper;
7 U2 ?# u5 h x; r' l3 P0 r( P 8 z5 v8 U, v* L+ [, x# a
@Autowired3 o7 J. M7 `' \( |. w1 B
private StudentMapper studentMapper;! X# H) d2 _& p2 Y* z y" v$ k8 U
2 k& ~+ N. v, p( C
@Override8 `% B, f; |. e- K# M/ u
public void addBonus(ScoreDTO dto) {) k# I0 m7 e! E+ D
// 1. 参数校验
6 a8 e, T( ~4 p if (dto.getStudentId() == null || dto.getScore() == null) {
. T, W( O. ], \+ W throw new BusinessException("参数不完整");
% s! n R# j* q, x L7 ~ ^8 w }( H- a( N8 e8 I4 w
if (dto.getScore().compareTo(BigDecimal.ZERO) <= 0) {
& r, Q7 N9 n3 W/ J4 Y5 q6 R4 h( X throw new BusinessException("加分分值必须大于0");5 m+ g4 {4 J/ j T3 V1 L
}0 V3 R: K T) o8 H) k; O
w' w6 O& r4 W, p7 E. u
// 2. 检查学生是否存在
$ z2 L+ O* w! @+ \- r; f _) o+ H2 C Student student = studentMapper.selectById(dto.getStudentId());
# n- S% c( c$ \. B- ?! y$ E( Y if (student == null) {- y/ `# O/ r2 |1 G3 a
throw new BusinessException("学生不存在"); ?* T& J; [, I- E
}
3 Y/ j3 f4 y) d0 \1 _* W4 S4 o8 K
4 J4 O( @& u7 ?, C // 3. 构建评分记录# V1 j M/ L Z2 Y) y0 j
Score score = new Score();
6 F3 X5 [: q+ z2 o4 w. ` score.setStudentId(dto.getStudentId());
" i6 M& F3 f2 j4 O1 _% |5 b6 R score.setTeacherId(UserContext.getUserId());
$ k' B( G: ?! X/ y( b2 | score.setItemId(dto.getItemId());
6 [6 ~, a# \8 ]- l/ i- H: ~- I score.setType(1); // 1-加分, s. L* \& H6 ~. q6 T
score.setScore(dto.getScore());6 |. ]& T4 s3 N9 }" l# r: D" N) h
score.setReason(dto.getReason());
* L6 H/ D K% `/ V3 I score.setRemark(dto.getRemark());. [$ W0 q l! V9 P
# r) W3 I8 K% h d0 @
// 4. 保存记录, b1 G9 w2 x( N
scoreMapper.insert(score); l, U9 Y. b! |5 T4 N" e
}' ?2 C/ u) k, m6 P
; ^6 j! D5 U' k$ @7 J' N @Override
" P/ }8 @, E6 I1 z' u. ~ public PageResult<ScoreVO> getStudentScoreList(Integer studentId, 3 ^ a4 ~: E* k* g
int page, int size) {) z# l' g2 s/ I C
Page<ScoreVO> pageParam = new Page<>(page, size);
1 j4 I, [, s7 e7 r0 `: m' ^ List<ScoreVO> list = scoreMapper.selectByStudentId(pageParam, studentId);# b5 Q9 A! S g5 q
% K( g1 F6 g+ I
// 计算总分
; [3 H1 M3 h8 G- Y+ {) |4 @0 O& B Integer totalScore = scoreMapper.countTotalScore(studentId);
" ~. h j. d$ q+ D& ]- C1 q6 Q 5 B; @% I2 w3 ?! y v: t( _: }
PageResult<ScoreVO> result = new PageResult<>();
) a. d9 w# V h4 I! H' \ result.setTotal(pageParam.getTotal());
0 _6 b4 V/ I3 a" e result.setList(list);% A% H4 d# @/ B" e
result.setExtra("totalScore", totalScore);. E' R" c$ [5 z
9 }2 U, c$ R/ r# L; O0 \) I$ f
return result;
) E5 ]7 r) e% X }
! o3 R# @* G" j6 i}
) S3 U, o. C5 P$ A7 U
& X7 d) Z9 Z# K# n# k6 e" d5.2 登录拦截器 T% e7 k ^3 o4 l; Z
// 登录拦截器$ O; {6 m0 \) u6 S# X
public class LoginInterceptor implements HandlerInterceptor {9 ?1 f3 ]9 K1 W! a0 H/ m
$ k1 o) p2 z: Z2 V @Override
$ X& k; U* M3 H6 J% @* b! x public boolean preHandle(HttpServletRequest request,
( l: p7 a6 O- ]1 a$ E1 _8 f HttpServletResponse response, ( {, y# {& m2 d. j
Object handler) throws Exception {
% v9 g& b5 V/ `8 ~ // 从Session获取用户信息
" C$ Q2 Y% X1 f C* w7 o Object user = request.getSession().getAttribute("loginUser");* t3 I0 E/ G& W1 c c* k4 P5 a
# [% g- X: T. d, S7 j+ t( `/ @
if (user == null) {9 h2 j2 Y/ Y* H) q/ f/ z' p( l
// 未登录,跳转到登录页
: N/ {& u* i$ b response.sendRedirect(request.getContextPath() + "/login");
9 H7 t: U5 h: l6 {# n return false;0 K# O- u) I; A4 U& A% D2 }
}
, t) h# H6 ^3 r" D
$ \% K* A/ p% x/ m7 ?1 D7 ^4 A7 r // 已登录,将用户信息存入ThreadLocal
B9 y+ _" b5 }. W0 \ UserContext.setUser((User) user);" j! x" {/ U: ]' w
return true; I$ N) m4 [6 U
}
) J) i9 r+ L m2 x
7 u4 f! q" s) R) r4 ? @Override
4 V2 O: M# o2 U6 W: Y( q |, K- f public void afterCompletion(HttpServletRequest request, 0 a, N3 n. _! B
HttpServletResponse response,
, A! @' Y9 b; a; M7 k Object handler, Exception ex) {
: B5 \1 k: V# ~; l1 [ // 请求结束后清除ThreadLocal
" }" l3 e7 d2 J6 V$ N; n- w UserContext.clear();
5 w6 r( R8 h! J/ o }
; y/ u2 K7 Y2 t6 J. b0 Q" W0 q6 X}* f; i* J6 V4 U c# C$ C
4 B" w1 R( P8 z6 ^1 f# J
// SpringMVC配置4 m3 q1 ^9 N& ~& |5 G
@Configuration. m; n4 \/ C5 m2 @9 M+ d7 i6 q
public class WebConfig implements WebMvcConfigurer {
, B; Y, l- t2 `0 u/ U! B ' i' _0 J6 S; i+ w( a
@Override. I1 c* K. W4 ]+ P* E; E
public void addInterceptors(InterceptorRegistry registry) {
6 T- O+ P- Q# p9 d3 d registry.addInterceptor(new LoginInterceptor())- ?! w- D' ^1 A2 p/ d/ b
.addPathPatterns("/**")0 _- j! H" i6 R2 u' u
.excludePathPatterns(
) N- w5 v& n0 ^" g8 ? "/login", / n8 ` U+ E* Z
"/doLogin", $ Z- s8 I/ h# |+ O# T+ m% {
"/static/**",2 ~+ f* c& v# T8 E1 y/ ]( Y B* ?
"/css/**", : j1 w/ b+ i( m5 N7 @/ @3 f
"/js/**", & B, C- |, ?% S7 u0 I' _
"/images/**"% b4 o$ }/ @$ ?: Z/ n" i+ m0 V" p
);# [8 S% U5 w4 E# i2 Y
}( o4 Q, D f2 k6 Q8 b/ N0 u
}
' |3 b6 T4 O- |2 x2 G2 K, s 六、部署与运行0 S0 l( ~4 y; c) o5 d' k3 V
6.1 环境要求 表6-1 运行环境要求 软件 | 版本要求 | 说明 | JDK | 1.8及以上 | Java开发环境,必须配置JAVA_HOME | MySQL | 5.5 / 5.7 / 8.0 | 数据库,需创建数据库并导入SQL脚本 | Tomcat | 7.0及以上 | Servlet容器,部署Web应用 | Maven | 3.6+ | 项目构建和依赖管理(IDEA自带) | IDEA | 2020+ | 开发工具,也可使用Eclipse | Navicat | 16+ | 数据库管理工具(可选) |
; p3 W* k' f0 K x( p/ s
1 ?) n/ l6 O2 y( q6.2 部署步骤1 f# D! S- j- I0 }" q
第一步:数据库准备6 n4 J4 x0 M* Z- O' s; c
● 安装MySQL数据库,创建数据库(如student_score)
) j4 E# i. n5 T0 @7 C9 K7 H● 使用Navicat或命令行导入项目提供的SQL脚本( J Y* t' F8 |
● 确认数据表创建成功,初始数据导入完成2 L0 f5 c) O& @9 i! M
第二步:项目导入) B# p; f" z) o! h; [3 r! L# d7 g
● 使用IDEA打开项目,选择"Open"导入Maven项目
* S) x, J8 N! j S$ ?2 [4 }● 等待Maven自动下载依赖包
( y" K5 {; `$ L. h3 w: F● 检查项目结构,确认没有编译错误2 q, g" ~. [. J) k4 K
第三步:配置修改( m: z7 u, ]6 N0 }, X8 C u/ |
● 修改jdbc.properties文件,配置数据库连接信息5 R+ b- ~# Z+ Z
● 修改数据库URL、用户名、密码$ `+ O$ j$ N( _4 P
● 检查Tomcat配置,确认端口号和部署路径, T* z& p- v+ Q! F
第四步:启动运行( W5 P+ M* T m& x* J0 v7 f
● 配置Tomcat服务器,将项目部署到Tomcat
2 p( M1 I/ @8 n* f; D● 启动Tomcat,等待项目加载完成
/ Y3 ~" s3 H1 l6 q3 f● 浏览器访问 http://localhost:8080/student_score 打开系统
4 h3 d9 [2 j _# J3 Y2 M- U● 使用测试账号登录,测试各项功能, K, H1 b8 T; k+ t z* i
【常见问题排查】
0 k# g' A9 \4 e) I▸ 数据库连接失败:检查MySQL服务是否启动、用户名密码是否正确% O. {' y, s# ], ^
▸ 依赖下载失败:检查Maven配置,可切换阿里云镜像源
. H/ T# m+ l& `8 s4 R▸ Tomcat启动失败:检查端口是否被占用、JDK版本是否匹配. M4 X" Z6 z3 p7 O! R5 Y( I
▸ 页面404:检查项目上下文路径、URL地址是否正确
) X* F! H% g- `6 ~, g# D" N▸ 中文乱码:检查数据库字符集、过滤器配置、页面编码设置
/ j+ a: b2 _& A( ^+ T▸ 登录失败:检查用户表数据、密码加密方式是否一致' T) Q8 D W1 q, k0 O) z! W
七、适用场景与学习建议
* I9 |! j/ E R1 s9 h& b! N; S5 d7.1 适用人群 表7-1 适用人群及场景 人群类型 | 适用场景 | 使用价值 | 计算机/软工专业学生 | 毕业设计 / 课程设计 | SSM框架完整项目,功能丰富,答辩加分 | Java后端初学者 | SSM框架学习 / Web开发入门 | 经典SSM整合案例,业务逻辑清晰易懂 | 校园信息化开发者 | 学生管理系统开发参考 | 完整的学生管理和评分功能,可二次开发 | 辅导员/班主任 | 班级管理工具参考 | 日常行为评分管理思路和功能设计 | 全栈学习者 | Java Web全栈开发实战 | 从数据库到后端到前端,完整技术栈 |
+ c7 @0 {8 f- q9 t: G
, r5 z4 U" Z$ b& d0 x7.2 学习路径建议9 p5 L+ i/ s1 B7 j/ r# N
入门级:跑通项目 + 理解结构
( g& P+ w3 w; ?* j" x9 ?● 按照部署步骤,先把项目跑起来,体验完整功能流程6 K/ ^) S# K% T% O" [5 L
● 用三个角色分别登录,体验不同权限的功能差异8 j5 {6 _$ f0 L$ V! N, W
● 通读项目结构,理解SSM各层职责和调用关系, J) V6 |0 k$ g+ P9 E' n) v
● 学习Spring的IoC和DI,理解Bean的创建和注入
& b; O( r1 T( i9 u9 t' `● 学习SpringMVC的请求处理流程,理解Controller的工作原理/ O- i7 o! e/ h+ B/ `4 c. |
● 学习MyBatis的基本用法,理解SQL映射和结果集映射/ r+ k f5 L1 y- ^% Y& x3 C
● 尝试修改简单功能,比如增加一个字段、修改页面样式2 E2 R" S: t% M" b! L p; I R9 E9 ^! ?6 i
进阶级:深入理解 + 功能扩展
. r' m( j' h- j7 q; }# b R● 深入研究SSM框架整合原理,理解Spring如何整合MyBatis和SpringMVC
! X% m4 c+ U1 S6 D' A9 R" N● 学习Spring声明式事务,理解事务传播行为和隔离级别
7 o- ]8 e2 |+ y$ @* G5 ? z● 学习MyBatis的高级用法:动态SQL、ResultMap、分页插件# s L3 i0 @ O5 _4 G) h* U
● 学习拦截器和过滤器的使用,理解权限控制的实现原理
. H* k f: C; D. |( Y● 尝试增加新功能:如班级评分排名、数据导出、消息通知等; F5 W7 }$ g: ^2 W9 {2 x* r
● 学习ECharts数据可视化,增加更多统计图表
, j( @3 P2 ~- ^+ h, ]. z8 }高级:架构优化 + 技术升级
- e- x& M0 ]4 ^7 N' V● 将SSM升级为SpringBoot,学习自动配置原理( ]; V2 ~8 [' t" ^
● 引入Redis缓存,提升系统性能和并发能力
6 y" y/ T. |- x$ l6 n● 使用Spring Security或Shiro实现更完善的权限控制(RBAC), H" ]" C5 @! A
● 引入消息队列处理异步任务(如消息推送、邮件通知)+ m W7 j0 J3 X% K
● 使用POI实现Excel批量导入导出功能
8 Q6 Z" _1 l3 L; g* j( d● 使用Docker容器化部署,学习DevOps实践! U \9 A# E) a( L
● 性能优化:SQL优化、索引优化、接口响应时间优化八、常见问题 FAQ: X! @7 l/ o# I/ B+ R, T
Q1:SSM和SpringBoot有什么区别?学哪个好? SSM是Spring + SpringMVC + MyBatis三个框架的组合,需要手动配置XML文件,学习曲线较陡,但能深入理解框架原理;SpringBoot是在SSM基础上发展起来的,通过"约定优于配置"的理念,大幅简化了配置,开箱即用,开发效率更高。建议先学SSM理解原理,再学SpringBoot提高效率。SSM是基础,掌握了SSM再学SpringBoot会非常快。
% B8 A) k3 @2 ? N/ X8 i- pQ2:学生日常行为评分系统有什么实际应用价值?
% C1 `- z: V8 F W5 X学生日常行为评分系统是高校学生管理信息化的重要组成部分。传统的学生管理主要依赖人工记录和纸质档案,效率低、难统计、不易追溯。通过信息化系统,可以将学生的日常行为(考勤、纪律、活动、荣誉等)进行量化记录和统计,实现过程化评价和数据化管理。这不仅提高了管理效率,也为综合素质评价、评优评先、奖助学金评定等提供了客观数据依据,是教育信息化的重要应用场景。& g5 |- u/ t5 K& b8 Q
Q3:三角色权限体系是怎么实现的?
3 [- k- `4 X; X$ j6 q6 `三角色权限主要通过两种方式实现:一是登录时区分用户类型,学生、教师、管理员分别从不同入口登录,或者在登录时选择角色;二是通过拦截器和权限注解进行访问控制,不同角色的用户只能访问自己权限范围内的功能。在数据库层面,不同角色的用户存储在不同的表中(admin、teacher、student),各自有独立的账号体系。在实际项目中,也可以使用统一用户表 + 角色表的设计,通过RBAC(基于角色的访问控制)模型实现更灵活的权限管理。
* A1 W o! O; W& ]* k/ dQ4:JSP和Vue有什么区别?为什么这个项目用JSP?
1 E2 |( g+ A9 ?, @, {JSP是Java Web经典的视图层技术,与后端无缝集成,可以直接在页面中使用Java代码和EL表达式,适合传统的服务端渲染项目。Vue是前端框架,采用前后端分离架构,通过AJAX和后端交互,用户体验更好,适合复杂的单页应用。这个项目使用JSP主要是因为SSM框架的经典搭配就是JSP,而且对于毕业设计和学习来说,JSP更容易上手,能更快看到效果。如果要做企业级项目,现在更推荐使用Vue + SpringBoot的前后端分离架构。$ X4 f% p' v8 d8 D- t
Q5:如何快速把这个项目改造成自己的选题?
: [. H1 y1 f! U9 s0 I8 W3 w: M改造思路很简单:第一步,确定你的主题,比如"员工绩效考核系统"、"班级量化管理系统"、"宿舍评分系统"、"会员积分系统"等;第二步,修改数据库表名和字段名,把学生/教师/评分改成对应业务实体;第三步,修改后端代码的类名和方法名,对应修改业务逻辑;第四步,修改前端页面的文字、图标、主题色;第五步,调整功能模块,增加或删除某些功能。核心框架和技术栈不变,只是业务逻辑换皮,这样既能快速完成,又能体现自己的工作量。( X1 r9 E+ w4 Z& _6 P
资料获取 以上为SSM学生日常行为评分系统的资料整理与技术解读。完整资料包包含SSM后端完整源码、JSP前端页面、数据库SQL脚本、部署视频教程、精美PPT模板等,代码规范,注释清晰,业务逻辑完整,是学习SSM框架开发和校园管理系统的优质实战项目。
; \: |5 v; [+ e Z. m- j5 g$ L4 X【完整资料包含】
, q5 \4 Z8 e1 Y. x2 L+ Z▸ 🖥️ SSM 后端完整源码(标准分层架构)+ [8 H, k, N' f- t" T
▸ 🌐 JSP + Bootstrap 前端页面源码# Q( F9 w4 a& Q# K: O
▸ 🗄️ 数据库SQL脚本(完整建表语句 + 初始数据) p. l" a1 @% D4 M' X
▸ 📹 环境搭建 + 项目运行视频教程
! D, I4 y9 y X& `4 q* Y▸ 📝 项目修改教程(改文字、换背景、常见问题)
; o* M. P* s* U& N o9 ]5 _▸ 📊 精美答辩PPT模板一份) [$ k; L7 f- l
▸ 📋 答辩常见问答文档
1 s% Q" X8 S R& O1 @, v▸ 💬 技术答疑服务(遇到问题可以咨询)% ^$ b0 L/ m* I
/ M) [+ @2 x6 e+ t4 I R" q
: {5 U% i- p5 R: ^7 e1 S. r📦 获取完整源码,立即下载 SSM框架 | JSP | Bootstrap | ECharts | 学生管理 | 行为评分 | 毕业设计 ! P7 V1 z' d; i% X6 W
|