基于三层架构的智慧旅游系统设计与实现

2018-08-01 05:35石红姣
商洛学院学报 2018年4期
关键词:景点数据库智慧

石红姣

(商洛学院图书馆,陕西商洛 726000)

旅游业已成为国家经济支柱产业之一,随着人们生活方式逐渐走向信息化,传统旅游服务方式已无法满足信息化环境下的旅游需求。以现代信息技术为推动力的智慧旅游,是信息化和旅游业深度融合的产业形态,也是旅游产业理论研究与实践应用的前沿[1-3]。智慧旅游系统是互联网、大数据、云计算、移动通信等新兴技术在旅游产业上的具体应用,整合了旅游业的软硬件,既方便了旅客的出游,也为相关商户节约了成本,增加了收益[4-5]。围绕智慧旅游,岳婧雅[6]、张凌云[7]等就智慧旅游的基本概念和理论体系进行了探讨。王艳军等[8]研究了面向服务架构(SOA)的智慧旅游系统建设方法,并通过实例证明了该方法是智慧旅游建设过程中的有益解决方案。张美微[9]提出了基于“云计算”的智能旅游系统设计方案,按照云端—渠道—终端的服务模型智能旅游系统,提高了系统的运行效率。但现有智慧旅游系统在地图导航和产品推荐方面还存在较大问题。基于此,本文结合已有研究,针对系统中的地图导航和产品推荐问题,给出了使用最短路径规划算法和协同过滤算法的解决方案,并且设计出了一套基于MVC架构[10]的三层软件系统,可以通过终端或者WEB获得良好的用户体验。

1 智慧旅游系统基本框架

本文所设计的系统采用了三层架构模式,包括:数据库层、服务层和应用层。其中数据库层主要是对原始数据的存储,如景点信息、用户信息,地图信息等;应用层主要为终端和web提供了访问的接口,解决用户访问等问题;服务层是本系统的核心,其将根据应用层传来的用户数据访问数据库,并处理响应相应消息,将结果反馈给应用层,从而为用户提供想要的结果。基于三层架构的智慧旅游系统框架,见图1。

图1 基于三层架构的智慧旅游系统框架图

2 智慧旅游系统基本功能

鉴于当前智慧旅游系统在地图导航、产品推荐方面存在的问题,根据不同的需求与功能,本文将系统分三个层次,其中服务层包括用户管理、地图信息、景区信息及基础服务查询四个功能,数据库层分别存储着服务层对应模块的信息数据。

1)用户管理功能:主要负责用户的登录和注册功能实现,对应的数据库中存储了用户的信息,当应用层传来用户登录信息时,用户管理功能负责读取数据库数据,以验证用户身份并授予用户相关权限;当应用层传来用户注册信息时,该模块负责将用户相应信息记录到数据库中。

2)地图查询功能:主要负责用户导航、路径规划功能实现,对应的数据库中存储了景区内各个景点的位置、距离等信息,当用户需要查询相关路径时,地图模块读取相关地点的信息然后调用Dijkstra算法[11]为用户规划一条最短路径并导航。

3)景区信息查询功能:主要负责景点相关信息查询功能实现,对应的数据库中主要存储了每个景点的基本信息、娱乐信息和美食信息三个方面,将每个方面的信息细化为具体的产品并存储起来,景区信息查询功能可以读取相关数据并利用协同过滤算法为用户进行推荐。

4)基础服务查询功能:主要负责用户相关查询功能的实现,对应的数据库中主要存储了相关酒店、交通、价格等信息。相关产品也可通过协同过滤算法[12]为用户进行推荐。

3 智慧旅游系统设计

用户管理模块:主要实现用户的注册和登录功能。在注册功能模块中,用户发起注册请求后用户模块要求用户填写相关信息,当用户提交相关信息后,用户进行信息检查,对于检查合格的用户模块将调用数据库层进行记录,否则退回要求用户重新填写;在登录过程中,查询数据库相关信息进行比对,对于符合身份的用户模块准予其登录系统并授予相关角色权限,否则予以拒绝,如图2所示。

地图查询模块:主要实现用户对相关路线的查询功能。在用户发起相关地点查询后,该模块首先在数据库中查询是否存在相关的地点信息,如果查询为无则直接返回,并告知用户。如查询结果有相关信息,则根据用户当前所在位置,查询数据库中已有路线,如果有已有路线则直接提供给用户;否则利用Dijkstra算法重新规划出一条最短路径,同时将该路线存储进数据库中作为已有路线供下次查询使用。

