学生成绩管理系统
一个基于 JSP + Servlet + JDBC 技术开发的学生成绩管理系统。
功能特点
1. 用户管理
- ✅ 学生/教师角色登录
- ✅ 会话管理和权限控制
- ✅ 安全退出登录
2. 学生信息管理(教师权限)
- ✅ 添加学生信息
- ✅ 修改学生信息
- ✅ 删除学生信息
- ✅ 查询学生信息(支持学号、姓名、班级、专业搜索)
- ✅ 查看学生详情
3. 课程管理(教师权限)
- ✅ 添加课程信息
- ✅ 修改课程信息
- ✅ 删除课程信息
- ✅ 查看课程列表
4. 成绩管理
- ✅ 成绩录入(教师权限)
- ✅ 成绩修改(教师权限)
- ✅ 成绩删除(教师权限)
- ✅ 成绩查询(支持学号、姓名、课程、学期搜索)
- ✅ 学生查看个人成绩
5. 成绩统计
- ✅ 统计总成绩数量
- ✅ 计算平均分
- ✅ 显示最高分和最低分
- ✅ 教师查看全部统计,学生查看个人统计
6. 权限控制
- ✅ 基于 Filter 的权限验证
- ✅ 学生只能查看自己的成绩
- ✅ 教师拥有完整的管理权限
技术栈
- 后端: Java Servlet
- 前端: JSP + HTML + CSS
- 数据库: MySQL 8.0
- 连接池: JDBC
- Web容器: Tomcat 9.0+
- 构建工具: Maven
项目结构
perl
xueshengchengji/
├── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── student/
│ │ ├── entity/ # 实体类
│ │ │ ├── User.java
│ │ │ ├── Student.java
│ │ │ ├── Course.java
│ │ │ └── Score.java
│ │ ├── dao/ # 数据访问层
│ │ │ ├── UserDao.java
│ │ │ ├── StudentDao.java
│ │ │ ├── CourseDao.java
│ │ │ └── ScoreDao.java
│ │ ├── servlet/ # 控制器
│ │ │ ├── LoginServlet.java
│ │ │ ├── LogoutServlet.java
│ │ │ ├── StudentServlet.java
│ │ │ ├── CourseServlet.java
│ │ │ └── ScoreServlet.java
│ │ ├── filter/ # 过滤器
│ │ │ ├── EncodingFilter.java
│ │ │ └── AuthFilter.java
│ │ └── util/ # 工具类
│ │ └── DBUtil.java
│ ├── resources/
│ │ └── db.properties # 数据库配置
│ └── webapp/
│ ├── WEB-INF/
│ │ └── web.xml # Web配置
│ ├── login.jsp # 登录页面
│ ├── main.jsp # 主页
│ ├── student-list.jsp # 学生列表
│ ├── student-form.jsp # 学生表单
│ ├── score-list.jsp # 成绩列表
│ ├── score-form.jsp # 成绩表单
│ ├── my-scores.jsp # 我的成绩
│ ├── score-statistics.jsp # 成绩统计
│ ├── course-list.jsp # 课程列表
│ ├── course-form.jsp # 课程表单
│ └── error.jsp # 错误页面
├── database.sql # 数据库脚本
├── pom.xml # Maven配置
└── README.md # 项目说明
安装和运行
1. 环境要求
- JDK 1.8 或以上
- MySQL 8.0 或以上
- Apache Tomcat 9.0 或以上
- Maven 3.6 或以上
2. 数据库配置
- 创建数据库并导入数据:
bash
mysql -u root -p < database.sql
- 修改数据库连接配置(
src/main/resources/db.properties):
properties
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/student_grade_system?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8
jdbc.username=root
jdbc.password=你的密码
3. 构建项目
bash
mvn clean package
4. 部署运行
方式一:使用 IDE(推荐)
- 导入项目到 Eclipse/IntelliJ IDEA
- 配置 Tomcat 服务器
- 运行项目
方式二:手动部署
- 将生成的
target/student-grade-system.war复制到 Tomcat 的webapps目录 - 启动 Tomcat
- 访问
http://localhost:8080/student-grade-system/
5. 默认账号
系统已预置测试账号:
教师账号:
- 用户名:
admin - 密码:
123456
学生账号:
- 用户名:
student001 - 密码:
123456
功能说明
教师功能
-
学生管理
- 添加、修改、删除学生信息
- 查询和搜索学生
- 查看学生详细信息
-
课程管理
- 添加、修改、删除课程
- 查看课程列表
-
成绩管理
- 录入学生成绩
- 修改和删除成绩
- 按学号、姓名、课程、学期查询成绩
-
成绩统计
- 查看全校成绩统计(总数、平均分、最高分、最低分)
学生功能
-
查看成绩
- 查看个人所有课程成绩
- 成绩按学期和日期排序
- 成绩用不同颜色标识(优秀/良好/及格/不及格)
-
成绩统计
- 查看个人成绩统计(平均分、最高分、最低分等)
数据库设计
主要数据表
-
users(用户表)
- user_id:用户ID(主键)
- username:用户名(唯一)
- password:密码
- real_name:真实姓名
- role:角色(teacher/student)
-
students(学生表)
- student_id:学生ID(主键)
- student_no:学号(唯一)
- student_name:姓名
- gender:性别
- birth_date:出生日期
- class_name:班级
- major:专业
- phone:手机号
- email:邮箱
- user_id:关联用户ID(外键)
-
courses(课程表)
- course_id:课程ID(主键)
- course_no:课程编号(唯一)
- course_name:课程名称
- credits:学分
- teacher_name:授课教师
-
scores(成绩表)
- score_id:成绩ID(主键)
- student_id:学生ID(外键)
- course_id:课程ID(外键)
- score:成绩
- exam_date:考试日期
- semester:学期
- remark:备注
权限控制
系统使用 Filter 实现权限控制:
- EncodingFilter:统一处理字符编码(UTF-8)
- AuthFilter :验证用户登录状态和权限
- 未登录用户自动跳转到登录页面
- 学生无法访问学生管理、成绩录入等教师功能
- 学生只能查看自己的成绩
界面特色
- 🎨 现代化渐变色设计
- 📱 响应式布局
- 🔍 实时搜索功能
- 📊 可视化成绩统计
- ✨ 流畅的交互动画
- 🎯 直观的操作提示
注意事项
-
首次运行前请确保数据库已正确配置
-
建议使用 Chrome、Firefox 等现代浏览器访问
-
删除学生或课程会级联删除相关成绩数据
-
同一学生在同一学期不能重复录入同一课程的成绩








