(2024最新毕设合集)基于Django的旅游推荐系统小程序-51042|可做计算机毕设JAVA、PHP、爬虫、APP、小程序、C#、C++、python、数据可视化、大数据、文案

目  录

摘要 

1 绪论 

1.1 选题背景与意义 

1.2国内外研究现状 

1.3 论文结构与章节安排 

2 开发环境及相关技术介绍 

2.1 微信开发者工具 

2.2 小程序框架以及目录结构介绍 

2.3 Django框架 

2.4 Python语言 

3 旅游推荐系统系统分析 

3.1 可行性分析 

3.1.1 技术可行性分析 

3.1.2 经济可行性分析 

3.1.3 操作可行性分析 

3.2 系统性能分析 

3.3 系统功能分析 

3.3.1 功能性分析 

3.3.2 非功能性分析 

3.4 系统UML用例分析 

3.5 系统流程分析 

3.5.1 数据流程 

3.5.2 业务流程 

3.6本章小结 

4 旅游推荐系统总体设计 

4.1 系统功能模块设计 

4.1.1整体功能模块设计 

4.1.2用户模块设计 

4.1.3 评论管理模块设计 

4.1.4景点信息管理模块设计 

4.1.5旅游资讯管理模块设计 

4.1.6景点购票管理模块设计 

4.2 数据库设计 

4.2.1 数据库概念结构设计 

4.2.2 数据库逻辑结构设计 

4.3本章小结 

5 旅游推荐系统详细设计与实现 

5.1前台用户功能模块 

5.1.1 前台首页界面 

5.1.2 用户注册界面 

5.1.3 用户登录界面 

5.1.4景点信息界面 

5.1.6留言反馈界面 

5.1.7旅游资讯界面 

5.1.8 我的界面 

5.2后台功能模块 

5.2.1系统用户界面 

5.2.2景点分类管理模块 

5.2.3景点信息管理界面 

5.2.4系统管理界面 

5.2.5资源管理界面 

6系统评估与测试 

6.1 系统测试用例 

6.4 系统测试结果 

结论 

参考文献 

致  谢 

摘要

随着移动互联网的高速发展,人们越来越依赖于手机应用程序来获取各种信息。旅游作为一种受欢迎的休闲活动,吸引了越来越多的人参与。然而,随之而来的问题是,如何更好地为用户提供旅游信息和推荐,以帮助他们更好地安排旅行。因此,我们设计了一种基于微信小程序的旅游推荐系统,旨在为用户提供个性化的旅游信息和推荐服务。

本系统主要基于微信小程序的特性,通过用户授权获取用户的地理位置和个人偏好信息。然后,系统根据用户的地理位置信息,将旅游景点进行分类,并根据用户的个人偏好进行推荐。同时,系统还提供了旅游景点的购票功能,以帮助用户更好地进行旅游。在系统设计方面,我们采用了前后端开发技术,包括HTML、CSS和JavaScript,以及微信小程序的API。后端采用了基于Python的Django框架,用于处理用户请求并提供相应的数据服务。

通过对系统进行测试和评估,我们发现系统能够准确获取用户的地理位置和个人偏好信息,并根据用户的需求,提供准确的旅游信息和推荐。同时,系统的响应速度也较快,能够满足用户的需求。

关键词:Python;旅游推荐系统;微信小程序;Django

Abstract

With the rapid development of mobile Internet, people increasingly rely on mobile applications to obtain various information. Tourism, as a popular leisure activity, has attracted more and more people to participate. However, the accompanying problem is how to better provide travel information and recommendations to users to help them better arrange their travels. Therefore, we have designed a travel recommendation system based on WeChat mini programs, aiming to provide users with personalized travel information and recommendation services.

This system is mainly based on the characteristics of WeChat mini programs, and obtains user geographical location and personal preference information through user authorization. Then, the system classifies tourist attractions based on the user's geographical location information and recommends them according to the user's personal preferences. At the same time, the system also provides a ticketing function for tourist attractions to help users travel better. In terms of system design, we have adopted front-end and back-end development techniques, including HTML, CSS, JavaScript, as well as the API of WeChat mini programs. The backend adopts the Django framework based on Python, which is used to process user requests and provide corresponding data services.

Through testing and evaluating the system, we found that it can accurately obtain the user's geographical location and personal preference information, and provide accurate travel information and recommendations based on the user's needs. At the same time, the response speed of the system is also fast, which can meet the needs of users.

Keywords:Python; Tourism recommendation system; WeChat Mini Program; Django

1 绪论

1.1 选题背景与意义

随着旅游行业的快速发展和人们旅行需求的增加,旅游推荐系统逐渐成为了更加重要的技术工具。传统的旅游推荐方式主要依赖于旅行社或者在线旅行平台的推荐和评价,而这种方式通常受到资源有限、推荐内容单一等问题的限制。因此,基于新兴的移动互联网技术和微信小程序平台,结合个性化推荐算法,开发一款智能的旅游推荐系统具有很高的实用和发展价值。

目前,随着人工智能、大数据和云计算等技术的不断发展和普及,基于用户行为数据和偏好分析的个性化推荐系统得到了广泛的应用,旅游推荐系统也不例外。微信小程序是一个庞大的用户群体,便捷的使用方式和强大的社交分享功能使得它成为了一个理想的平台,结合个性化推荐算法来为用户提供定制化的旅游推荐服务具有广泛的应用前景。

基于微信小程序的旅游推荐系统的研究,不仅可以提升旅游行业的信息传播和推广效率,为用户提供更加便捷和个性化的旅游推荐服务,也对微信小程序的应用和推广起到了推动作用。随着人们对旅游体验要求的提高,智能化的旅游推荐系统可以更好地满足用户多样化、个性化的需求,提升用户的旅游体验和满意度。

此外,研究基于微信小程序的旅游推荐系统也可以为相关学科领域提供新的研究思路和方法,探索用户行为数据在旅游推荐系统中的应用,为推荐算法的优化和改进提供参考和借鉴。在商业应用方面,该研究也可以为旅游企业和相关平台提供更加精准和有效的推广方式,促进旅游产业的发展和创新。综上所述,基于微信小程序的旅游推荐系统研究具有重要的理论和实践意义。

1.2国内外研究现状

