主要架构设计主要分为可以3层,主要有Web层,业务层,Model层。其中web层还包括View层和Controller层,Model层包括元数据扩展层和数据访问层。
图4-1系统架构图
视图层视图是指被用户所看到的并且能够与之进行交互的界面。视图可以向用户展示相关的数据,并接收用户输入的数据,但对用户数据不进行任何实际业务操作处理。
模型层通过控制层来处理视图层传递的数据,同一个模型可以给不同的视图提供数据,也可以被不同的视图重复使用。控制层主要负责视图层和模型层之间的数据传输和处理请求操作。当用户通过视图发送数据和请求时,控制层可以接收请求和数据并决定调用哪些模型、通过模型的哪些操作来处理数据和请求,处理完成后,控制层再将数据返回给相应的视图。
根据对系统的功能进行分析可以总结风景旅游公司网站的具体功能模块包括下面的几个主要的功能模块:该系统主要从两大模块进行设计的,首先就是用户参与操作需要的模块,此外还需要有管理员用到的模块,两者之间不是互相独立的,他们之间有着密切的联系,同数据库表中的数据连接起来进行操作。每个模块访问相同的数据库,但访问的表不同。系统的各个功能模块是根据所收集的资料研究得到的。在以上分析功能的基础上,系统模块分为多个模块。用户含有的功能有注册,登录,游戏社区、公告栏、游戏资讯、游戏信息等,退出登录等功能,管理员含有的功能有修改密码,用户管理、游戏社区、游戏资讯、论坛分类列表、游戏资讯、游戏信息、分类信息等功能。
系统的功能结构图如下图所示。
图4-2系统功能结构图
用户模块主要实现用户的注册、登录、景点信息浏览、酒店搜索,预订信息和个人资料修改、登录密码修改、交流消息提交等功能。
用户注册:用户通过账号注册得到用户名和密码。
用户登录:用户在被管理员添加成功后,通过管理员提供的用户名、密码和输入验证码进行登录,操作非常简单。
个人资料管理:用户根据用户ID修改当前ID的一些属性的值。
修改个人登录密码:用户登录景点推荐旅游网站后可以自己修改自己的密码。
游戏资讯列表:可以点击列表查看游戏的具体信息。
旅游日记:可以查看旅游日记信息。
游戏信息:用户根据自己的需求选中某个游戏进行操作。
管理员模块是本系统重要开发部分,它的使用对象是系统管理员,在进入管理员模块前,需要输入正确的用户姓名、密码和验证码,才能进入管理员模块。界面右上方有退出系统按钮,点击可退出管理员模块界面。
系统用户管理:管理员添加、管理、查询管理员信息并有修改他们密码的权限。
注册用户管理:管理员管理已注册的用户,审核刚注册的用户,修改用户的基本信息。
游戏信息管理:管理员录入游戏信息,跳转至添游戏页面,填写游戏名称,提交后,游戏信息存储数据库的游戏信息表中。
分类信息管理:管理员管理游戏分类的信息。
E-R图一般是由实体、实体的属性与联系三个要素组成的。在规划系统中所使用的数据库实体对象及实体E-R图,则需要通过对系统的需求分析、业务流程设计和系统功能结构来确定的。
总体ER图如下图所示。
图4-3总体ER图
将实体属性模型转换为关系数据库应该遵循以下几个原则:
1.一个实体转换后要对应一个关系。
2.所有的主键必须要定义为非空(not null)。
3.针对二元联系也应该按照一对多、弱对实、一对一和多对多等联系来定义外键。
得到数据库的关系后,设计如下表结构。
ordinary_users表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
ordinary_users_id | int | 11 | 是 | 是 | 普通用户ID |
user_number | varchar | 64 | 是 | 否 | 用户编号 |
user_name | varchar | 64 | 否 | 否 | 用户姓名 |
user_gender | varchar | 64 | 否 | 否 | 用户性别 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
user_id | int | 11 | 是 | 否 | 用户ID |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
game_information表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
game_information_id | int | 11 | 是 | 是 | 游戏信息ID |
game_name | varchar | 64 | 否 | 否 | 游戏名称 |
game_cover_ | varchar | 255 | 否 | 否 | 游戏封面 |
game_platform | varchar | 64 | 否 | 否 | 游戏平台 |
game_scale | varchar | 64 | 否 | 否 | 游戏规模 |
game_classification | varchar | 64 | 否 | 否 | 游戏分类 |
release_time | date | 0 | 否 | 否 | 发行时间 |
language | varchar | 64 | 否 | 否 | 语言 |
corporate_name | varchar | 64 | 否 | 否 | 公司名称 |
game_introduction | longtext | 0 | 否 | 否 | 游戏简介 |
hits | int | 11 | 是 | 否 | 点击数 |
praise_len | int | 11 | 是 | 否 | 点赞数 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
classification_information表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
classification_information_id | int | 11 | 是 | 是 | 分类信息ID |
game_classification | varchar | 64 | 否 | 否 | 游戏分类 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
notice表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
notice_id | mediumint | 8 | 是 | 是 | 公告id |
title | varchar | 125 | 是 | 否 | 标题 |
content | longtext | 0 | 否 | 否 | 正文 |
create_time | timestamp | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
comment表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
comment_id | int | 11 | 是 | 是 | 评论ID |
title | varchar | 64 | 否 | 否 | 标题 |
release_time | date | 0 | 否 | 否 | 发布时间 |
strategy_type | varchar | 64 | 否 | 否 | 类型 |
cover | varchar | 255 | 否 | 否 | 封面 |
details | longtext | 0 | 否 | 否 | 详情 |
hits | int | 11 | 是 | 否 | 点击数 |
praise_len | int | 11 | 是 | 否 | 点赞数 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
Praise表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
praise_id | int | 10 | 是 | 是 | 点赞ID |
user_id | int | 11 | 是 | 否 | 点赞人 |
create_time | timestamp | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
source_table | varchar | 255 | 否 | 否 | 来源表 |
source_field | varchar | 255 | 否 | 否 | 来源字段 |
source_id | int | 10 | 是 | 否 | 来源ID |
status | tinyint | 1 | 是 | 否 | 点赞状态 |