第4章 系统设计
4.1 系统设计的原则
在系统设计过程中,也需要遵循相应的设计原则,这些设计原则可以帮助设计者在短时间内设计出符合设计规范的设计方案。设计原则主要有可靠性,安全性,可定制化,可扩展性,可维护性,可升级性以及客户体验等原则。下面就对这些原则进行简要阐述。
可靠性:一个软件是否可靠决定了其是否被用户使用,设计不可靠的软件,用户很容易就遗弃;
安全性:程序软件承担了信息的保存与管理等事务,安全性不足的软件会导致使用者承担巨大的损失;所以系统安全也是需要考虑进入的;
可定制化:市场环境从来都不是一直固定不变,面对客户群体的改变,以及使用环境的改变,市场需求的改变等因素,程序软件也要易于调整以适应各种变化;
可扩展性:程序软件在运行使用期间,也需要及时引进当下的新技术来进行系统优化,主要就是在系统功能层面,系统性能层面上进行相应的扩展,只有这样才能让系统在实际生活中继续占有市场;
可维护性:程序软件的维护需要一定量的资金,不管是排除现有程序错误,还是变更软件的现有需求,都需要在软件技术上投入一定资金,所以易于维护的软件程序就可以降低技术层面的资金消耗;
可升级性:程序软件的投入使用,会面临用户数量增多的情况,用户对软件的使用率也会提升,所以系统面临这种情况,仍然需要通过升级保持性能的合理,这样才能够适应市场;
客户体验:设计出来的程序软件在界面上不能够太复杂,要遵循界面设计的原理设计出简单,方便操作的功能操作界面,让用户易于接受软件,并乐于使用软件提供的功能。
4.2 系统结构设计
在系统结构设计上,经综合考虑还是选择比C/S更省资金的微信小程序架构模式,现如今浏览器已经实现了普及,并在技术上逐渐完善和成熟,它在节约软件开发成本的基础上,还能实现原本用专业软件操作才能实现的强大功能。总之,小程序架构是当下全新的,认可度高的系统构造技术。系统结构设计图通过绘制,效果展示如下:

图4-1 系统结构设计图
4.3功能结构设计
在管理员功能模块确定下来的基础上,对管理员各个功能进行设计,确定管理员功能的详细模块。绘制的管理员功能结构见下图。

图4.3 管理员功能结构图
4.4数据库设计
与功能结构设计一样,数据库设计也是程序开发不可避免的设计环节,数据库设计最主要的目的就是帮助运行程序存储相应的数据信息。数据库设计包含的内容有数据表结构的设计,也包含了数据库E-R图的设计。
4.4.1 数据库E-R图
在绘制E-R图之前,先要找出数据库的实体,明确各个实体具有的属性,比如用户信息这个实体,它具备的属性包括了用户的姓名属性,用户的密码属性,用户的创建时间属性等,所以明确了用户这个实体,以及用户实体具备的属性之后,就需要根据这些信息绘制用户实体对应的实体属性图了。绘制软件选用当下认可度高,使用范围广,操作便利的微软旗下的Visio工具。
(1)下图是用户实体和其具备的属性。

用户实体属性图
(2)下图是研学留言实体和其具备的属性。

研学留言实体属性图
(3)下图是研学报名实体和其具备的属性。

研学报名实体属性图
(4)下图是字典表实体和其具备的属性。

字典表实体属性图
(5)下图是景点实体和其具备的属性。

景点实体属性图
(6)下图是景点预约实体和其具备的属性。

景点预约实体属性图
(7)下图是景点收藏实体和其具备的属性。

景点收藏实体属性图
(8)下图是购物车实体和其具备的属性。

购物车实体属性图
(9)下图是客服聊天实体和其具备的属性。

客服聊天实体属性图
(10)下图是论坛实体和其具备的属性。

论坛实体属性图
(11)下图是商品实体和其具备的属性。

商品实体属性图
(12)下图是研学收藏实体和其具备的属性。

研学收藏实体属性图
(13)下图是景点评价实体和其具备的属性。

景点评价实体属性图
(14)下图是商品收藏实体和其具备的属性。

商品收藏实体属性图
(15)下图是商品评价实体和其具备的属性。

商品评价实体属性图
(16)下图是商品订单实体和其具备的属性。

商品订单实体属性图
(17)下图是研学实体和其具备的属性。