旅游推荐系统是一种利用计算机技术,结合用户个性化需求和旅游资源信息,为用户提供个性化的旅游推荐服务的系统。随着互联网技术的普及和旅游产业的发展,旅游推荐系统在提高用户旅游体验、促进旅游资源利用率等方面具有重要意义。本文将就国内外旅游推荐系统的研究现状进行综述和分析。

在国外,旅游推荐系统的研究已经取得了一定的进展。其中,个性化推荐算法是研究的重点之一。基于协同过滤、内容过滤、混合推荐等算法的旅游推荐系统被广泛应用。此外,一些研究还探索了结合社交网络数据、地理位置信息等辅助信息的推荐方法,以提高推荐的准确性和个性化程度。同时,用户体验和系统性能优化也成为研究的热点,例如通过用户反馈机制和智能优化算法提升系统的用户满意度和推荐效果。

国内的旅游推荐系统研究相对起步较晚,但近年来也取得了不少进展。研究者们主要关注于个性化推荐算法的优化和系统性能的提升。在算法方面,国内研究多借鉴国外经验,结合中国特色和实际情况进行创新。同时,由于中国地域广阔、旅游资源丰富,一些研究还关注如何利用地理位置信息、用户社交网络数据等特点进行推荐。此外,随着人工智能、大数据等技术的发展,国内也出现了一些基于机器学习和深度学习的旅游推荐系统研究,以提高推荐的精准度和效率。

综上所述,国内外旅游推荐系统研究在算法、系统性能优化等方面都取得了一定的成果,但仍然存在一些挑战和待解决的问题,如推荐准确性、系统实时性、用户隐私保护等,需要进一步深入研究和探索。

1.3 论文结构与章节安排

本文共分为七章,章节内容安排如下:

第一章:引言。此章节对所设计和实现的系统的背景和状况以及意义进行详细的论述以及说明,同时进行了论文整体框架的结构的简要介绍。

第二章:相关技术介绍。主要对本系统使用的相关技术和开发环境进行介绍。

第三章:系统需求分析。章节所做的主要的工作是对系统进行了技术、经济和操作方面可行性的分析;对系统实行了总体功能的需求、用例分析。

第四章:系统概要设计。主要是对系统的功能结构进行设计,并对系统数据库的概念结构以及物理结构的设计进行了分析。

第五章:系统实现。根据系统功能的划分,分别的对系统所需要实现的前台客户功能和后台管理员功能进行了分析和说明。

第六章:系统测试。主要对系统的部分界面进行测试并对主要功能进行测试

第七章:总结。

2 开发环境及相关技术介绍

2.1 微信开发者工具

微信开发者工具是一款专为小程序开发而设计的应用,它不断改进,提供了便捷的操作方式,并且在开发过程中可以通过微信扫描二维码来访问,从而实现快速、准确的小程序开发和调试。

根据用户的需求,我们将采用不同的屏幕大小来制作小程序。

在完成了视图布置之后,可以通过执行编辑功能,快速更改当前的视图界面。

控制台:方便调试打印输出信息。

将代码上传至腾讯服务器,并在审核过程中填写版本号和备注信息,以确保代码的安全性和准确性。

通过查看资源文件,我们可以快速地调整相关项目的文件目录,从而实现断点调试。

使用远程调试技术,无论是在手机端还是PC端,都能够轻松地进行开发工作。

本地数据存储:显示的是本地存储的数据。

通过使用子父层级结构,我们可以更容易地进行视图调试。

微信的代码体积应该保持在2M 以内,而且在开发过程中,应该严格检查合法域名信息,并且为小程序的后台配置服务器域名。

微信开发者工具已经成为了开发过程中不可或缺的一部分,并且正在不断地改进和完善。

2.2 小程序框架以及目录结构介绍

这款微信小程序的设计旨在帮助用户快速、便捷地创建出一款拥有完全独特特色的应用。它由一套完善的框架结构,将用户界面、操作界面、功能界面等多种功能完美结合,使用户只需要一点点的操作,就能轻松实现微信小程序的创建。框架的核心功能是一个快速的数据绑定机制,它能够轻松地将用户的信息和界面进行一致性的管理。它不仅支持对用户信息的实时监控,还能够根据用户的需求,实现对界面的快速调整和优化,从而使用户能够轻松地构建强大的微信小程序。

2.3 Django框架

Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的Horizon组件采用这种架构进行设计的主要原因。另外,在Django框架中,还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性。Django 项目源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。

Django已经成为web开发者的首选框架,是一个遵循 MVC 设计模式的框架。MVC是Model、View、Controller三个单词的简写,分别代表模型、视图、控制器。Django其实也是一个MTV的设计模式。MTV是Model、Template、View三个单词的简写,分别代表模型、模版、视图。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为MTV模式。

2.4 Python语言

Python是一种高级编程语言,以其简洁、易读和易于学习的特点而受到广泛欢迎。作为一门通用编程语言,Python在各个领域都有广泛的应用,包括Web开发、数据分析、人工智能、科学计算等。Python的设计理念注重代码的可读性和简洁性,使得开发者可以更加专注于问题的解决而不必过多关注语法细节。同时,Python拥有丰富的标准库和活跃的社区,这为开发者提供了大量的工具和资源。Python还支持面向对象编程、函数式编程以及模块化开发,使得代码的组织和复用变得更加便捷。此外,Python还具备良好的跨平台性,可以在多种操作系统上运行。总之,Python的简洁性、可读性和强大的生态系统使其成为众多开发者的首选编程语言。

3 旅游推荐系统系统分析

系统需求分析是系统开发的一个关键环节,它在系统的设计和实现上起到了一个承上启下的位置。系统需求分析是对所需要做的系统进行一个需求的挖掘,如果分析的准确可以精准的解决现实中碰到的问题。如果分析不到位会影响后期系统的实现。一个系统的优秀程度需求分析也是占据了非常大的比例,如果需求分析不到位,后面的系统设计要实现就是一个偏离导航的设计。

3.1 可行性分析

系统可行行分析是对系统对系统可行性进行一个探讨。在探讨系统的可行性上我们主要从技术上的可行性和经济上的可行性以及法律层面的可行性上进行分析,如果三个层面度通过,我们则认为系统是比较可行的。

3.1.1 技术可行性分析

旅游推荐系统具备良好的技术可行性。小程序作为一种跨平台、轻量级且用户友好的应用形式,使用Python作为开发语言,结合相应的库和框架,如Django和Pandas,以实现系统的功能需求。Python作为一种简洁而强大的编程语言,具有丰富的库支持和成熟的开发社区,可以满足旅游推荐系统的开发需求。Django作为Python的Web框架,提供了高度可扩展的开发环境,使得系统的设计和实现更加便捷和高效。

