主要架构设计主要分为可以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 |
full_name | varchar | 64 | 否 | 否 | 姓名 |
gender | varchar | 64 | 否 | 否 | 性别 |
id_number | varchar | 255 | 否 | 否 | 身份证号 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
user_id | int | 11 | 是 | 否 | 用户ID |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
hotel_information表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
hotel_information_id | int | 11 | 是 | 是 | 酒店信息ID |
hotel_name | varchar | 64 | 否 | 否 | 酒店名称 |
hotel_star | varchar | 64 | 否 | 否 | 酒店星级 |
hotel_type | varchar | 64 | 否 | 否 | 酒店类型 |
hotel_facilities | text | 0 | 否 | 否 | 酒店设施 |
hotels_address | text | 0 | 否 | 否 | 酒店地址 |
price_range | varchar | 64 | 否 | 否 | 价格范围 |
hotel_telephone | varchar | 64 | 否 | 否 | 酒店电话 |
hotel_introduction | text | 0 | 否 | 否 | 酒店介绍 |
hotel_pictures | varchar | 255 | 否 | 否 | 酒店图片 |
hits | int | 11 | 是 | 否 | 点击数 |
praise_len | int | 11 | 是 | 否 | 点赞数 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
scenic_spot_information表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
scenic_spot_information_id | int | 11 | 是 | 是 | 景点信息ID |
name_of_scenic_spot | varchar | 64 | 否 | 否 | 景点名称 |
scenic_spot_features | text | 0 | 否 | 否 | 景点特色 |
tickets_for_tourist_attractions | int | 11 | 否 | 否 | 景点票价 |
opening_hours | varchar | 64 | 否 | 否 | 开放时间 |
scenic_spot_route | text | 0 | 否 | 否 | 景点线路 |
introduction_to_scenic_spots | text | 0 | 否 | 否 | 景点介绍 |
pictures_of_scenic_spots | varchar | 255 | 否 | 否 | 景点图片 |
hotel_information | varchar | 64 | 否 | 否 | 酒店信息 |
hotel_pictures | varchar | 255 | 否 | 否 | 酒店图片 |
price_range | varchar | 64 | 否 | 否 | 价格范围 |
hits | int | 11 | 是 | 否 | 点击数 |
praise_len | int | 11 | 是 | 否 | 点赞数 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
tickets_for_tourist_attractions表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
tickets_for_tourist_attractions_id | int | 11 | 是 | 是 | 景点购票ID |
name_of_scenic_spot | varchar | 64 | 否 | 否 | 景点名称 |
opening_hours | varchar | 64 | 否 | 否 | 开放时间 |
introduction_to_scenic_spots | text | 0 | 否 | 否 | 景点介绍 |
tickets_for_tourist_attractions | varchar | 64 | 否 | 否 | 景点票价 |
purchase_quantity | int | 11 | 否 | 否 | 购买数量 |
total_amount | varchar | 64 | 否 | 否 | 总金额 |
user_no | int | 11 | 否 | 否 | 用户编号 |
user_name | varchar | 64 | 否 | 否 | 用户姓名 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
weather_reminder表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
weather_reminder_id | int | 11 | 是 | 是 | 天气提醒ID |
todays_date | date | 0 | 否 | 否 | 今日日期 |
todays_weather | varchar | 64 | 否 | 否 | 今日天气 |
todays_temperature | varchar | 64 | 否 | 否 | 今日温度 |
wind_power | varchar | 64 | 否 | 否 | 风力 |
air_quality | varchar | 64 | 否 | 否 | 空气质量 |
dressing_type | varchar | 64 | 否 | 否 | 穿衣类型 |
ultraviolet_rays | varchar | 64 | 否 | 否 | 紫外线 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |