第四章 系统设计
设计一个系统不单单是设计系统的页面,可以说系统设计其本质是一个结合了众多设计过程的比较复杂的系统工程。一般来说,在完成系统设计时,需要了解和掌握很多设计的知识,有界面布局技术的知识,页面采用的字体和颜色的运用,还有页面空白的规范使用等,如何将这些元素进行组合,让页面可以直观表达信息内容的同时,也能维持页面整体的美观。
4.1 系统设计思想
系统开发必然需要统一设计思想。根据这个设计思想指导系统的开发,可以加快系统开发进程。根据目前用户对在线点餐(堂食)平台的需求,确定下述原则即为本系统的设计思想。
(1)实用性:本系统依照用户需求设计功能,遵循用户使用方便的原则,把用户在实际工作中的各个操作细节也充分考虑进来,让使用者在没有系统操作说明书的情况下,也能很容易的完成系统的操作。
(2)先进性:为了让本系统具备高性能,设计时,需要把目前的各种成熟技术加以考虑,比如软件开发技术也要考虑进去,比如计算机技术也需要进行考虑。对于系统结构的选择,本系统将毫不犹豫的选择成熟先进的B/S结构,方便开发的同时,对于后期的维护也提供了便利。
(3)高安全性:设计本系统时,对于一些系统的关键数据要严加看管,比如管理员本人的账号和密码,一定要加密保存在数据库里面。除此以外,也需要充分使用安全措施对用户的共享资源进行保护。
(4)可维护性:设计时,要提前考虑本系统的可维护性,因为一个便于维护的系统在后期产生的维护成本将会大大降低。维护一般包括软硬件的维护还有对于网络的维护等。
(5)可扩展性:重新开发一个新系统相比在原有系统上升级,会花费大量的资金和精力,由此,一个好的系统必定具备良好的可扩展性。在用户需求变动的情况下,可以通过系统的更新和升级来持续满足用户需求,这样的系统就具备了可扩展性。
4.2功能结构设计
这部分内容使用结构图这样的工具,显示设计结果,设计的管理员功能见下图。管理员为用户忘记密码时可以重置用户密码,管理商品信息、商品收藏、商品订单、公告信息、及商品类型,
图4-1 管理员功能结构图
4.3 数据库设计
开发一个系统也需要提前设计数据库。这里的数据库是相关数据的集合,存储在一起的这些数据也是按照一定的组织方式进行的。目前,数据库能够服务于多种应用程序,则是源于它存储方式最佳,具备数据冗余率低的优势。虽然数据库为程序提供信息存储服务,但它与程序之间也可以保持较高的独立性。总而言之,数据库经历了很长一段时间的发展,从最初的不为人知,到现在的人尽皆知,其相关技术也越发成熟,同时也拥有着坚实的理论基础。
4.3.1 数据库概念设计
这部分内容需要借助数据库关系图来完成,也需要使用专门绘制数据库关系图的工具,比如Visio工具就可以设计E-R图(数据库关系图)。设计数据库,也需要按照设计的流程进行,首先还是要根据需求完成实体的确定,分析实体具有的特征,还有对实体间的关联关系进行确定。最后才是使用E-R模型的表示方法,绘制本系统的E-R图。不管是使用亿图软件,还是Visio工具,对于E-R模型的表示符号都一样,通常矩形代表实体,实体间存在的关系用菱形符号表示,实体的属性也就是实体的特征用符号椭圆表示。最后使用直线将矩形,菱形和椭圆等符号连接起来。接下来就开始对本系统的E-R图进行绘制。
(1)下图是论坛实体和其具备的属性。
图4.1 论坛实体属性图
(2)下图是商品实体和其具备的属性。
图4.2 商品实体属性图
(3)下图是用户实体和其具备的属性。
图4.3 用户实体属性图
(4)下图是公告信息实体和其具备的属性。
图4.4 公告信息实体属性图
(5)下图是商品收藏实体和其具备的属性。
图4.5 商品收藏实体属性图
(6)下图是购物车实体和其具备的属性。
图4.6 购物车实体属性图
(7)下图是商品订单实体和其具备的属性。
图4.7 商品订单实体属性图
(8)下图是用户表实体和其具备的属性。
图4.8 用户表实体属性图
4.3.2 数据库表结构
很多时候,在进行数据表的存储结构的设计时,都会遇到一些困扰,比如每张数据表如何命名,如何设计每张数据表里面的字段,如何为各个字段进行命名,以及如何设置字段的取值范围等信息。很多初学者,在进行表结构设计时,无论是对表进行命名,还是对字段进行命名,都是采用中文的方式,导致在编码阶段,在对数据进行操作时,总是报错,影响编码人员的开发速度,而且一旦数据表结构建立之后,后期进行修改也比较麻烦。因为设计数据表的结构,就意味着程序中需要长期保存的数据都是根据这样的结构进行保存的,在后面的使用中,无论是程序数据往数据表中写入,还是需要编辑或删除数据,都是按照这个规则进行。如此说来,设计数据库也是非常重要的任务,它关系到后面程序的开发,也关系到程序的运行使用。
通常在设计数据表结构时,会把前面设计的E-R图进行表结构的转化。把实体用来代表数据表,把其属性,也就是椭圆形代表的内容用来表示数据表中的字段,然后根据程序对于数据的存储要求,设计字段的类型和长度。比如用户的年龄可以用int(整数型),设置其长度为4或者6等。总之,数据表结构一旦建立,就可以往里面填充数据了。
表4.1商品表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
caipin_name |
String |
商品名称 |
是 |
3 |
caipin_photo |
String |
商品照片 |
是 |
4 |
caipin_types |
Integer |
商品类型 |
是 |
5 |
caipin_kucun_number |
Integer |
商品库存 |
是 |
6 |
caipin_old_money |
BigDecimal |
商品原价 |
是 |
7 |
caipin_new_money |
BigDecimal |
现价 |
是 |
8 |
caipin_clicknum |
Integer |
点击次数 |
是 |
9 |
shangxia_types |
Integer |
是否上架 |
是 |
10 |
caipin_delete |
Integer |
逻辑删除 |
是 |
11 |
caipin_content |
String |
商品简介 |
是 |
12 |
create_time |
Date |
创建时间 |
是 |
表4.2商品收藏表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
caipin_id |
Integer |
商品 |
是 |
3 |
yonghu_id |
Integer |
用户 |
是 |
4 |
caipin_collection_types |
Integer |
类型 |
是 |
5 |
insert_time |
Date |
收藏时间 |
是 |
6 |
create_time |
Date |
创建时间 |
是 |
表4.3商品订单表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
caipin_order_uuid_number |
String |
订单号 |
是 |
3 |
caipin_id |
Integer |
商品 |
是 |
4 |
yonghu_id |
Integer |
用户 |
是 |
5 |
buy_number |
Integer |
购买数量 |
是 |
6 |
caipin_order_true_price |
BigDecimal |
实付价格 |
是 |
7 |
caipin_order_types |
Integer |
订单类型 |
是 |
8 |
caipin_order_payment_types |
Integer |
支付类型 |
是 |
9 |
insert_time |
Date |
订单创建时间 |
是 |
10 |
create_time |
Date |
创建时间 |
是 |
表4.4购物车表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
yonghu_id |
Integer |
所属用户 |
是 |
3 |
caipin_id |
Integer |
商品 |
是 |
4 |
buy_number |
Integer |
购买数量 |
是 |
5 |
create_time |
Date |
添加时间 |
是 |
6 |
update_time |
Date |
更新时间 |
是 |
7 |
insert_time |
Date |
创建时间 |
是 |
表4.5字典表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
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.6论坛表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
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.7公告信息表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
news_name |
String |
公告标题 |
是 |
3 |
news_types |
Integer |
公告类型 |
是 |
4 |
news_photo |
String |
公告图片 |
是 |
5 |
insert_time |
Date |
添加时间 |
是 |
6 |
news_content |
String |
公告详情 |
是 |
7 |
create_time |
Date |
创建时间 |
是 |
表4.8用户表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
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 |
create_time |
Date |
创建时间 |
是 |
表4.9用户表表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
username |
String |
用户名 |
是 |
3 |
password |
String |
密码 |
是 |
4 |
role |
String |
角色 |
是 |
5 |
addtime |
Date |
新增时间 |
是 |
第五章 系统实现
前面做的所有工作,都是为了给系统实现做准备。在系统实现期间,需要根据设计方案执行,通过运用编码技术实现一个可以处理事务的系统。
5.1用户信息管理
如图5.1显示的就是用户信息管理页面,此页面提供给管理员的功能有:用户信息的查询管理,可以删除用户信息、修改用户信息、新增用户信息,
还进行了对用户名称的模糊查询的条件
图5.1 用户信息管理页面
5.2 商品信息管理
如图5.2显示的就是商品信息管理页面,此页面提供给管理员的功能有:查看已发布的商品信息数据,修改商品信息,商品信息作废,即可删除,还进行了对商品信息名称的模糊查询 商品信息信息的类型查询等等一些条件。
图5.2 商品信息管理页面
5.3商品类型管理
如图5.3显示的就是商品类型管理页面,此页面提供给管理员的功能有:根据商品类型进行条件查询,还可以对商品类型进行新增、修改、查询操作等等。
图5.3 商品类型管理页面
5.4公告信息管理
如图5.4显示的就是公告信息管理页面,此页面提供给管理员的功能有:根据公告信息进行新增、修改、查询操作等等。
图5.4 公告信息管理页面