3.1.2 经济可行性分析

基于微信小程序的旅游推荐系统的开发具有显著的成本优势。相较于传统的人工管理方式,系统能够自动化处理大量的数据和信息,减少了人力与时间成本。系统的运行、维护的成本相对较低,只需要投入少量的资源即可保持系统的稳定运行。而且系统的可拓展性与可维护性也降低以后系统的升级和改造成本。因此,旅游推荐系统的开发在经济上是可行的

3.1.3 操作可行性分析

在操作可行性方面,基于微信小程序的旅游推荐系统具备良好的操作可行性。小程序作为一种轻量级应用形式,用户无需进行额外的安装和更新,可以直接在微信平台上访问和使用。基于小程序的界面设计通常简洁明了,易于操作和导航,提供良好的用户体验。

3.2 系统性能分析

基于微信小程序的旅游推荐系统的性能是评价系统好坏的重要指标之一。该部分将从系统响应速度、并发处理能力、稳定性以及安全性等方面进行分析。通过对系统性能进行评估,可以找出潜在的问题,并提出相应的改进措施,以保障系统的高效运行。本系统主要是为了方便用户获取景点信息、通过提供景点购票服务,使用户能够在需要的时候方便地景点购票,包括以下特点:

(1)界面简洁、操作简单方便。设计小程序前端界面时应当站在用户的角度,尽量符合大众审美,迎合用户的使用习惯。整体简洁大方,主要功能位于主页显眼位置,方便用户查找使用,登录界面作为第一页面,用户可快速登录得到自身的功能主页,进行操作。各个页面统一风格,颜色搭配合理,便于用户浏览,个板块间布局合适,提高用户体验。

(2)运行流畅,响应速度快。虽然每日的景点购票信息有限,对系统的并发能力无太大要求,但为了保证用户体验,减少等待时间,仍应该尽可能提高网站的运行速度,可提高更合理的算法设计,更多的模型效率达到,而在业务流程中,减少无关业务量,也是提高运行速度的关键,访问数据库时,选择合适的数据库锁,设计切合实际的数据库表,都能一定程度上提高网站运行效率。

3.3 系统功能分析

3.3.1 功能性分析

根据系统界面分析,我划分为了普通用户模块和管理员模块这两大部分。

普通系统用户模块:

(1)用户注册登录:游客可以随时进入到系统中,对系统中的信息浏览,但是想要实现跟系统模块相关的操作,就必须有这个系统的账号,如果没有账号的话,可以注册用户进行相关的操作,同时用户还可以通过“我的”这个按钮对个人信息以及操作的信息进行管控。

(2)查看旅游推荐系统的首页信息:包括首页、留言反馈、景点信息、旅游资讯、我的等内容。

(3)留言反馈:用户点击首页的“留言反馈”可以输入留言内容进行留言,由管理员进行审核回复。

(4)景点信息:当用户点击“景点信息”这一菜单按钮,可以查看所有的景点信息,可以查看包括地区、景点名称、景点类型、照片、票价、地址、开放时间、景区热线、周边酒店、交通指南等详情信息。用户点击“购票”这一按钮以后会跳转到景点购票填写的界面,根据提示填写好购票的信息,点击“提交”以后购票就完成了,在景点信息详情这个界面,支持所有前台用户对喜欢的景点信息进行点赞、收藏、评论的功能。

(5)旅游资讯:当用户点击“旅游资讯”这一菜单按钮,会显示管理员在后台发布的所有的旅游资讯,可以查看详情,进行收藏、点赞、评论等。

(6)我的:用户在“我的”可以对个人资料和密码等基本信息进行更新,可以对收藏列表的内容进行管理,普通用户也可以对景点购票信息和留言板信息进行管理。

管理员管理模块:

(1)登录:管理员在后台可以输入用户名+密码进行登录,管理员的用户名和密码是在数据库中直接设定好的。

(2)系统用户:管理员可以对旅游推荐系统中的管理员和普通用户账户信息进行增删改查。

(3)景点分类管理:管理员点击“景点分类管理”可对景点的种类描述进行添加管理,并可进行查询、重置或删除等相应操作。

(4)地区信息管理:管理员点击“地区信息管理”可对景点的地区描述进行添加管理,并可进行查询、重置或删除等相应操作

(5)景点信息管理:管理员点击“景点信息管理”会显示出所有的景点信息,支持输入景点名称对景点信息进行查询,如果想要添加新的景点信息,点击“添加”按钮,输入详细信息,点击“提交”按钮就可以添加了,同时可以选择某一条景点,点击“删除”进行删除。也可以对用户提交的景点评论的信息进行管控。

(6)景点购票管理:管理员点击“景点购票管理”可以查看前台用户提交的景点购票信息,管理员可以进行审核并设置支付费用。

(7)系统管理:管理员点击“系统管理”菜单可以对首页展示的轮播图进行管理。

(8)留言管理:管理员点击“留言管理”可以对用户提交的留言反馈信息进行审核回复。

(9)网站公告管理:管理员点击“网站公告管理”菜单可以查看到系统中的所有网站公告信息,对已经存在的网站公告,管理员可以修改,也可以添加新的网站公告或者删除网站公告。

(10)资源管理:管理员可以对旅游推荐系统前台展示的旅游资讯以及旅游资讯所属的分类进行管控。

3.3.2 非功能性分析

旅游推荐系统的非功能性需求,比如旅游推荐系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如3-1表格中:

3-1旅游推荐系统非功能需求表

安全性

主要指旅游推荐系统数据库的安装,数据库的使用和密码的设定必须合乎规范。

可靠性

可靠性是指旅游推荐系统能够按照用户提交的指示进行操作,经过测试,可靠性90%以上。

性能

性能是影响旅游推荐系统占据市场的必要条件,所以性能最好要佳才好。

可扩展性

比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。

易用性

用户只要跟着旅游推荐系统的页面展示内容进行操作,就可以了。

可维护性

旅游推荐系统开发的可维护性是非常重要的,经过测试,可维护性没有问题

3.4 系统UML用例分析

旅游推荐系统的完整UML用例图分别是图3-1和图3-2。

图3-1就是普通用户角色的用例展示。

