基于微信平台的报刊订阅小程序的设计与实现ssm+论文源码调试讲解

4 系统设计

系统在设计的过程中,必然要遵循一定的原则才可以,胡乱设计是不可取的。首先用户在使用过程中,能够直观感受到功能操作的便利性,符合正常思维逻辑的操作,这才是系统好用的一个开端,给使用者第一印象就是这个系统设计的相当不错。

4.1 系统设计原则

系统遵循设计原则进行开发,会有很多可以预料到的好处,只要遵循了设计原则,那么开发出来的系统必然是有质量保证的。

首先第一条原则就是安全性原则:程序必须设定角色管理,不同的角色有不同的功能模块,不同的角色登录都需要输入相对应的账号和密码,否则不允许进行操作相对应的权限。每个用户登录只能修改自己的密码,不需要对别的账号进行密码或者其他资料的修改,否则就违背了安全性原则的设定。

其次第二条原则就是易用性原则:符合安全性只是功能的符合,不代表操作就符合,所以要设定易用性原则。易用性原则就是规定程序符合操作流程,正常人的思维定向为基础,在不违背程序运行逻辑定义的情况下,必须使用简单,操作规范,让每个用户使用起来都能看到页面,就能感知功能模块的作用,短时间的就能使用程序,达到易用效果。

再次第三条原则就是实用性原则:实用性代表着花里胡哨的功能必须抛弃,尽量符合数据处理的简洁性,不仅需要这样进行设定,还需要有预知性,系统后期可能会出现的功能模块尽量要解耦,与程序设定要模块化体现,这样才能达到扩展性。

第四条原则就是准确性原则:准确性原则的唯一定义就是准确,包含数据输入格式的准确,数据处理的准确,以及数据存储的准确。程序里面关于数据准确才有存在的意义,如果一堆不相干的数据存在是没有任何用处的,甚至会产生各种问题,所以必须要保证数据的准确性。

第五条原则是易维护原则:易维护代表着程序运行必须是可控的状态,如果不可控出现各种问题,那么所有的工作都是空谈。程序开发中对于各种程序判定异常,必须有统一的处理模式,异常是程序开发中不可避免的,但是可以对出现的异常进行抛出,有助于程序异常处理的复盘,只要每个异常都能定位准确,那么代表程序设计是趋于完美的,维护起来会更加的方便,只要有助于程序维护的都必须给予支持。

4.2 功能模块设计

对管理员具体功能的设计结果将以图4.1所示的管理员功能结构图来进行体现。管理员对于基于微信平台的报刊订阅小程序操作的功能包括对报刊信息,报刊订阅信息,订阅发送信息,报刊论坛等进行管理。

图4.1 管理员功能结构图

对用户具体功能的设计结果将以图4.2所示的用户功能结构图来进行体现。用户对于基于微信平台的报刊订阅小程序操作的功能包括订阅报刊,查看订阅报刊的内容,发布关于报刊的帖子,在报刊论坛评论帖子,查看帖子等。

图4.2 用户功能结构图

4.3 数据库设计

用户通过系统的功能操作来进行数据交互,包括数据的添加,数据的更新,数据的删除,数据的查询等基本功能操作,表面上虽然是操作系统界面提供的功能,但是实际上系统的这些数据是在数据库当中进行访问与操作的。目前市场上可供选择的存储数据的数据库有很多,除了简单版的Access之外,还有SQL Server,DB2,Informix,MySQL等关系型数据库可供选择,由于关系型数据库具有固定的表结构,以及对数据一致性要求比较强,所以相比没有固定表结构以及具有灵活的数据格式的非关系型数据库而言,在程序配套数据库的选择中,关系型数据库的使用率更高。本系统选择MySQL来存放数据,其相关理论以及技术在经过了很长时间的发展之后,变得非常成熟,各大网络平台都公开分享其开发源码,而且其对计算机的配置要求很低,不需要过多内存进行安装,很符合本系统对于数据库的选择要求。

4.3.1 数据库E-R图

本节需要对系统中存放在数据库中的数据进行充分分析,对数据的实体,实体特征,联系等进行确定,然后通过概念模型的表示方法即E-R图进行表达,在E-R图绘制工具中,选择椭圆,菱形框,矩形等形状表达实体属性,实体间联系,实体这些信息,使用实线段将这些形状进行连接即可。初步完成E-R图之后,需要进行检查,及时进行有误数据的更改,删除实体间存在的冗余联系,删除E-R图中冗余的数据,最终要展示一个内容准确的E-R图。

(1)报刊订阅包括的属性有订阅编号,订阅价格,报刊类型等。其属性图如下。

图4.4 报刊订阅实体属性图

(2)管理员包括的属性有密码,角色,用户名等。其属性图如下。

图4.5 管理员实体属性图

(3)报刊包括的属性有报刊名称,报刊封面,报刊类型等。其属性图如下。