当地图刚开始使用的时候已有路线为无,随着使用次数增多可以直接使用的现有路线就会越来越多,从而免去路径规划的计算。通过这种方式,可以大大降低计算消耗,提高系统性能。基于提供路程最短路线的理念,地图数据库中预存了各个景点的地理位置坐标以及连接它们道路的长度。当需要进行路径规划时,地图模块会从数据库中首先提取起点、终点以及它们周围附近道路和景点的信息(本文中根据实验效果,提取了以连接起终点直线的中点为圆心,起终点两倍直线距离为半径范围内的景点和道路信息),然后地图模块根据这些信息构建有向图,并根据Dijkstra算法规划出一条起点到终点的最短路线距离。地图模块导航的具体流程如图3所示。

图2 用户管理模块流程图

景区信息模块:主要实现用户对景区相关信息的查询功能。在用户发起相关景点查询后,该模块首先在数据库中查询是否存在相关景点的信息,如果查询为无则直接返回并告知用户;否则提取出相关景点的位置、介绍、特色、美食等信息返回给用户,同时利用协同过滤算法根据用户的搜索信息为用户推荐相似产品。当用户利用景区信息管理模块搜索相关景点后,景区信息管理模块除了会读取数据库给出景区信息外,为用户进行景点推荐。本文使用了基于用户的协同过滤算法来进行推荐。景区信息模块的流程图如图4所示。

图4 景区信息管理模块流程图

基础服务模块:主要包括了酒店查询和交通查询两个功能部分。当用户提交相关查询要求后,首先查询数据库中是否存储了相关信息,当确认存在相关信息后提取酒店或者交通信息反馈给用户,同时利用推荐算法为用户推荐其他选择。该模块可以接入公开的交通查询系统接口中,方便获取到最新的交通信息。具体流程如图5所示。

图5 查询模块流程图

4 智慧旅游系统实现

4.1 系统运行环境

本文所设计的系统运行在服务器上,在应用层为终端和WEB都提供了接口,所以对C/S和B/S[13]架构都适用。系统主要以Microsoft Visual studio 2013作为开发工具,采用MVC框架,WEB服务器采用 Microsoft Windows Server 2008,IIS,数据库使用 Microsoft SQL Server。系统开发不包括终端和WEB程序,只提供应用层接口。相应终端程序可以是基于Android或者IOS的APP,也可以通过浏览器直接浏览访问。

4.2 路径规划算法的实现

当地图模块要进行路径规划时,会读取数据库中的相关信息,并构建出有向图。图6为地理信息抽象后构建好的有向图,其中A到F为相关景点,边上的权值为景点间的距离。假设用户查找A到F的路径,地图模块构建有向图进行规划,表1中给出了规划的过程和结果。从表1中可以得到A到F的最短路径是A到C到D到F,路程为9 km,故可以将该路径提供给用户。同时,从表1中可以发现,A到B、C、D、E的最短路径也规划出来了(分别是dAC=3 km;dAC+dCB=5 km;dAC+dCD=6 km;dAC+dCE=7 km),这些数据可一并存入数据库中,当下次用户搜索相关路线时可以直接使用,从而降低了计算量。

图6 地理信息抽象有向图

表1 Dijkstra算法路径搜索过程

4.3 协同过滤算法的实现

当用户搜索相关景区时,系统会提取相关用户的搜索记录。假设当用户1搜索景点a后,系统中已记录的用户有4人,其搜索记录如表2所示(a,b,c,d,e代表相应用户搜索过的景点)。由式 (1)可计算出用户间的相似度,如表3所示。从表3中可以看出用户1与用户4相似度最大,而用户4搜索过的景点e用户1没有搜索过,从而可以将e推荐给用户1。用户的相似度如式(1)。

表2 用户搜索记录

表3 用户间相似度

5 结论

本文针对智慧旅游系统的设计开发,给出了一种基于应用层、服务层和数据库层的系统架构,该系统可以通过B/S或C/S的方式接入终端或WEB,并且结合了相关算法优化了具体模块的功能实现。通过对模块软件工程化的处理,使得系统结构松耦合、可扩展并且具有良好的用户体验,后期可以根据需求继续扩展相关功能模块,以完善系统功能。

猜你喜欢
景点数据库智慧
打卡名校景点——那些必去朝圣的大学景点
数据库
英格兰十大怪异景点
数据库
数据库
数据库
没有景点 只是生活
景点个股表现
有智慧的羊
智慧派