基于微信小程序的考研交流平台的设计与实现

3 系统需求分析与设计

3.1 系统需求分析

本系统基于微信小程序,实现教学互动软件系统是本文的目标,主要涉及到的系统角色分为学生、教师、管理员。系统角色主要有管理员,普通用户两种角色构成。

普通用户有如下几个核心需求:

  1. 学生用户可以在小程序登录,注册。
  2. 学生用户可以在小程序通过分类查看教学课程列表。
  3. 学生用户可以在小程序主页查看轮播图。
  4. 用户可以在小程序断签到、学习课程、参加作业练习等。
  5. 学生用户可以进行在线互动。

教师端有如下几个核心需求:

  1. 老师可以添加课程信息,发布课程学习的资料入视频或者PPT或者其他。
  2. 老师可以发布试卷给学生学习练习。
  3. 老师可以进行班级管理、学生管理。
  4. 系统管理员可以管理试卷。
  5. 系统管理员可以查看系统用户

根据上面的需求分析,结合具体实际情况,该系统主要由后台管理系统和教学互动小程序构成,通过分布式架构来构建此系统。

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 本章小结

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

相关推荐
丁总学Java3 小时前
微信小程序-npm支持-如何使用npm包
前端·微信小程序·npm·node.js
工业互联网专业5 小时前
毕业设计选题:基于ssm+vue+uniapp的校园水电费管理小程序
vue.js·小程序·uni-app·毕业设计·ssm·源码·课程设计
WEL测试6 小时前
【数学二】一元函数微分学-导数的计算-复合函数的求导法则、反函数求导法则、隐函数求导法则
考研·高数·求导·数学二·隐函数
说私域8 小时前
社群团购中的用户黏性价值:以开源小程序多商户AI智能名片商城源码为例
人工智能·小程序
whltaoin10 小时前
【408计算机考研课程】-C语言认知
c语言·考研
迷雾yx12 小时前
开发微信小程序 基础02
微信小程序·小程序
迷雾yx12 小时前
开发微信小程序 基础03
微信小程序·小程序
说私域13 小时前
地理定位营销与开源AI智能名片O2O商城小程序的融合与发展
人工智能·小程序
大二转专业16 小时前
408算法题leetcode--第24天
考研·算法·leetcode
小雨cc5566ru1 天前
uniapp+Android面向网络学习的时间管理工具软件 微信小程序
android·微信小程序·uni-app