# 学生成绩管理系统 **Repository Path**: TVATimeRider/JSP_MVC_StudentGradeManager ## Basic Information - **Project Name**: 学生成绩管理系统 - **Description**: 学生成绩管理系统基于B/S(Browser/Server)模式开发,系统设计采用了OOP思想,系统开发选择了Eclipse 2020-06作为集成开发环境,使用了JSP和Java语言编写程序;前端使用HTML+CSS+JavaScript技术设计开发页面;后台数据库使用MySQL5.6.26。 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: https://gitee.com/quanyouhua/JSP_MVC_StudentGradeManager - **GVP Project**: No ## Statistics - **Stars**: 14 - **Forks**: 0 - **Created**: 2022-01-02 - **Last Updated**: 2026-01-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 学生成绩管理系统 ## 📖 项目简介 学生成绩管理系统是一个基于B/S(Browser/Server)模式开发的教育管理平台,采用MVC架构设计。系统使用Eclipse 2020-06作为集成开发环境,后端使用JSP和Java Servlet,前端采用HTML+CSS+JavaScript技术,数据库使用MySQL 5.6.26。 本系统实现了完整的学生、教师、管理员三级权限管理,支持学生信息管理、教师信息管理、课程信息管理、选课信息管理和成绩信息管理等核心功能。 --- ## ✨ 功能特性 ### 👨‍🎓 学生功能 - 查看个人用户信息 - 修改登录密码 - 查询个人信息 - 查询课程信息 - 查询选课信息 - 查询成绩信息 ### 👨‍🏫 教师功能 - 查看个人用户信息 - 修改登录密码 - 查询个人信息 - 查询学生信息 - 查询课程信息 - 查询选课信息 - 查询成绩信息 - **管理学生信息**:查询、添加、修改、删除、批量删除 - **管理成绩信息**:查询、添加、修改、删除、批量删除 ### 👔 管理员功能 **学生信息管理模块** - 查询所有学生信息 - 按学号精确查询学生信息 - 添加新学生 - 修改学生信息 - 删除学生(支持单删和批量删除) **教师信息管理模块** - 查询所有教师信息 - 按教师号精确查询教师信息 - 添加新教师 - 修改教师信息 - 删除教师(支持单删和批量删除) **课程信息管理模块** - 查询所有课程信息 - 按课程号精确查询课程信息 - 添加新课程 - 修改课程信息 - 删除课程(支持单删和批量删除) **选课信息管理模块** - 查询所有选课信息 - 按教师号或课程号查询选课信息 - 添加选课记录 - 删除选课记录 **成绩信息管理模块** - 查询所有成绩信息 - 添加成绩记录 - 修改学生成绩(支持暂存) - 删除成绩记录 --- ## 🛠 技术栈 ### 后端技术 - **Java** - 核心开发语言 - **JSP** - 动态页面技术 - **Servlet** - 请求处理与控制 - **JDBC** - 数据库连接 - **MVC架构** - 分层设计模式 ### 前端技术 - **HTML5** - 页面结构 - **CSS3** - 样式设计 - **JavaScript** - 交互逻辑 - **jQuery** - JavaScript库 - **Pintuer.css** - UI框架 ### 数据库 - **MySQL 5.6.26** - 关系型数据库 ### 开发工具 - **Eclipse 2020-06** - IDE - **Tomcat** - Web服务器 - **SQLyog Ultimate** - 数据库管理工具 --- ## 📁 项目结构 ``` JSP_MVC_StudentGradeManager/ │ ├── src/ # Java源代码目录 │ └── com/dqpi/ │ ├── Util/ # 工具类 │ │ └── DBManager.java # 数据库连接管理 │ ├── Model/ # 实体模型 │ │ ├── Student.java # 学生实体 │ │ ├── Teacher.java # 教师实体 │ │ ├── Course.java # 课程实体 │ │ ├── SC.java # 学生-课程成绩实体 │ │ └── TC.java # 教师-课程授课实体 │ ├── UserDao/ # 数据访问层 │ │ ├── UserDao.java # DAO接口 │ │ └── Imp/UserDaoimp.java # DAO实现类 │ └── Service/ # 控制层 │ └── Userservlet.java # Servlet控制器 │ ├── WebContent/ # Web资源目录 │ ├── course/ # 课程管理相关页面 │ ├── grade/ # 成绩管理相关页面 │ ├── main/ # 主页面 │ ├── sc/ # 选课管理相关页面 │ ├── student/ # 学生管理相关页面 │ ├── teacher/ # 教师管理相关页面 │ ├── user/ # 用户相关页面 │ ├── WEB-INF/ # Web配置目录 │ │ └── web.xml # Web应用配置文件 │ ├── css/ # 样式文件 │ ├── js/ # JavaScript文件 │ ├── img/ # 图片资源 │ └── login.jsp # 登录页面 │ ├── build/ # 编译输出目录 ├── studnetgrade.sql # 数据库脚本 ├── README.md # 项目说明文档 ├── README.en.md # 英文文档 └── LICENSE # 许可证 ``` --- ## 🗄 数据库设计 ### 数据库表结构 #### 1. `userperson` - 用户表 | 字段 | 类型 | 说明 | |------|------|------| | Susername | char(20) | 用户名(主键) | | Spassword | char(20) | 密码(明文) | | Sno | char(8) | 用户类型(student/teacher/manager) | | SID | char(20) | 关联ID(学号/教师号/管理员ID) | #### 2. `student` - 学生表 | 字段 | 类型 | 说明 | |------|------|------| | Sno | char(20) | 学号(主键) | | Sname | char(8) | 姓名 | | Ssex | char(2) | 性别 | | Sage | int | 年龄 | | Sdept | char(20) | 系别 | | Clno | char(20) | 班级号 | #### 3. `teacher` - 教师表 | 字段 | 类型 | 说明 | |------|------|------| | Stno | char(20) | 教师号(主键) | | Stname | char(8) | 姓名 | | Stsex | char(2) | 性别 | | Stage | int | 年龄 | | Sto | char(20) | 职称 | #### 4. `course` - 课程表 | 字段 | 类型 | 说明 | |------|------|------| | Cno | char(20) | 课程号(主键) | | Cname | char(14) | 课程名称 | | Cgrade | int | 学分 | | Ctime | int | 学时 | | Ctype | char(14) | 课程类型(考试课/考查课) | #### 5. `sc` - 学生选课成绩表 | 字段 | 类型 | 说明 | |------|------|------| | Sno | char(20) | 学号(主键) | | Cno | char(20) | 课程号(主键) | | Scg | int | 成绩 | #### 6. `tc` - 教师授课表 | 字段 | 类型 | 说明 | |------|------|------| | Stno | char(20) | 教师号(主键) | | Cno | char(20) | 课程号(主键) | | Clno | int | 班级号(主键) | --- ## 🚀 快速开始 ### 环境要求 - **JDK**:1.8 或更高版本 - **Tomcat**:8.5 或更高版本 - **MySQL**:5.6.26 或兼容版本 - **IDE**:Eclipse 2020-06 或兼容版本(推荐) ### 安装步骤 #### 1. 克隆/下载项目 ```bash git clone https://github.com/yourusername/JSP_MVC_StudentGradeManager.git cd JSP_MVC_StudentGradeManager ``` #### 2. 配置数据库 1. 启动MySQL数据库 2. 执行数据库脚本: ```bash mysql -u root -p < studnetgrade.sql ``` 或使用SQLyog工具打开并执行 `studnetgrade.sql` 文件 3. 确认数据库已创建: - 数据库名:`studnetgrade` - 包含6张表:`userperson`, `student`, `teacher`, `course`, `sc`, `tc` #### 3. 导入项目到Eclipse 1. 打开Eclipse 2. 选择 `File` → `Import` → `Existing Projects into Workspace` 3. 选择项目根目录 `JSP_MVC_StudentGradeManager` 4. 点击 `Finish` #### 4. 配置项目 1. 确认项目使用的Tomcat版本 2. 右键项目 → `Properties` → `Project Facets` - 勾选 `Java` 版本为 1.8 或更高 - 勾选 `Dynamic Web Module` 版本为 3.0 3. 检查 `src/com/dqpi/Util/DBManager.java` 中的数据库连接配置: ```java private static final String URL = "jdbc:mysql://localhost:3306/studnetgrade"; private static final String USER = "root"; private static final String PASSWORD = "yourpassword"; // 修改为你的MySQL密码 ``` #### 5. 部署运行 1. 配置Tomcat服务器到Eclipse 2. 右键项目 → `Run As` → `Run on Server` 3. 选择Tomcat服务器,点击 `Finish` 4. 浏览器自动打开登录页面 --- ## 👤 测试账号 ### 管理员账号 | 用户名 | 密码 | 说明 | |--------|------|------| | c001 | c001 | 管理员1 | | c002 | c002 | 管理员2 | ### 教师账号 | 用户名 | 密码 | 教师号 | 姓名 | |--------|------|--------|------| | 10001 | b10001 | 10001 | 李斯 | | 10002 | b10002 | 10002 | 李伟 | | 10003 | b10003 | 10003 | 张伟 | ### 学生账号 | 用户名 | 密码 | 学号 | 姓名 | |--------|------|------|------| | 00001 | a00001 | 00001 | 李勇 | | 00002 | a00002 | 00002 | 李林 | | 00003 | a00003 | 00003 | 王刚 | | 00004 | a00004 | 00004 | 张伟 | | 00005 | a00005 | 00005 | 赵云 | | 00006 | a00006 | 00006 | 王芳 | --- ## ⚠️ 注意事项 ### 已知问题 1. **安全性问题**: - 密码以明文存储,建议升级为BCrypt加密 - 存在SQL注入风险,建议使用PreparedStatement - 缺乏输入验证,建议增加参数校验 2. **代码质量问题**: - 所有请求由单一Servlet处理,建议按模块拆分 - 硬编码数据库配置,建议外部化配置 - 使用过时的JDBC API,建议升级 3. **前端问题**: - JSP页面大量使用Scriptlet,维护困难 - 未引入现代前端框架,建议考虑Vue/React - 缺乏响应式设计,移动端体验不佳 ### 开发建议 - 如需修改数据库连接信息,请编辑 `src/com/dqpi/Util/DBManager.java` - 新增功能建议遵循MVC分层架构 - 推荐使用Try-with-resources确保资源正确关闭 --- ## 📄 许可证 本项目采用开源许可证,详见 [LICENSE](LICENSE) 文件。