关键词:
摘要
随着社会的发展,人们生活水平的提高,旅游逐渐成为人们生活中的重要活动,2019年国内旅游人数超过60亿人次。并且,旅游业已经成为了我国经济发展的一个重要支柱,近年来我国旅游业对GDP贡献值呈上升趋势。2019年,我国旅游业对GDP的贡献值接近11万亿元,占GDP总量十分之一。在2020年,由于这一年疫情的爆发使得全国旅游产业全面停止,对我国第一季度旅游业造成了重大冲击。但随着疫情的好转,旅游业逐渐复苏,在中秋节假日,旅游人数和旅游收入同比增长较大,增幅达到69.9%,在国庆节假日更是达到了79%。
旅游业的火爆加上信息时代的到来,产生了爆炸式的旅游信息,旅游者在选择旅游景点时,总会提前采用在线信息搜索的方式了解相关旅游信息,然后再制定出行计划。但大量信息产生的同时也附带了“信息过载”的问题,使得人们的需求不能得到很好的满足,那么就要思考,要采取什么方式来解决这一问题。
旅游推荐系统,针对目前旅游信息出现的问题,将满足用户的个性化需求作为创作点,主要为用户设计了旅游景点搜索查询功能、景点推荐功能,并且根据相关数据设计了可视化大屏。在数据处理阶段,利用Python爬虫技术对旅游数据进行相应采集,运用kettle对获取到的数据进行预处理,并将数据存储到MySQL数据库中进行管理。在推荐功能实现阶段,该系统设计了景点收藏等功能,通过记录用户的行为,利用协同过滤算法为用户进行旅游景点推荐,以达到更好的满足用户需求的目的。
4系统分析与设计
4.1可行性分析
在开发该系统之前要进行相应的可行性分析,分析该系统在制作过程中是否是可行的,该内容主要从技术、经济、社会、法律四个角度进行了分析。
4.1.1技术可行性
该系统将Python作为开发语言,Python相对于其他编程语言入门简单,使用者更容易上手。使用Pycharm作为该系统的开发环境,该IDE支持Django框架,用户可通过该环境快速的使用Django框架进行web开发,整个系统实现的过程中,所涉及到的技术要求适中。
4.1.2经济可行性
该系统为一个网站,因此它的经济性取决于开发时的成本。Python是一门开源的编程语言,以及使用的Django框架也是开源框架,整个系统的实现过程也是在开源的软件下进行实现的,因此在开发过程中涉及不到经费支出。
4.1.3社会可行性
在当下多元的时代,人们的消费观念也开始发生变化,越来越多的人向高层次的行业进行消费,旅游作为人们日常生活中的一种休闲方式,因此得到了迅速的发展,加上近年来信息时代的到来,产生了爆炸式的旅游信息。旅游者在选择旅游景点时总会通过线上搜索的方式查阅相关信息,但目前旅游信息过多过杂,使得人们在查阅信息时不能得到很好的满足,那么就要思考要通过什么方式来解决这一问题。搭建该系统可以有效的解决这一问题,以达到用户、景区双方共赢的目的。
4.1.4法律可行性
该系统涉及到的法律层面主要是在前期的数据获取阶段。在目前网络安全制度下,网络爬虫在一定的范围内是允许的。针对该系统要实现的功能进行相关数据的获取,对于一些敏感数据进行过滤,该系统使用的数据不触及任何敏感信息。因此,该系统在开发过程中不触碰任何法律问题。
4.2需求分析
需求分析是分析该系统的制作目的是否正确,设计出来的内容是否有用,是否能满足面向对象多方面的需求。该内容主要从用户以及旅游企业的角度进行了分析。
4.2.1用户需求分析
随着时代的进步,人们的思想也在发生着巨大的变化,目前人们在选择一件物品时总会进行多方面衡量,以达到自己的多元化需求。通过查阅资料和询问调查,了解到目前游客的实际需求,以便在功能设计时可以结合用户的需求进行设计,因此该系统的功能会符合使用者的需求。
4.2.2企业需求分析
对于旅游企业来说,他们的需求就是,如何为用户提供更好的服务以满足游客的需求,从而使得自己得到更好的发展。该系统在设计过程中会更具人性化,功能更个性化,因此会吸引越来越多的人使用,从而带动目前景区乃至旅游市场更好的发展。
从可行性分析以及需求分析的结果来看,开发该旅游推荐系统是可行的,因此要结合各个对象的需求对系统的整体内容进行设计。
4.3系统设计
4.3.1功能设计
该系统的功能主要分为三大模块,即数据管理模块、个性化功能模块、智慧推荐模块。
数据管理模块主要包含两方面内容,旅游数据管理,利用Python爬虫爬取到各地景点数据,使用kettle工具进行预处理后存储到MySQL数据库中,用来供此系统使用;用户数据管理,用户通过注册账号将个人信息存入到数据库。
个性化功能模块主要包含四方面内容,猜你喜欢,为用户随机推荐各地区的旅游景点;发表评论,用户可对每个旅游景点进行评价,并且支持打分,可供其他用户在浏览旅游景点时进行参考;指定搜索,方便用户可以快速的查询到自己想要找的旅游景点或城市;我的收藏,在浏览旅游景点时,可将喜欢的景点添加到收藏模块中,方便用户后期的选择,也为推荐功能做铺垫。
智慧推荐模块主要包含四方面内容,热门景点推荐,为用户提供一些比较热门的旅游景点;基于用户行为推荐,根据用户收藏等行为,采用合理的推荐算法为用户推荐感兴趣的旅游景点;途径景点推荐,为用户推荐一些比较热门的旅游路线;乘车方式推荐,根据用户所在地与目的地,为用户设计最优路径,从而使得用户可以更好的制定乘车方案。
系统整个功能模块如下图4.1所示。
图4.1 系统功能模块图
4.3.2数据库设计
在系统还没有真正搭建之前,设计数据库的表是十分重要的,设计的是否合理直接决定系统在实现时的难易程度,并且还影响着系统最终功能效果的好坏。在设计表的分析过程中,要结合自己系统的功能,设计好各个实体对象所应具备的属性,并且要关联好各个实体对象之间的关系,所以数据库的设计实质就是把用户需求进行全面的分析,根据需求对实体对象的属性进行确定。
下图4.2为该旅游推荐系统的E-R图。
图4.2 旅游推荐系统E-R图
(1)login表
表4.1 login表
序号 | 字段名 | 字段类型 | 长度 | 不是null | 是否主键 |
1 | id | int | 11 | 是 | 是 |
2 | password | varchar | 30 | 是 | 否 |
3 | last_login | datetime | 6 | 否 | 否 |
4 | username | varchar | 40 | 是 | 否 |
5 | | varchar | 30 | 是 | 否 |
6 | date_joined | datetime | 6 | 是 | 否 |
如上表4.1所示,主要用来存储用户的登陆信息。包含的字段有id,用来区分用户;password,用来记录登陆密码;last_login,用来记录最后的登陆时间,username用来记录用户名;email,用来存储注册邮箱信息;date_joined,用来记录注册时间。
(2)tour_view表
表4.2 tour_view表
序号 | 字段名 | 字段类型 | 长度 | 不是null | 是否主键 |
1 | id | varchar | 40 | 是 | 是 |
2 | view_name | varchar | 25 | 是 | 否 |
3 | area | varchar | 20 | 否 | 否 |
4 | province | varchar | 20 | 是 | 否 |
5 | city | varchar | 20 | 是 | 否 |
6 | view_desc | longtext | 是 | 否 | |
7 | view_rate | varchar | 5 | 是 | 否 |
8 | advise_time | varchar | 20 | 是 | 否 |
如上表4.2所示,主要用来存储爬取到的旅游数据。包含的字段有id,用来区分景点;view_name,用来存储景点名称;area,用来存储地理位置;province,用来存储所在省份;city,用来存储所在城市;view_desc,用来存储景点描述; view_rate,用来存储评分;advise_time,用来存储建议游玩时间。
(3)tour_score表
表4.3 tour_score表
序号 | 字段名 | 字段类型 | 长度 | 不是null | 是否主键 |
1 | id | int | 11 | 是 | 是 |
2 | rate | int | 11 | 是 | 否 |
3 | comment_date | datetime | 6 | 是 | 否 |
4 | user_id | int | 11 | 是 | 否 |
5 | view_id | varchar | 40 | 是 | 否 |
如上表4.3所示,主要用来存储该系统用户对景点的评分数据。包含的字段有id,用来区分不同用户的评分;rate,用来存储分数;comment_date,用来记录评分时间; user_id,用来存储评分者id;view_id,用来存储评分景区id。
(4)tour_comment表
表4.4 tour_comment表
序号 | 字段名 | 字段类型 | 长度 | 不是null | 是否主键 |
1 | id | int | 11 | 是 | 是 |
2 | comment | varchar | 255 | 是 | 否 |
3 | comment_date | datetime | 6 | 是 | 否 |
4 | user_id | int | 11 | 是 | 否 |
5 | view_id | varchar | 40 | 是 | 否 |
如上表4.4所示,主要用来存储该系统用户对景点的评论内容。包含的字段有id,用来区分不同用户的评论;comment,用来存储评论内容;comment_date,用来记录评论时间;user_id,用来存储评论者id;view_id,用来存储评论景区id。
(5)tour_collection表
表4.5 tour_collection表
序号 | 字段名 | 字段类型 | 长度 | 不是null | 是否主键 |
1 | id | int | 11 | 是 | 是 |
2 | comment_date | datetime | 6 | 是 | 否 |
3 | user_id | int | 11 | 是 | 否 |
4 | view_id | varchar | 40 | 是 | 否 |
如上表4.5所示,主要用来存储用户收藏的旅游景点数据。包含的字段有id,用来区分不同用户的收藏内容;comment_date,用来记录收藏时间;user_id,用来记录收藏者id;view_id,用来记录收藏景区id。
(6)tour_extuser表
表4.6 tour_extuser表
序号 | 字段名 | 字段类型 | 长度 | 不是null | 是否主键 |
1 | number | int | 11 | 是 | 是 |
2 | sex | varchar | 2 | 否 | 否 |
3 | register_date | datetime | 6 | 是 | 否 |
4 | user_id | int | 11 | 是 | 否 |
5 | address | varchar | 30 | 否 | 否 |
6 | age | int | 11 | 否 | 否 |
如上表4.6所示,用来存储用户信息。包含的字段有number,用来区分用户;sex,用来存储用户性别; register_date,用来记录注册时间;user_id,用来记录使用者id;address,用来存储用户地址;age,用来存储用户年龄。
4.4本章小结
本章内容首先从技术、经济、社会、法律方面对系统设计的可行性进行分析,并且从用户、企业的角度进行需求分析,判断该系统的实现是可行的;接着论述了该系统的各个功能模块,主要包含三大功能模块;最后通过构思该系统的E-R图,来对该系统使用到的数据库表进行合理设计。
5数据处理
数据处理覆盖了该系统的整个搭建流程,主要分为五个阶段。数据采集阶段,通过python爬虫爬取旅游网站来获得该系统的数据集;数据预处理阶段,对于获取到的数据集进行一些处理,例如对缺失值、重复值的处理;数据存储阶段,将处理后的数据集存储到MySQL数据中来实现管理操作;数据分析阶段,通过记录用户的行为,利用基于用户的协同过滤算法为目标用户推荐景点;数据可视化阶段,针对获取到的数据利用echarts技术设计旅游信息可视化大屏,将数据信息清晰直观地展示给用户。
5.1数据采集
数据采集是搭建该系统的基础,比较重要。目前爬虫技术的兴起,大部分网站都会有自己独特的反爬机制,这就使得在爬取数据时会遇到很多困难。针对这一问题,在爬取数据时采用代理IP的方法,利用bs4爬虫技术解析网页,通过对相关平台的爬取,获得对该系统有用的数据进行爬取。下图5.1是该系统爬虫代码的部分截图。
图5.1爬虫部分代码图
此次爬取到的内容主要包括景点名称,景点介绍,景点评分,所在区域,所在省份,所在城市,建议游玩时间,将爬取到数据首先存放在Excel表格中。
爬取到的这些数据会存在很多问题,例如会出现数据缺失、数据错误、数据多余等问题。因此,这就需要我们在使用这些数据之前要进行一些处理,将数据规范化。
5.2数据预处理
数据预处理的好坏直接影响着该系统数据的准确性,因此这一步也非常重要。在数据能用于该系统的前提下,通过这一方式为数据分析做准备,可以有效的提高分析结果的准确性,这是数据预处理的重要目的。数据预处理主要分为以下四类,数据清理的目的是对异常数据进行处理,例如处理对该系统无用或造成干扰的数据;数据集成的目的是通过拼接技术扩大数据集;数据变化的目的是对数据进行规范化处理以达到使用方便的效果;数据规约的目的是通过一些处理方法减少冗余信息,提高数据整体的可靠性。下图5.2是该系统利用kettle工具对爬取到的数据进行数据预处理的操作图。
图5.2 kettle数据处理图
5.3数据存储
将处理后的数据直接通过kettle工具传入到MySQL数据库的指定表中,用于该系统前后端交互使用,表的具体字段前文有所说明。
5.4.数据分析
该系统设计了收藏景点功能,其作用一方面是方便用户再次查看自己感兴趣的景点,另一方面也为用户推荐景点功能做基础。该系统的推荐功能是利用基于用户行为的协同过滤算法进行实现的,用户每次的收藏行为都会记录在数据库中,当目标用户进行自己的收藏行为时,系统就会利用相应的计算方法,在所有用户中寻找到与他最为相似的一类用户,提取这些用户收藏的全部景点,并且对目标用户收藏的景点进行剔除,计算用户对每一个候选景点的感兴趣程度,最终为用户推荐几个最为感兴趣的旅游景点。下图5.3是基于用户行为的协同过滤算法部分代码截图。
图5.3 基于用户行为的协同过滤算法代码图
5.5数据可视化
在如今的信息时代中,数据本身蕴含着巨大的价值,但是这些价值更多时候是隐藏起来的,如果要让这些数据充分的发挥出作用,那么还需要采用适当的方法进行实现,数据可视化这方式在此发挥着重要的作用。数据可视化是采用图表的形式来为用户展示数据,它的使用可以让用户们更准确的了解到数据。
该系统特意为用户制作了旅游信息可视化大屏,让用户可以直观的了解到目前哪些旅游城市最为热门,哪些旅游类型是人们比较青睐的,哪些旅游景点深受游客们的喜爱,全方面为用户展示近期旅游景点的情况,以便用户在选择旅游景点时做出更好的决定。下图5.4是该可视化大屏部分代码截图。
图5.4 可视化大屏部分代码图
5.6本章小结
本章节结合该系统的整个制作流程,从数据处理的五个方面分别进行了详细的叙述,将整个系统制作流程清晰的展示出来。
6系统实现
该系统前端功能设计丰富,可以将划分为三大功能模块,即登陆注册模块、个性化功能模块、推荐功能模块。
6.1登陆注册模块
该模块主要包含注册功能、登陆功能、修改信息功能。此模块是使用该系统的通行证,只有进行登陆注册操作才能体验到该系统的功能。
6.1.1注册功能
用户在初次使用该系统时要进行账号注册,注册的信息包括用户名称、邮箱、密码。通过设置自己的名称,系统会根据用户独有的名称设置ID,这样在使用该系统时,用户的行为数据会存放到自己的ID下。具体功能如下图6.1所示。
图6.1 注册功能图
6.1.2登陆功能
用户只有通过使用自己注册过的信息进行系统登陆,才能进入到该系统体验其功能。具体功能如下图6.2所示。
图6.2登陆功能图
6.1.3更改信息功能
用户进入到该系统后可以完善或修改自己的个人信息。具体功能如下图6.3所示。
图6.3 更改信息功能图
6.2个性化功能模块
为了丰富该系统的功能,并更好的方便用户使用,因此设计了此模块,该模块主要包含搜索旅游信息、收藏旅游景点、景点评论功能。
6.2.1搜索功能
此功能的目的是用于筛选旅游景点,使用者可通过图6.4所展示的搜索框,搜索自己想要了解的旅游景点或城市。例如搜索城市大连,系统就会为用户展示大连这所城市所有的旅游景点,具体效果如图6.5所示。
旅游推荐平台|酒店推荐平台|基于协同过滤算法实现旅游酒店推荐系统(代码片段)
...;项目简介 本项目基于SSM框架开发而成,主要实现旅游网站的信息化管理系统,系统分为前端网站和后台管理部分,前端用户注册登陆后可以在网站上浏览旅游景点,查看旅游酒店,在线预定酒店,查... 查看详情
旅游推荐平台|酒店推荐平台|基于协同过滤算法实现旅游酒店推荐系统(代码片段)
...;项目简介 本项目基于SSM框架开发而成,主要实现旅游网站的信息化管理系统,系统分为前端网站和后台管理部分,前端用户注册登陆后可以在网站上浏览旅游景点,查看旅游酒店,在线预定酒店,查... 查看详情
java精品源码第83期在线旅游网站系统(推荐)
Java精品项目源码第83期在线旅游网站系统大家好,小辰今天给大家介绍一个基于Spring+SpringMVC+MyBatis实现的在线旅游网站系统,演示视频公众号(小辰哥的Java)对号查询观看即可文章目录Java精品项目源码第83... 查看详情
java基于ssm+vue的旅游景点推荐网站-计算机毕业设计
随着人民生活水平的提高,旅游业已经越来越大众化,而旅游业的核心是信息,不论是对旅游管理部门、对旅游企业,或是对旅游者而言,有效的获取旅游信息,都显得特别重要.旅游景点推荐网站将使旅游相关信息管理工作规范化、信... 查看详情
投资20万研发的jfinal项目《旅游线路营销管理系统》准备公开课中
18年初上线了一套旅游营销管理系统,目前给几个合作客户内测试用,是基于JFinal研发的一套旅游行业旅游线路批发零售系统(SAAS)版。系统终端:PC后台管理分:总部、线路批发商、旅行社门店、个人代理微信微营销店铺:批发... 查看详情
java项目:诚途旅游系统(java+jsp+spring+ssm+mysql)
采用ssm架构实现的旅游网站系统包括网站展示和后台管理功能,网站主要是页面浏览以及评论、制定旅游方案、智能推荐功能后台就是维护网站展示的内容,添加旅游景点、管理用户、查看用户的搜索记录功能 了... 查看详情
概要设计文档3.0
...、系统的范围和参考资料等。1.1目的该文档的目的是描述旅游软件的概要设计,主要内容包括系统功能简介、系统结构设计、模块设计和界面设计等。本文档的预期读者包括:设计人员,开发人员,项目管理人员,测试人员。1.2... 查看详情
智慧旅游建设智能化景区管理系统方案
智慧旅游是应用新一代网络信息技术和装备,充分精确及时感知和应用各种旅游信息内容,进而完成旅游服务、旅游管理、旅游推广、旅游体验的智能化系统,推动旅游商圈向综合型和结合型转型发展提高,是旅客市场的需求与... 查看详情
基于java+springboot+mybatis+vue+element实现旅游管理系统(代码片段)
博主介绍:✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,CSDN博客之星TOP100、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业设计✌ 🍅文末获取联系🍅 精... 查看详情
基于springboot旅游系统
...理后台两部分后台管理功能:管理员登录,用户管理,旅游路线管理,旅游景点管理,酒店管理,旅游攻略管理,车票管理,订单管理,数据分析等功能。前台用户功能:用户注册,用户登录,旅游路线预定,旅游景区预定,餐饮住宿,车... 查看详情
计算机毕业设计之全网最好的ssm旅游网站旅游管理系统(代码片段)
...沙箱支付echarts可视化图表阿里云短信接口 功能根据旅游业的实际业务需求,方便游客对旅游资源的便捷获取并享受其快捷的旅游服务。网站系统采用浏览器、服务器的结构设计。该系统的用户角色分为:游客、会员、网站... 查看详情
基于android的旅游导航系统
我们所研发的基于android的旅游导航系统,可以方便用户在旅游景点,随时查看景点的介绍,相关视频介绍,图片浏览,和歌曲欣赏。本项目旨在给用户提供一个,友好,方便的旅游导航系统,提供给旅... 查看详情
计算机毕业设计
...频可以私聊) 摘 要随着人民生活水平的提高,旅游业已经越来越大众化,而旅游业的核心是信息,不论是对旅游管理部门、对旅游企业,或是对旅游者而言,有效的获取旅游信息,都显得特别重要.旅游管理系统将使旅游相关... 查看详情
基于android的旅游信息查询系统app(ssm+uinapp+mysql)
网络的广泛应用给生活带来了十分的便利。所以把旅游信息查询管理与现在网络相结合,利用java技术建设基于安卓的旅游信息查询系统,实现旅游信息查询的信息化。则对于进一步提高旅游信息查询管理发展,丰富... 查看详情
Magento 地理搜索和产品推荐
...:我正在为一家需要根据地理距离进行产品搜索和推荐的旅游公司评估Magento。该公司正在创建基于各种组件(例如:住宿、旅游、餐厅代金券等)的定制假期套餐。这些组件可能具有重叠的位置(即:一个特定的旅行可能足够... 查看详情
五台山风景区旅游模拟漫游系统的设计与实现_kaic
...意义 1.3研究目的 1.4国内外研究现状 1.4.1国外旅游模拟漫游研究现状 1.4.2国内旅游模拟漫游研究现状 1.5研究内容 2系统相关技术与理论 2.1虚拟现实 2.1.1虚拟现实概述 2.1.2网络虚拟现实 2.2人机... 查看详情
用tensorlayer导入slim模型迁移学习
...、自然语言处理、图像识别等人工智能领域的先进技术在旅游行业的应用研究并落地产生价值。目前,团队已经为携程提供了通用化的个性化推荐系统、智能客服系统、AI平台等一系列成熟的产品与服务。 携程作为国内领先... 查看详情
基于android的旅游助手app酒店景点预订系统
...,查询并预定自己中意的酒店,轻松便捷的完成旅游的前期准备工作。在开发过程中不断改进测试,并最终完成需求分析的可行性系统。本系统的用户可以方便的通过本系统查询并预付各种景区门票,查询并预定... 查看详情