图3-1 旅游推荐系统普通用户角色用例图

图3-2就是管理员角色的用例展示。

图3-2旅游推荐系统管理员角色用例图

3.5 系统流程分析

3.5.1 数据流程

开发旅游推荐系统最主要的一个目的就是实现用户对景点信息的购票,图3-3就是系统的数据流图。

图3-3景点购票操作展开图

3.5.2 业务流程

分析完旅游推荐系统的数据流,那么接下来我们来看系统的业务流程,图3-4就是业务流程图:

图3-4业务流程图

3.6本章小结

本章主要通过对旅游推荐系统的可行性分析、性能分析、界面分析、系统UML用例分析、系统流程分析,确定整个旅游推荐系统要实现的功能。同时也为旅游推荐系统的代码实现和测试提供了标准。

4 旅游推荐系统总体设计

经过上述的需求分析过后,已经明确了旅游推荐系统的功能需求。针对各个功能需求,制定相应的技术方法与思路进行设计与实现。另外本章将以需求分析为基准,介绍系统中重要的实体类数据,确定各个功能之间的数据表关系,由此来完成数据库表设计。

4.1 系统功能模块设计

4.1.1整体功能模块设计

在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本旅游推荐系统中的用例。那么接下来就要开始对本旅游推荐系统的架构、主要功能和数据库开始进行设计。旅游推荐系统根据前面章节的需求分析得出,其总体设计模块图如图4-1所示。

图4-1 旅游推荐系统功能模块图

4.1.2用户模块设计

本系统的用户包括前台和后台两种用户,模块的功能基本是相同的,前台用户比后台多了一个注册功能,所以以用户模块的结构图为例进行分析,用户模块结构图为例进行分析,如下图:

图4-2用户模块结构图

4.1.3 评论管理模块设计

旅游推荐系统是一个交流性质的公开平台,用户在平台上提交评论,增加用户之间的互动性。但是同时也为了更好的规范评论的内容,给予管理员删除不合适的评论的功能,所以需要专门设计一个评论管理模块,具体的结构图如下:

图4-3评论管理模块结构图

4.1.4景点信息管理模块设计

旅游推荐系统中需要存储不少景点信息,其模块功能结构,具体的结构图如下:

图4-4景点信息模块结构图

4.1.5旅游资讯管理模块设计

旅游推荐系统中需要存储不少旅游资讯,其模块功能结构,具体的结构图如下:

图4-5旅游资讯模块结构图

4.1.6景点购票管理模块设计

旅游推荐系统是中需要存储不少景点购票信息,其模块功能结构,具体的结构图如下:

图4-6景点购票信息模块结构图

4.2 数据库设计

数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。

4.2.1 数据库概念结构设计

下面是整个旅游推荐系统中主要的数据库表总E-R实体关系图。

图4-7 旅游推荐系统总E-R关系图

4.2.2 数据库逻辑结构设计

通过上一小节中旅游推荐系统中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。

表access_token (登陆访问时长)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

token_id

int

10

0

N

Y

临时访问牌ID

2

token

varchar

64

0

Y

N

临时访问牌

3

info

text

65535

0

Y

N

4

maxage

int

10

0

N

N

2

最大寿命:默认2小时

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

user_id

int

10

0

N

N

0

用户编号:

表article (文章:用于内容管理系统的文章)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

article_id

mediumint

8

0

N

Y

文章id:[0,8388607]

2

title

varchar

125

0

N

Y

标题:[0,125]用于文章和html的title标签中

3

type

varchar

64

0

N

N

0

文章分类:[0,1000]用来搜索指定类型的文章

4

hits

int

10

0

N

N

0

点击数:[0,1000000000]访问这篇文章的人次

5

praise_len

int

10

0

N

N

0

点赞数

6

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

8

source

varchar

255

0

Y

N

来源:[0,255]文章的出处

9

url

varchar

255

0

Y

N

来源地址:[0,255]用于跳转到发布该文章的网站

10

tag

varchar

255

0

Y

N

标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开

11

content

longtext

2147483647

0

Y

N

正文:文章的主体内容

12

img

varchar

255

0

Y

N

封面图

13

description

text

65535

0

Y

N

文章描述

表article_type (文章分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

type_id

smallint

5

0

N

Y

分类ID:[0,10000]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]决定分类显示的先后顺序

3

name

varchar

16

0

N

N

分类名称:[2,16]

4

father_id

smallint

5

0

N

N

0

上级分类ID:[0,32767]

5

description

varchar

255

0

Y

N

描述:[0,255]描述该分类的作用

6

icon

text

65535

0

Y

N

分类图标:

7

url

varchar

255

0

Y

N

