旅游信息推荐系统
一、系统说明
本系统是一款基于Flask框架开发的智能旅游推荐平台,采用复合推荐算法为用户提供个性化旅游建议。系统支持管理员、导游、普通用户三种角色,每个角色拥有独立的功能权限。管理员负责系统整体管理和数据分析;导游负责景点信息录入、旅游路线设计及关联规则分析;普通用户可浏览景点、预定路线、收藏评论、参与论坛交流,并获取智能推荐。系统使用SQLite数据库存储数据,通过Bootstrap 5实现响应式前端界面,利用ECharts进行数据可视化展示。

二、功能说明
2.1 用户认证模块
2.1.1 用户注册
用户可通过注册功能创建账号,需提供用户名、邮箱、密码并选择用户角色(普通用户/导游)。系统自动检测用户名和邮箱的唯一性,防止重复注册。注册成功后系统自动保存用户信息到数据库,支持游客直接注册体验系统功能。

2.1.2 用户登录
用户使用用户名和密码进行登录,系统通过Flask-Login管理用户会话状态。登录成功后系统自动识别用户角色,根据权限跳转到对应的管理页面。管理员进入后台管理系统,导游进入导游管理界面,普通用户进入用户浏览页面。

2.1.3 用户退出
点击退出按钮可安全退出登录,系统清除当前会话信息并跳转到首页。退出操作需要用户登录后才能执行,系统会验证用户身份合法性,确保账号安全,防止未授权操作。

2.2 管理员功能模块
2.2.1 用户管理
管理员可查看系统所有用户列表,包括用户ID、用户名、邮箱、角色、注册时间等信息。支持删除违规用户或测试账号,删除操作需要确认权限,删除成功后用户数据和相关记录会从数据库中清除,确保系统数据整洁。

2.2.2 景点管理
管理员具备景点信息的全面管理权限,可以查看、新增、修改、删除景点信息。景点信息包括名称、位置、类别、价格、描述、图片等。支持图片上传功能,可实时预览图片效果。管理员可对景点信息进行编辑维护,确保信息的准确性和时效性。


2.2.3 评论管理
管理员可查看所有用户评论,包括评论内容、评论者、关联景点/路线、评论时间、审核状态等。支持对评论进行审核操作,可设置为通过审核或待审核状态。管理员可以删除不当评论,维护平台内容质量,营造良好的交流环境。

2.2.4 论坛管理
管理员拥有论坛帖子的最高管理权限,可以查看所有帖子内容,支持置顶重要帖子方便用户浏览。可以锁定讨论帖,禁止继续回复。对于违规或无用的帖子,管理员可以直接删除,确保论坛内容健康有序。

2.2.5 数据分析
管理员可通过数据分析功能查看系统运行情况,包括用户注册趋势、景点访问量统计、路线预定数量、评论活跃度等关键指标。系统使用ECharts生成可视化图表,直观展示数据变化趋势,帮助管理员了解平台运营状况,为决策提供数据支持。


2.3 导游功能模块
2.3.1 景点录入
导游可以添加和编辑自己负责的景点信息,包括景点名称、地理位置、景点类别、门票价格、详细介绍、特色图片等。景点信息录入后可即时发布到系统,供用户浏览查看。导游可以随时修改已录入的景点信息,保持数据的更新和准确。


2.3.2 路线设计
导游可以设计个性化的旅游路线,为路线命名并添加多个景点组成完整行程。支持设置路线总价格和行程描述,路线设计完成后会显示在用户的路线列表中。导游可以修改路线内容和景点组合,优化路线体验,吸引更多用户预定。


2.3.3 关联规则分析
导游使用关联规则算法分析景点的组合模式,发现经常一起被预定的景点组合。系统通过Apriori算法挖掘关联规则,分析支持度、置信度和提升度等指标。导游可以选择推荐阈值,系统自动生成基于关联规则的路线推荐,提升路线设计的科学性。

