基于JSP+Servlet+JDBC学生成绩管理系统

学生成绩管理系统

一个基于 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. 数据库配置

  1. 创建数据库并导入数据:
bash 复制代码
mysql -u root -p < database.sql
  1. 修改数据库连接配置(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(推荐)
  1. 导入项目到 Eclipse/IntelliJ IDEA
  2. 配置 Tomcat 服务器
  3. 运行项目
方式二:手动部署
  1. 将生成的 target/student-grade-system.war 复制到 Tomcat 的 webapps 目录
  2. 启动 Tomcat
  3. 访问 http://localhost:8080/student-grade-system/

5. 默认账号

系统已预置测试账号:

教师账号:

  • 用户名:admin
  • 密码:123456

学生账号:

  • 用户名:student001
  • 密码:123456

功能说明

教师功能

  1. 学生管理

    • 添加、修改、删除学生信息
    • 查询和搜索学生
    • 查看学生详细信息
  2. 课程管理

    • 添加、修改、删除课程
    • 查看课程列表
  3. 成绩管理

    • 录入学生成绩
    • 修改和删除成绩
    • 按学号、姓名、课程、学期查询成绩
  4. 成绩统计

    • 查看全校成绩统计(总数、平均分、最高分、最低分)

学生功能

  1. 查看成绩

    • 查看个人所有课程成绩
    • 成绩按学期和日期排序
    • 成绩用不同颜色标识(优秀/良好/及格/不及格)
  2. 成绩统计

    • 查看个人成绩统计(平均分、最高分、最低分等)

数据库设计

主要数据表

  1. users(用户表)

    • user_id:用户ID(主键)
    • username:用户名(唯一)
    • password:密码
    • real_name:真实姓名
    • role:角色(teacher/student)
  2. students(学生表)

    • student_id:学生ID(主键)
    • student_no:学号(唯一)
    • student_name:姓名
    • gender:性别
    • birth_date:出生日期
    • class_name:班级
    • major:专业
    • phone:手机号
    • email:邮箱
    • user_id:关联用户ID(外键)
  3. courses(课程表)

    • course_id:课程ID(主键)
    • course_no:课程编号(唯一)
    • course_name:课程名称
    • credits:学分
    • teacher_name:授课教师
  4. scores(成绩表)

    • score_id:成绩ID(主键)
    • student_id:学生ID(外键)
    • course_id:课程ID(外键)
    • score:成绩
    • exam_date:考试日期
    • semester:学期
    • remark:备注

权限控制

系统使用 Filter 实现权限控制:

  • EncodingFilter:统一处理字符编码(UTF-8)
  • AuthFilter :验证用户登录状态和权限
    • 未登录用户自动跳转到登录页面
    • 学生无法访问学生管理、成绩录入等教师功能
    • 学生只能查看自己的成绩

界面特色

  • 🎨 现代化渐变色设计
  • 📱 响应式布局
  • 🔍 实时搜索功能
  • 📊 可视化成绩统计
  • ✨ 流畅的交互动画
  • 🎯 直观的操作提示

注意事项

  1. 首次运行前请确保数据库已正确配置

  2. 建议使用 Chrome、Firefox 等现代浏览器访问

  3. 删除学生或课程会级联删除相关成绩数据

  4. 同一学生在同一学期不能重复录入同一课程的成绩

相关推荐
错把套路当深情6 小时前
Kotlin Map扩展函数使用指南
服务器·前端·kotlin
i_am_a_div_日积月累_6 小时前
vue打包路径敏感解决;vue路径大小写引入检查与修复
前端·javascript·vue.js
Jul1en_7 小时前
JVM的内存区域划分、类加载机制与垃圾回收原理
java·jvm
知了一笑7 小时前
项目效率翻倍,做对了什么?
前端·人工智能·后端
江城开朗的豌豆7 小时前
webpack了解吗,讲一讲原理,怎么压缩代码
前端·javascript·微信小程序
_xaboy7 小时前
开源设计器 FcDesigner 限制组件是否可以拖入的教程
前端·vue.js·低代码·开源·表单设计器
江城开朗的豌豆7 小时前
Webpack配置魔法书:从入门到高手的通关秘籍
前端·javascript·微信小程序
AnalogElectronic7 小时前
vue3 实现记事本手机版01
开发语言·javascript·ecmascript
江城开朗的豌豆7 小时前
玩转小程序生命周期:从入门到上瘾
前端·javascript·微信小程序