外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表attraction_information (景点信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

attraction_information_id

int

10

0

N

Y

景点信息ID

2

attraction_name

varchar

64

0

Y

N

景点名称

3

types_of_attractions

varchar

64

0

Y

N

景点类型

4

region

varchar

64

0

Y

N

地区

5

photo

varchar

255

0

Y

N

照片

6

ticket_price

int

10

0

Y

N

0

票价

7

address

varchar

64

0

Y

N

地址

8

opening_hours

varchar

64

0

Y

N

开放时间

9

scenic_area_hotline

varchar

64

0

Y

N

景区热线

10

surrounding_hotels

text

65535

0

Y

N

周边酒店

11

transportation_guidelines

text

65535

0

Y

N

交通指南

12

details

text

65535

0

Y

N

详情

13

hits

int

10

0

N

N

0

点击数

14

praise_len

int

10

0

N

N

0

点赞数

15

recommend

int

10

0

N

N

0

智能推荐

16

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

17

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表auth (用户权限管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

auth_id

int

10

0

N

Y

授权ID:

2

user_group

varchar

64

0

Y

N

用户组:

3

mod_name

varchar

64

0

Y

N

模块名:

4

table_name

varchar

64

0

Y

N

表名:

5

page_title

varchar

255

0

Y

N

页面标题:

6

path

varchar

255

0

Y

N

路由路径:

7

position

varchar

32

0

Y

N

位置:

8

mode

varchar

32

0

N

N

_blank

跳转方式:

9

add

tinyint

3

0

N

N

1

是否可增加:

10

del

tinyint

3

0

N

N

1

是否可删除:

11

set

tinyint

3

0

N

N

1

是否可修改:

12

get

tinyint

3

0

N

N

1

是否可查看:

13

field_add

text

65535

0

Y

N

添加字段:

14

field_set

text

65535

0

Y

N

修改字段:

15

field_get

text

65535

0

Y

N

查询字段:

16

table_nav_name

varchar

500

0

Y

N

跨表导航名称:

17

table_nav

varchar

500

0

Y

N

跨表导航:

18

option

text

65535

0

Y

N

配置:

19

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

20

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表classification_of_tourist_attractions (景点分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

classification_of_tourist_attractions_id

int

10

0

N

Y

景点分类ID

2

types_of_attractions

varchar

64

0

Y

N

景点类型

3

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表collect (收藏)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

collect_id

int

10

0

N

Y

收藏ID:

2

user_id

int

10

0

N

N

0

收藏人ID:

3

source_table

varchar

255

0

Y

N

来源表:

4

source_field

varchar

255

0

Y

N

来源字段:

5

source_id

int

10

0

N

N

0

来源ID:

6

title

varchar

255

0

Y

N

标题:

7

img

varchar

255

0

Y

N

封面:

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表comment (评论)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

comment_id

int

10

0

N

Y

评论ID:

2

user_id

int

10

0

N

N

0

评论人ID:

3

reply_to_id

int

10

0

N

N

0

回复评论ID:空为0

4

content

longtext

2147483647

0

Y

N

内容:

5

nickname

varchar

255

0

Y

N

昵称:

6

avatar

varchar

255

0

Y

N

头像地址:[0,255]

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

9

source_table

varchar

255

0

Y

N

来源表:

10

source_field

varchar

255

0

Y

N

来源字段:

11

source_id

int

10

0

N

N

0

来源ID:

表hits (用户点击)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hits_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

表message (留言板)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

message_id

int

10

0

N

Y

留言板ID:

2

user_id

int

10

0

N

N

0

用户ID:

3

title

varchar

64

0

Y

N

标题:

4

content

longtext

2147483647

0

N

N

内容:

5

nickname

varchar

32

0

N

N

昵称:

6

avatar

varchar

255

0

Y

N

头像:

7

email

varchar

125

0

Y

N

留言者邮箱

8

phone

varchar

11

0

Y

N

留言者手机号码

9

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

11

reply

longtext

2147483647

0

Y

N

回复

12

reply_state

tinyint

4

0

Y

N

0

回复状态

表notice (公告)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

notice_id

mediumint

8

0

N

Y

公告id:

2

title

varchar

125

0

N

N

标题:

3

content

longtext

2147483647

0

Y

N

正文:

4

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表praise (点赞)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

praise_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

status

bit

1

0

N

N

1

点赞状态:1为点赞,0已取消

表regional_information (地区信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

regional_information_id

int

10

0

N

Y

地区信息ID

2

region

varchar

64

0

Y

N

地区

3

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表registered_users (注册用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

registered_users_id

int

10

0

N

Y

注册用户ID

2

name

varchar

64

0

Y

N

姓名

3

gender

varchar

64

0

Y

N

性别

4

examine_state

varchar

16

0

N

N

已通过

审核状态

5

user_id

int

10

0

N

N

0

用户ID

6

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表slides (轮播图)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

slides_id

int

10

0

N

Y

轮播图ID:

2

title

varchar

64

0

Y

N

标题:

3

content

varchar

255

0

Y

N

内容:

4

url

varchar

255

0

Y

N

链接:

5

img

varchar

255

0

Y

N

轮播图:

6

hits

int

10

0

N

N

0

点击量:

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表tourist_attraction_ticket_purchase (景点购票)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

tourist_attraction_ticket_purchase_id

int

10

0

N

Y

景点购票ID

2

order_number

varchar

64

0

Y

N

订单号

3

attraction_name

varchar

64

0

Y

N

景点名称

4

ticket_price

varchar

64

0

Y

N

票价

5

types_of_attractions

varchar

64

0

Y

N

景点类型

6

purchase_quantity

int

10

0

Y

N

0

购买数量

7

total_price

varchar

64

0

Y

N

总价格

8

ticketing_users

int

10

0

Y

N

0

购票用户

9

contact_number

varchar

64

0

Y

N

联系电话

10

pay_state

varchar

16

0

N

N

未支付

支付状态

11

pay_type

varchar

16

0

Y

N

支付类型: 微信、支付宝、网银

12

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

13

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表upload (文件上传)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

upload_id

int

10

0

N

Y

上传ID

2

name

varchar

64

0

Y

N

文件名

3

path

varchar

255

0

Y

N

访问路径

4

file

varchar

255

0

Y

N

文件路径

5

display

varchar

255

0

Y

N

显示顺序

6

father_id

int

10

0

Y

N

0

父级ID

7

dir

varchar

255

0

Y

N

文件夹

8

type

varchar

32

0

Y

N

文件类型

表user (用户账户:用于保存用户登录信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_id

mediumint

8

0

N

Y

用户ID:[0,8388607]用户获取其他与用户相关的数据

2

state

smallint

5

0

N

N

1

账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

3

user_group

varchar

32

0

Y

N

所在用户组:[0,32767]决定用户身份和权限

4

login_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

上次登录时间:

5

phone

varchar

11

0

Y

N

手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

6

phone_state

smallint

5

0

N

N

0

手机认证:[0,1](0未认证|1审核中|2已认证)

7

username

varchar

16

0

N

N

用户名:[0,16]用户登录时所用的账户名称

8

nickname

varchar

16

0

Y

N

昵称:[0,16]

9

password

varchar

64

0

N

N

密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

10

email

varchar

64

0

Y

N

邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

11

email_state

smallint

5

0

N

N

0

邮箱认证:[0,1](0未认证|1审核中|2已认证)

12

avatar

varchar

255

0

Y

N

头像地址:[0,255]

13

open_id

varchar

255

0

Y

N

针对获取用户信息字段

14

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

15

vip_level

varchar

255

0

Y

N

会员等级

16

vip_discount

double

11

2

Y

N

0.00

会员折扣

表user_group (用户组:用于用户前端身份和鉴权)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

group_id

mediumint

8

0

N

Y

用户组ID:[0,8388607]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]

3

name

varchar

16

0

N

N

名称:[0,16]

4

description

varchar

255

0

Y

N

描述:[0,255]描述该用户组的特点或权限范围

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

register

smallint

5

0

Y

N

0

注册位置:

9

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

4.3本章小结

整个旅游推荐系统的需求分析主要对系统总体架构以及功能模块的设计,通过建立E-R模型和数据库逻辑系统设计完成了数据库系统设计。

5 旅游推荐系统详细设计与实现

旅游推荐系统的详细设计与实现主要是根据前面的旅游推荐系统的需求分析和旅游推荐系统的总体设计来设计页面并实现业务逻辑。主要从旅游推荐系统界面实现、业务逻辑实现这两部分进行介绍。

5.1前台用户功能模块

5.1.1 前台首页界面

旅游推荐系统的主界面设计如下所示:首先,用户进入系统时会看到一个导航栏,其中包括首页、旅游资讯和我的等菜单选项。在导航栏上方有景点信息和留言反馈模块的快捷入口,再往上是轮播图,用于展示精选的景点或其他相关信息。这样的主界面设计提供了用户友好的导航和视觉体验,使用户能够快速了解系统的功能和内容,并进行相关操作和浏览。其主界面展示如下图5-1所示。

图5-1 前台首页界面图

5.1.2 用户注册界面

旅游推荐系统的注册界面设计简洁明了。用户在注册界面上填写用户名、密码、确认密码、电子邮箱和手机号码等必要信息,并点击注册按钮提交注册请求。为确保安全性,系统可能会要求用户输入验证码。如果填写信息有误或缺失,系统会提供相应的错误提示。注册界面还包含登录链接,方便已注册用户直接登录系统。通过这样的设计,旅游推荐系统的注册界面旨在提供用户友好的注册体验,保障用户信息的安全性和隐私权,并确保符合相关法规和政策要求。其用注册界面展示如下图5-2所示。

图5-2注册界面图 

注册关键代码如下:

  def Register(self, ctx):

        print("===================注册=====================")

        userService = service_select("user")

        body = ctx.body

        if "username" not in body and body["username"] == '':

            return ctx.response(json.dumps({

                "error": {

                    "code": 70000,

                    "message": "用户名不能为空",

                }

            }, ensure_ascii=False))

        if "user_group" not in body and body["user_group"] == '':

            return ctx.response(json.dumps({

                "error": {

                    "code": 70000,

                    "message": "用户组不能为空",

                }

            }, ensure_ascii=False))

        if "password" not in body and body["password"] == '':

            return ctx.response(json.dumps({

                "error": {

                    "code": 70000,

                    "message": "密码不能为空",

                }

            }, ensure_ascii=False))

        post_param = body

        post_param['nickname'] = body["nickname"] or ""

        post_param['password'] = md5hash(body["password"])

        obj = userService.Get_obj({"username": post_param['username']}, {"like": False})

        if obj:

            return ctx.response(json.dumps({

                "error": {

                    "code": 70000,

                    "message": "用户名已存在",

                }

            }, ensure_ascii=False))

        ret = {

            "error": {

                "code": 70000,

                "message": "注册失败",

            }

        }

        bl = userService.Add(post_param)

        if bl:

            ret = {

                "result": {

                    "bl": True,

                    "message": "注册成功"

                }

            }

        return ctx.response(json.dumps(ret, ensure_ascii=False))      

5.1.3 用户登录界面

旅游推荐系统的登录界面设计简洁明了。用户可以在登录界面上输入自己的用户名,并填写与账号对应的密码。通过点击“登录”按钮,用户可以完成登录操作。如果用户忘记密码,登录界面提供了相应的“忘记密码”链接,方便找回或重置密码。同时,登录界面也可能包含一个注册链接,以便新用户可以直接跳转到注册界面进行账号注册。通过这样的设计,旅游推荐系统的登录界面旨在提供用户友好、便捷的登录体验,确保用户能够安全、快速地进入系统,用户登录界面如下图5-3所示。

图5-3用户登录界面图

用户登录关键代码如下:

 def Login(self, ctx):

        print("===================登录=====================")

        ret = {

            "error": {

                "code": 70000,

                "message": "账户不存在",

            }

        }

        body = ctx.body

        password = md5hash(body["password"]) or ""

        obj = service_select("user").Get_obj(

            {"username": body["username"]}, {"like": False}

        )

        if obj:

            user_group = service_select("user_group").Get_obj({'name': obj['user_group']}, {"like": False})

            if user_group and user_group['source_table'] != '':

                user_obj = service_select(user_group['source_table']).Get_obj({"user_id": obj['user_id']},                                                                       {"like": False})

                if user_obj['examine_state'] == '未通过':

                    ret = {

                        "error": {

                            "code": 70000,

                            "message": "账户未通过审核",

                        }

                    }

                    return ret

                if user_obj['examine_state'] == '未审核':

                    ret = {

                        "error": {

                            "code": 70000,

                            "message": "账户未审核",

                        }

                    }

                    return ret

            if obj["state"] == 1:

                if obj["password"] == password:

                    timeout = timezone.now()

                    timestamp = int(time.mktime(timeout.timetuple())) * 1000

                    token = md5hash(str(obj["user_id"]) + "_" + str(timestamp))

                    ctx.request.session[token] = obj["user_id"]

                    service_select("access_token").Add(

                        {"token": token, "user_id": obj["user_id"]}

                    )

                    obj["token"] = token

                    ret = {

                        "result": {"obj": obj}

                    }

                else:

                    ret = {

                        "error": {

                            "code": 70000,

                            "message": "密码错误",

                        }

                    }

            else:

                ret = {

                    "error": {

                        "code": 70000,

                        "message": "用户账户不可用,请联系管理员",

                    }

                }

        return ctx.response(json.dumps(ret, ensure_ascii=False))

5.1.4景点信息界面

正式通过注册的用户可以点击首页的景点信息快捷入口菜单,在此页面查看景点信息,包括地区、景点名称、景点类型、照片、票价、地址、开放时间、景区热线、周边酒店、交通指南等,点击下方的“购票”进入到景点购票填写页面。也可以对景点信息进行点赞、评论和收藏操作。景点详情展示界面如下图5-4所示。

图5-4景点信息详情展示界面图

查询景点信息的逻辑代码如下所示。

def Get_obj(self, ctx):

  query = dict(ctx.query)

  config_plus = {}

  if "field" in query:

   field = query.pop("field")

   config_plus["field"] = field

  obj = self.service.Get_obj(query, obj_update(self.config, config_plus))

  if self.service.error:

   return {"error": self.service.error}

  if obj:

   self.interact_obj(ctx, obj)

  return {"result": {"obj": obj}}

景点购票界面如下图5-5所示。

图5-5景点购票界面图

5.1.6留言反馈界面

用户点击“留言反馈”进入到留言反馈信息填写页面,点击输入标题和留言反馈内容完成提交留言,由管理员审核回复。留言反馈界面如下图5-6所示。

图5-6留言反馈界面图

添加留言反馈信息的逻辑代码如下所示。

def Add(self, ctx):

  body = ctx.body

  unique = self.config.get("unique")

  obj = None

  if unique:

   qy = {}

   for i in range(len(unique)):

    key = unique[i]

    qy[key] = body.get(key)

   obj = self.service.Get_obj(qy)

  if not obj:

   error = self.Add_before(ctx)

   if error["code"]:

    return {"error": error}

   error = self.Events("add_before", ctx, None)

   if error["code"]:

    return {"error": error}

   result = self.service.Add(body, self.config)

   if self.service.error:

    return {"error": self.service.error}

   res = self.Add_after(ctx, result)

   if res:

    result = res

   res = self.Events("add_after", ctx, result)

   if res:

    result = res

   return {"result": result}

  else:

   return {"error": {"code": 10000, "message": "已存在"}} 

5.1.7旅游资讯界面

当访客点击旅游推荐系统中导航栏上的“旅游资讯”后将会进入到该“旅游资讯”列表的界面,然后选择想要看的旅游资讯,点击进入到详细界面,在详细界面可以收藏+赞+评论等操作。旅游资讯界面如下图5-7所示。

图5-7旅游资讯界面图

5.1.8 我的界面

当普通用户点击“我的”这个按钮,会出现子菜单,可以对基本信息、收藏、景点购票和留言板管理模块的信息进行管理。点击“基本信息”可以对个人的资料、登录系统的密码以及头像和昵称等信息进行设置管理。我的界面如下图5-8所示。

图5-8我的界面图

修改基本信息关键代码如下:

    def Set(self, ctx):

  error = self.Set_before(ctx)

  if error["code"]:

   return {"error": error}

  error = self.Events("set_before", ctx, None)

  if error["code"]:

   return {"error": error}

  query = ctx.query

  if 'page' in query.keys():

   del ctx.query['page']

  if 'size' in query.keys():

   del ctx.query['size']

  if 'orderby' in query.keys():

   del ctx.query['orderby']

  result = self.service.Set(ctx.query, ctx.body, self.config)

  if self.service.error:

   return {"error": self.service.error}

  res = self.Set_after(ctx, result)

  if res:

   result = res

  res = self.Events("set_after", ctx, result)

  if res:

   result = res

  return {"result": result}

5.2后台功能模块

5.2.1系统用户界面

旅游推荐系统中的管理人员在“系统用户”这一菜单是中可以对注册的前台用户以及管理员进行管控。系统用户如下图5-9所示。

图5-9系统用户界面图

获取系统用户列表关键代码如下:

  def Get_list(self, ctx):

  query = dict(ctx.query)

  config_plus = {}

  if "field" in query:

   field = query.pop("field")

   config_plus["field"] = field

  if "page" in query:

   config_plus["page"] = query.pop("page")

  if "size" in query:

   config_plus["size"] = query.pop("size")

  if "orderby" in query:

   config_plus["orderby"] = query.pop("orderby")

  if "like" in query:

   config_plus["like"] = query.pop("like")

  if "groupby" in query:

   config_plus["groupby"] = query.pop("groupby")

  count = self.service.Count(query)

  lst = []

  if self.service.error:

   return {"error": self.service.error}

  elif count:

   lst = self.service.Get_list(query,

          obj_update(self.config, config_plus))

   if self.service.error:

    return {"error": self.service.error}

   self.interact_list(ctx, lst)

  return {"result": {"list": lst, "count": count}}

5.2.2景点分类管理模块

管理员执行对景点分类管理,可以对景点信息的分类类型进行添加管理,并可进行查询、重置或删除等相应操作。景点分类添加界面如下图所示。

图5-10 景点分类添加界面图

5.2.3景点信息管理界面

管理员点击“景点信息管理”会显示出所有的景点信息,支持输入景点名称或景点类型对景点信息进行查询,也可以添加新的景点信息,对景点信息评论进行管控。景点信息管理界面如下图5-11所示。

图5-11景点信息管理界面图

5.2.4系统管理界面

管理员点击“系统管理”菜单可以对系统的轮播图进行管理,查看到系统中的所有轮播图信息,对已经存在的轮播图,管理员可以修改,也可以发布新的轮播图信息。轮播图管理界面如下图5-12所示。

图5-12系统管理界面图

5.2.5资源管理界面

管理员点击“资源管理”这一菜单,可以对前台展示的旅游资讯以及资讯分类进行增删改查的操作,界面如下图5-13所示。

图5-13资源管理界面图

6 系统评估与测试

6.1 系统测试用例

系统测试包括:用户登录功能测试、旅游资讯查看功能测试、景点信息添加、景点信息搜索、密码修改功能测试,如表6-1、6-2、6-3、6-4、6-5所示:

用户登录功能测试:

表6-1 用户登录功能测试表

用例名称

用户登录系统

目的

测试用户通过正确的用户名和密码可否登录功能

前提

未登录的情况下

测试流程

1) 进入登录页面

2) 输入正确的用户名和密码

预期结果

用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入

实际结果

实际结果与预期结果一致

旅游资讯查看功能测试:

表6-2 旅游资讯查看功能测试表

用例名称

旅游资讯查看

目的

测试旅游资讯查看功能

前提

用户登录

测试流程

点击旅游资讯列表

预期结果

可以查看到所有旅游资讯

实际结果

实际结果与预期结果一致

管理员添加景点信息测试:

表6-3 管理员添加景点信息测试表

用例名称

添加景点信息测试用例

目的

测试景点信息添加功能

前提

管理员正常登录情况下

测试流程

1)管理员点击景点信息管理,然后点击添加后并填写信息。

2)点击进行提交。

预期结果

提交以后,页面首页会显示新的景点信息

实际结果

实际结果与预期结果一致

景点信息搜索功能测试:

表6-4景点信息搜索功能测试表

用例名称

景点信息搜索测试

目的

测试景点信息搜索功能

前提

测试流程

1)在搜索框填入搜索关键字。