2.3.4 导游数据分析
导游可以查看自己管理的景点和路线的数据统计,包括景点浏览量、路线预定数、用户评价反馈等。通过ECharts图表展示数据趋势,帮助导游了解哪些景点受欢迎,哪些路线更受用户青睐,从而优化景点介绍和路线设计,提升服务质量。

2.4 普通用户功能模块
2.4.1 景点浏览
用户可以浏览系统中的所有景点信息,通过卡片式布局展示景点图片、名称、位置、价格、类别等关键信息。支持按类别筛选景点,快速找到感兴趣的景点类型。点击景点卡片可以进入详情页,查看景点的详细介绍、所有用户评论,了解景点的全面信息。

2.4.2 路线浏览
用户可以浏览系统提供的各类旅游路线,查看路线包含的景点列表、总价格、行程描述、用户评分等信息。路线以卡片形式展示,方便用户快速浏览和比较。点击路线卡片进入详情页,可以查看详细行程安排和相关评论,帮助用户做出选择。

2.4.3 路线预定
用户选择满意的路线后可以进行预定,预定成功后系统会生成预定记录。用户可以查看自己的预定历史,包括预定时间、路线信息、预定状态等。预定功能支持未登录用户浏览,但需要登录后才能完成预定操作,确保用户身份的真实性。

2.4.4 收藏功能
用户可以将感兴趣的景点添加到收藏夹,方便以后查看。收藏列表显示所有已收藏的景点信息,支持取消收藏操作。收藏功能需要用户登录后使用,系统会记录用户的收藏行为,作为推荐算法的数据来源之一,提升推荐精准度。

2.4.5 评论功能
用户可以对已浏览或已预定的景点和路线进行评论,发表自己的看法和体验感受。评论内容包括评分和文字描述,支持多星评价。评论提交后需要经过管理员审核才能公开显示,确保评论内容健康合规。用户可以查看自己发布的所有评论历史。

2.4.6 智能推荐
系统基于复合推荐算法为用户提供个性化景点推荐,算法结合协同过滤、内容推荐和热门推荐三种策略。协同过滤根据用户行为相似度推荐,内容推荐根据用户偏好类别推荐,热门推荐根据浏览量和预定数推荐。系统自动计算推荐分数,按得分排序展示推荐结果,帮助用户发现感兴趣的景点。

2.4.7 论坛发帖
用户可以在论坛板块发布旅游相关话题的帖子,包括标题、内容、分类等信息。帖子发布后会显示在论坛列表,其他用户可以查看和回复。论坛支持多种话题分类,如景点分享、路线推荐、旅游攻略、求助问答等,方便用户交流旅游经验。

2.4.8 论坛回复
用户可以浏览论坛中的所有帖子,查看帖子的详细内容和已有的回复。用户可以发表自己的回复,参与话题讨论。回复内容包括文字内容,可以针对帖子内容或其他用户的回复进行互动。论坛交流需要登录后才能发帖和回复,确保交流质量。

2.4.9 个人中心
用户可以查看和管理自己的个人信息,包括用户名、邮箱、注册时间等。个人中心展示用户的收藏列表、预定历史、评论记录、发帖记录等信息。用户可以修改部分个人信息,保持资料的准确性。个人中心提供一站式管理,方便用户查看所有历史记录。

2.5 论坛模块
2.5.1 帖子浏览
所有用户都可以浏览论坛中的公开帖子,无需登录。帖子列表显示帖子标题、作者、发布时间、回复数量、置顶状态、锁定状态等信息。置顶帖子会优先显示在列表顶部,方便用户查看重要公告或热门话题。用户可以点击帖子标题进入详情页查看完整内容。

2.5.2 帖子置顶
管理员和版主可以将重要帖子设置为置顶状态,置顶帖子会固定显示在论坛列表顶部。置顶操作通过API接口完成,可以随时取消置顶。置顶功能用于发布公告、活动通知、热门话题等,确保重要信息能够被用户第一时间看到。

