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 本章小结
本章主要介绍了系统的分析和设计。详细介绍了系统架构设计,业务功能模块设计和数据库设计,并用图表的方式辅助展示。