图4.6 报刊实体属性图

(4)用户包括的属性有用户姓名,头像,手机号码等。其属性图如下。

图4.7 用户实体属性图

(5)设计的各实体间关系E-R图如下。

图4.8 实体间关系E-R图

4.3.2 数据库表结构

在指定的数据库里面对数据表进行创建命名,然后设计各个数据表的存储结构,需要对该数据库的操作非常熟悉,并且还需要学习并掌握一定的数据表设计方面的知识,比如数据命名,作为系统的开发人员,为了避免程序运行产生乱码现象以及为了确保系统的正常运行,在对数据表进行命名时,一般都是采用英文名称,同时在对数据表的字段进行编辑时,也是采用英文的方式进行,为了方便今后对数据表的设计内容进行更改或查看,对一些比较重要的字段都会进行中文备注,或者是使用中文进行字段描述。设计期间,也需要对各个字段选择合适的数据类型以及设置匹配的取值范围,当一张数据表设计完成之后,还要对该表的主键进行标注,就是为了确保该数据表的唯一性与独立性。

表4.1 用户表

字段 注释 类型 空
id (主键) 主键 bigint(20) 否
addtime 创建时间 timestamp 否
yonghuzhanghao 用户账号 varchar(200) 否
mima 密码 varchar(200) 否
yonghuxingming 用户姓名 varchar(200) 是
touxiang 头像 varchar(200) 是
xingbie 性别 varchar(200) 是
shoujihaoma 手机号码 varchar(200) 是

表4.2 报刊类型表

字段 注释 类型 空
id (主键) 主键 bigint(20) 否
addtime 创建时间 timestamp 否
baokanleixing 报刊类型 varchar(200) 是

表4.3 报刊信息表

字段 注释 类型 空
id (主键) 主键 bigint(20) 否
addtime 创建时间 timestamp 否
baokanmingcheng 报刊名称 varchar(200) 是
fengmian 封面 varchar(200) 是
baokanleixing 报刊类型 varchar(200) 是
dingyuejiage 订阅价格 float 是
baokanxiangqing 报刊详情 longtext 是
clicktime 最近点击时间 datetime 是
clicknum 点击次数 int(11) 是

表4.4 订阅发送表

字段 注释 类型 空
id (主键) 主键 bigint(20) 否
addtime 创建时间 timestamp 否
dingyuebianhao 订阅编号 varchar(200) 是
baokanmingcheng 报刊名称 varchar(200) 是
fengmian 封面 varchar(200) 是
baokanleixing 报刊类型 varchar(200) 是
baokanneirong 报刊内容 longtext 是
baokanriqi 报刊日期 date 是
yonghuzhanghao 用户账号 varchar(200) 是
yonghuxingming 用户姓名 varchar(200) 是
userid 用户id bigint(20) 是

表4.5 报刊信息评论表

字段 注释 类型 空
id (主键) 主键 bigint(20) 否
addtime 创建时间 timestamp 否
refid 关联表id bigint(20) 否
userid 用户id bigint(20) 否
nickname 用户名 varchar(200) 是
content 评论内容 longtext 否
reply 回复内容 longtext 是

表4.6 报刊论坛表

字段 注释 类型 空
id (主键) 主键 bigint(20) 否
addtime 创建时间 timestamp 否
title 帖子标题 varchar(200) 是
content 帖子内容 longtext 否
parentid 父节点id bigint(20) 是
userid 用户id bigint(20) 否
username 用户名 varchar(200) 是
isdone 状态 varchar(200) 是

表4.7 订阅公告表

字段 注释 类型 空
id (主键) 主键 bigint(20) 否
addtime 创建时间 timestamp 否
title 标题 varchar(200) 否
introduction 简介 longtext 是
picture 图片 varchar(200) 否
content 内容 longtext 否

表4.8 收藏表

字段 注释 类型 空
id (主键) 主键 bigint(20) 否
addtime 创建时间 timestamp 否
userid 用户id bigint(20) 否
refid 收藏id bigint(20) 是
tablename 表名 varchar(200) 是
name 收藏名称 varchar(200) 否
picture 收藏图片 varchar(200) 否
type 类型(1:收藏,21:赞,22:踩) varchar(200) 是
inteltype 推荐类型 varchar(200) 是

表4.9 管理员表

字段 注释 类型 空
id (主键) 主键 bigint(20) 否
username 用户名 varchar(100) 否
password 密码 varchar(100) 否
role 角色 varchar(100) 是
addtime 新增时间 timestamp 否

表4.10 报刊订阅表