2)点击搜索按钮。

预期结果

页面显示包含有搜索关键字的景点信息

实际结果

实际结果与预期结果一致

密码修改搜索功能测试:

表6-5 密码修改功能测试表

用例名称

密码修改测试用例

目的

测试管理员密码修改功能

前提

管理员用户正常登录情况下

测试流程

1)管理员密码修改并完成填写。

2)点击进行提交。

预期结果

使用新的密码可以登录

实际结果

实际结果与预期结果一致

6.4 系统测试结果

通过编写旅游推荐系统的测试用例,已经检测完毕用户登录功能测试、旅游资讯查看功能测试、景点信息添加、景点信息搜索、密码修改功能测试,通过这5大模块为旅游推荐系统的后期推广运营提供了强力的技术支撑。

结论

通过本文的研究和实践,我们成功地基于微信小程序框架设计并实现了一个旅游推荐系统。该平台具有稳定、高效、可靠的特点,通过合理的功能模块设计和前后端分离的架构,提供了良好的用户体验。在系统测试中,验证了系统的稳定性和功能完整性,表明基于微信小程序在快速开发和高质量软件构建方面具有显著优势。

本文的研究结果表明,使用基于微信小程序能够快速开发出高效可靠的旅游推荐系统。该平台通过合理的功能设计和良好的用户体验,提供了便捷的高校学生实习综合服务服务,促进了资源的有效利用。同时,基于微信小程序的应用也为系统的开发和维护带来了便利。然而,本研究还存在一些不足之处,如对系统安全性和性能优化的考虑不够充分。未来的研究可以进一步完善系统的功能和性能,并探索其他技术和方法的应用,以进一步提升旅游推荐系统的质量和用户满意度。