2.5.3 帖子锁定
管理员可以锁定帖子,禁止用户继续回复该帖子。锁定操作用于已经解决问题或不再需要讨论的帖子。锁定后的帖子会显示锁定状态图标,用户可以查看内容但无法发表新回复。锁定功能有助于保持论坛内容的时效性和整洁性。
2.5.4 帖子删除
管理员可以删除违规或无用的帖子,删除后帖子及其所有回复都会从系统中移除。删除操作需要谨慎执行,建议先锁定帖子并通知用户。删除功能用于维护论坛内容质量,移除广告、垃圾信息、不良言论等不符合规范的帖子。
三、技术架构
3.1 后端技术
- Flask 3.0.0: 轻量级Python Web框架,负责业务逻辑处理和API接口开发
- Flask-Login: 用户认证和会话管理,确保用户登录状态安全
- Flask-SQLAlchemy: ORM数据库操作工具,简化数据库查询和管理
- Flask-CORS: 跨域资源共享支持,允许前端与后端进行数据交互
3.2 前端技术
- Bootstrap 5.3: 响应式前端框架,提供美观的UI组件和布局
- ECharts 5.4.3: 数据可视化库,用于生成各类统计图表
- JavaScript: 实现前端交互逻辑和AJAX请求
3.3 数据存储
- SQLite: 轻量级关系型数据库,存储用户、景点、路线、评论等数据
- 文件系统: 存储景点图片和静态资源文件
3.4 算法库
- scikit-learn: 机器学习库,实现协同过滤算法
- pandas: 数据处理和分析,用于数据预处理和统计分析
- numpy: 数值计算库,支持矩阵运算和数学函数
- mlxtend: 关联规则挖掘,实现Apriori算法
四、推荐算法说明
系统采用复合推荐算法,结合三种推荐策略,按权重比例计算最终推荐分数:
4.1 协同过滤(权重40%)
基于用户的浏览和预定行为,计算用户之间的相似度,找到行为相似的用户,推荐他们喜欢的景点给当前用户。算法使用余弦相似度度量用户相似性,通过用户-景点评分矩阵进行计算。
4.2 内容推荐(权重30%)
根据用户的历史浏览和收藏记录,分析用户的偏好类别(如自然风光、历史文化、主题乐园等),推荐与用户偏好类别相同的景点。通过景点的类别标签匹配用户偏好,提供个性化内容。
4.3 热门推荐(权重30%)
基于景点的浏览量和预定数统计,推荐热度较高的景点给用户。热门推荐适用于新用户或行为数据较少的用户,通过群体智慧推荐优质景点。
五、数据库设计
系统包含以下核心数据表:
- users: 用户表,存储用户基本信息和角色权限
- attractions: 景点表,存储景点名称、位置、价格、类别等信息
- routes: 路线表,存储旅游路线的基本信息
- route_items: 路线项目表,关联路线和景点的多对多关系
- reviews: 评论表,存储用户对景点和路线的评价
- favorites: 收藏表,记录用户的景点收藏行为
- bookings: 预定表,记录用户的路线预定记录
- forum_posts: 论坛帖子表,存储论坛帖子的内容
- forum_replies: 论坛回复表,存储帖子的回复内容
- user_actions: 用户行为表,记录用户的浏览、搜索等行为数据,用于推荐算法
六、系统部署
6.1 环境要求
- Python 3.11+
- pip 包管理器
6.2 安装步骤
- 安装依赖包:
pip install -r requirements.txt - 初始化数据库:
python app.py首次运行会自动创建数据库 - 启动服务:
python app.py - 访问地址:http://localhost:5000
6.3 默认账号
- 管理员账号:admin / admin123
- 普通用户可自行注册
七、注意事项
- 数据库文件(instance/tourism.db)会自动创建,请勿删除
- 景点图片上传后保存在static/images目录
- 建议定期备份数据库文件,防止数据丢失
- 推荐算法需要一定量的用户行为数据才能达到较好效果
- 论坛内容建议设置人工审核,确保内容质量