论文部分内容阅读
摘要:个人出行逐渐成为人们出游的首选,但是市场上缺少可以为用户深度定制旅行路线的软件。该文介绍了一种基于SpringBoot后端和Android客户端的个性化旅游路线推荐系统,实现了北京区域内景点的推荐功能。经过测试,可以实现用户登录注册以及路线规划功能。
关键词:Android;SpringBoot;Mybatis;個性化旅游;TSP
1 背景
随着移动互联网的发展和人们生活水平的提高,旅游逐渐成为民众娱乐的重要途径。然而如今的旅游规划软件大多是起到预定门票酒店的功能,并不能发挥路线规划和景点推荐的作用。本文将介绍基于安卓平台的个性化旅游路线推荐软件的设计与实现。
2 当今个人旅游系统发展现状
在当今的移动互联网时代,越来越多的在线旅游服务如雨后春笋般涌现。目前这些旅游类的服务大可以分为两类。 第一类是提供基本的订机票、火车票、订酒店之类的服务。作为代表的应用主要有:携程、去哪旅行、飞猪、艺龙旅行、同程旅行等。这些应用往往是将大量的信息提供给用户,让用户自行筛选,服务商较为被动,优点是信息较为全面。可见此类的服务还有很大的提升空间。 第二类则是为用户提供旅行的行程规划服务,属于传统的旅行社的线上升级版,提供成套的解决方案。代表App有:氢气球旅行,蝉游记,面包旅行,行程助手,百度旅游。这类应用可以初步对信息进行筛选,效率相比第一种有一定的提高。但是随旅行社出游并不灵活,可定制化程度比较低,仍有提升空间。 在未来旅游类 App 的发展趋向将是强自动化的。软件应该尽可能变被动为主动,帮用户完成旅行的整体大致规划,提供私人的成套的旅行解决方案。让系统依据用户的出行方式、出行人数、个人偏好来自动地为用户规划好行程,为用户提供一整套出行方案,降低用户的决策成本。
3 路线规划算法(蚁群算法)
TSP问题(Travel Salesperson Problem即旅行商问题)是一种NP-hard问题,在大型事件中很难获得最优解,一般需要启发式算法就近似解,如遗传算法(GA),蚁群算法(ACO),微粒群算法(PSO)。蚁群算法是一种以蚂蚁觅食行为为依据逐渐发展出来的一种启发式优化算法[1],算法的目的是寻找优化路径,最初是用来解决TSP问题而产生的。该算法在系统中起到了为用户安排游览路径的作用。
4 所用技术
4.1 安卓平台
安卓是一种基于Linux内核的自由开源的操作系统。主要使用于移动设备,使用java语言作为开发语言[2]。Android的开发包括四大组件:活动(Activity),服务(Service),广播接收器(Broadcast Receiver),内容提供商(Content Provider)。
Activity中包含了所有程序的运行流程,是Android 当中最基本的模块。每一个页面需要通过setContentView()指定界面布局。
4.2 百度地图sdk
百度地图API是一套应用程序接口,为开发者提供基于百度地图的各种功能,涵盖iOS、Andriod、Web服务等多种版本,提供基本地图、位置搜索、周边搜索、公交路线查询等功能。只需导入百度地图的sdk即可使用。 景点、路线和用户数据存储在云服务器端,云服务器链接mysql云数据库存储数据。景点的初始信息一部分手动导入,一部分通过爬虫获取以后存储在服务器端,供App调用。
4.3 spring boot
Spring框架是Java平台上的一种开源应用框架,而SpringBoot 是大量开发框架的整合,它简化了Spring大部分的繁杂配置工作[3]。SpringBoot的整合解决了依赖包之间的冲突和不可靠性等问题。大大简化了开发人员在后端开发的难度,支持jar项目打包方式,可以实现项目快速部署。Springboot的总体框架如图1所示。
实体层(entity)主要用于和数据库对象相对应的属性,需要有set/get方法,无参和有参的构造函数。控制层(controller)实现具体的模块流程控制,主要是调用service层内的接口实现,负责从前端接受请求。业务层(service)和持久层(dao)一样都是先设计接口,再创建要实现的类,然后在配置文件中进行配置其实现的关联[4]。接下来就可以在service层调用接口进行业务逻辑应用的处理。封装Service层的业务逻辑有利于业务逻辑的独立性和重复利用性。持久层与数据库进行联系,持久层的数据源和数据库连接的参数都是在配置文件中进行配置的。
YAML是一种基于Unicode容易阅读,容易和脚本语言交互的,用来表达资料序列的编程语言。文件后缀为yml。本项目使用application.yml作为配置文件,相较于application.properties,YAML文件具有树状结构以及更易于理解的特点。此外,YAML还具有编程语言可移植性的优点。
在本项目内,controller层调用了Service层的方法,Service层调用Dao层的方法,其中调用的参数是使用Entity层进行传递的。
5 数据库结构设计
系统的数据库设计有三个表,分别是用户信息表(表1),景点数据表(表2)和公共交通路程时间矩阵表(表3)。景点类型存储在景点数据表的type列中,所有景点一共分为6种类型,分别是博物馆,文物古迹,公园,游乐园,风景区和其他。
6 Android应用程序设计
本系统的总体框架如下:springboot作为服务端,提供数据库查询和数据返回功能。Android应用提供客户端服务。
服务端使用Maven 对项目进行构建、依赖管理。dao层(data access object)使用Mybatis框架实现,service层和controller层用于后端操作逻辑控制。服务端主要实现数据库的维护工作。 LoginActivity用户登录界面(如图2):在系统登录界面内,用户可以在登录框内输入用户名和密码,系统调用函数用于查询数据库,如果查找用戶账号和密码匹配则登录成功,采用 Intent跳转到主页面,传递用户 ID 数据到主界面。登录失败则提示用户“账号或密码错误”,点击“注册” 即可进入注册页面[5]。
RegisterActivity用户注册界面(如图3):用户输入用户名和密码实现注册,注册成功后进入用户登录页面。
ChooseActivity用户定制条件选择界面(如图4):用户选择规划天数和喜好的景点类别,点击“一键定制”按钮跳转到下一个页面,通过intent将用户定制条件传入PlanShowActivity。用户可选择天数,起始景点和景点类型。系统将会根据这些条件完成路线规划。
PlanShowActivity完成路线定制规划以及显示。图5是第一天方案选择界面,图6是第二天方案选择界面。首先系统通过每个景点的评分,用户喜好以及总游览时间筛选出当天的游览景点列表。列表内的景点的总游览时间保证不超过一个阈值。n为最终安排的景点总数。之后通过蚁群算法安排用户游览路径,同时在地图界面下方显示规划的路径。用户点击下一个和上一个按钮可以在本天内不同方案之间切换。用户点击下一天可以进入下一天的方案选择界面(如图6)。
ResultShowActivity结果展示页面(如图7):将规划的路线结果通过列表形式展示给用户。
7 结束语
该系统采用了最新的SpringBoot框架和移动端传播最为广泛的Android系统,实现了根据用户需求,为其提供个性化旅游路线推荐的功能,对节约用户时间成本有很大帮助,提升了用户的出行体验。
参考文献:
[1] 潘文佳.基于蚁群优化算法的最优旅游路线优化模型[J].电子设计工程,2020,28(22):47-51.
[2] 何东.基于Java语言的安卓软件开发研究[J].通讯世界,2020,27(4):62-63.
[3] 李娟,彭剑.基于SpringBoot的高校课程知识库的设计与实现[J].电脑知识与技术,2021,17(6):70-71.
[4] 马艳夕.基于SpringBoot与Vue技术的企业电商平台的设计与实现[J].信息与电脑(理论版),2021,33(3):99-100.
[5] 青幼蕾,谭妙,童强,等.基于Android的旅游服务APP开发[J].电子测试,2021(4):56-58,92.
【通联编辑:谢媛媛】
关键词:Android;SpringBoot;Mybatis;個性化旅游;TSP
1 背景
随着移动互联网的发展和人们生活水平的提高,旅游逐渐成为民众娱乐的重要途径。然而如今的旅游规划软件大多是起到预定门票酒店的功能,并不能发挥路线规划和景点推荐的作用。本文将介绍基于安卓平台的个性化旅游路线推荐软件的设计与实现。
2 当今个人旅游系统发展现状
在当今的移动互联网时代,越来越多的在线旅游服务如雨后春笋般涌现。目前这些旅游类的服务大可以分为两类。 第一类是提供基本的订机票、火车票、订酒店之类的服务。作为代表的应用主要有:携程、去哪旅行、飞猪、艺龙旅行、同程旅行等。这些应用往往是将大量的信息提供给用户,让用户自行筛选,服务商较为被动,优点是信息较为全面。可见此类的服务还有很大的提升空间。 第二类则是为用户提供旅行的行程规划服务,属于传统的旅行社的线上升级版,提供成套的解决方案。代表App有:氢气球旅行,蝉游记,面包旅行,行程助手,百度旅游。这类应用可以初步对信息进行筛选,效率相比第一种有一定的提高。但是随旅行社出游并不灵活,可定制化程度比较低,仍有提升空间。 在未来旅游类 App 的发展趋向将是强自动化的。软件应该尽可能变被动为主动,帮用户完成旅行的整体大致规划,提供私人的成套的旅行解决方案。让系统依据用户的出行方式、出行人数、个人偏好来自动地为用户规划好行程,为用户提供一整套出行方案,降低用户的决策成本。
3 路线规划算法(蚁群算法)
TSP问题(Travel Salesperson Problem即旅行商问题)是一种NP-hard问题,在大型事件中很难获得最优解,一般需要启发式算法就近似解,如遗传算法(GA),蚁群算法(ACO),微粒群算法(PSO)。蚁群算法是一种以蚂蚁觅食行为为依据逐渐发展出来的一种启发式优化算法[1],算法的目的是寻找优化路径,最初是用来解决TSP问题而产生的。该算法在系统中起到了为用户安排游览路径的作用。
4 所用技术
4.1 安卓平台
安卓是一种基于Linux内核的自由开源的操作系统。主要使用于移动设备,使用java语言作为开发语言[2]。Android的开发包括四大组件:活动(Activity),服务(Service),广播接收器(Broadcast Receiver),内容提供商(Content Provider)。
Activity中包含了所有程序的运行流程,是Android 当中最基本的模块。每一个页面需要通过setContentView()指定界面布局。
4.2 百度地图sdk
百度地图API是一套应用程序接口,为开发者提供基于百度地图的各种功能,涵盖iOS、Andriod、Web服务等多种版本,提供基本地图、位置搜索、周边搜索、公交路线查询等功能。只需导入百度地图的sdk即可使用。 景点、路线和用户数据存储在云服务器端,云服务器链接mysql云数据库存储数据。景点的初始信息一部分手动导入,一部分通过爬虫获取以后存储在服务器端,供App调用。
4.3 spring boot
Spring框架是Java平台上的一种开源应用框架,而SpringBoot 是大量开发框架的整合,它简化了Spring大部分的繁杂配置工作[3]。SpringBoot的整合解决了依赖包之间的冲突和不可靠性等问题。大大简化了开发人员在后端开发的难度,支持jar项目打包方式,可以实现项目快速部署。Springboot的总体框架如图1所示。
实体层(entity)主要用于和数据库对象相对应的属性,需要有set/get方法,无参和有参的构造函数。控制层(controller)实现具体的模块流程控制,主要是调用service层内的接口实现,负责从前端接受请求。业务层(service)和持久层(dao)一样都是先设计接口,再创建要实现的类,然后在配置文件中进行配置其实现的关联[4]。接下来就可以在service层调用接口进行业务逻辑应用的处理。封装Service层的业务逻辑有利于业务逻辑的独立性和重复利用性。持久层与数据库进行联系,持久层的数据源和数据库连接的参数都是在配置文件中进行配置的。
YAML是一种基于Unicode容易阅读,容易和脚本语言交互的,用来表达资料序列的编程语言。文件后缀为yml。本项目使用application.yml作为配置文件,相较于application.properties,YAML文件具有树状结构以及更易于理解的特点。此外,YAML还具有编程语言可移植性的优点。
在本项目内,controller层调用了Service层的方法,Service层调用Dao层的方法,其中调用的参数是使用Entity层进行传递的。
5 数据库结构设计
系统的数据库设计有三个表,分别是用户信息表(表1),景点数据表(表2)和公共交通路程时间矩阵表(表3)。景点类型存储在景点数据表的type列中,所有景点一共分为6种类型,分别是博物馆,文物古迹,公园,游乐园,风景区和其他。
6 Android应用程序设计
本系统的总体框架如下:springboot作为服务端,提供数据库查询和数据返回功能。Android应用提供客户端服务。
服务端使用Maven 对项目进行构建、依赖管理。dao层(data access object)使用Mybatis框架实现,service层和controller层用于后端操作逻辑控制。服务端主要实现数据库的维护工作。 LoginActivity用户登录界面(如图2):在系统登录界面内,用户可以在登录框内输入用户名和密码,系统调用函数用于查询数据库,如果查找用戶账号和密码匹配则登录成功,采用 Intent跳转到主页面,传递用户 ID 数据到主界面。登录失败则提示用户“账号或密码错误”,点击“注册” 即可进入注册页面[5]。
RegisterActivity用户注册界面(如图3):用户输入用户名和密码实现注册,注册成功后进入用户登录页面。
ChooseActivity用户定制条件选择界面(如图4):用户选择规划天数和喜好的景点类别,点击“一键定制”按钮跳转到下一个页面,通过intent将用户定制条件传入PlanShowActivity。用户可选择天数,起始景点和景点类型。系统将会根据这些条件完成路线规划。
PlanShowActivity完成路线定制规划以及显示。图5是第一天方案选择界面,图6是第二天方案选择界面。首先系统通过每个景点的评分,用户喜好以及总游览时间筛选出当天的游览景点列表。列表内的景点的总游览时间保证不超过一个阈值。n为最终安排的景点总数。之后通过蚁群算法安排用户游览路径,同时在地图界面下方显示规划的路径。用户点击下一个和上一个按钮可以在本天内不同方案之间切换。用户点击下一天可以进入下一天的方案选择界面(如图6)。
ResultShowActivity结果展示页面(如图7):将规划的路线结果通过列表形式展示给用户。
7 结束语
该系统采用了最新的SpringBoot框架和移动端传播最为广泛的Android系统,实现了根据用户需求,为其提供个性化旅游路线推荐的功能,对节约用户时间成本有很大帮助,提升了用户的出行体验。
参考文献:
[1] 潘文佳.基于蚁群优化算法的最优旅游路线优化模型[J].电子设计工程,2020,28(22):47-51.
[2] 何东.基于Java语言的安卓软件开发研究[J].通讯世界,2020,27(4):62-63.
[3] 李娟,彭剑.基于SpringBoot的高校课程知识库的设计与实现[J].电脑知识与技术,2021,17(6):70-71.
[4] 马艳夕.基于SpringBoot与Vue技术的企业电商平台的设计与实现[J].信息与电脑(理论版),2021,33(3):99-100.
[5] 青幼蕾,谭妙,童强,等.基于Android的旅游服务APP开发[J].电子测试,2021(4):56-58,92.
【通联编辑:谢媛媛】