3 系统需求分析与设计
3.1 系统需求分析
本系统基于微信小程序,实现教学互动软件系统是本文的目标,主要涉及到的系统角色分为学生、教师、管理员。系统角色主要有管理员,普通用户两种角色构成。
普通用户有如下几个核心需求:
- 学生用户可以在小程序登录,注册。
- 学生用户可以在小程序通过分类查看教学课程列表。
- 学生用户可以在小程序主页查看轮播图。
- 用户可以在小程序断签到、学习课程、参加作业练习等。
- 学生用户可以进行在线互动。
教师端有如下几个核心需求:
- 老师可以添加课程信息,发布课程学习的资料入视频或者PPT或者其他。
- 老师可以发布试卷给学生学习练习。
- 老师可以进行班级管理、学生管理。
- 系统管理员可以管理试卷。
- 系统管理员可以查看系统用户
根据上面的需求分析,结合具体实际情况,该系统主要由后台管理系统和教学互动小程序构成,通过分布式架构来构建此系统。
3.2 系统架构设计
分布式教学课程互动小程序系统采用分布式架构。整体上划分为小程序接口模块(为小程序提供接口服务)、后台管理接口模块(为后台管理提供接口服务)、静态资源模块(JS,CSS,HTML等页面资源,图片资源,小程序资源)。小程序代码储存在腾讯云由微信官方统一进行管理,其他静态资源储存在腾讯云COS对象储存中进行托管。当用户发出访问小程序或者后台管理接口的请求时,首先请求会到达网关(zuul),然后在zuul中进行请求的过滤,路由后通过zuul中的负载均衡算法,把请求交由对应的feign服务消费端进行处理, feign服务消费端通过负载均衡算法对服务集群中的服务进行消费,最终返回数据给用户。
3.3 业务功能模块设计
本平台是基于分布式构建的系统,所有采用模块化设计的理念进行开发,每个模块只管自己的业务,如果模块之间有联系的话,则通过暴露的接口传输,绝不在模块内部进行与其他模块的通信,降低系统的耦合度。本平台分为如下模块:小程序端的用户登录注册模块、教学课程学习模块、在线签到模块、在线互动模块、试题练习模块;PC管理端的用户管理模块、课程资源管理模块、试题试卷管理模块、系统管理模块。
图3.2系统功能设计图
下面我将分别为各模块作简单介绍。
(1)用户模块设计
本模块主要微信小程序用户的注册、登陆、用户信息和token的获取、用户收获地址的获取。
(2)教学课程模块设计
本模块主要是教师对教学课程维护之后、学生用户查看课程、对课程进行学习对学习资料的下载和在线阅览。
(3)在线签到模块设计
本模块具有如下功能:学生用户登录微信小程序端之后,点击签到。
(4)在线互动设计
本模块具有如下功能:学生用户登录系统之后,进行互动交流。
(5)试题练习模块设计
本模块具有如下功能:学生用户对练习习题的学习和反复练习。
(6)教师、管理员模块设计
本模块具有如下功能:管理员登陆、管理员分权、教师发布课程信息管理、班级管理、学生管理、练习试卷管理、系统管理等等。
3.4 系统数据库设计
针对以上的需求分析,得出主要表结构的关系,其中用户与课程是多对多的关系。课程与课程附件是一对多的关系,课程与评论是一对多的关系。其主要的ER图设计如下图所示。
根据该系统的逻辑功能,构建出的数据库系统表如下:
表3.1 Admin(管理员信息表)
字段名 | 类型 | 是否为空 | 说明 |
id | bigint(11) | NO | 管理员Id |
username | varchar(255) | NO | 用户名 |
password | varchar(255) | NO | 密码 |
role | varchar(255) | NO | 权限 |
add_time | datetime | YES | 添加时间 |
is_enable | tinyint(1) | NO | 是否可用 |
nick_name | varchar(255) | YES | 昵称 |
表3.2 Banner(轮播图表)
字段名 | 类型 | 是否为空 | 说明 |
id | bigint(11) | NO | 轮播图Id |
img_url | varchar(255) | NO | 图片URL |
link_url | varchar(255) | YES | 链接URL |
add_time | datetime | YES | 添加时间 |
type | varchar(255) | YES | 类型 |
sort_order | int(9) | YES | 排序 |
banner_desc | varchar(255) | YES | 轮播图描述 |
表3.3 Att_class(教学课程属性字段名表)
字段名 | 类型 | 是否为空 | 说明 |
id | bigint(11) | NO | 属性Id |
name | varchar(30) | NO | 名字 |
sort_order | int(4) | YES | 排序 |
表3.4 Cart(课程分类表)
字段名 | 类型 | 是否为空 | 说明 |
id | bigint(11) unsigned | NO | 购物车Id |
goods_id | bigint(11) | NO | 教学课程Id |
user_id | bigint(11) | NO | 用户Id |
goods_name | varchar(255) | NO | 教学课程名字 |
goods_price | float unsigned | NO | 教学课程价格 |
goods_number | int(9) | NO | 教学课程库存 |
goods_attr | varchar(255) | YES | 教学课程属性 |
goods_attrs_id | varchar(255) | YES | 教学课程属性Id |
add_time | datetime | YES | 添加时间 |
goods_attrs_price | varchar(255) | YES | 教学课程附加价格 |
表3.5 Category(教学课程分类表)
字段名 | 类型 | 是否为空 | 说明 |
id | bigint(11) | NO | 分类Id |
name | varchar(30) | NO | 分类名 |
c_desc | varchar(255) | YES | 分类描述 |
pid | varchar(30) | NO | 分类Pid |
sort_order | int(4) | YES | 排序 |
is_show | tinyint(1) | NO | 是否展示 |
表3.6 Freight_model(试卷表)
字段名 | 类型 | 是否为空 | 说明 |
id | bigint(11) | NO | 模板ID |
name | varchar(100) | NO | 模板名 |
is_free | tinyint(1) | NO | 是否免费 |
province | varchar(20) | NO | 省 |
position | varchar(50) | NO | 位置坐标 |
local_json | varchar(500) | YES | 本地运输json |
remote_json | varchar(500) | YES | 远程运输json |
city | varchar(20) | NO | 城市 |
county | varchar(20) | NO | 区县 |
detail | varchar(100) | YES | 详细信息 |
表3.7 Message(后台消息提示表)
字段名 | 类型 | 是否为空 | 说明 |
id | bigint(11) | NO | 消息Id |
is_read | tinyint(1) | NO | 是否阅读 |
message | varchar(1000) | NO | 消息内容 |
add_time | datetime | YES | 添加时间 |
message_type | varchar(255) | YES | 消息类别 |
sender | varchar(255) | YES | 发送者 |
表3.8 Sys_config(系统配置表)
字段名 | 类型 | 是否为空 | 说明 |
id | int(9) | NO | 配置Id |
variate_name | varchar(255) | NO | 配置名字 |
variate_value | varchar(255) | NO | 配置值 |
variate_desc | varchar(255) | YES | 配置描述 |
表3.9 Users(用户表)
字段名 | 类型 | 是否为空 | 说明 |
id | bigint(11) | NO | 用户ID |
openid | varchar(100) | NO | OpendID |
nick_name | varchar(100) | NO | 昵称 |
avatar_url | varchar(255) | NO | 头像链接 |
gender | tinyint(1) | NO | 性能 |
province | varchar(50) | NO | 省份 |
city | varchar(50) | NO | 城市 |
Country | varchar(50) | NO | 国家 |
add_time | datetime | YES | 添加时间 |
3.5 本章小结
本章主要介绍了系统的分析和设计。详细介绍了系统架构设计,业务功能模块设计和数据库设计,并用图表的方式辅助展示。