学生选课管理系统需求文档
一、项目概述
学生选课管理系统旨在为学校提供一个便捷、高效的学生选课管理平台,实现学生选课、成绩管理、课程信息维护等功能,提高教学管理的信息化水平。
二、主要功能
主要功能模块如下图所示:
graph TD
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
A(学生选课管理系统):::process
A --> B(学生信息管理):::process
A --> C(课程信息管理):::process
A --> D(学生选课管理):::process
B --> B1(查看):::process
B --> B2(添加):::process
B --> B3(修改):::process
B --> B4(删除):::process
C --> C1(查看):::process
C --> C2(添加):::process
C --> C3(修改):::process
C --> C4(删除):::process
D --> D1(查看):::process
D --> D2(添加):::process
D --> D3(修改):::process
D --> D4(删除):::process
(一)学生信息管理
- 查看:查看学生基本信息,如学号、姓名、性别、年龄、所在系等。
- 添加:向系统中添加新的学生信息。
- 修改:对已有学生信息进行修改和更新。
- 删除:删除不再需要的学生信息。
(二)课程信息管理
- 查看:用户可查看课程详细信息,如课程编号、课程名、先修课、学分等。
- 添加:可向系统中添加新的课程信息。
- 修改:能对已有的课程信息进行修改和更新。
- 删除:可删除不再需要的课程信息。
(三)学生选课与成绩管理
- 查看
- 课程查询:根据课程编号、课程名、学分等条件查询可选课程。
- 选课结果查看:查看自己的选课结果,包括已选课程和课程状态。
- 成绩查询:查询学生所选课程的成绩。
- 添加
- 选课操作:在选课时间内选择感兴趣的课程,系统会检查选课条件。
- 成绩录入:录入学生的选课成绩。
- 修改:此功能模块中暂不涉及修改操作。
- 删除:此功能模块中暂不涉及删除操作。
方案一:JSP + Servlet + JDBC 架构
(一)前端
- 页面展示:采用 JSP(JavaServer Pages)作为视图层,编写动态网页,可嵌入 Java 代码生成动态内容。
- 样式设计:使用 HTML、CSS 进行页面布局和样式设计,提升用户视觉体验。
- 交互处理:借助 JavaScript 实现页面交互效果,如表单验证、异步请求等。
(二)后端
- 请求处理:利用 Servlet 作为控制器,处理前端请求,接收请求参数,调用业务逻辑处理并返回结果。
- 业务逻辑:在 Java 类中编写业务逻辑代码,处理选课、成绩管理、信息维护等业务。
- 数据库操作:使用 JDBC(Java Database Connectivity)连接 SQLite 数据库,执行增删改查操作。需要添加 SQLite JDBC 驱动依赖,将
sqlite-jdbc-3.41.0.0.jar
放入WEB-INF/lib
,或使用 Maven 可在 pom.xml
中添加:
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.41.0.0</version>
</dependency>
(三)部署
- 服务器:选择 Tomcat 作为 Web 服务器,将项目部署到 Tomcat 中运行。
- 数据库:使用 SQLite 数据库存储学生表、课程表和学生 - 选课表的数据。SQLite 是文件型数据库,只需将数据库文件放置在合适位置即可。
(四)功能接口
(一)学生信息管理 API
URL |
操作 |
方法 |
参数 |
响应 |
/stu/add.jsp |
添加学生信息 |
POST |
请求体包含学生信息(学号、姓名、性别、年龄、所在系) |
返回list.jsp |
/stu/delete.jsp |
删除学生信息 |
POST |
no (学生学号) |
返回list.jsp |
/stu/update.jsp |
修改学生信息 |
POST |
请求体包含要修改的学生信息(学号及修改后的信息) |
返回list.jsp |
/stu/list.jsp |
查看学生信息列表 |
GET |
无 |
返回list.jsp |
(二)课程信息管理 API
URL |
操作 |
方法 |
参数 |
响应 |
/course/add.jsp |
添加课程信息 |
POST |
请求体包含课程信息(课程编号、课程名、先修课、学分) |
返回list.jsp |
/course/delete.jsp |
删除课程信息 |
POST |
no (课程编号) |
返回list.jsp |
/course/update.jsp |
修改课程信息 |
POST |
请求体包含要修改的课程信息(课程编号及修改后的信息) |
返回list.jsp |
/course/list.jsp |
查看课程信息列表 |
GET |
无 |
返回list.jsp |
(三)学生-选课信息管理 API
URL |
操作 |
方法 |
参数 |
响应 |
/stu_course/add.jsp |
添加选课信息 |
POST |
请求体包含课程信息(课程编号、学号、成绩) |
返回list.jsp |
/stu_course/delete.jsp |
删除选课信息 |
POST |
stu_no (学号)、course_no (课程编号) |
返回list.jsp |
/stu_course/update.jsp |
修改选课信息 |
POST |
请求体包含要修改的选课信息(课程编号及修改后的信息) |
返回list.jsp |
/stu_course/list.jsp |
查看选课信息列表 |
GET |
无 |
返回list.jsp |
方案二:Spring Boot + MyBatis + Freemarker 架构
(一)前端
- 模板引擎:使用 Freemarker 作为模板引擎,结合数据和模板生成动态 HTML 页面,语法简单易用。
- 样式设计:采用 HTML、CSS 进行页面布局和样式设计,可结合 Bootstrap 等前端框架,提升页面响应式设计和美观度。
- 交互处理:使用 JavaScript 和 jQuery 实现页面交互效果,也可引入 Vue.js 或 React.js 等前端框架提升用户体验。
(二)后端
- 框架搭建:使用 Spring Boot 搭建后端服务器,利用其自动配置和快速开发功能简化项目搭建。
- 持久层框架:使用 MyBatis 作为持久层框架,通过 XML 或注解实现数据库增删改查操作,提高开发效率。同样需要添加 SQLite JDBC 驱动依赖。
- 业务逻辑:运用 Spring 框架的依赖注入和面向切面编程特性组织业务逻辑代码,增强代码可维护性和可测试性。
(三)部署
- 服务器:Spring Boot 内置 Tomcat 等服务器,可将项目打包成可执行的 JAR 文件直接在服务器上运行。
- 数据库:使用 SQLite 数据库存储数据,通过 MyBatis 与数据库交互。
(四)功能接口
(一)学生信息管理 API
URL |
操作 |
方法 |
参数 |
响应 |
/demo/Student/add |
添加学生信息 |
POST |
请求体包含学生信息(学号、姓名、性别、年龄、所在系) |
返回操作结果 |
/demo/Student/delete |
删除学生信息 |
POST |
no (学生学号) |
返回操作结果 |
/demo/Student/update |
修改学生信息 |
POST |
请求体包含要修改的学生信息(学号及修改后的信息) |
返回操作结果 |
/demo/Student/getPage |
查看学生信息列表 |
POST |
application/json:pageNum,pageSize |
返回列表 |
(二)课程信息管理 API
URL |
操作 |
方法 |
参数 |
响应 |
/demo/Course/add |
添加课程信息 |
POST |
请求体包含课程信息(课程编号、课程名、先修课、学分) |
返回操作结果 |
/demo/Course/delete |
删除课程信息 |
POST |
no (课程编号) |
返回操作结果 |
/demo/Course/update |
修改课程信息 |
POST |
请求体包含要修改的课程信息(课程编号及修改后的信息) |
返回操作结果 |
/demo/Course/getPage |
查看课程信息列表 |
GET |
application/json:pageNum,pageSize |
返回列表 |
(三)学生-选课信息管理 API
URL |
操作 |
方法 |
参数 |
响应 |
/demo/StuCourse/add |
添加选课信息 |
POST |
请求体包含课程信息(课程编号、学号、成绩) |
返回操作结果 |
/demo/StuCourse/delete |
删除选课信息 |
POST |
stu_no (学号)、course_no (课程编号) |
返回操作结果 |
/demo/StuCourse/update |
修改选课信息 |
POST |
请求体包含要修改的选课信息(课程编号及修改后的信息) |
返回操作结果 |
/demo/StuCourse/getPage |
查看选课信息列表 |
POST |
application/json:pageNum,pageSize |
返回列表 |