# 排课系统设计报告
## 目录
<!-- TOC -->
- [排课系统设计报告](#排课系统设计报告)
- [目录](#目录)
- [文档修改历史](#文档修改历史)
- [设计背景](#设计背景)
- [技术栈](#技术栈)
- [主要](#主要)
- [前端](#前端)
- [后端](#后端)
- [技术栈介绍](#技术栈介绍)
- [vue](#vue)
- [vue-router](#vue-router)
- [element-ui](#element-ui)
- [axios](#axios)
- [Springboot](#springboot)
- [MongoDB](#mongodb)
- [使用这套技术栈的原因](#使用这套技术栈的原因)
- [开发工具](#开发工具)
- [开发流程](#开发流程)
- [模块设计](#模块设计)
- [体系结构设计](#体系结构设计)
- [功能设计](#功能设计)
- [Course模块](#course模块)
- [Classroom模块](#classroom模块)
- [Teacher模块](#teacher模块)
- [Scheduling模块(核心功能、没有实现)](#scheduling模块核心功能没有实现)
- [核心算法设计](#核心算法设计)
- [假设](#假设)
- [数据说明](#数据说明)
- [时间的表示](#时间的表示)
- [外部输入参数](#外部输入参数)
- [数据库设计](#数据库设计)
- [Course文档](#course文档)
- [Classroom文档](#classroom文档)
- [Teacher文档](#teacher文档)
- [Scheduling文档](#scheduling文档)
- [算法实现](#算法实现)
- [检测当前教室是否可以被占用](#检测当前教室是否可以被占用)
<!-- /TOC -->
## 文档修改历史
| 修改日期 | 修改原因 | 版本号 |
| :-------: | :----------------------------------: | :----: |
| 2019.7.24 | 完成报告的初版,达到与代码设计的同步 | v1.0 |
## 设计背景
1. 自学web项目开发所做的一个项目
2. 管理信息系统作业
## 技术栈
## 主要
- vue + Springboot + MongoDB
### 前端
- vue
- vue-router
- element-ui
- axios
### 后端
- Springboot
- MongoDB
## 技术栈介绍
### vue
- 一种网页的开发框架
- 使用组件化开发的理念,将每个页面当做组件,每个页面中还可以放入小的组件,这样可以减少重复代码
### vue-router
- 网页开发的路由管理器,具体就是将**每个组件**与**用户浏览网页时的地址**进行映射
- 通过vue-router可以实现嵌套路由,在一个主路由下,增加子路由,实现上文所说的减少重复代码
### element-ui
- 由饿了么开发团队所开发的一套基于vue的网页组件库
- 作为一个初学者,直接使用这样的组件库可以减少很多开发时间
### axios
- 一种基于promise(不懂)的HTTP库,用于客户端(即浏览器)向服务器发送请求,并得到服务器响应后对页面进行处理
### Springboot
- 一个后端的开发框架,将服务器处理请求的逻辑封装
- 只需要在该框架中定义控制器,将客户端发出的请求中的地址(即url)写在控制器的映射中,就可以找到相对应的方法。
### MongoDB
- 一种NoSql数据库
- NoSql的意思是(Not Only Sql)
- 它是一种非关系型的数据库,存储数据的方式是文档类型的
- 例如
``` json
{
"username": "teacher",
"password": "teacher123",
"address":{
"province": "广东省",
"city": "珠海市"
}
}
```
- 可以看到,这种类型的数据库不像关系型数据库只有固定的变量
- NoSQL的变量是可以嵌套的
- 相对应的
| SQL | NoSQL |
| :----------------: | :--------------: |
| 数据表(Table) | 集合(Collection) |
| 记录(表中的某一行) | 文档(Document) |
| 字段(表中的某一列) | 域(Field) |
- 相比关系型数据库,NoSQL这类数据库存储数据更加的灵活
- 关系型数据库的结构是定死的
- 但是非关系型数据库没有那么多的规定,NoSQL中的每一个记录都可以不一样
- 例如
```json
{
"name": "Foo"
},
{
"name": "Bar",
"age": 15
}
```
- 可以看到两个记录有着不一样的数据格式,这样便增加了更多的灵活性。
## 使用这套技术栈的原因
1. 这学期软工大作业的前端用的是bootstrap+jquery,可能是自己弱,感觉十分的麻烦,所以打算学习一套比较新的前端框架
2. Springboot作为后端框架比较好用,而且这个学期一直在用
3. 一直学关系型数据库感觉比较脱离实际,所以想要学一下非关系型数据库,于是就从MongoDB入手了
## 开发工具
- VSCode
- VSCode作为一个编辑器,有着丰富的插件,内置终端(也就是控制台),用于开发前端非常的方便
- IntelliJ IDEA
- 一个JAVA的IDE
## 开发流程
### 模块设计
- 本项目的排课系统的主要模块主要分为四个
- 课程大纲
- 教师安排
- 教室管理
- 排课管理
- 每个模块对应一个数据表,也就是文档
- course文档
- teacher文档
- classroom文档
- scheduling文档
- 其中在初期开发中为了测试前后端接口以及数据库接口,增加了一个登录的小模块并且设置了一个user文档,但这个模块主要是为了测试接口,所以不是很重要。
### 体系结构设计
- 有了模块之后开始搭建项目的体系结构
- 整个项目用的是分层的架构
- 分层架构优点:
- 在于只需要确定层与层之间的接口
- 各个层之间的代码互不干扰
- 负责某一层的程序员只需要写好自己那一层的代码就可以自行开发
- 如果出现其它层代码写的过慢的情况,由于接口和传输的数据格式都是定死的,只需要自己写假代码就可以确认自己的代码是否有bug,也就是Mocker
- 客户端发出请求由最上层开始调用至最底层
- 服务器响应请求由最底层返回给最上层
- 前端
- vue框架下的**展示层**界面
- axios库发送请求给后端控制器层(Controller)
- axios发送请求时所带的请求体称为VO(View Object)
- VO即为展示层的对象
- 后端
- **控制器层**(Controller)
- **业务逻辑层**(BusinessLogic)
- 业务逻辑层接口(Service)
- 业务逻辑的具体实现(ServiceImpl)
- **数据层**(Data)
- 业务逻辑层和数据层之间传输的数据为PO(Persistent Object)
- PO称为持久化对象,存储于数据层中,对应的就是数据库中的表格
- 体系结构图如图所示
![体系结构](https://github.com/AzureXH/CourseSchedulingDemo/blob/master/%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84%E5%9B%BE.jpg?raw=true)
### 功能设计
- 整个项目的体系结构搭建好后,就可以开始设计具体功能了。
- 由于分好了四个模块,我们只需要在各自的模块中设计功能。
- 为了节省时间这里的功能设计我只写了每个模块的业务逻辑层的Service接口
#### Course模块
| 功能 | 函数名称 | 网页请求说明 | 数据库相关说明 |
| :------: | :--------------------------------------: | :------------------------------------------: | ------------------------------------ |
| 增加课程 | Boolean addCourse(CourseVO courseVO); | 网页请求添加新的课程 | 在course集合中添加一个新的Course文档 |
| 删除课程 | Boolean deleteCourse(CourseVO courseVO); | 网页请求删除某个课程 | 将course集合中对应的Course文档删除 |
| 修改课程 | Boolean updateCourse(CourseVO courseVO); | 网页请求修改某个课程 | 将course集合中对应的Course文档修改 |
| 获取课程 | List<CourseVO> getAllCourse(); | 网页请求获
没有合适的资源?快使用搜索试试~ 我知道了~
基于vue+Springboot+MongoDB构建的教学排课系统(前后端分离)-1.zip
共91个文件
java:27个
js:13个
vue:9个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 5 浏览量
2024-06-11
22:00:42
上传
评论
收藏 1.65MB ZIP 举报
温馨提示
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
资源推荐
资源详情
资源评论
收起资源包目录
基于vue+Springboot+MongoDB构建的教学排课系统(前后端分离)-1.zip (91个子文件)
ori_code_springboot
back-end
mvnw.cmd 6KB
pom.xml 2KB
src
test
java
com
example
demo
DemoApplicationTests.java 331B
main
resources
application.properties 187B
templates
index.html 1KB
static
js
chunk-217c3d5d.b85f285c.js 7KB
chunk-cdd03ec6.b75c9879.js 2KB
chunk-19251f22.c6c56b01.js.map 37KB
chunk-vendors.fb587d88.js 775KB
chunk-2d0e4528.f15a3d35.js 532B
chunk-4b8d81a8.a36f9c63.js 15KB
chunk-5f0bc9e6.e99361b4.js.map 25KB
chunk-5f0bc9e6.e99361b4.js 7KB
chunk-vendors.fb587d88.js.map 2.96MB
chunk-cdd03ec6.b75c9879.js.map 8KB
chunk-19251f22.c6c56b01.js 11KB
chunk-217c3d5d.b85f285c.js.map 25KB
chunk-2d22d746.5f0f5e5f.js 534B
chunk-2d0e4528.f15a3d35.js.map 3KB
chunk-4b8d81a8.a36f9c63.js.map 66KB
chunk-2d22d746.5f0f5e5f.js.map 2KB
app.9424e54b.js.map 31KB
app.9424e54b.js 7KB
img
logo.52d24cee.png 9KB
css
chunk-5f0bc9e6.ae9c22ab.css 285B
app.4ad9a772.css 670B
chunk-19251f22.0d4cfb92.css 285B
chunk-217c3d5d.b40eb41a.css 285B
chunk-vendors.c2bd9410.css 220KB
chunk-cdd03ec6.b49432b8.css 515B
favicon.ico 4KB
fonts
element-icons.535877f5.woff 28KB
element-icons.732389de.ttf 55KB
java
com
example
demo
DemoApplication.java 305B
bl
LoginService.java 187B
ClassroomService.java 483B
TeacherService.java 528B
CourseService.java 418B
blImpl
CourseServiceImpl.java 2KB
ClassroomServiceImpl.java 3KB
LoginServiceImpl.java 686B
TeacherSericeImpl.java 3KB
data
CourseData.java 414B
ClassroomData.java 366B
TeacherData.java 388B
UserData.java 289B
controller
ClassroomController.java 2KB
TeacherController.java 1KB
LoginController.java 548B
CourseController.java 1KB
po
Classroom.java 2KB
Teacher.java 1KB
Course.java 2KB
User.java 1KB
vo
CourseVO.java 2KB
ClassroomVO.java 2KB
TeacherVO.java 1KB
LoginForm.java 468B
.mvn
wrapper
maven-wrapper.properties 116B
maven-wrapper.jar 47KB
MavenWrapperDownloader.java 5KB
mvnw 9KB
.gitignore 333B
体系结构图.jpg 217KB
front-end
client
babel.config.js 53B
npm.md 393B
src
App.vue 324B
assets
logo.png 9KB
main.js 318B
components
HelloWorld.vue 2KB
img
2.jpg 271KB
views
logo.png 9KB
Login.vue 2KB
Home.vue 2KB
About.vue 220B
content
Classroom.vue 8KB
Scheduling.vue 8KB
Teacher.vue 8KB
Course.vue 12KB
router.js 1KB
package.json 1012B
public
favicon.ico 4KB
index.html 426B
package-lock.json 404KB
vue.config.js 74B
.gitignore 214B
README.md 2KB
package.json 717B
package-lock.json 96KB
.gitignore 221B
Readme.md 20KB
共 91 条
- 1
资源评论
毕业小助手
- 粉丝: 2737
- 资源: 5598
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功