# 设计文档
> - 本人构建了数据库和后端部分,并根据业务逻辑前端项目上进行了更改和改进,使其更适应我的数据库
> - 项目已部署至云端:[学生选课系统](http://47.98.157.214:9000/)
> - 第一次使用vue-cli开发项目,如果详项目代码存在不严谨或错误的地方,欢迎各位指出,共同讨论
>- 如果这个项目对您有帮助,请各位为本项目**点一点star**、**关注一下作者**
## 一、后端
### (一)系统框架
**Spring+SpringMVC+Mybatis+Mybatis-Plus(SSM)**
#### 1、Spring和SpringMVC
Spring是一个开源框架,它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EE一站式轻量级开源框架。
<img src="https://gendml.oss-cn-hangzhou.aliyuncs.com/picgo/image-20220612142010997.png" alt="image-20220612142010997" style="zoom:170%;" />
SpringMVC是spring框架的一个模块,SpringMVC和Spring无需通过中间整合层进行整合,SpringMVC是一个基于MVC的web框架,SpringMVC 拥有控制器,作用跟Struts类似,接收外部请求,解析参数传给服务层。
#### 2、Mybatis和Mybatis-Plus
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。**MyBatis-Plus** (简称 MP)是一个 MyBatis 的**增强工具**,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
<img src="https://gendml.oss-cn-hangzhou.aliyuncs.com/picgo/image-20220612141933296.png" alt="image-20220612141933296" style="zoom: 67%;" />
### (二)系统架构
**持久层(Entity)+数据访问层(Dao)+业务逻辑层(Service)+控制层(Controller)**
![image-20220612143316309](https://gendml.oss-cn-hangzhou.aliyuncs.com/picgo/image-20220612143316309.png)
#### 1、UML类图
<img src="https://gendml.oss-cn-hangzhou.aliyuncs.com/picgo/image-20220612142537248.png" alt="image-20220612142537248" style="zoom:80%;" />
#### 2、持久层
![image-20220612144743993](https://gendml.oss-cn-hangzhou.aliyuncs.com/picgo/image-20220612144743993.png)
- 持久层主要作用是与数据库进行数据映射,与数据库的属性值保持一致。
- Course对应数据库的课程表
- CoursePlan对应数据库的课程安排表
- Student对应数据库的学生表
- Teacher对应数据库的教师表
- SC对应数据库的成绩表
- Admin对应数据库的管理员表
- Faculity对应数据库的院系表
- 为了让接口更加规范,我编写了**ResponseResult<T>**和**ResultCode**接口响应类,ResponseResult<T>属性**code**是响应码,**message**是响应的状态信息,**data<T>**则是响应数据,泛型T可以是上述定义的类;ResultCode则是定义的具体属性,**常量SUCCESS**是200(表示响应成功),**ERROR**是500(表示响应失败),**ERROR_MESSAGE**表示响应错误信息,**SUCCESS_MESSAGE**表示响应成功信息
<img src="https://gendml.oss-cn-hangzhou.aliyuncs.com/picgo/image-20220612143558755.png" alt="image-20220612143558755" style="zoom: 67%;" />
#### 3、数据访问层
![image-20220612144823218](https://gendml.oss-cn-hangzhou.aliyuncs.com/picgo/image-20220612144823218.png)
- 该部分使用Mybatis-Plus让每张表的接口类继承**BaseMapper**接口,BaseMapper封装了CRUD(增加Create、检索Retrieve、更新Update和删除Delete)基本方法
<img src="https://gendml.oss-cn-hangzhou.aliyuncs.com/picgo/image-20220612145612555.png" alt="image-20220612145612555" style="zoom: 67%;" />
- 我们只需要让继承BaseMapper后的接口配置到Mybatis的映射文件即可
![image-20220612145718994](https://gendml.oss-cn-hangzhou.aliyuncs.com/picgo/image-20220612145718994.png)
#### 4、业务逻辑层
![image-20220612145852576](https://gendml.oss-cn-hangzhou.aliyuncs.com/picgo/image-20220612145852576.png)
- 粗略的理解就是对一个或多个DAO进行的再次封装,封装成一个服务,封装后就不会是一个原子操作了,需要事物控制,负责管理具体的功能
- 这里根据需求编写了**管理员**、**课程**、**教师**和**学生**的业务接口,在业务实现类中根据上述Dao层编写代码实现具体业务
![image-20220612150233404](https://gendml.oss-cn-hangzhou.aliyuncs.com/picgo/image-20220612150233404.png)
#### 5、控制器
![image-20220612150625129](https://gendml.oss-cn-hangzhou.aliyuncs.com/picgo/image-20220612150625129.png)
- 该部分负责请求转发,接受页面过来的参数,传给Service处理,接到返回值,再传给页面,负责**管理业务(Service)调度和管理跳转**
<img src="https://gendml.oss-cn-hangzhou.aliyuncs.com/picgo/image-20220612151019173.png" alt="image-20220612151019173" style="zoom:67%;" />
### (三)相关配置
#### 1、Spring和Mybatis-Plus
```xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- IoC注解解析器 -->
<context:component-scan base-package="com.gendml"/>
<!-- DI注解解析器 -->
<context:annotation-config/>
<!-- 加载数据库配置信息 -->
<context:property-placeholder location="classpath:config/druid.properties" system-properties-mode="NEVER"/>
<!-- 连接池对象 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="driverClassName" value="${driverClassName}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
<property name="url" value="${url}"/>
<property name="initialSize" value="${initialSize}"/>
<property name="minIdle" value="${minIdle}"/>
<property name="maxActive" value="${maxActive}"/>
<!--配置获取连接等待超时的时间-->
<property name="maxWait" value="${maxWait}"/>
<!--配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒-->
<property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}"/>
<!--配置一个连接在池中最小生存的时间,单位是毫秒-->
<property name="minEvictableIdleTimeMillis" value="${timeBetweenEvictionRunsMillis}"/>
</bean>
<!--配置sqlSessionFactory-->
<bean id="sqlSessionFactory"
class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFact
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
<项目介绍> 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 -------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
资源推荐
资源详情
资源评论
收起资源包目录
基于SSM和Vue+ElementUI的学生选课系统+源代码+文档说明 (100个子文件)
login.css 4KB
style.css 1KB
.gitignore 217B
index.html 574B
login.html 308B
rest.http 1KB
favicon.ico 66KB
TeacherController.java 9KB
StudentController.java 7KB
StudentServiceImpl.java 3KB
TeacherServiceImpl.java 3KB
CourseServiceImpl.java 3KB
myController.java 2KB
ResponseResult.java 2KB
AdminController.java 2KB
mybatisplusTest.java 2KB
AdminServiceImpl.java 1KB
Course.java 1KB
CoursePlan.java 1KB
SC.java 877B
Admin.java 813B
Student.java 777B
Teacher.java 723B
StudentService.java 670B
Faculity.java 663B
TeacherService.java 658B
CourseService.java 572B
AdminService.java 341B
FaculityMapper.java 331B
CoursePlanMapper.java 304B
StudentMapper.java 296B
TeacherMapper.java 295B
CourseMapper.java 293B
AdminMapper.java 290B
SCMapper.java 280B
testVueProjectApplication.java 66B
Surface Family.jpg 375KB
login_left_bg.jpg 105KB
login_left_bg.jpg 105KB
router.js 4KB
main.js 2KB
store.js 2KB
vue.config.js 1KB
main.js 721B
element.js 533B
router.js 420B
babel.config.js 200B
element.js 118B
package-lock.json 1.09MB
package.json 1KB
index.jsp 331B
yarn.lock 391KB
README.md 18KB
使用说明.md 7KB
测试文档.md 4KB
项目运行.md 3KB
需求分析.md 1KB
数据库文档.pdf 152KB
img.png 19KB
student1.png 10KB
logo.png 7KB
log4j.properties 346B
druid.properties 239B
course-select.sql 10KB
addClass.vue 13KB
chooseClass.vue 13KB
manageTeacher.vue 10KB
studentInfo.vue 9KB
teacherInfo.vue 8KB
addCourse.vue 7KB
studentCourse.vue 6KB
teacherCourse.vue 6KB
Register.vue 6KB
manageStudent.vue 6KB
courseGrade.vue 5KB
Login.vue 5KB
manageGrade.vue 3KB
manageFaculity.vue 3KB
teacher.vue 3KB
admin.vue 2KB
schoolInfo.vue 2KB
student.vue 2KB
studentGrade.vue 2KB
userInfo.vue 1KB
App.vue 1KB
App.vue 1KB
index.vue 456B
noFound.vue 390B
common.vue 225B
pom.xml 7KB
applicationContext.xml 4KB
springmvc-config.xml 2KB
web.xml 2KB
CoursePlanMapper.xml 217B
FaculityMapper.xml 215B
StudentMapper.xml 214B
TeacherMapper.xml 214B
CourseMapper.xml 213B
AdminMapper.xml 212B
SCMapper.xml 209B
共 100 条
- 1
资源评论
机智的程序员zero
- 粉丝: 2411
- 资源: 4799
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- js基础但是这个烂怂东西要求标题不能少于10个字才能上传然后我其实还没有写完之后再修订吧.md
- electron-tabs-master
- Unity3D 布朗运动算法插件 Brownian Motion
- 鼎微R16中控升级包R16-4.5.10-20170221及强制升级方法
- 鼎微R16中控升级包公版UI 2015及强制升级方法,救砖包
- 基于CSS与JavaScript的积分系统设计源码
- 生物化学作业_1_生物化学作业资料.pdf
- 基于libgdx引擎的Java开发连连看游戏设计源码
- 基于MobileNetV3的SSD目标检测算法PyTorch实现设计源码
- 基于Java JDK的全面框架设计源码学习项目
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功