第4章系统设计
用户对着浏览器操作,肯定会出现某些不可预料的问题,但是不代表着系统对于用户在浏览器上的操作不进行处理,所以说,要提前考虑可能会出现的问题。
4.1 系统设计思想
系统设计,肯定要把设计的思想进行统一,只有统一的思想才能指导程序的开发,并且可以让众多的程序开发人员更快速的进入状态,提高开发速度。根据当前系统的既定需求,下面将进行本系统设计思想的阐述。
-
扩展性:开发任何一个系统的时候不可避免要考虑这个问题。软件版本的更迭是一种常识,任何一个软件都不会一次性开发就成永恒,软件是一个不断成长的东西。所以考虑问题的时候需要对当前问题进行数据上的扩大化,然后进行归纳整理,最终形成具有一定扩展性的程序。程序的可扩展性必然会影响开发进度,所以最终需要综合评估程序的可扩展程度,进而有的放矢,循序开发。
-
实用性:程序设计是一个先高屋建瓴式的设想,然后再具体化,实用性就是具体化的第一个步骤,要充分考虑使用者是不懂程序设计的这一点,使用者只是懂得常规性的上网操作步骤,并不需要对程序进行理解,所以一定要让使用者感觉到便利,感觉到实用性的存在,如果使用者使用程序过程中没发现使用程序的好处,那么程序设计的实用性将大大降低。
-
安全性:当使用者使用的过程中,会产生大量的相关数据,这些数据必须有安全性的保证,否则当使用者发现数据出现问题的原因是程序设计问题的时候,将会对程序开发者失去信任,甚至可能会产生大量的费用赔偿问题,这是一个不可避免的问题。所以安全性关系开发与使用者双方的经济利益,程序的安全性是一定要保证的。
-
先进性:程序设计的先进性是开发者进行考虑的,必须要在满足系统功能的前提下,必须要选择好当下最合适的技术。最合适的技术要从开发成本,使用成本以及维护成本里面综合分析,经过综合分析后要让技术实现最优解,保持先进的技术生产力。
-
维护性:程序开发之初就要考虑以后的维护问题。维护是在程序开发完毕,已经上线可以运作,进入生产试用过程和使用过程中才会发现需要维护的必要。要通过各方面降低维护成本,不是说维护的越少就代表程序开发的越完美,程序既然是人类进行设计制造的,肯定有很多不可避免的问题产生,那么如何维护好程序的正常运作也是一门很重要的学问。
4.2 功能结构设计
图4.1即为设计的管理员功能结构,管理员权限操作的功能包括管理公告,管理本庄村果园预售系统信息,包括果园管理,果树管理,水果管理,水果管理等,可以管理果树。
图4.1 管理员功能结构
4.3 数据库设计
本庄村果园预售系统管理系统运行中产生的数据需要按照提前设置的存储规则进行保存,设计出一个符合项目的最优数据存储格式,因为它能减少用户的等待时间,还可以对系统的请求在最短时间内进行响应。所以,对数据库设计时,需要对功能需求进行详细的拆分,以及对业务状态的细分,然后设计具体的存储规则,保证数据库能正常运作,缩短数据处理时间,并在一定程度上降低数据冗余,节省存储空间。
4.3.1 数据库概念设计
实体-联系图还有一个名称即E-R图,是Entity Relationship Diagram各英文单词首字母的缩写,它这种概念模型通常用于对现实世界进行描述。同时它还是一种能够直观表达数据中实体,联系,属性的有效手段。绘制E-R图能够选择的工具也有很多,但是Office Visio 这款软件在E-R图的绘制上一般都是作为首选工具,因为它是基于可视化处理,使用它创建E-R图非常简单。使用基本的E-R图构成元素,比如椭圆,菱形,矩形,还有实线段来表达对应的信息,椭圆代表属性,即实体的特征,矩形代表实体,即数据库中的一个具体数据表,菱形代表实体中相互关系,实线段主要是完成椭圆,矩形,菱形的连接。
(1)下图是水果收藏实体和其具备的属性。
水果收藏实体属性图
(2)下图是果园预约实体和其具备的属性。
果园预约实体属性图
(3)下图是用户实体和其具备的属性。
用户实体属性图
(4)下图是果树收藏实体和其具备的属性。
果树收藏实体属性图
(5)下图是水果预售订单实体和其具备的属性。
水果预售订单实体属性图
(6)下图是论坛实体和其具备的属性。
论坛实体属性图
(7)下图是公告实体和其具备的属性。
公告实体属性图
(8)下图是水果资讯实体和其具备的属性。
水果资讯实体属性图
(9)下图是水果预售实体和其具备的属性。
水果预售实体属性图
(10)下图是果园留言实体和其具备的属性。
果园留言实体属性图
(11)下图是果树实体和其具备的属性。
果树实体属性图
(12)下图是果树订单实体和其具备的属性。
果树订单实体属性图
(13)下图是果园实体和其具备的属性。
果园实体属性图
(14)下图是收货地址实体和其具备的属性。
收货地址实体属性图
4.3.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 |
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.3论坛表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
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_state_types |
Integer |
帖子状态 |
是 |
8 |
insert_time |
Date |
发帖时间 |
是 |
9 |
update_time |
Date |
修改时间 |
是 |
10 |
create_time |
Date |
创建时间 |
是 |
表4.4公告表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
gonggao_name |
String |
公告名称 |
是 |
3 |
gonggao_photo |
String |
公告图片 |
是 |
4 |
gonggao_types |
Integer |
公告类型 |
是 |
5 |
insert_time |
Date |
公告发布时间 |
是 |
6 |
gonggao_content |
String |
公告详情 |
是 |
7 |
create_time |
Date |
创建时间 |
是 |
表4.5果树表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
guoyuan_id |
Integer |
商家 |
是 |
3 |
guoshu_name |
String |
果树名称 |
是 |
4 |
guoshu_uuid_number |
String |
果树编号 |
是 |
5 |
guoshu_photo |
String |
果树照片 |
是 |
6 |
guoshu_address |
String |
果树地点 |
是 |
7 |
guoshu_new_money |
BigDecimal |
果树认养费用 |
是 |
8 |
guoshu_types |
Integer |
果树类型 |
是 |
9 |
guoshu_kucun_number |
Integer |
果树库存 |
是 |
10 |
guoshu_content |
String |
果树介绍 |
是 |
11 |
guoshu_delete |
Integer |
逻辑删除 |
是 |
12 |
insert_time |
Date |
录入时间 |
是 |
13 |
create_time |
Date |
创建时间 |
是 |
表4.6果树收藏表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
guoshu_id |
Integer |
果树 |
是 |
3 |
yonghu_id |
Integer |
用户 |
是 |
4 |
guoshu_collection_types |
Integer |
类型 |
是 |
5 |
insert_time |
Date |
收藏时间 |
是 |
6 |
create_time |
Date |
创建时间 |
是 |
表4.7果树订单表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
guoshu_order_uuid_number |
String |
订单编号 |
是 |
3 |
guoshu_id |
Integer |
果树 |
是 |
4 |
yonghu_id |
Integer |
用户 |
是 |
5 |
buy_number |
Integer |
购买数量 |
是 |
6 |
guoshu_order_true_price |
BigDecimal |
实付价格 |
是 |
7 |
guoshu_order_types |
Integer |
订单类型 |
是 |
8 |
insert_time |
Date |
订单创建时间 |
是 |
9 |
create_time |
Date |
创建时间 |
是 |
表4.8果园表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
guoyuan_name |
String |
果园名称 |
是 |
3 |
guoyuan_photo |
String |
果园照片 |
是 |
4 |
guoyuan_types |
Integer |
果园类型 |
是 |
5 |
guoyuan_address |
String |
果园地点 |
是 |
6 |
guoyuan_content |
String |
果园介绍 |
是 |
7 |
guoyuan_delete |
Integer |
逻辑删除 |
是 |
8 |
create_time |
Date |
创建时间 |
是 |
表4.9果园留言表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
guoyuan_id |
Integer |
商品 |
是 |
3 |
yonghu_id |
Integer |
用户 |
是 |
4 |
guoyuan_liuyan_text |
String |
留言内容 |
是 |
5 |
insert_time |
Date |
留言时间 |
是 |
6 |
reply_text |
String |
回复内容 |
是 |
7 |
update_time |
Date |
回复时间 |
是 |
8 |
create_time |
Date |
创建时间 |
是 |
表4.10果园预约表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
guoyuan_yuyue_uuid_number |
String |
报名编号 |
是 |
3 |
guoyuan_id |
Integer |
果园 |
是 |
4 |
yonghu_id |
Integer |
用户 |
是 |
5 |
guoyuan_yuyue_text |
String |
报名理由 |
是 |
6 |
guoyuan_yuyue_yesno_types |
Integer |
报名状态 |
是 |
7 |
guoyuan_yuyue_yesno_text |
String |
审核回复 |
是 |
8 |
guoyuan_yuyue_shenhe_time |
Date |
审核时间 |
是 |
9 |
guoyuan_yuyue_time |
Date |
预约时间 |
是 |
10 |
insert_time |
Date |
活动报名时间 |
是 |
11 |
create_time |
Date |
创建时间 |
是 |
表4.11水果资讯表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
news_name |
String |
水果名称 |
是 |
3 |
news_photo |
String |
水果图片 |
是 |
4 |
news_types |
Integer |
水果类型 |
是 |
5 |
insert_time |
Date |
水果发布时间 |
是 |
6 |
news_content |
String |
水果详情 |
是 |
7 |
create_time |
Date |
创建时间 |
是 |
表4.12水果预售表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
guoyuan_id |
Integer |
水果 |
是 |
3 |
shuiguo_name |
String |
水果名称 |
是 |
4 |
shuiguo_uuid_number |
String |
水果编号 |
是 |
5 |
shuiguo_photo |
String |
水果照片 |
是 |
6 |
shuiguo_address |
String |
水果地点 |
是 |
7 |
shuiguo_new_money |
BigDecimal |
预售价 |
是 |
8 |
shuiguo_types |
Integer |
水果类型 |
是 |
9 |
shuiguo_kucun_number |
Integer |
水果库存 |
是 |
10 |
shuiguo_content |
String |
水果介绍 |
是 |
11 |
shuiguo_delete |
Integer |
逻辑删除 |
是 |
12 |
insert_time |
Date |
录入时间 |
是 |
13 |
create_time |
Date |
创建时间 |
是 |
表4.13水果收藏表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
shuiguo_id |
Integer |
水果 |
是 |
3 |
yonghu_id |
Integer |
用户 |
是 |
4 |
shuiguo_collection_types |
Integer |
类型 |
是 |
5 |
insert_time |
Date |
收藏时间 |
是 |
6 |
create_time |
Date |
创建时间 |
是 |
表4.14水果预售订单表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
shuiguo_order_uuid_number |
String |
订单编号 |
是 |
3 |
address_id |
Integer |
收货地址 |
是 |
4 |
shuiguo_id |
Integer |
水果 |
是 |
5 |
yonghu_id |
Integer |
用户 |
是 |
6 |
buy_number |
Integer |
购买数量 |
是 |
7 |
shuiguo_order_true_price |
BigDecimal |
实付价格 |
是 |
8 |
guoyuan_order_courier_name |
String |
快递公司 |
是 |
9 |
guoyuan_order_courier_number |
String |
快递单号 |
是 |
10 |
shuiguo_order_types |
Integer |
订单类型 |
是 |
11 |
insert_time |
Date |
订单创建时间 |
是 |
12 |
create_time |
Date |
创建时间 |
是 |
表4.15用户表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
yonghu_name |
String |
用户姓名 |
是 |
3 |
yonghu_phone |
String |
用户手机号 |
是 |
4 |
yonghu_id_number |
String |
用户身份证号 |
是 |
5 |
yonghu_photo |
String |
用户头像 |
是 |
6 |
new_money |
BigDecimal |
余额 |
是 |
7 |
yonghu_email |
String |
用户邮箱 |
是 |
8 |
create_time |
Date |
创建时间 |
是 |
表4.16管理员表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
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 果园管理界面
5.1.2 水果管理
图5.2 即为编码实现的水果管理界面,管理员在水果管理界面中查看水果种类信息,水果描述信息,新增水果信息等。
图5.2 水果管理界面
5.1.3 果树管理
图5.3 即为编码实现的果树管理界面,管理员在果树管理界面中新增果树,可以删除果树。
图5.3 果树管理界面
5.1.4 公告管理
图5.4 即为编码实现的公告管理界面,管理员在公告管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
图5.4 公告管理界面
5.2 用户功能实现
5.2.1 果园
图5.5 即为编码实现的果园界面。
图5.5 果园界面
5.2.2 果树管理
图5.6 即为编码实现的果树管理界面。
图5.6 果树管理界面
5.2.3 水果管理
图5.7 即为编码实现的水果管理界面。
图5.7 水果管理界面