第4章 系统设计
市面上设计比较好的系统都有一个共同特征,就是主题鲜明突出。通过对页面简洁清晰的布局,让页面的内容,包括文字语言,或者视频图片等元素可以清晰表达出系统的主题。让来访用户无需花费过多精力和时间找寻需要的内容。
4.1界面设计原则
一般来说,大部分用户使用系统,有些是想从系统中获取需要的信息,有些则是使用系统提供的服务。所以,为了改善用户体验,提高系统的使用率,在对系统界面设计时,需要按照下面的原则进行。
第一点,对用户进行分析,了解用户使用系统的目的,以及使用系统的方式,考虑大部分用户的阅读习惯,设计Z字形或F型结构可以方便用户获取信息。
第二点:设计有效的导航,这个包括每个页面上都有导航条的显示,有时也可以在页面的底部设计导航条,当用户进入具体页面时,要设计相应的位置提示,在页面中比较特殊的位置,需要设计返回链接,可以返回上个页面,也可以返回首页等。
第三点:对整个系统要运用统一的设计方案,包括色彩方案的一致性,页面模板的相似性等,对相同操作和专业术语的描述在整个系统中也应该保持一致。
第四点:设计的界面要保证传达的内容清晰准确。要避免在同一个页面设计非常多的内容,另外可以准确对系统内容进行分类,把页面中用户视觉集中的位置,用来显示重要信息。
作为初学者,并没有那么多的设计经验,但是可以运用上面提到的界面设计原则设计出比较好的系统,可以让用户产生良好的使用体验。
4.2功能结构设计
为了让系统的编码可以顺利进行,特意对本系统功能进行细分设计,设计的系统功能结构见下图。
图4.1 系统功能结构图
4.3数据库设计
一般来说,对用户进行调查,了解其需求,主要还是完成功能上的分析设计,殊不知,设计功能时,也要展示对数据库的设计。数据库服务于程序,它可以按照设定的规则对程序的数据进行保存,因此,也可以说数据库就是程序相关数据的集合。为了保证程序的高质量,数据库提供的数据存储服务也需要快速响应,同时数据信息也要安全合法可靠,所以设计一个数据库这样的任务也需要高度重视,并花时间和精力去努力完成。毕竟这影响到后期程序的开发和使用。试想而知,假设设计一个不好的数据库,遇到的问题将会有:第一,面对信息处理,会有着繁琐的业务逻辑,延长事务处理时间。第二:程序编码期间,将会产生更多的代码去完成数据处理的功能,产生大量的数据冗余,而且也不方便注释代码,还会占用更多的存储空间。综上所述,设计出合理的数据库是多么的重要。
(1)下图是美食实体和其具备的属性。
美食实体属性图
(2)下图是用户实体和其具备的属性。
用户实体属性图
(3)下图是购物车实体和其具备的属性。
购物车实体属性图
(4)下图是美食收藏实体和其具备的属性。
美食收藏实体属性图
(5)下图是美食评价实体和其具备的属性。
美食评价实体属性图
(6)下图是美食订单实体和其具备的属性。
美食订单实体属性图
(7)下图是论坛实体和其具备的属性。
论坛实体属性图
(8)下图是食堂实体和其具备的属性。
食堂实体属性图
(9)下图是商家实体和其具备的属性。
商家实体属性图
(10)下图是收货地址实体和其具备的属性。
收货地址实体属性图
(11)下图是新闻公告实体和其具备的属性。
新闻公告实体属性图
4.3.1 数据库物理设计
作为程序后台的支持,本数据库也需要设计数据存储的结构。而数据存储结构的设计就包括了数据表结构的设计和创建。数据表结构包括了字段,数据类型,还有字段的取值范围等信息。而E-R模型中的实体就是一张表,实体的特征就可以作为该表中的字段,根据本程序信息存储要求,设计每个字段需要的类型,还有该字段的取值范围等。每当设计完成一张数据表,就需要及时保存在数据库里面,并对该设计的数据表准确命名,要求设置的数据表的名称尽量不要是中文,而且要方便记忆。因为在程序编码阶段,通过SQL语句可以把程序里面的数据写入在各个数据表里面,而这个环节需要使用到数据表的名称。如果数据表名称是中文的话,可能会乱码并影响程序运行。下面就以表格形式展示设计的结果。
表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 |
meishi_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 |
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.4论坛表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
forum_name |
String |
帖子标题 |
是 |
3 |
yonghu_id |
Integer |
用户 |
是 |
4 |
shangjia_id |
Integer |
商家 |
是 |
5 |
users_id |
Integer |
管理员 |
是 |
6 |
forum_content |
String |
发布内容 |
是 |
7 |
super_ids |
Integer |
父id |
是 |
8 |
forum_state_types |
Integer |
帖子状态 |
是 |
9 |
insert_time |
Date |
发帖时间 |
是 |
10 |
update_time |
Date |
修改时间 |
是 |
11 |
create_time |
Date |
创建时间 |
是 |
表4.5美食表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
meishi_uuid_number |
String |
美食编号 |
是 |
3 |
meishi_name |
String |
美食名称 |
是 |
4 |
shangjia_id |
Integer |
商家 |
是 |
5 |
meishi_photo |
String |
美食照片 |
是 |
6 |
meishi_types |
Integer |
美食类型 |
是 |
7 |
meishi_kucun_number |
Integer |
美食库存 |
是 |
8 |
meishi_old_money |
BigDecimal |
美食原价 |
是 |
9 |
meishi_new_money |
BigDecimal |
现价 |
是 |
10 |
meishi_clicknum |
Integer |
美食热度 |
是 |
11 |
meishi_content |
String |
美食介绍 |
是 |
12 |
shangxia_types |
Integer |
是否上架 |
是 |
13 |
meishi_delete |
Integer |
逻辑删除 |
是 |
14 |
insert_time |
Date |
录入时间 |
是 |
15 |
create_time |
Date |
创建时间 |
是 |
表4.6美食收藏表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
meishi_id |
Integer |
美食 |
是 |
3 |
yonghu_id |
Integer |
用户 |
是 |
4 |
meishi_collection_types |
Integer |
类型 |
是 |
5 |
insert_time |
Date |
收藏时间 |
是 |
6 |
create_time |
Date |
创建时间 |
是 |
表4.7美食评价表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
meishi_id |
Integer |
美食 |
是 |
3 |
yonghu_id |
Integer |
用户 |
是 |
4 |
meishi_commentback_text |
String |
评价内容 |
是 |
5 |
insert_time |
Date |
评价时间 |
是 |
6 |
reply_text |
String |
回复内容 |
是 |
7 |
update_time |
Date |
回复时间 |
是 |
8 |
create_time |
Date |
创建时间 |
是 |
表4.8美食订单表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
meishi_order_uuid_number |
String |
订单号 |
是 |
3 |
address_id |
Integer |
收货地址 |
是 |
4 |
meishi_id |
Integer |
美食 |
是 |
5 |
yonghu_id |
Integer |
用户 |
是 |
6 |
buy_number |
Integer |
购买数量 |
是 |
7 |
meishi_order_time |
Date |
预定时间 |
是 |
8 |
meishi_order_true_price |
BigDecimal |
实付价格 |
是 |
9 |
meishi_order_courier_name |
String |
快递公司 |
是 |
10 |
meishi_order_courier_number |
String |
订单快递单号 |
是 |
11 |
meishi_order_types |
Integer |
订单类型 |
是 |
12 |
meishi_order_payment_types |
Integer |
支付类型 |
是 |
13 |
insert_time |
Date |
订单创建时间 |
是 |
14 |
create_time |
Date |
创建时间 |
是 |
表4.9新闻公告表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
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.10商家表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
shangjia_name |
String |
商家名称 |
是 |
3 |
shangjia_phone |
String |
联系方式 |
是 |
4 |
shangjia_email |
String |
邮箱 |
是 |
5 |
shangjia_photo |
String |
营业执照展示 |
是 |
6 |
shangjia_types |
Integer |
商家类型 |
是 |
7 |
new_money |
BigDecimal |
现有余额 |
是 |
8 |
shangjia_content |
String |
商家介绍 |
是 |
9 |
shangjia_delete |
Integer |
逻辑删除 |
是 |
10 |
create_time |
Date |
创建时间 |
是 |
表4.11食堂表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
shitang_uuid_number |
String |
食堂编号 |
是 |
3 |
shitang_name |
String |
食堂名称 |
是 |
4 |
shitang_photo |
String |
食堂照片 |
是 |
5 |
shitang_types |
Integer |
食堂类型 |
是 |
6 |
shitang_add |
String |
食堂地址 |
是 |
7 |
shitang_clicknum |
Integer |
食堂热度 |
是 |
8 |
shitang_content |
String |
食堂介绍 |
是 |
9 |
shitang_delete |
Integer |
逻辑删除 |
是 |
10 |
insert_time |
Date |
录入时间 |
是 |
11 |
create_time |
Date |
创建时间 |
是 |
表4.12用户表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
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 |
status_types |
Integer |
账号状态 |
是 |
9 |
create_time |
Date |
创建时间 |
是 |
表4.13管理员表
序号 |
列名 |
数据类型 |
说明 |
允许空 |
---|---|---|---|---|
1 |
Id |
Int |
id |
否 |
2 |
username |
String |
用户名 |
是 |
3 |
password |
String |
密码 |
是 |
4 |
role |
String |
角色 |
是 |
5 |
addtime |
Date |
新增时间 |
是 |
第5章 系统实现
这个环节需要使用前面的设计方案,包括对系统模块的设计,还有对程序后台的数据支持的数据库的设计等。不过这部分内容还是强调系统编码人员的开发能力,要把前面设计的内容通过编码的形式以一个完整的,可以运行的系统呈现出来。
功能模块的实现
5.1用户信息管理
如图5.1显示的就是用户信息管理页面,此页面提供给管理员的功能有:用户信息的查询管理,可以删除用户信息、修改用户信息、新增用户信息,
还进行了对用户名称的模糊查询的条件
图5.1 用户信息管理页面
5.2 食堂信息管理
如图5.2显示的就是食堂信息管理页面,此页面提供给管理员的功能有:查看已发布的食堂信息数据,修改食堂信息,食堂信息作废,即可删除,还进行了对食堂信息名称的模糊查询 食堂信息信息的类型查询等等一些条件。
图5.2 食堂信息管理页面
5.3美食信息管理
如图5.3显示的就是美食信息管理页面,此页面提供给管理员的功能有:根据美食信息进行条件查询,还可以对美食信息进行新增、修改、查询操作等等。
图5.3 美食信息管理页面
5.4公告信息管理
如图5.4显示的就是公告信息管理页面,此页面提供给管理员的功能有:根据公告信息进行新增、修改、查询操作等等。
图5.4 公告信息管理页面