字段 注释 类型 空
id (主键) 主键 bigint(20) 否
addtime 创建时间 timestamp 否
dingyuebianhao 订阅编号 varchar(200) 是
baokanmingcheng 报刊名称 varchar(200) 是
fengmian 封面 varchar(200) 是
baokanleixing 报刊类型 varchar(200) 是
dingyuejiage 订阅价格 float 是
dingyueshijian 订阅时间 datetime 是
yonghuzhanghao 用户账号 varchar(200) 是
yonghuxingming 用户姓名 varchar(200) 是
shoujihaoma 手机号码 varchar(200) 是
crossuserid 跨表用户id bigint(20) 是
crossrefid 跨表主键id bigint(20) 是
ispay 是否支付 varchar(200) 是
userid 用户id bigint(20) 是

5 系统实现

下面主要是通过功能实现界面截图的形式,并且运用文字来描述功能实现界面的内容。

5.1 管理员功能实现

5.1.1 报刊信息管理

该功能主要用于实现对报刊基本信息的管理,报刊信息管理界面的运行效果见图5.1。在此界面,管理员对包含有报刊名称,订阅价格等数据的报刊信息进行新增,查看报刊信息的评论,更改报刊信息等。

图5.1 报刊信息管理界面

5.1.2 报刊订阅管理

该功能主要用于实现对报刊订阅基本信息的管理,报刊订阅管理界面的运行效果见图5.2。在此界面,管理员为订阅报刊的用户发送订阅信息,查看用户对订阅报刊的支付信息,需要删除的报刊订阅信息可以删除。

图5.2 报刊订阅管理界面

5.1.3 订阅发送管理

该功能主要用于实现对订阅发送基本信息的管理,订阅发送管理界面的运行效果见图5.3。在此界面,管理员查询已经发送给用户的订阅报刊的信息,查询条件是根据报刊名称查询,发现有错误数据的订阅发送信息可以修改。

图5.3 订阅发送管理界面

5.1.4 用户管理

该功能主要用于实现对用户基本信息的管理,用户管理界面的运行效果见图5.4。在此界面,管理员更改包括用户手机号码在内的用户资料,删除需要删除的用户等。

图5.4 用户管理界面

5.1.5 报刊论坛

该功能主要用于实现对报刊论坛基本信息的管理,报刊论坛界面的运行效果见图5.5。在此界面,管理员查看用户关于报刊方面的交流信息,删除一些不合规的关于报刊的交流信息。

图5.5 报刊论坛界面

5.2 用户功能实现

5.2.1 报刊信息

报刊信息界面的运行效果见图5.6。在此界面,用户收藏喜欢的报刊,订阅需要的报刊,查看报刊的订阅价格,评论报刊等。

图5.6 报刊信息界面

5.2.2 报刊订阅

报刊订阅界面的运行效果见图5.7。在此界面,用户查看已经提交的报刊订阅信息,并支付订阅报刊的价格。

图5.7 报刊订阅界面

5.2.3 订阅发送

订阅发送界面的运行效果见图5.8。在此界面,每当管理员发送用户订阅的报刊内容之后,用户可以及时查看报刊内容。

图5.8 订阅发送界面

5.2.4 我的发帖

我的发帖界面的运行效果见图5.9。在此界面,用户新增报刊方面的帖子,管理自己发布的帖子,比如修改帖子,删除需要删除的自己发布的帖子,查看该帖子的用户评论。

图5.9 我的发帖界面

5.2.5 报刊论坛

报刊论坛界面的运行效果见图5.10。在此界面,用户查询报刊论坛的帖子,每条帖子都能够让用户查看,并且允许用户查看之后,评论帖子。

图5.10 报刊论坛界面

相关推荐
YOLO数据集集合10 分钟前
EvoAgent:面向PR研发治理的自进化Multi-Agent Harness系统
java·开发语言·目标检测·agent·自进化
java1234_小锋12 分钟前
【技术专题】Mysql8 数据库 - Mysql8 数据类型简介
数据库·mysql
知行EDI30 分钟前
知行之桥 MaBang 端口使用指南——Create Order 订单创建篇
java·服务器·数据库
笑鸿的学习笔记31 分钟前
C++笔记之大块顺序写
java·c++·笔记
成旭先生41 分钟前
【2026】企业信息模糊查询 API 实战:名称、注册号、统一社会信用代码、企业类型与法人一次查全
服务器·数据库·数据服务
打工仔折腾 AI44 分钟前
从 Demo 到生产级 Agent:8 个关键设计机制与 Python 实现拆解
java·jvm·人工智能·后端·python·langchain·ai agent 实战
JosieBook1 小时前
【数据库】MySQL 实战精通系列 · 第10篇:分库分表与分布式事务实战
数据库·分布式·mysql
我叫洋洋2 小时前
Cadence CIS 元器件库合并实战:3000+ 焊盘、156 个符号零冲突并入自有库
数据库·单片机·嵌入式硬件·oracle·电路
AI 编程助手GPT2 小时前
GPT-6 Luna (Batch) 批量处理性能与质量深度评测
数据库·gpt·batch
殷色玫瑰2 小时前
C/C++ 内存管理详解:从内存分布到 new/delete 底层原理
java·linux·c语言·c++