研学实体属性图
(18)下图是收货地址实体和其具备的属性。

收货地址实体属性图
4.4.2 数据库表结构
在进行这部分设计之前,需要明白和掌握数据类型以及各个数据类型的长度范围等知识,因为在一张具体的数据表中,为了方便理解,这里就举个简单的例子。比如用户信息表,这个表格的字段就是用户这个实体具备的属性,这时就需要对字段进行数据类型,以及字段长度的设置,也要设置一个主键来作为用户信息表的唯一标识。这些都是数据库表结构设计需要完成的内容。根据乡村研学旅行平台的功能设计以及数据库设计要求,展示该系统的数据表结构。
表4.1收货地址表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | yonghu_id | Integer | 创建用户 | 是 |
3 | address_name | String | 收货人 | 是 |
4 | address_phone | String | 电话 | 是 |
5 | address_dizhi | String | 地址 | 是 |
6 | isdefault_types | Integer | 是否默认地址 | 是 |
7 | insert_time | Date | 添加时间 | 是 |
8 | update_time | Date | 修改时间 | 是 |
9 | create_time | Date | 创建时间 | 是 |
表4.2购物车表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | yonghu_id | Integer | 所属用户 | 是 |
3 | shangpin_id | Integer | 商品 | 是 |
4 | buy_number | Integer | 购买数量 | 是 |
5 | create_time | Date | 添加时间 | 是 |
6 | update_time | Date | 更新时间 | 是 |
7 | insert_time | Date | 创建时间 | 是 |
表4.3客服聊天表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | yonghu_id | Integer | 提问用户 | 是 |
3 | chat_issue | String | 问题 | 是 |
4 | issue_time | Date | 问题时间 | 是 |
5 | chat_reply | String | 回复 | 是 |
6 | reply_time | Date | 回复时间 | 是 |
7 | zhuangtai_types | Integer | 状态 | 是 |
8 | chat_types | Integer | 数据类型 | 是 |
9 | insert_time | Date | 创建时间 | 是 |
表4.4字典表表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | dic_code | String | 字段 | 是 |
3 | dic_name | String | 字段名 | 是 |
4 | code_index | Integer | 编码 | 是 |
5 | index_name | String | 编码名字 | 是 |
6 | super_id | Integer | 父字段id | 是 |
7 | beizhu | String | 备注 | 是 |
8 | create_time | Date | 创建时间 | 是 |
表4.5论坛表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | forum_name | String | 帖子标题 | 是 |
3 | yonghu_id | Integer | 用户 | 是 |
4 | users_id | Integer | 管理员 | 是 |
5 | forum_content | String | 发布内容 | 是 |
6 | super_ids | Integer | 父id | 是 |
7 | forum_types | Integer | 帖子类型 | 是 |
8 | forum_state_types | Integer | 帖子状态 | 是 |
9 | insert_time | Date | 发帖时间 | 是 |
10 | update_time | Date | 修改时间 | 是 |
11 | create_time | Date | 创建时间 | 是 |
表4.6景点表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | jingdian_name | String | 景点名称 | 是 |
3 | jingdian_uuid_number | String | 景点编号 | 是 |
4 | jingdian_photo | String | 景点照片 | 是 |
5 | jingdian_address | String | 景点位置 | 是 |
6 | zan_number | Integer | 赞 | 是 |
7 | cai_number | Integer | 踩 | 是 |
8 | jingdian_xingji_types | Integer | 景点星级 | 是 |
9 | jingdian_types | Integer | 景点类型 | 是 |
10 | jingdian_kucun_number | Integer | 剩余门票数 | 是 |
11 | jingdian_old_money | BigDecimal | 景点原价 | 是 |
12 | jingdian_new_money | BigDecimal | 现价/张 | 是 |
13 | jingdian_clicknum | Integer | 景点热度 | 是 |
14 | jingdian_content | String | 景点介绍 | 是 |
15 | shangxia_types | Integer | 是否上架 | 是 |
16 | jingdian_delete | Integer | 逻辑删除 | 是 |
17 | insert_time | Date | 录入时间 | 是 |
18 | create_time | Date | 创建时间 | 是 |
表4.7景点收藏表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | jingdian_id | Integer | 景点 | 是 |
3 | yonghu_id | Integer | 用户 | 是 |
4 | jingdian_collection_types | Integer | 类型 | 是 |
5 | insert_time | Date | 收藏时间 | 是 |
6 | create_time | Date | 创建时间 | 是 |
表4.8景点评价表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | jingdian_id | Integer | 景点 | 是 |
3 | yonghu_id | Integer | 用户 | 是 |
4 | jingdian_commentback_text | String | 评价内容 | 是 |
5 | insert_time | Date | 评价时间 | 是 |
6 | reply_text | String | 回复内容 | 是 |
7 | update_time | Date | 回复时间 | 是 |
8 | create_time | Date | 创建时间 | 是 |
表4.9景点预约表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | jingdian_order_uuid_number | String | 订单编号 | 是 |
3 | jingdian_id | Integer | 景点 | 是 |
4 | yonghu_id | Integer | 用户 | 是 |
5 | buy_number | Integer | 购买数量 | 是 |
6 | jingdian_order_time | Date | 预约日期 | 是 |
7 | jingdian_order_true_price | BigDecimal | 实付价格 | 是 |
8 | jingdian_order_types | Integer | 订单类型 | 是 |
9 | jingdian_order_payment_types | Integer | 支付类型 | 是 |
10 | insert_time | Date | 订单创建时间 | 是 |
11 | create_time | Date | 创建时间 | 是 |
表4.10商品表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | shangpin_name | String | 商品名称 | 是 |
3 | shangpin_uuid_number | String | 商品编号 | 是 |
4 | shangpin_photo | String | 商品照片 | 是 |
5 | zan_number | Integer | 赞 | 是 |
6 | cai_number | Integer | 踩 | 是 |
7 | shangpin_types | Integer | 商品类型 | 是 |
8 | shangpin_kucun_number | Integer | 商品库存 | 是 |
9 | shangpin_old_money | BigDecimal | 商品原价 | 是 |
10 | shangpin_new_money | BigDecimal | 现价 | 是 |
11 | shangpin_clicknum | Integer | 商品热度 | 是 |
12 | shangpin_content | String | 商品介绍 | 是 |
13 | shangxia_types | Integer | 是否上架 | 是 |
14 | shangpin_delete | Integer | 逻辑删除 | 是 |
15 | insert_time | Date | 录入时间 | 是 |
16 | create_time | Date | 创建时间 | 是 |
表4.11商品收藏表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | shangpin_id | Integer | 商品 | 是 |
3 | yonghu_id | Integer | 用户 | 是 |
4 | shangpin_collection_types | Integer | 类型 | 是 |
5 | insert_time | Date | 收藏时间 | 是 |
6 | create_time | Date | 创建时间 | 是 |
表4.12商品评价表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | shangpin_id | Integer | 商品 | 是 |
3 | yonghu_id | Integer | 用户 | 是 |
4 | shangpin_commentback_text | String | 评价内容 | 是 |
5 | insert_time | Date | 评价时间 | 是 |
6 | reply_text | String | 回复内容 | 是 |
7 | update_time | Date | 回复时间 | 是 |
8 | create_time | Date | 创建时间 | 是 |
表4.13商品订单表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | shangpin_order_uuid_number | String | 订单编号 | 是 |
3 | address_id | Integer | 收货地址 | 是 |
4 | shangpin_id | Integer | 商品 | 是 |
5 | yonghu_id | Integer | 用户 | 是 |
6 | buy_number | Integer | 购买数量 | 是 |
7 | shangpin_order_true_price | BigDecimal | 实付价格 | 是 |
8 | shangpin_order_courier_name | String | 快递公司 | 是 |
9 | shangpin_order_courier_number | String | 快递单号 | 是 |
10 | shangpin_order_types | Integer | 订单类型 | 是 |
11 | shangpin_order_payment_types | Integer | 支付类型 | 是 |
12 | insert_time | Date | 订单创建时间 | 是 |
13 | create_time | Date | 创建时间 | 是 |
表4.14研学表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | yanxue_name | String | 研学标题 | 是 |
3 | yanxue_uuid_number | String | 研学编号 | 是 |
4 | yanxue_photo | String | 研学照片 | 是 |
5 | yanxue_fuzeren | String | 负责人 | 是 |
6 | yanxue_phone | String | 联系方式 | 是 |
7 | yanxue_address | String | 研学路线 | 是 |
8 | zan_number | Integer | 赞 | 是 |
9 | cai_number | Integer | 踩 | 是 |
10 | yanxue_types | Integer | 研学类型 | 是 |
11 | yanxue_kucun_number | Integer | 剩余可参与人数 | 是 |
12 | yanxue_time | Date | 出发时间 | 是 |
13 | yanxue_clicknum | Integer | 研学热度 | 是 |
14 | yanxue_content | String | 研学内容 | 是 |
15 | shangxia_types | Integer | 是否上架 | 是 |
16 | yanxue_delete | Integer | 逻辑删除 | 是 |
17 | insert_time | Date | 录入时间 | 是 |
18 | create_time | Date | 创建时间 | 是 |
表4.15研学收藏表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | yanxue_id | Integer | 研学 | 是 |
3 | yonghu_id | Integer | 用户 | 是 |
4 | yanxue_collection_types | Integer | 类型 | 是 |
5 | insert_time | Date | 收藏时间 | 是 |
6 | create_time | Date | 创建时间 | 是 |
表4.16研学留言表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | yanxue_id | Integer | 研学 | 是 |
3 | yonghu_id | Integer | 用户 | 是 |
4 | yanxue_liuyan_text | String | 留言内容 | 是 |
5 | insert_time | Date | 留言时间 | 是 |
6 | reply_text | String | 回复内容 | 是 |
7 | update_time | Date | 回复时间 | 是 |
8 | create_time | Date | 创建时间 | 是 |
表4.17研学报名表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | yanxue_yuyue_uuid_number | String | 报名编号 | 是 |
3 | yanxue_id | Integer | 研学 | 是 |
4 | yonghu_id | Integer | 用户 | 是 |
5 | yanxue_yuyue_text | String | 报名理由 | 是 |
6 | insert_time | Date | 研学报名时间 | 是 |
7 | yanxue_yuyue_yesno_types | Integer | 报名状态 | 是 |
8 | yanxue_yuyue_yesno_text | String | 审核回复 | 是 |
9 | yanxue_yuyue_shenhe_time | Date | 审核时间 | 是 |
10 | create_time | Date | 创建时间 | 是 |
表4.18用户表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | yonghu_name | String | 用户姓名 | 是 |
3 | yonghu_phone | String | 用户手机号 | 是 |
4 | yonghu_id_number | String | 用户身份证号 | 是 |
5 | yonghu_photo | String | 用户头像 | 是 |
6 | yonghu_email | String | 用户邮箱 | 是 |
7 | new_money | BigDecimal | 余额 | 是 |
8 | jinyong_types | Integer | 账户状态 | 是 |
9 | create_time | Date | 创建时间 | 是 |
表4.19管理员表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | username | String | 员工名 | 是 |
3 | password | String | 密码 | 是 |
4 | role | String | 角色 | 是 |
5 | addtime | Date | 新增时间 | 是 |
5.系统实现
系统实现这个章节的内容主要还是展示系统的功能界面设计效果,在实现系统基本功能,比如修改,比如添加,比如删除等管理功能的同时,也显示出系统各个功能的界面实现效果,该部分内容一方面与前面提到的系统分析,系统设计的内容相呼应,另一方面也是一个实际成果的展示。
5.1管理员功能实现
5.1.1 乡村研学管理
此页面让管理员管理乡村研学的数据,乡村研学管理页面见下图。此页面主要实现乡村研学的增加、修改、删除、查看的功能。

图5-1 乡村研学管理页面
5.1.2 商品信息管理
商品信息管理页面提供的功能操作有:新增商品,修改商品,删除商品操作。下图就是商品信息管理页面。

图5.3 商品信息管理页面
5.1.3商品类型管理
商品类型管理页面显示所有商品类型,在此页面既可以让管理员添加新的商品信息类型,也能对已有的商品类型信息执行编辑更新,失效的商品类型信息也能让管理员快速删除。下图就是商品类型管理页面。

图5.4 商品类型列表页面
5.2 用户功能介绍
5.2.1 景点管理
如图5.4显示的就是景点管理页面,此页面提供给用户的功能有:查看景点。

图5.4 乡村研学管理页面
5.2.2 商品管理
如图5.5显示的就是商品管理页面,此页面提供给用户的功能有:查看商品。

图5.5 商品管理页面