参考文献

[1]Wang Y .Innovative Research on Deep Learning Algorithm in Intelligent Attractions Recommendation Technology[J].Applied Mathematics and Nonlinear Sciences,2024,9(1):

[2]王必祥.基于景区状态信息的景点推荐系统的设计与实现[D].南京邮电大学,2023.DOI:10.27251/d.cnki.gnjdc.2023.000110.

[3]郭鹤楠.基于Django和Python技术的网站设计与实现[J].数字通信世界,2023,(06):60-62.

[4]Zhang S ,Wang L ,Fei R , et al.Attraction Recommendation Based on Tourism Context Modeling and Multi‐neural Collaborative Filtering Algorithm[J].IEEJ Transactions on Electrical and Electronic Engineering,2023,18(8):1280-1295.

[5]班航.基于旅游大数据的用户画像建模及个性化推荐研究[D].安徽工程大学,2023.DOI:10.27763/d.cnki.gahgc.2023.000038.

[6]占贻畅.旅游景点客流量预测与个性化推荐算法研究[D].长春工业大学,2023.DOI:10.27805/d.cnki.gccgy.2023.000583.

[7]李恩.基于用户推荐算法的武汉市红色旅游平台设计与实现[D].长江大学,2023.DOI:10.26981/d.cnki.gjhsc.2023.001455.

