4 系统设计
4.1 系统架构设计
微信小程序的中医“知源”系统的开发对管理模块和系统使用的数据库进行分析,编写代开发,规划和操作是构建信息管理应用程序的必要三步曲,它决定了系统是否能够真正实现预设功能以及是否可以在成功设计后实施。在开发过程中,每个阶段必须严格按照线性顺序进行开发,并且在相应阶段生成的每个工作都可以通过技术进行验证和检查。确保一个阶段完成后是正确的,不会造成下一阶段拖拽现象,使系统完成设计功能后得到保证。
从微信小程序的中医“知源”小程序的成功开发经验来看,上述方法效果最为明显,最大程度地降低了系统开发的复杂性。如下图所示。
图4-1开发系统流程图
4.2 系统总体设计
中医“知源”小程序总体分为前台用户模块和后台管理员模块。
两个模块表现上是分别独立存在,但是访问的数据库是一样的。每一个模块的功能都是根据先前完成的需求分析,并查阅相关资料后整理制作的。
综上所述,系统功能结构图如下图所示。
图4-2 系统功能结构图
4.3 系统功能设计
评论模块:评论区促进用户之间的交流,发表个人意见、建议、看法等,在评论区可以查看已有的评论记录,发布新评论,可以展示个人动态头像,个人匿名昵称等。
公告信息模块:可分为公告信息浏览、公告信息检索、公告信息维护三个模块,管理员对公告信息有维护的权限,发布新的公告信息、更新已有的公告信息等。
养生知识管理模块:养生知识管理分为养生知识添加、修改和养生知识订购。养生知识信息由管理员进行修改、添加、删除操作;养生知识订购由普通用户来执行。
中医典籍管理模块:中医典籍管理分为中医典籍添加、修改和中医典籍在线咨询。中医典籍信息由管理员进行修改、添加、删除操作;中医典籍在线咨询由普通用户来执行。
疾病防治管理模块:疾病防治管理分为疾病防治添加、修改和删除。疾病防治信息由管理员进行修改、添加、删除操作。
4.4 数据库设计
4.4.1 数据需求分析
从前面可以分析到数据库中最重要的是中医典籍信息,养生知识信息,疾病防治信息,同时存在评论信息。分析可以得到如下数据描述:
平台用户:用于记录用户的各种信息,包括用户名、密码、姓名、性别、地址、邮箱、联系方式等数据项。
管理员:记录管理员的登录信息。包括用户名,密码,权限等数据项。
中医典籍:存储各种中医典籍信息。包括典籍名称、类别、作者、具体内容、主治疾病、图片等数据项。
养生知识:存放给养生知识的内容,包括养生知识标题、类别、作者、具体内容、养生范围、养生知识图片等数据项。
疾病防治:存放给疾病防治的内容,包括疾病防治标题、疾病名称、防治类别、防治方法、疾病防治图片等数据项。
4.4.2 数据库概念设计
根据前面的数据流程图,结合系统的功能模块设计,设计出符合系统的各信息实体。
系统ER图如下图所示。
图4-3 系统ER图
4.4.3 数据库表设计
中医“知源”小程序所拥有的数据表有以下:用户信息表,中医典籍信息表,养生知识信息表,疾病防治信息表。
由于数据表较多,只展示系统主要数据表,如下表所示。
表access_token (登陆访问时长)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
---|---|---|---|---|---|---|---|---|
1 |
token_id |
int |
10 |
0 |
N |
Y |
临时访问牌ID | |
2 |
token |
varchar |
64 |
0 |
Y |
N |
临时访问牌 | |
3 |
info |
text |
65535 |
0 |
Y |
N | ||
4 |
maxage |
int |
10 |
0 |
N |
N |
2 |
最大寿命:默认2小时 |
5 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
6 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
7 |
user_id |
int |
10 |
0 |
N |
N |
0 |
用户编号: |
表article (文章:用于内容管理系统的文章)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
---|---|---|---|---|---|---|---|---|
1 |
article_id |
mediumint |
8 |
0 |
N |
Y |
文章id:[0,8388607] | |
2 |
title |
varchar |
125 |
0 |
N |
Y |
标题:[0,125]用于文章和html的title标签中 | |
3 |
type |
varchar |
64 |
0 |
N |
N |
0 |
文章分类:[0,1000]用来搜索指定类型的文章 |
4 |
hits |
int |
10 |
0 |
N |
N |
0 |
点击数:[0,1000000000]访问这篇文章的人次 |
5 |
praise_len |
int |
10 |
0 |
N |
N |
0 |
点赞数 |
6 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
7 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
8 |
source |
varchar |
255 |
0 |
Y |
N |
来源:[0,255]文章的出处 | |
9 |
url |
varchar |
255 |
0 |
Y |
N |
来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 |
tag |
varchar |
255 |
0 |
Y |
N |
标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 |
content |
longtext |
2147483647 |
0 |
Y |
N |
正文:文章的主体内容 | |
12 |
img |
varchar |
255 |
0 |
Y |
N |
封面图 | |
13 |
description |
text |
65535 |
0 |
Y |
N |
文章描述 |
表article_type (文章分类)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
---|---|---|---|---|---|---|---|---|
1 |
type_id |
smallint |
5 |
0 |
N |
Y |
分类ID:[0,10000] | |
2 |
display |
smallint |
5 |
0 |
N |
N |
100 |
显示顺序:[0,1000]决定分类显示的先后顺序 |
3 |
name |
varchar |
16 |
0 |
N |
N |
分类名称:[2,16] | |
4 |
father_id |
smallint |
5 |
0 |
N |
N |
0 |
上级分类ID:[0,32767] |
5 |
description |
varchar |
255 |
0 |
Y |
N |
描述:[0,255]描述该分类的作用 | |
6 |
icon |
text |
65535 |
0 |
Y |
N |
分类图标: | |
7 |
url |
varchar |
255 |
0 |
Y |
N |
外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
9 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
表auth (用户权限管理)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
---|---|---|---|---|---|---|---|---|
1 |
auth_id |
int |
10 |
0 |
N |
Y |
授权ID: | |
2 |
user_group |
varchar |
64 |
0 |
Y |
N |
用户组: | |
3 |
mod_name |
varchar |
64 |
0 |
Y |
N |
模块名: | |
4 |
table_name |
varchar |
64 |
0 |
Y |
N |
表名: | |
5 |
page_title |
varchar |
255 |
0 |
Y |
N |
页面标题: | |
6 |
path |
varchar |
255 |
0 |
Y |
N |
路由路径: | |
7 |
position |
varchar |
32 |
0 |
Y |
N |
位置: | |
8 |
mode |
varchar |
32 |
0 |
N |
N |
_blank |
跳转方式: |
9 |
add |
tinyint |
3 |
0 |
N |
N |
1 |
是否可增加: |
10 |
del |
tinyint |
3 |
0 |
N |
N |
1 |
是否可删除: |
11 |
set |
tinyint |
3 |
0 |
N |
N |
1 |
是否可修改: |
12 |
get |
tinyint |
3 |
0 |
N |
N |
1 |
是否可查看: |
13 |
field_add |
text |
65535 |
0 |
Y |
N |
添加字段: | |
14 |
field_set |
text |
65535 |
0 |
Y |
N |
修改字段: | |
15 |
field_get |
text |
65535 |
0 |
Y |
N |
查询字段: | |
16 |
table_nav_name |
varchar |
500 |
0 |
Y |
N |
跨表导航名称: | |
17 |
table_nav |
varchar |
500 |
0 |
Y |
N |
跨表导航: | |
18 |
option |
text |
65535 |
0 |
Y |
N |
配置: | |
19 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
20 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
表collect (收藏)
5 系统实现
5.1 用户前台功能(前端)
用户注册模块
用户在填写数据的时候必须与注册页面上的验证相匹配否则会注册失败,注册页面的表单验证是通过JavaScript进行验证的,用户名的长度必须在6到18之间,邮箱必须带有@符号,密码和密码确认必须相同,你输入的密码,系统会根据你输入密码的强度给出指定的值,电话号码和身份证号码必须要求输入格式与生活相符合,当你前台验证通过的时候你点击注册,表单会将你输入的值通过name值传递给后台并保存到数据库中。
用户注册流程图如下图所示。
图5-1用户注册流程图
注册,通过填写用户名、密码、姓名、手机等信息,输入完成后选择提交即可注册成功,如下图所示。
图5-2注册界面图
用户登录模块
系统的登录窗口是用户的入口,用户只有在登录成功后才可以进入访问。通过在登录提交表单,后台处理判断是否为合法用户,进行页面跳转,进入系统中去。
登录合法性判断过程:用户输入账号和密码后,系统首先确定输入输入数据合法性,然后在login.jsp页面发送登录请求,调用src下的mainctrl类的dopost方法来验证。
用户登录模块的IPO如下所示:
输入:用户名和密码。
处理:
1)检测用户输入的账号、密码是否正确及在数据库已对应存在。
2)从数据库中提取记录,并储存在本地的session中(timeout默认=30min)。
3)根据用户名,将其显示在系统首页上。
输出:是否成功的信息。
登录流程图如下所示。
图5-3登录流程图
系统登录界面如下所示。
图5-4系统登录界面
用户首页模块
用户登录进入首页,可以进行考研资料分享、考研资讯查看等功能模块的查看与操作,如下图所示。
图5-5系统首页界面图
中医典籍模块
用户点击中医典籍页面,可以看到各类的医疗中医典籍信息,包括典籍名称、典籍类型、典籍简介等,也可以对典籍进行点赞、收藏、发表评论等操作。
中医典籍展示界面如下图所示。
图5-6中医典籍展示界面图
养生知识信息模块
用户点击养生知识页面,可以看到所有的养生知识列表信息,点击某个养生知识详情可以看到养生知识的标题、类型、作者、点赞数等,也可以对养生知识进行点赞、收藏、发表评论等操作。
养生知识信息展示界面如下图所示。
图5-7养生知识信息展示界面图
疾病防治信息模块
用户点击疾病防治页面,可以看到各类的疾病防治信息,包括疾病防治名称、类型、症状简介、疾病反应等,也可以对疾病防治信息进行点赞、收藏、发表评论等操作。
疾病防治信息展示界面如下图所示。
图5-8疾病防治信息展示界面图
5.2 管理员功能模块(后端)
管理员登录首页模块
管理员登录,管理员通过输入用户名、密码,选择角色并点击登录进行系统登录操作,如下图所示。
图5-9管理员登录界面图
在管理员功能页面可以查看系统首页、个人中心、用户管理、中医典籍信息管理、零售中医典籍管理、养生知识分类管理、养生知识订购管理、医保类型管理、参保信息管理、缴费信息管理、系统管理等内容进行相对应操作,如下图所示。
图5-10管理员功能界面图
用户管理模块
用户管理,在用户管理页面可以查看用户名、姓名、性别、头像、用户积分等信息,并可根据需要进行修改或删除操作,如下图所示。
图5-11用户管理界面图
资源管理模块
资源管理,分为养生知识和资讯分类列表。养生知识信息由管理员进行修改、添加、删除操作。
养生知识添加如下图所示。
图5-12养生知识添加界面图
养生知识管理如下图所示。
图5-13养生知识管理界面图
中医典籍管理模块
根据需求,需要对中医典籍进行添加、删除或修改详情信息。删除或修改中医典籍时,系统根据中医典籍的状态判定为可删除状态下,才会给出删除和修改链接,点击删除链接按钮时,请求到达后台,还会先查询中医典籍状态再次做出判定能否删除。点击修改链接按钮时,会跳转到修改信息的页面,重新填写好数据后,数据提交到后台会对数据库中相应的记录做出修改。
添加中医典籍时,会给出数据填写的页面,该页面根据填写好的中医典籍编号同样会事先发送Ajax请求查询编号是否已存在,数据填写好之后提交到后台,会调用相关服务在数据库中插入记录。
中医典籍管理流程图如下图所示。
图5-14中医典籍管理流程图
中医典籍添加页面设计效果如下图所示。
图5-15中医典籍添加界面
中医典籍管理页面效果如下图所示。
图5-16中医典籍管理界面
饮食养生管理模块
此页面的关键是编写饮食养生信息,包括饮食养生编号,名称,详情等。单击提交按钮以完成信息的添加。如果未写入完整的饮食养生信息,例如,如果未写入饮食养生编号,系统将给出相应的错误提示,并且无法成功输入。数据以概念的形式以onsubmit =“return checkForm()”的形式写入以进行检查,checkForm()函数是一种用于写入数据的不同类型的校对方法,是不是为空也是经过form表单中的onsubmit=”return checkForm()来检查。
管理员点击左侧菜单“饮食养生”,页面跳转到饮食养生信息管理外观,调用后台养生知识查询所有饮食养生信息。并将信息密封到数据集合List,绑定到请求对象,然后页面跳转到相应的Java,显示出饮食养生信息,单击删除按钮完成饮食养生信息的删除。
饮食养生管理流程图如下图所示。
图5-17饮食养生管理流程图
养生知识信息添加界面如下图所示。
图5-18养生知识信息添加界面
饮食养生信息管理界面如下图所示。
图5-19饮食养生信息管理界面
疾病防治管理模块
此页面的关键是编写疾病防治信息,包括疾病防治症状,名称,详情等。单击提交按钮以完成信息的添加。如果未写入完整的疾病防治信息,例如,如果未写入疾病防治编号,系统将给出相应的错误提示,并且无法成功输入。数据以概念的形式以onsubmit =“return checkForm()”的形式写入以进行检查,checkForm()函数是一种用于写入数据的不同类型的校对方法,是不是为空也是经过form表单中的onsubmit=”return checkForm()来检查。
管理员点击左侧菜单“疾病防治”,页面跳转到疾病防治信息管理外观,调用后台疾病防治查询所有疾病防治信息。并将信息密封到数据集合List,绑定到请求对象,然后页面跳转到相应的Java,显示出疾病防治信息,单击删除按钮完成疾病防治信息的删除。
疾病防治信息添加界面如下图所示。
图5-20疾病防治信息添加界面
疾病防治信息管理界面如下图所示。
图5-21疾病防治信息管理界面