此文章为本人亲自指导加编写,禁止任何人抄袭以及各类盈利性传播, 相关的代码+部署+论文+ppt+代码讲解+答辩指导文件都有可私要-
计算机专业毕业设计任何项目-程序-论文-想单独指导的可以私我
摘 要
近年来,东北地区凭借丰富的冰雪资源、森林生态和历史文化,逐渐成为国内旅游热点。然而,景区信息分散、季节性明显、游客需求多样等问题制约了旅游业发展。同时,随着智慧旅游的兴起,个性化推荐系统在提升游客体验、优化资源配置方面的作用日益凸显。因此,研究针对东北旅游景区的智能推荐系统,整合多源数据、分析游客偏好、实现精准推荐,对解决信息过载、促进区域旅游发展具有重要现实需求。
在此系统设计中主要分为管理员和游客用户、景区三种角色,系统主要采用Java语言进行编码,基于Spring Boot、Mybatis架构进行设计,系统编码采用IDEA。开发后的核心模块包含游客注册登录、景区展示推荐、房间住宿预订、景区活动预约,游客信息管理、景区信息管理、景区路线发布管理、景区数据分析、景区攻略发布,景区活动管理、景区展示管理、游客订单管理。
该系统的实现能够为游客提供个性化的东北景区推荐,有效解决信息过载问题,提升旅游体验满意度。同时,通过分析游客偏好,帮助景区优化资源配置,提高淡季客流,促进东北旅游经济均衡发展。此外,系统可助力智慧旅游建设,为旅游管理部门提供数据支持,推动区域旅游产业数字化转型。
关键词:旅游景区推荐;协同过滤;SpringBoot;Mybatis
Abstract
In recent years, the Northeast region has gradually become a domestic tourism hotspot due to its abundant ice and snow resources, forest ecology, and historical culture. However, the scattered information of scenic spots, obvious seasonality, and diverse tourist demands have constrained the development of the tourism industry. Meanwhile, with the rise of smart tourism, the role of personalized recommendation systems in enhancing tourist experience and optimizing resource allocation is becoming increasingly prominent. Therefore, researching an intelligent recommendation system for Northeast tourist attractions, integrating multi-source data, analyzing tourist preferences, and achieving accurate recommendations, has important practical needs for solving information overload and promoting regional tourism development.
In this system design, there are mainly three roles: administrator, tourist user, and scenic area. The system is mainly coded in Java language and designed based on Spring Boot and Mybatis architecture. The system coding adopts IDEA. The core modules developed include tourist registration and login, scenic area display and recommendation, room and accommodation booking, scenic area activity booking, tourist information management, scenic area information management, scenic area route release management, scenic area data analysis, scenic area strategy release, scenic area activity management, scenic area exhibition management, and tourist order management.
The implementation of this system can provide personalized recommendations for Northeast scenic spots for tourists, effectively solving the problem of information overload and improving tourism experience satisfaction. At the same time, by analyzing tourist preferences, it helps scenic spots optimize resource allocation, increase off-season passenger flow, and promote balanced development of Northeast tourism economy. In addition, the system can assist in the construction of smart tourism, provide data support for tourism management departments, and promote the digital transformation of regional tourism industry..
Keywords:Recommended tourist attractions; Collaborative filtering; SpringBoot; Mybatis
目录
1.1 研究背景......................................................................................... 1
1.2 国内外现状..................................................................................... 1
1.3 研究内容......................................................................................... 2
第2章 需求分析.......................................................................................... 3
2.1 可行性分析..................................................................................... 3
2.2 功能需求分析................................................................................. 3
2.3 性能分析......................................................................................... 5
第3章 开发技术介绍.................................................................................. 6
3.1 SpringBoot架构............................................................................. 6
3.2 MySQL数据库............................................................................... 6
3.3 IDEA编辑器.................................................................................. 6
3.4 协同过滤算法................................................................................. 7
第4章 系统设计.......................................................................................... 8
4.1 功能模块设计................................................................................... 8
4.2 数据库设计..................................................................................... 13
4.2.1 模型设计.............................................................................. 13
4.2.2 逻辑设计.............................................................................. 18
4.2.3 物理表设计.......................................................................... 19
第5章 系统实现........................................................................................ 24
5.1 用户端实现..................................................................................... 24
5.1.1 景区信息推荐检索展示...................................................... 24
5.1.2 景区房间信息预订.............................................................. 25
5.1.3 用户旅游心得发布.............................................................. 26
5.1.4用户旅游路线分享............................................................... 27
5.2 管理员端实现................................................................................. 28
5.2.1 景区信息管理实现.............................................................. 28
5.2.2 用户管理实现...................................................................... 29
5.2.3订票数据分析实现............................................................... 30
5.3 景区端实现..................................................................................... 31
5.3.1 景区房间管理...................................................................... 31
5.3.2 景区器材管理...................................................................... 33
5.3.3景区订票管理....................................................................... 34
第6章 系统测试........................................................................................ 36
6.1 测试方法......................................................................................... 36
6.2测试用例.......................................................................................... 36
第1章 绪论
1.1 研究背景
旅客希望可以根据自己的想法来规定旅游路线,设计此类网站可以让用户在线查看旅游景点、旅游线路、旅游攻略、酒店推荐等信息,并线上进行门票的预订、路线的制定、酒店的预定等操作,从而节省自己的时间,满足旅客用户从计划到出行的全方位旅游需求,从而提高用户对旅游过程的满意度;同时也能提高管理人员管理系统各色信息的工作效率,方便对这些信息进行添加、修改、删除、查看等操作。而且通过这种线上线下的方式,可以整合网站上所有的旅游资源,系统会运用先进的数据分析技术,促进系统中所含旅游资源的有效整合与利用,为旅游额发展提供助力。
旅游景点推荐网站的兴起与当代旅游消费模式的转型密不可分。随着全球旅游业的高速发展和互联网技术的深度渗透,传统旅游信息获取方式已无法满足现代游客的需求。据世界旅游组织统计,2023年全球在线旅游市场规模突破1.2万亿美元,其中景点推荐类服务占比达35%。这一趋势源于三大社会变革:一是移动互联网普及使"即时决策"成为主流,游客更依赖实时更新的数字化推荐;二是年轻游客更注重个性化体验,常规旅游指南难以满足其需求;三是疫情后旅游消费习惯改变,游客更倾向于通过线上平台获取安全、小众的景点信息。在此背景下,以TripAdvisor、马蜂窝为代表的推荐平台迅速崛起,通过用户生成内容(UGC)模式构建了庞大的旅游数据库,极大提升了信息获取效率。
近年来,随着国内旅游业的快速发展,东北地区凭借其独特的冰雪资源、森林生态、边境风情和历史文化,吸引了大量游客。东北拥有哈尔滨冰雪大世界、长白山、镜泊湖、五大连池等知名景区,冬季冰雪旅游和夏季避暑旅游成为区域特色。然而,东北旅游仍面临诸多挑战,如景区信息分散、季节性客流不均衡、游客需求多样化等。传统的旅游推荐方式主要依赖人工搜索或简单分类,难以精准匹配游客偏好,导致游客体验不佳,景区资源利用率低。此外,东北地区部分优质旅游资源尚未得到充分推广,信息不对称问题限制了旅游市场的进一步发展。因此,如何利用智能推荐技术整合旅游资源、优化游客体验,成为推动东北旅游业高质量发展的关键问题。
随着大数据和人工智能技术的成熟,个性化推荐系统在电商、社交网络等领域已广泛应用,但在旅游领域的落地仍存在优化空间。协同过滤、内容推荐及混合推荐算法能够根据用户历史行为、兴趣偏好和相似用户群体进行精准推荐,有效缓解信息过载问题。东北旅游景区具有明显的地域特色和季节性特征,传统的通用推荐模型难以适应其需求。因此,构建一个基于协同过滤的东北旅游景区推荐系统,结合用户画像、景区特征和时空因素,实现动态个性化推荐,具有重要的研究价值。该系统的开发不仅能提升游客满意度,还能帮助景区优化运营策略,促进东北旅游业的智能化升级和可持续发展。
1.2 国内外现状
我国知名的旅游预订网站“携程网”,是我国是非常领先的旅行服务公司网站,网站功能丰富,能为用户提供全方位旅行服务,比如酒店预订模块可以让用户在线进行酒店的预订、特价酒店的查询及查看酒店评价等;交通票务模块提供了中国大陆、港澳台地区以及国外地区的火车票、机票的预订;旅游度假模块提供了景点门票的预订服务,以及查看目标景点的旅游攻略、旅行指南、旅行团等一站式旅行服务。
当前,国内外旅游景点推荐平台呈现差异化发展态势,但均受益于全球旅游业的数字化升级。国内市场以携程、美团、马蜂窝为主导,2023年合计占据75%的市场份额(艾瑞咨询数据),其核心优势在于深度本地化服务与社交化内容生态——马蜂窝的UGC内容库已积累1.2亿条真实点评,抖音等短视频平台通过"种草"模式带动小众景点搜索量激增300%。
《基于SpringBoot的旅游电商系统设计与实现》是我国的研究学者发表的一篇关于旅游电子商务平台开发的技术类论文,该文章采用SpringBoot+MyBatis+MySQL的系统架构,设计了多个功能模块,包括智能推荐模块能够根据用户的历史订单和浏览动作,采用算法生成个性化的旅游规划信息;实时交易模块对接了支付宝/微信端的支付接口;动态定价模块可以根据季节、库存自动调整合作酒店和机票的价格。
国内关于旅游推荐系统的研究起步相对较晚,但近年来随着智慧旅游的快速发展,相关研究逐渐增多。早期的旅游推荐系统主要基于规则和简单的内容过滤,如根据景区类型、地理位置等静态信息进行推荐。随着大数据和人工智能技术的普及,协同过滤、深度学习等算法被广泛应用于旅游推荐领域。例如,张等人(2021)提出了一种基于用户画像和协同过滤的混合推荐模型,通过分析游客的历史行为数据和社会化媒体标签,提高了推荐的精准度。此外,针对国内旅游市场的特点,部分研究结合了季节性因素和热门旅游趋势,如李等人(2022)利用时间序列分析和LSTM神经网络预测游客偏好,优化了动态推荐效果。然而,国内研究仍存在一些局限性,如数据来源单一(主要依赖OTA平台)、冷启动问题尚未完全解决,且针对特定区域(如东北旅游景区)的个性化推荐研究较少。
国外在旅游推荐系统领域的研究较为成熟,尤其是欧美和日韩等旅游业发达的国家。早期的研究侧重于基于内容的推荐和知识图谱的应用,如利用景区描述、用户评论等文本数据构建推荐模型。近年来,国外学者更注重多源数据融合和上下文感知推荐。例如,Garcia等人(2020)提出了一种结合地理信息系统(GIS)和社交网络数据的旅游推荐算法,能够根据游客的实时位置和社交偏好提供个性化建议。此外,深度学习技术在旅游推荐中的应用也取得了显著进展,如Chen等人(2021)利用图神经网络(GNN)建模游客-景区的复杂交互关系,显著提升了长尾景区的推荐效果。国外的研究还特别注重跨文化和多语言环境下的推荐问题,例如针对国际游客的偏好差异设计自适应推荐策略。然而,国外研究多基于本地化数据,其模型在国内旅游市场(尤其是东北地区)的适用性仍需验证。
国外的一款知命的旅行资源平台叫做“Lonely Planet”,平台的目的地信息查询模块提供全球各地景点的详尽信息,包括城市、国家和地区,其中包含酒店、餐饮、交通、景点等方面内容。旅行攻略与规划模块借助专家的建议和旅行指南,为旅客用户提供丰富的旅游攻略,辅助大家可以更好地规划旅游行程,定制专属的旅行计划;景点推荐与评价模块为用户推荐了各地热门的景点,并展示了其他游客的评价和建议,帮助用户了解景点实际情况。
当前,国内外旅游推荐系统的研究正朝着智能化、个性化和实时化的方向发展。在国内,随着“互联网+旅游”政策的推进,政府和企业对智慧旅游的投入加大,推动了推荐系统在景区导览、酒店预订等场景的落地应用。在国外,研究重点逐渐转向多模态数据融合(如结合图像、语音和文本)和增强现实(AR)技术的集成,以提供更沉浸式的旅游体验。然而,旅游推荐系统仍面临诸多挑战,如数据稀疏性问题(新用户或新景区的冷启动)、动态偏好捕捉(游客兴趣随时间变化)、以及隐私保护与数据安全等。此外,针对东北这类具有鲜明季节性和地域特色的旅游市场,如何结合气候、文化等因素优化推荐策略,仍需进一步探索。未来的研究可能会更加注重跨学科融合,如结合行为经济学和认知心理学,以更精准地理解游客决策机制
1.3 研究内容
此次开发系统为基于协同过滤算法的旅游景点推荐的设计与实现,在此系统设计与实现中首先是对当前系统的一些相关资料文献进行搜集,对国内外的一些学者研究进行对比分析,分析系统的研究意义与目的,然后对一些开发技术Java、SpringBoot等进行学习,对开发的一些环境进行搭建部署,接着对系统的需求进行分析,包含用户的角色划分以及业务逻辑需求和功能需求进行划分,对系统的整体模块以及流程等进行设计,主要是对底层的业务表存储进行设计,最后为系统的核心业务代码的编写和测试。
系统主要分为六个章节:
第一章主要是对东北旅游景区推荐进行调研,对调研的结果信息进行描述,包含对景区推荐的一些学者研究进行分析以及度国内外的一些发展现状进行分析。
第二章对东北旅游景区推荐进行需求分析,从可行性角度以及用户角色和业务功能角度进行分析,以及对一些相关的性能进行分析。
第三章为东北旅游景区推荐的开发相关技术介绍,对东北旅游景区推荐的架构搭建以及一些数据的存储和开发的编码模式以及协同过滤算法进行介绍。
第四章为东北旅游景区推荐的系统设计,系统设计包含对模块的细化设计,以及对数据库的设计。
第五章为东北旅游景区推荐系统实现,对系统的数据库连接以及系统角色端的实现功能进行介绍。
第六章为系统测试,系统测试主要是对东北旅游景区推荐的前期需求进行分析,以及对用例描述进行编写。
第2章 需求分析
2.1 可行性分析
技术可行性:在本次基于协同过滤的东北旅游景点推荐系统开发中选择Springboot架构,通过Springboot的全家桶集成性可以很好的简化架构的配置,同时提升系统的拓展性和稳定性,结合Mybaits对orm底层进行持久性的存储,基于MySQL数据库对项目的数据进行存储,对旅游景区表、订票表、活动表等数据进行存储,系统开发中通过maven进行项目整体管理,从技术角度支撑完全可行。
经济可行性:在东北旅游景点推荐系统经济可行分析中,首先是开发的成本,目前需要投入的是开发的编程人工,基本为本人开发,可忽略,开发语言以及开发的软件尽量采用开源免费的,成本很小,后期的服务器的部署以及运维都基本成本较低可控,而项目设计使用后带来的人为的成本的降低是显而易见的,因此经济可行。
法律可行性:设计此东北旅游景点推荐系统必须遵从法律可行,都要从实际出发来符合法律要求,从思路的设计到代码的开发等,可以采用开源的内容,但不可盗用拷贝他人代码。对于系统的开发软件也采用开源的正版软件,保证系统开发任何环节都以法律可行为底线。
操作可行性:在系统操作中要对东北旅游景点推荐系统用户的角色进行划分,保证各个景区、管理员、用户的操作菜单以及权限分明,东北旅游景点推荐系统用户操作系统时要保证功能流畅,做到业务流程符合实际要求。
2.2 功能需求分析
用户:在用户端可以对景区进行检索,可根据用户的一些习惯进行景点的个性化推荐,用户可进行注册登录,登录后可对个人信息进行编辑和维护。用户可对自己的旅游心得进行发布记录,可以对一些旅游路线进行推荐分享,可以对景点房间进行在线预约,对活动进行预约,如图2.1所示。
图2.1户用例图
管理员:管理员端可对景区信息进行发布,可以对注册用户信息进行管理,可以对用户发发布的旅游心得进行管理。以及对旅游路线分享进行管理,可以查询所有的门票、房间预约记录,如图2.2所示。
图2.2管理员用例图
景区人员:用户可在登录后进行景区的房间信息管理,以及对景区的活动信息进行管理,可以对活动报名以及房间预约进行审核,如图2.3所示。
图2.3景区用例图
2.3 性能分析
在东北旅游景点推荐系统需求分析中也要考虑客观因素带来的影响,非功能影响可以考虑以下几个点:
1可伸缩性,在东北旅游景点推荐系统架构完成后要考虑到后期的功能的延伸和拓展,以及二次功能维护等,因此要保证代码的可伸缩性,将系统的代码耦合度降低。
2数据可靠性,在东北旅游景点推荐系统操作中要保证数据的一致性和可靠性,保证在进行事务机制处理时的原子性和一致性,特别是在分布式系统中更要对一些独立的进度进行状态的监管,然后做到全态处理,对数据要进行备份操作。
3并发性,对东北旅游景点推荐系统的一些高峰值用户访问时要保证系统的并发性,保证服务器不宕机,且要做到系统业务的不混乱。
第3章 开发技术综述
3.1 SpringBoot架构
SpringBoot是一种基于Spring框架的快速开发工具,其核心优势在于简化配置、提升开发效率。它采用"约定优于配置"的理念,通过自动配置(Auto-Configuration)和起步依赖(Starter Dependencies)机制,大幅减少了传统Spring应用的XML配置工作。内置Tomcat/Jetty等嵌入式服务器,支持一键式项目部署。同时提供完善的监控模块(如Actuator)和丰富的第三方库集成方案,使开发者能够快速构建独立运行、生产级的微服务应用。其模块化设计和良好的扩展性,特别适合构建高并发、分布式的现代Web系统,如旅游推荐系统等企业级应用。SpringBoot是一款大的Java语言的容器型架构。SpringBoot的出现颠覆了Java的编程理念,首先是将对象之间的耦合度降低,简化了对象之间的关系,不再是人工的进行对象之间的维护,而是通过SpringBoot来对对象的创建和依赖关系进行维护。在SpringBoot中AOP的切面编程的理念,实现对某一类的程序进行拦截集中处理,例如事务机制的视线以及权限的拦截日志的管理等,SpringBoot出现后对应的出现了声明式事务的机制,通过一些配置即可完成对事务的处理。而且SpringBoot还很容易对其他的架构进行集成,非常的方便。
3.2 MySQL数据库
Mybaits作为Java的持久性架构,主要是对SQL的定制化以及对一些事务的高级映射处理,首先Mybaits将JDBC的繁琐代码进行了封装,提升了数据库的处理效率,解锁了JDBC的复杂代码机制以及手动参数的设置,和对结果集的获取处理。通过Mybaits机制自动化的对数据库连接资源进行管理,自动释放连接资源,且将数据库操作的SQL以及Java业务代码进行解耦,通过XML或者是注解的方式对SQL进行配置,降低了代码的复杂度。Mybaits既支持SQL的编写,也支持动态SQL生成,因此灵活度非常的高。
3.3 IDEA编辑器
IntelliJ IDEA是一款高集成的软件开发编辑器,可用于Java等多语言的开发,在IDEA中集成了很多的内置智能功能,包含代码的自动补全、代码的纠错、语法自查、性能分析器以及版本控制器等,在IDEA中去除了workspace的编译空间,对一些插件进行了耦合性关联,提升了软件的环境;配置灵活度。采用IDEA可以对编码进行智能分析和建议功能,自动对错误的代码进行识别和修复,在IDEA中具有非常多的插件和拓展工具,满足复杂的开发要求,IDEA中也集成了版本控制和测试工具,让编码更为简单。
3.4 协同过滤算法
系统运用协同过滤推荐算法,通过综合分析旅游景点的用户评分数据和用户间的相似性。该算法会考虑用户对其他景点的评分和偏好,结合相似用户的行为模式,从而为用户提供个性化的旅游经典的推荐。设计中协同过滤算法主要分为基于用户的协同过滤和基于物品的协同过滤两种方法。基于用户的协同过滤算法根据用户的历史行为找到与目标用户兴趣相似的用户,并向目标用户推荐他们喜欢的景点。基于物品的协同过滤算法则根据用户对景点的评分和行为找到与用户已喜欢的景点相似的其他景点进行推荐。
(1)相似度计算:实现用户相似度计算和景点相似度计算的算法,根据评分矩阵和用户行为数据计算用户之间的相似度和景点之间的相似度。
(2)评分预测与推荐生成:基于相似度计算和评分矩阵,实现评分预测和个性化推荐生成的算法,根据用户的历史行为和兴趣,预测用户对未评分景点的喜好程度,并生成推荐列表。
第4章 系统设计
4.1 功能模块设计
在系统设计中核心业务模块游客:游客注册登录、景区展示推荐、景区门票预订、房间住宿预订、景区活动预约,管理员:游客信息管理、景区信息管理、景区路线发布管理、景区数据分析、景区攻略发布,景区:景区活动管理、景区展示管理、游客订单管理、景区公告管理、景区安全应急管理、景区设施管理、库存与物资管理。如图4.1所示:
图4.1系统模块图
游客端:
1.游客注册登录:游客可在此平台的首页进行注册,可输入自己的手机号、姓名等完成账号注册,游客可根据自己的账号进行登录。如图4.2所示:
图4.2用户注册时序图
2.景区展示与推荐:在前端可以展示一些东北周边的景区信息,可以进行类型和关键词检索。可根据一些热门网红景区或者是一些点击率高的景区进行优先推荐,也可通过分析用户的历史行为和偏好,对用户的检索历史信息以及关键词检索信息进行提取分析,利用协同过滤算法预测用户未来的景区选择需求,找出相似的游客或景区,从而为游客推荐他们可能感兴趣的景区,为用户提供个性化的旅游度假推荐。如图4.3所示:
图4.3景区推荐时序图
3.景区门票预订:游客可在线进行景区的门票预约,可查询预约记录信息。如图4.4所示:
图4.4景区订票时序图
4.房间住宿预订:游客可以对景区的房间进行检索和预订操作,输入住宿时间进行在线预订。
5.景区活动预约:景区管理系统还提供各种旅行度假活动的预订服务,例如特色体验、团队游等,用户可以选择自己感兴趣的活动。如图4.5所示:
图4.5景区活动报名时序图
管理员:
1游客信息管理:后台可对游客信息进行查询和维护,可分页查询游客信息。
2.景区信息管理:平台端可对一些景区信息进行录入,可以给景区设置对应的账号信息,可以对景区人员账号进行维护。
3.景区攻略发布:网站会推出各种旅行攻略,包括行程规划、玩乐建议、必带物品等,帮助用户更好地规划旅行计划。
4.景区路线发布管理:管理员端可以对一些特定的特色景区路线进行发布
5. 景区数据分析:管理端可对一些景区数据进行统计分析,可从多维度对数据进行分析,从游客的订票来分析旅游淡旺季区间以及景区的火热程度等,可通过Highcharts对系统数据进行可视化的展示。
景区端:
1.景区活动管理:景区可发布一些相关的度假热门活动举办信息。如图4.6所示:
图4.6活动发新增时序图
2.景区展示管理:在景区端可对本景区的一些文化宣传等内容进行发布展示。
3.游客订单管理:景区端可对本景区的预约订票进行审核和查询操作。
4.景区公告管理:在景区端可以对本景区的一些事项公告等进行发布,在首页端可进行查询。
5.景区安全应急管理:景区可以对一些安全应急措施进行记录发布。
6.景区设施管理:景区可以对一些游玩设施等进行信息录入。
7.库存与物资管理理:景区可以对一些物资信息进行记录以及对库存进行更新。
4.2 数据库设计
4.2.1 模型设计
依据系统的前期分析,系统的数据库实体图设计如下:
管理员实体,包含账号、密码、主键id,如图4.7所示。
图4.7管理员实体图
用户实体,包含账号、密码、用户id、手机号、联系地址、邮箱、姓名等信息,如图4.8所示。
图4.8用户实体图
景区信息实体,包含景区账号、度假密码、度假id、地址、景区描述、门票金额、特色等信息,如图4.9所示。
图4.9景区实体图
景区发布活动实体,包含活动的名称、活动描述、报名要求人数、活动图片、活动状态、举办日期等,如图4.10所示。
图4.10活动实体图
景区发布房间实体,包含房间id、房间名称、房间类型、房间描述、房间单价、房间图片等,如图4.11所示。
图4.11房间实体图
房间预订实体,包含房间id、预订id、用户id、预订日期、金额、状态等,如图4.12所示。
图4.12房间实体图
活动报名实体,包含活动id、报名id、用户id、报名时间、报名状态等,如图4.13所示。
图4.13活动报名实体图
门票预订实体,包含房间id、预订id、用户id、预订日期、金额、状态等,如图4.14所示。
图4.14门票预订实体图
旅游路线分享实体,包含分享id、发布用户id、发布日期、标题、内容、图片等,如图4.15所示。
图4.15路线分享实体图
景区设施实体,包含设施名称、所属景区id、设施描述、数量、供应商等,如图4.16所示。
图4.16设施实体图
系统数据库设计主要分为逻辑设计和物理设计,逻辑设计包含实体图设计以及E-R图设计,根据系统模块对存储的实体图进行设计后,要对系统的实体关系进行设计,通过E-R图来对实体之间的联系进行展示,关系实体通过1对m以及n对m来表达业务关联,映射到对应的数据库中应为主外键关系,每个表都要设计自己的单独主键id进行表值的唯一,如图4.17所示。
图4.17系统E-R图
4.2.2 逻辑设计
管理员(管理员id、账号、密码);
用户(用id、用户账号、用户密码、用户身份证、用户描述、用户邮箱、用户电话、用户状态);
景区(景区id,景区账号,密码,地址,景区描述,特色图片,门票金额);
活动(活动编号,活动名称、活动描述、宣传图、景区id、人数限制、状态);
房间(房间编号、房间名称、描述、房间图、景区id、单价、房间类型);
房预定(编号id、用户id、预定日期状态、单价、金额);
活动报名(报名id、活动id、用户id、报名日期、状态);
门票(预定门票id、用户id、景区id、身份证号、时间、门票);
路线分享(分享id、标题,用户id、描述、内容、发布日期,图片);
设施(设施id、名称、描述、位置、供应商、景区id);
4.2.3 物理表设计
表4.1管理员,包含账号、密码等如下:
表4.1管理员数据表
字段 | 描述 | 约束 | 主外键 |
Id | 管理员id | Int(8) | 主键 |
name | 账号 | Varchar(20) | |
password | 密码 | Varchar(60) |
表4.2用户包含用户id、用户账号、用户密码、用户身份证、用户描述、用户邮箱、用户电话、用户状态,用户如下:
表4.2用户数据表
字段 | 描述 | 约束 | 主外键 |
Id | 用户id | Int(8) | 主键 |
name | 账号 | Varchar(20) | |
username | 账号 | Varchar(60) | |
password | 密码 | Varchar(60) | |
card | 用户身份证 | Varchar(60) | |
description | 用户描述 | Varchar(60) | |
| 邮箱 | Varchar(60) | |
tel | 电话 | Varchar(60) | |
status | 状态 | Int(8) |
表4.3景区包含景区id、景区账号、密码、地址、景区描述、特色图片、 门票金额,景区如下:
表4.3景区数据表
字段 | 描述 | 约束 | 主外键 |
Id | 景区id | Int(8) | 主键 |
name | 名称 | Varchar(20) | 外键 |
username | 账号 | Varchar(60) | |
password | 密码 | Varchar(60) | |
address | 地址 | Varchar(60) | |
description | 景区描述 | Varchar(60) | |
photo | 特色图片 | Varchar(60) | |
Money | 门票金额 | Int(8) |
表4.4景区活动包含活动编号,活动名称、活动描述、宣传图、景区id、人数限制、状态,如下:
表4.4景区数据表
字段 | 描述 | 约束 | 主外键 |
Id | 活动编号 | Int(8) | 主键 |
name | 活动名称 | Varchar(20) | |
description | 活动描述 | Varchar(60) | |
Photo | 宣传图 | Varchar(60) | |
dujiaid | 景区id | Int(8) | 外键 |
Renshu | 人数限制 | Int(8) | |
staus | 状态 | Int(8) |
表4.5景区房间包含房间编号、房间名称、描述、房间图、景区id、单价、房间类型,如下:
表4.5景区数据表
字段 | 描述 | 约束 | 主外键 |
Id | 房间编号 | Int(8) | 主键 |
name | 房间名称 | Varchar(20) | |
description | 描述 | Varchar(60) | |
Photo | 房间图 | Varchar(60) | |
dujiaid | 景区id | Int(8) | 外键 |
Money | 单价 | Int(8) | |
Types | 房间类型 | Varchar(60) |
表4.6景区房间包含房间编号、房间名称、描述、房间图、景区id、单价、房间类型,如下:
表4.6房间数据表
字段 | 描述 | 约束 | 主外键 |
Id | 房间编号 | Int(8) | 主键 |
name | 房间名称 | Varchar(20) | |
description | 描述 | Varchar(60) | |
Photo | 房间图 | Varchar(60) | |
dujiaid | 景区id | Int(8) | 外键 |
Money | 单价 | Int(8) | |
Types | 房间类型 | Int(8) |
表4.7房间预订信息,包含编号id、用户id、预定日期、状态、单价、金额,如下:
表4.7房间预订数据表
字段 | 描述 | 约束 | 主外键 |
Id | 编号id | Int(8) | 主键 |
fangid | 房间id | Int(8) | 外键 |
userid | 用户id | Int(8) | 外键 |
riqi | 预定日期 | Date | |
stutus | 状态 | Int(8) | |
price | 单价 | Int(8) | |
money | 金额 | Int(8) |
表4.8活动报名信息,包含报名id、活动id、用户id、报名日期、状态,如下:
表4.8活动报名数据表
字段 | 描述 | 约束 | 主外键 |
id | 报名id | Int(8) | 主键 |
userid | 用户id | Int(8) | 外键 |
huoid | 活动id | Int(8) | 外键 |
riqi | 预定日期 | Date | |
status | 状态 | Int(8) | |
price | 单价 | Int(8) | |
money | 金额 | Int(8) |
表4.9门票预订信息,包含预定门票id、用户id、景区id、身份证号、时间、门票,如下:
表4.9活门票预订数据表
字段 | 描述 | 约束 | 主外键 |
id | 预定门票id | Int(8) | 主键 |
userid | 用户id | Int(8) | 外键 |
dujiaid | 景区id | Int(8) | 外键 |
card | 身份证号 | Varchar(18) | |
riqi | 时间 | Date | |
menpiao | 门票 | Int(8) |
表4.10路线分享信息,包含分享id、标题,用户id、描述、内容、发布日期,图片,如下:
表4.10路线分享表
字段 | 描述 | 约束 | 主外键 |
id | 分享id | Int(8) | 主键 |
userid | 用户id | Int(8) | 外键 |
title | 标题 | Varchar(60) | |
description | 描述 | Varchar(60) | |
content | 内容 | Varchar(60) | |
riqi | 发布日期 | Date | |
photo | 图片 | Varchar(60) |
表4.11设施信息,设施id、名称、描述、位置、供应商、景区id,如下:
表4.11设施信息表
字段 | 描述 | 约束 | 主外键 |
id | 设施id | Int(8) | 主键 |
dujiaid | 景区id | Int(8) | 外键 |
name | 名称 | Varchar(20) | |
description | 描述 | Varchar(60) | |
address | 位置 | Varchar(60) | |
gonyingshang | 供应商 | Varchar(60) |
第5章 系统实现
5.1 用户端实现
5.1.1 景区信息推荐检索展示
在前端可以展示一些东北周边的景区信息,可以进行类型和关键词检索。可根据一些热门网红景区或者是一些点击率高的景区进行优先推荐,也可通过分析用户的历史行为和偏好,对用户的检索历史信息以及关键词检索信息进行提取分析,利用协同过滤算法预测用户未来的景区选择需求,找出相似的游客或景区,从而为游客推荐他们可能感兴趣的景区,为用户提供个性化的旅游度假推荐。
图5.1 景点推荐界面图
- 输入:用户-景点评分矩阵`ratings[M][N]`,目标用户`u` 。
- 计算用户相似度(余弦相似度): 对于每对用户`(i,j)`,计算`sim[i][j] = sum(ratings[i][k]*ratings[j][k]) / (sqrt(sum(ratings[i]²)) * sqrt(sum(ratings[j]²)))`
- 预测未评分景点: - 对目标用户`u`未评分的景点`p`,计算加权评分:`pred_score[p] = sum(sim[u][v] * ratings[v][p])`(v为相似用户).
输出:推荐`pred_score`最高的前K个景点 。
public class AttractionRecommender {
public static void main(String[] args) {
// 用户-景点购票矩阵 (0表示未购买)
int[][] ratings = {{5,4,0,0},{3,0,4,0},{0,5,0,3},{0,0,2,5}};
// 计算用户相似度(余弦相似度)
double[][] similarity = new double[4][4];
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
double dot = 0, mag1 = 0, mag2 = 0;
for (int k = 0; k < 4; k++) {
dot += ratings[i][k] * ratings[j][k];
mag1 += Math.pow(ratings[i][k], 2);
mag2 += Math.pow(ratings[j][k], 2);
}
similarity[i][j] = dot / (Math.sqrt(mag1) * Math.sqrt(mag2));
5.1.2 景区房间信息预订
在房间预订新增界面中可以对预订的景区、房间信息、预订时间等信息进行新增操作,录入后形成预订订单,可对预订订单进行查询,如图5.2所示。
图5.2景区房间预定图
在房间预订新增界面中对每个input定义的输入框中的数据进行填写,然后通过form标签对填写值进行封装,参数为formdata,然后通过ajax对数据值进行异步提交,在controller中获取到对应的数据值后通过StringUtils对数据参数进行验证,然后调用service中的adddata对数据进行insert保存。
@RequestMapping(value = "/add")
private String add(int roomid, String applydate,String content, HttpServletRequest request) throws Exception {
HttpSession session = request.getSession();
Integer userId = (Integer) session.getAttribute("userId");
Apply apply = new Apply();
apply.setStatus(0);
apply.setRoomid(roomid);
apply.setApplydate(applydate);
apply.setUserid(userId);
apply.setContent(content);
applyService.add(apply);
return "redirect:/apply/showapplyuser";
}
5.1.3 用户旅游心得发布
在系统中用户端可以对旅游心得进行发布,对自己的旅游心得的标题、对应的感受内容、描述内容等进行新增发布,如图5.3所示。
图5.3用户旅游心得发布图
在后台的xindecontroller层接收到VO对象数据后,判断是否为空,然后通过调用service进行add新增操作,信息保存后可通过前端进行展示。Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String dateString = formatter.format(currentTime);
xinde.setUserid(userId);
xinde.setRiqi(dateString);
xindeService.add(xinde);
return "redirect:/xinde/showxindeuser";
5.1.4用户旅游路线分享
在系统中用户可以对旅游的路线信息进行新增和维护操作,可输入路线的理由以及对应的路线内容信息进行新增,如图5.4所示。
图5.4用户旅游路线图
在add.jsp新增界面中,通过input对每个业务数值的输入框进行定义,输入对应的内容值后提交,通过form表单将所有的参数值都封装为formdata参数信息,然后通过data/add/在controller层进行匹配,后台首先通过Stringutils对参数值进行验证,确保输入值不为空后进行保存,通过insert进行底层的数据插入,然后返回true,controller层接收到保存成功后重定向到查询列表中。
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String dateString = formatter.format(currentTime);
luxian.setUserid(userId);
luxian.setRiqi(dateString);
luxianService.add(luxian);
return "redirect:/luxian/showluxianuser";
}
@RequestMapping(value = "/addpage" )
private String add1(Model model) throws Exception {
return "renyuan/addluxian";
}
5.2 管理员端实现
5.2.1 景区信息管理实现
在系统中后台端可对景区信息进行新增和维护操作,可对景区的所属位置、所属的类型、特色以及名称和图片等信息进行分页查询,如图5.5所示。
图5.5景区信息管理图
在showdata数据界面中,首先通过controller层对查询数据函数进行调用,通过对page参数以及pagesize等进行设置,建立pagehilper的分页参数数据信息,然后通过dao层的querydatalist对数据进行调用查询,通过在底层进行limit分页分组,查询结果封装到list中然后返回到jsp界面,界面通过组装table展示数据进行渲染分页数据信息。
List<Jingdian> list = null
PagingVO pagingVO = new PagingVO();
//设置总页数
pagingVO.setTotalCnt(jingdianService.getCount());
if (page == null || page == 0) {
pagingVO.setToPageNo(1);
list = jingdianService.findByPaging(1);
} else {
pagingVO.setToPageNo(page);
list = jingdianService.findByPaging(page); }
model.addAttribute("jingdianList", list);
model.addAttribute("pagingVO", pagingVO);
5.2.2 用户管理实现
在系统中可以查询到注册的用户的所有信息,包含用户的账号密码以及注册的个人信息,如图5.6所示。
图5.6用户管理图
在showdata数据界面中,首先通过controller层对查询数据函数进行调用,通过对page参数以及pagesize等进行设置,建立pagehilper的分页参数数据信息,然后通过dao层的querydatalist对数据进行调用查询,通过在底层进行limit分页分组,查询结果封装到list中然后返回到jsp界面,界面通过组装table展示数据进行渲染分页数据信息。
List<user> list = null
PagingVO pagingVO = new PagingVO();
//设置总页数
pagingVO.setTotalCnt(user Service.getCount());
if (page == null || page == 0) {
pagingVO.setToPageNo(1);
list = userService.findByPaging(1);
} else {
pagingVO.setToPageNo(page);
list = user Service.findByPaging(page); }
model.addAttribute("userList", list);
model.addAttribute("pagingVO", pagingVO);
5.2.3订票数据分析实现
在系统中可根据订票数据进行可视化分析,通过对订票数据跟景点进行group by分组,然后通过Highcharts进行可视化展示,如图5.7所示。
图5.7订票数据分析图
在后台首先通过group by 对订票数据进行分组,然后通过mapper层对resultlist结果进行返回,然后通过界面的Highcharts进行可视化展示
plotOptions: { pie: { allowPointSelect: true, cursor: 'pointer', dataLabels: { enabled: true, format: '<b>{point.name}</b>: {point.percentage:.1f} %', style: { color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black' }, series: [{ name: 'Brands', colorByPoint: true, data:giftlist }] |
5.3 景区端实现
5.3.1 景区房间管理
在系统中景区负责人端可对景区的民宿房间信息进行发布,可对民宿房间信息进行新增,包含民宿房间的名称、描述对应的图片信息,如图5.8所示。
图5.8景区房间管理图
在对数据进行新增时,在add的界面中对每个required的必填项中填写对应的数据信息,然后点击button提交按钮,通过ajax进行data的封装,转为json参数,然后通过url参数匹配到对应的controller层,通过java的对象封装在控制层验证数据不为空后执行调用dao层的Insert语句插入数据到数据库。
if(!room.getFile().isEmpty()) { //上传文件路径 String path = request.getServletContext().getRealPath("/images/"); //上传文件名 String filename = room.getFile().getOriginalFilename(); room.setTu(filename); File filepath = new File(path, filename); //判断路径是否存在,如果不存在就创建一个 if (!filepath.getParentFile().exists()) { filepath.getParentFile().mkdirs(); } //将上传文件保存到一个目标文件当中 room.getFile().transferTo(new File(path + File.separator + filename)); } roomService.add(room); return "redirect:/room/showroom"; @RequestMapping(value = "/add") private String add(int roomid, String applydate,String content, HttpServletRequest request) throws Exception { HttpSession session = request.getSession(); Integer userId = (Integer) session.getAttribute("userId"); Apply apply = new Apply(); apply.setStatus(0); apply.setRoomid(roomid); apply.setApplydate(applydate); apply.setUserid(userId); apply.setContent(content); applyService.add(apply); return "redirect:/apply/showapplyuser"; } |
5.3.2 景区器材管理
在系统中景区负责人端可对景区的器材信息进行录入,包含对器材的数量、名称、描述等数量进行新增操作,可对器材设施进行编辑。如图5.9所示。
图5.9景区器材管理图
在对数据进行新增时,在add的界面中对每个required的必填项中填写对应的数据信息,然后点击button提交按钮,通过ajax进行data的封装,转为json参数,然后通过url参数匹配到对应的controller层,通过java的对象封装在控制层验证数据不为空后执行调用dao层的Insert语句插入数据到数据库。
@RequestMapping(value = "/add") List<Jingdian> list = null; //页码对象 PagingVO pagingVO = new PagingVO(); //设置总页数 pagingVO.setTotalCount(qicaiService.getCount()); if (page == null || page == 0) { pagingVO.setToPageNo(1); list = qicaiService.findByPaging(1); } else { pagingVO.setToPageNo(page); list = qicaiService.findByPaging(page); } model.addAttribute("qicaiist", list); model.addAttribute("pagingVO", pagingVO); |
5.3.3景区订票管理
在系统中后台端可对用户的订票数据信息进行分页查看,对订票的人员信息、购买日期以及对应的景点等数据信息分页展示,如图5.10所示。
图5.10景区订票管理图
在查询界面,首先对showdatalist界面进行数据的初始化操作,调用findbydatalist对数据进行查询操作,然后通过在controller层对pagesize以及pagenum进行定义,第一次查询设置pagenum为1,后期查询则pagenum为传输参数page,通过执行底层的分页pagehilper进行操作,将数据结果ArrayList返回到界面中。
@RequestMapping(value = "/shenhe", method = {RequestMethod.GET} ) private String shenhe(Integer id,int status) throws Exception { Yuding yuding= yudingService.findById(id); yuding.setStatus(status); if(status==1){ UUID uuid = UUID.randomUUID(); yuding.setPiao(uuid.toString()); } yudingService.update(yuding); return "redirect:/yuding/showyudingjingdian"; } |
第6章 系统测试
6.1 测试方法
在测试环节主要是对前期的需求与设计进行验证,对不同角色的功能设计以及对应的一些功能点是否合理、是否完整等进行测验。在测验中要搭建测试环节,可通过Junit进行单元测试。同时也要编写合理的测试用例计划,满足正常的测试覆盖要求。对于系统的交互界面的美观度、响应式以及输入和输出展示等要进行测验。对于后端要对业务计算以及数据存储等进行测试,包含数据库的存储速率、查询响应度以及多用户访问时的同时在线并发处理效率等都要进行测试。
参考文献
[1] 党宝欣.乡村振兴战略与乡村生态旅游的互动融合发展研究[J].南方农机,2024,55(23): 100-103.
[2] 余红英,蒋莉莉. 文旅融合推进乡村发展 [J].当代贵州, 2024, (50):57.
[3] 李燕文,卢泓宇,侯县军等.立足资源优势推动文旅融合深度发展[N].惠州日报, 2024-12-11 (001).
[4]朱小琴.后疫情时代乡村旅游精准推荐系统的研究与设计[J].三门峡职业技术学院学报, 2023, 22 (02): 136-140.
[5] 郭羽宁,景莉莉. 基于大数据分析的个性化推荐在吉林省乡村旅游直播中的运用研究[J]. 产业科技创新, 2024, 6 (04): 27-30.
[6]何方.基于CF技术的农家乐信息个性化推荐平台设计[J].安阳师范学院学报,2022,(02):46-48.
[7]贺剑武.基于大数据分析技术的旅游智慧平台设计[J].现代电子技术,2020,43(14):183-186.
[8]刘方磊.基于SSM框架的旅游大数据分析系统设计与实现[J].中国新技术新产品,2023,(21):22-25.
[9]王倩,魏嘉银.基于混合协同过滤的旅游兴趣点推荐算法 [J]. 电脑与电信, 2024, (08): 40-44.
[10]李旭,李景文,俞娜.基于用户需求的旅游路线推荐方法[J].计算机工程与设计,2021,42(05):1339-1345.
[11]孙振强,罗永龙,郑孝遥,等.一种融合用户情感与相似度的智能旅游路径推荐方法[J].计算机科学,2021,48(S01):226-230.
[12]潘兰.基于图神经网络的个性化旅游推荐研究[D].贵州民族大学,2024.
[13]吴昊.基于人工智能的贵州景区个性化旅游推荐系统应用与优化策略研究[J].旅游与摄影,2024,(21):58-60.
[14]王必祥.基于景区状态信息的景点推荐系统的设计与实现[D].南京邮电大学,2023.DOI:10.27251/d.cnki.gnjdc.2023.000110.
[15]完颜兵.基于Flink的个性化旅游推荐系统的研究与开发[D].广西民族大学,2023.DOI:10.27035/d.cnki.ggxmc.2023.000299.
[16]陈一凡.智慧景区中面向AR的内容推荐系统研究与实现[D].河北工程大学,2022.DOI:10.27104/d.cnki.ghbjy.2022.000798.
[17]袁玲.景区服务质量对游客口碑推荐的影响:不同旅游动机的调节分析[J].商业经济研究,2022,(05):92-95.
[18]Mat U A ,Saran N A . Enhancing session-based trip recommendations using matrix factorization: a study on algorithm efficiency and resource utilization [J]. The Journal of Supercomputing, 2024, 81 (1):292-292.
[19]Chen L,Zhu G ,Liang W,et al.Keywords-enhanced Contrastive Learning Model for travel recommendation [J].Information Processing and Management, 2024, 61 (6):103874-103874.
[20]Alatiyyah M.A Novel Constraint-Aware Flexible Model with Ant Colony Optimization for Symmetrical Travel Recommendation [J].Symmetry, 2024, 16 (6): 690-690.
项目难度: 中等难度
适用场景: 相关题目的毕业设计
包含内容: 整套源码+完整毕业论文
大家点赞、收藏、关注、评论啦 。
资源下载|如果你正在做毕业设计,需要源码和论文,不局限于该项目,私聊我