基于Android的个性化旅游路线规划系统设计与实现

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:jlq100
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:个人出行逐渐成为人们出游的首选,但是市场上缺少可以为用户深度定制旅行路线的软件。该文介绍了一种基于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.
  【通联编辑:谢媛媛】
其他文献
摘要:大数据作为一项先进技术,近几年被广泛应用于各个领域,实际效果非常好。在网络普及的今天,很多学生都实现了线上学习,在学习系统设计时要积极引入大数据技术,保证可以满足学生学习需求。文章先介绍大数据相关内容,再分析应用于线上学习系统设计与实现,提升技术应用水平,从而获得更好的学习体验。  关键词:大数据;学习系统;设计与实现  中图分类号:TP311 文献标识码:A  文章编号:1009-30
摘要:随着国家科学技术的发展,人工智能渐渐出现在人们眼前,人工智能发展在教育领域引发了重大讨论,正式人工智能的出现让我国终身教育目标得到了实现的可能性。人工智能主要是通过互联网将教育资源呈现到人们面前。打破了传统的教师面对面进行学习的学习方式,在教学过程中,可以多次对学生掌握不牢固的知识点进行复习,在教育资源上也将涵盖多种专业知识点,为学生解决学习困难。然而,如今人工智能虽然为我国终身教育做出了巨
摘要:目前的教材管理方式难以满足师生对教材管理的需求,为提高高校的教材征订管理的工作效率以及信息化水平,针对现有的数字化管理方式进行了研究。介绍了主要的开发技术,系统设计以及需要考虑的主要问题。  关键词:教材管理;ASP.NET;数据库系统;管理系统  中图分类号:G642 文献标识码:A  文章编号:1009-3044(2021)23-0072-03  Abstract: The cur
摘要:目前社会老龄化现象严重,大量空巢老人的自身安全不能及时得到保障,由于子女不在身边陪伴,造成老人孤独等心理问题从而对身体健康造成影响,因此需要开发一款软件将子女和老人们联系到一起,无时无刻关爱空巢老人。该App采用了React前端交互技术,后端采用ASP.NET中的MVC 开发模式,使用红外人体感应模块HC-SR501实现信息传递,实现了友好的图形化交互界面,开发了社区广播、亲情沟通、健康检测
摘要:在21世纪,计算机技术正在朝着集成和网络发展。信息技术推动信息社会的飞速发展,另外,伴随着微电子技术的飞速发展,对传统的效率低下的办公方式发起了冲击。随着大学教育的普及,越来越多的学生可以接受高等教育,另外由于近几年的教学改革,学生自由选课,修学分成为主流高校的培养模式。利用互联网技术开发学生选课管理系统,符合目前的发展状况。学生选课变得尤为重要,学生选课系统的设计与开发时间紧迫。该系统以J
摘要:Java程序设计语言由于采用面向对象和程序设计思想,并且与C、C 程序设计语言有着很多的相似之处,由于其简单、易学、跨平台、安全性等优势,因此受到了广大程序设计人员的喜爱,也成为目前Web开发、Android软件开发的主要语言,在计算机软件开发中得到了广泛的应用。该文在对Java程序设计语言的特点与应用分析的基础之上,对目前软件开发的现状与需求进行了分析,最后提出了Java在软件开发中应用
摘要:随着社会的不断发展,人们的空闲时间越来越多。然而,这些空闲时间都有一个共同点,就是太过于分散了,随着这一问题的出现,渐渐引发了一种新的学习方式——碎片式学习。该文根据碎片化的学习方式,提出一款基于Android的英语学习App,可以帮助人们碎片化学习,满足大多数人的英语学习需要。日趋成熟的网络技术,价格低廉的移动设备,加上广阔的社会需求为移动英语学习的发展奠定了好的基础。  本设计针对现在学
摘要:随着Internet商用化所带动的视频、音频及数字通信的发展,人们对光纤通信寄予了更高的希望,渴望能发现一种无论是在速率方面还是在容量方面都优于传统无线网络的技术,OFDM技术所具备的各项优点让其在光通信领域中脱颖而出,被视作光通信领域的未来之光。但OFDM技术并不局限于此,而是一直向新领域扩展并尝试与各个领域结合。光正交频分复用技术(Optical orthogonal Frequency
摘要:在当前的汽车生产制造行业中,汽车软件开发制造属于十分重要的一个环节,也是保证企业有效生产的重要基础,也就需要合理进行汽车软件开发。在目前的汽车软件开发中,相关技术人员需要结合Aspice实行具体软件开发,全面把握汽车软件开发流程,在此基础上才能够使汽车软件的开发取得比较理想的成果,进而制造出高质量的汽车软件,满足汽车的应用需求及制造要求,最终实现有效的汽车生产制造。  关键词:Aspice;
在互联网飞速发展的今天,图书教育也在由传统的图书向互联网和移动互联网化过渡,而图书教育二维码管理系统正是互联网在图书教育方面的应用体现。通过在图书上部署相应的二维码,当图书用户扫描二维码后,可以在原有图书实体文字的基础上通过移动设备为读者带来文本、音频、视频等多媒体扩展资源,让图书教育不拘泥于单纯的书本本体阅读,而是多元化扩展阅读。图书教育二维码系统是利用移动设备App扫码并且基于SaaS模式,使