旅客智能行程推荐系统的设计与实现

2021-01-20 06:21何承达王初程马睿祺冯芷菁武汉大学计算机学院
数码世界 2020年12期
关键词:路线目的地服务器

何承达 王初程 马睿祺 冯芷菁 武汉大学计算机学院

1 引言

随着信息时代的高速发展,人们的出行越来越便利,然而如何选择合适的出行路线却一直是个难题。现有的导航与行程推荐APP都难以较好地支持本地交通与空铁联运的查询,本系统旨在解决这一问题。通过民航航班、铁路运输、城市地铁与城市公共交通等多种交通方式组合,考虑不同旅客需求,从时间最少、花费最少和换乘数最少三方面为旅客推荐合适的行程。本系统基于微信小程序开发,跨平台、交互友好,为旅客的出行提供便利。

2 系统的设计

2.1 系统的基本架构

(1)系统用户,系统面向的用户可以对两地之间的路线进行搜索,对用户自身的历史行程记录进行查看、删除,对所选择的地点的相关文章进行搜索、收藏,发布与地点相关的包含文本、图片的文章。

(2)系统安全性,系统通过调用微信小程序接口获取临时登录凭证code,并回传到服务器。通过凭证进而换取用户登录态信息,包括用户的唯一标识openid及本次登录的会话密钥session_key等,用户数据的加解密通讯需要依赖会话密钥完成。之后服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份,从而提高网络及用户信息的安全性。

(3)系统数据储存,系统的原始数据来源是腾讯地图针对微信小程序的api,用户信息数据存储在后台服务器,通过用户的openid即可访问用户的历史数据并上传新的用户数据。在微信小程序的一次使用过程中,搜索得到的路线数据将缓存在用户设备中。

2.2 系统的数据结构及操作

(1)数据结构,系统通过分层,将功能划分为domain,service,web,config,util等多个层,充分将各功能中的不同部分进行解耦,同时有效的对不同功能进行了功能划分,基于各层封装实现了良好的安全性并使用RESTful风格的接口与前端进行交互,达到完全前后端分离的效果。

(2)数据操作,系统用户进行的操作包含登录认证,路线查询,历史行程管理和查看文章和发表文章。

3 系统的组成

3.1 路线管理

(1)系统用户管理 系统用户可通过临时登录凭证code,在从服务器获取到用户的openid后可登录本系统。

(2)路线搜索 系统用户在登录并授权相应权限后可进行路线搜索,系统用户可输入调整目的地,可从所调用的腾讯地图api提供的位置信息以及路线中根据自身需求选择路线,同时系统用户还可收藏该路线。

(3)历史路线管理 系统用户可对历史选择的路线进行倒序查看以及删除路线等操作。

3.2 文章管理

(1)查看目的地文章 系统用户进入微信小程序目的地界面,选择目的地城市后,可查看推荐目的地相关文章。或输入文章关键词,在目的地相关范围内进行文章搜索。

(2)发布文章 系统用户进入微信小程序目的地界面,点击进入发布文章界面,发布的文章将以当前目的地界面所选定的城市为城市标签,系统用户可便携文章标题、文章关键词、上传封面图片、撰写文章文本内容并添加图片,点击上传。

4 系统的实现

4.1 实现技术

(1)采用SpringBoot框架实现后台接口,实现RESTful接口对数据进行管理,并使用Redis实现并发处理。

(2)采用Spring Data JPA实现数据持久化,JPA基于非侵入式原则设计,因此可以很容易的和其它框架或者容器集成,且JPA拥有可媲美JDBC的查询能力。

(3)MySql数据库,MySQL是目前最主流的关系型数据库管理系统之一。

4.2 实现方法

(1)A-Star算法 A-Star算法为一种启发式路线规划算法,基于此算法可为用户推荐路线信息。

(2)文章推荐 为了使路线规划相关的推荐结果能够更直观的展现出来,与路线相关的推荐文章见图4-1所示。

图4-1 文章推荐结果

5 结束语

本系统基于微信小程序,采用前后端分离方式,接口遵循RESTful风格,直观可读性强。同时系统采用性能优于常见的Dijkstra算法的启发式路线规划A-Star算法,为用户出行需求推荐最优的行程。

猜你喜欢
路线目的地服务器
恋爱中的城市
迷宫弯弯绕
美食新路线
2018年全球服务器市场将保持温和增长
闻鸡起舞
动物可笑堂
找路线
用独立服务器的站长注意了
定位中高端 惠普8路服务器重装上阵