系统在设计的过程中,必然要遵循一定的原则才可以,胡乱设计是不可取的。首先用户在使用过程中,能够直观感受到功能操作的便利性,符合正常思维逻辑的操作,这才是系统好用的一个开端,给使用者第一印象就是这个系统设计的相当不错。
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 (主键) | 主键 | int(20) | 否 |
yonghu_id | 创建用户 | int(20) | 否 |
address_name | 收货人 | varchar(200) | 否 |
address_phone | 电话 | varchar(200) | 否 |
address_dizhi | 地址 | varchar(200) | 否 |
isdefault_types | 是否默认地址 | int(11) | 否 |
insert_time | 添加时间 | timestamp | 否 |
update_time | 修改时间 | timestamp | 否 |
create_time | 创建时间 | timestamp | 否 |
表4.2 购物车表
字段 | 注释 | 类型 | 空 |
---|---|---|---|
id (主键) | 主键 | int(11) | 否 |
yonghu_id | 所属用户 | int(11) | 是 |
shangpin_id | 商品 | int(11) | 是 |
buy_number | 购买数量 | int(11) | 是 |
create_time | 添加时间 | timestamp | 是 |
update_time | 更新时间 | timestamp | 是 |
insert_time | 创建时间 | timestamp | 是 |
表4.3 公告表
字段 | 注释 | 类型 | 空 |
---|---|---|---|
id (主键) | 主键 | int(11) | 否 |
gonggao_name | 公告名称 | varchar(200) | 是 |
gonggao_photo | 公告图片 | varchar(200) | 是 |
gonggao_types | 公告类型 | int(11) | 否 |
insert_time | 公告发布时间 | timestamp | 是 |
gonggao_content | 公告详情 | text | 是 |
create_time | 创建时间 | timestamp | 是 |
表4.4 商品表
字段 | 注释 | 类型 | 空 |
---|---|---|---|
id (主键) | 主键 | int(11) | 否 |
shangpin_name | 商品名称 | varchar(200) | 是 |
shangpin_uuid_number | 商品编号 | varchar(200) | 是 |
shangpin_photo | 商品照片 | varchar(200) | 是 |
shangpin_types | 商品类型 | int(11) | 是 |
shangpin_kucun_number | 商品库存 | int(11) | 是 |
shangpin_price | 购买获得积分 | int(11) | 是 |
shangpin_old_money | 商品原价 | decimal(10,2) | 是 |
shangpin_new_money | 现价 | decimal(10,2) | 是 |
shangpin_clicknum | 点击次数 | int(11) | 是 |
shangpin_content | 商品介绍 | text | 是 |
shangxia_types | 是否上架 | int(11) | 是 |
shangpin_delete | 逻辑删除 | int(11) | 是 |
create_time | 创建时间 | timestamp | 是 |
表4.5 商品收藏表
字段 | 注释 | 类型 | 空 |
---|---|---|---|
id (主键) | 主键 | int(11) | 否 |
shangpin_id | 商品 | int(11) | 是 |
yonghu_id | 用户 | int(11) | 是 |
shangpin_collection_types | 类型 | int(11) | 是 |
insert_time | 收藏时间 | timestamp | 是 |
create_time | 创建时间 | timestamp | 是 |
表4.6 商品评价表
字段 | 注释 | 类型 | 空 |
---|---|---|---|
id (主键) | 主键 | int(11) | 否 |
shangpin_id | 商品 | int(11) | 是 |
yonghu_id | 用户 | int(11) | 是 |
shangpin_commentback_text | 评价内容 | text | 是 |
insert_time | 评价时间 | timestamp | 是 |
reply_text | 回复内容 | text | 是 |
update_time | 回复时间 | timestamp | 是 |
create_time | 创建时间 | timestamp | 是 |
表4.7 商品留言表
字段 | 注释 | 类型 | 空 |
---|---|---|---|
id (主键) | 主键 | int(11) | 否 |
shangpin_id | 商品 | int(11) | 是 |
yonghu_id | 用户 | int(11) | 是 |
shangpin_liuyan_text | 留言内容 | text | 是 |
insert_time | 留言时间 | timestamp | 是 |
reply_text | 回复内容 | text | 是 |
update_time | 回复时间 | timestamp | 是 |
create_time | 创建时间 | timestamp | 是 |
表4.8 商品订单表
字段 | 注释 | 类型 | 空 |
---|---|---|---|
id (主键) | 主键 | int(11) | 否 |
shangpin_order_uuid_number | 订单号 | varchar(200) | 是 |
address_id | 收货地址 | int(11) | 是 |
shangpin_id | 商品 | int(11) | 是 |
yonghu_id | 用户 | int(11) | 是 |
buy_number | 购买数量 | int(11) | 是 |
shangpin_order_true_price | 实付价格 | decimal(10,2) | 是 |
shangpin_order_courier_name | 快递公司 | varchar(200) | 是 |
shangpin_order_courier_number | 订单快递单号 | varchar(200) | 是 |
shangpin_order_types | 订单类型 | int(11) | 是 |
shangpin_order_payment_types | 支付类型 | int(11) | 是 |
insert_time | 订单创建时间 | timestamp | 是 |
create_time | 创建时间 | timestamp | 是 |
表4.9 商品退货表
字段 | 注释 | 类型 | 空 |
---|---|---|---|
id (主键) | 主键 | int(11) | 否 |
shangpin_tuihuo_uuid_number | 退货流水号 | varchar(200) | 是 |
shangpin_order_id | 商品订单 | int(11) | 是 |
yonghu_id | 用户 | int(11) | 是 |
shangpin_tuihuo_content | 退货原因 | text | 是 |
insert_time | 申请退货时间 | timestamp | 是 |
shangpin_tuihuo_courier_name | 退货快递公司 | varchar(200) | 是 |
shangpin_tuihuo_courier_number | 退货单号 | varchar(200) | 是 |
shangpin_tuihuo_types | 退货状态 | int(11) | 是 |
shangpin_tuihuo_yesno_types | 审核状态 | int(11) | 是 |
shangpin_tuihuo_yesno_text | 审核意见 | text | 是 |
shangpin_tuihuo_shenhe_time | 审核时间 | timestamp | 是 |
create_time | 创建时间 | timestamp | 是 |
表4.10 管理员表
字段 | 注释 | 类型 | 空 |
---|---|---|---|
id (主键) | 主键 | bigint(20) | 否 |
username | 用户名 | varchar(100) | 否 |
password | 密码 | varchar(100) | 否 |
role | 角色 | varchar(100) | 是 |
addtime | 新增时间 | timestamp | 否 |
表4.11 用户表
字段 | 注释 | 类型 | 空 |
---|---|---|---|
id (主键) | 主键 | int(11) | 否 |
username | 账户 | varchar(200) | 是 |
password | 密码 | varchar(200) | 是 |
yonghu_name | 用户姓名 | varchar(200) | 是 |
yonghu_phone | 用户手机号 | varchar(200) | 是 |
yonghu_id_number | 用户身份证号 | varchar(200) | 是 |
yonghu_photo | 用户头像 | varchar(200) | 是 |
sex_types | 性别 | int(11) | 是 |
yonghu_email | 电子邮箱 | varchar(200) | 是 |
new_money | 余额 | decimal(10,2) | 是 |
yonghu_sum_jifen | 总积分 | decimal(10,2) | 是 |
yonghu_new_jifen | 现积分 | decimal(10,2) | 是 |
huiyuandengji_types | 会员等级 | int(11) | 是 |
create_time | 创建时间 | timestamp | 是 |