[8]Yegulalp S .Plunge into Python with 'Python Crash Course 3rd Edition'[J].InfoWorld.com,2023,

[9]Tyson M .Error tracking with Sentry, Python, and Django[J].InfoWorld.com,2022,

[10]陈勇.基于协同过滤算法的旅游推荐系统的设计[J].价值工程,2022,41(30):160-162.

[11]李志敏.基于数字文化旅游系统的推荐算法研究[D].青海师范大学,2022.DOI:10.27778/d.cnki.gqhzy.2022.000223.

[12]蒋佳媛.基于点评数据的个性化景点推荐研究[D].上海财经大学,2021.DOI:10.27296/d.cnki.gshcu.2021.002275.

[13]邱红丽,张舒雅.基于Django框架的web项目开发研究[J].科学技术创新,2021,(27):97-98.

[14]杨舒涵.基于情境感知的兴趣点推荐算法研究与应用[D].中国矿业大学,2021.DOI:10.27623/d.cnki.gzkyu.2021.000202.

[15]汪洋,姜新通.MVC框架在Python与Django下的设计研究[J].电脑与信息技术,2021,29(01):55-57+63.DOI:10.19414/j.cnki.1005-1228.2021.01.017.

[16]左华煜.个性化旅游推荐方法研究与应用[D].江苏科技大学,2021.DOI:10.27171/d.cnki.ghdcc.2021.000424.

[17]史睿瑶.基于协同过滤算法的旅游推荐系统的设计与实现[J].电脑知识与技术,2020,16(35):64-66.DOI:10.14004/j.cnki.ckt.2020.3784.

[18]钱学明,基于媒体大数据的景点及位置相关服务推荐.广东省,广东顺德西安交通大学研究院,2020-12-02.

[19]史睿瑶.基于改进协同过滤算法的旅游推荐系统设计与实现[D].河北工程大学,2020.DOI:10.27104/d.cnki.ghbjy.2020.000602.

[20]崔春生,王雪,李文龙.基于用户在线评论的旅游景点推荐算法研究[J].系统科学与数学,2020,40(06):1103-1116.

致  谢

眨眼之间,大学生活就要结束了。在本文的最后,我要感谢我和蔼可亲的导师、团结有爱的同学的帮助和鼓励。此刻,我找不到感谢之词可以用来表达我最深切的感激之情。尤其感谢我的指导老师,在选题的过程中与我进行了深入的交流,在毕业设计期间给我提供了一些指导。四年的学习生活让我受益良多,老师们的丰富的学术知识、认真负责的学习态度让我受益匪浅。在此,我深深地感谢那些曾经给予我帮助和指导的老师!

我们的论文得益于许多学者的贡献,他们的研究成果为我们提供了宝贵的指导,使我们能够更好地完成这篇文章。感谢我的同学和朋友在我的写作以及排版过程中给予热情的帮助,才使得我比较顺利的完成了这篇论文。

感谢大学里遇见的朋友,你们在我这四年里留下无数的温暖和快乐,让我对这个校园多了一份留念。最后,感谢我的父母、辅导员、班长,以及室友们对我大学生活上的关心和理解,让我能保持乐观和追求我所热爱的。尽管我的能力有限,但我仍然尽力去完善这篇论文,并且诚挚地希望各位老师和学友能够给予宝贵的指导与意见。

免费领取项目源码,请关注❤点赞收藏并私信博主,谢谢-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值