计算机java web毕业设计——国内热门旅游景点数据 项目编号:84461(案例分析)

摘  要

随着国内旅游业的蓬勃发展,人们对于旅游景点的选择需求日益增长。在这个信息时代,游客不再满足于简单的文字和图片介绍,而是渴望获得更全面、准确、及时的旅游景点信息。因此,如何有效地整合、处理和展示这些旅游数据,成为了旅游行业面临的重要挑战。

Django,作为一个功能强大的Web开发框架,以其高效、灵活的特性在Web应用中发挥着越来越重要的作用。结合Django框架,我们可以轻松地构建一个具有交互性的Web平台,为游客提供便捷、直观的数据查询和决策支持工具。

在此背景下,本研究旨在利用Django框架,结合爬虫技术,对国内热门旅游景点数据进行整合、清洗、存储和可视化展示。通过构建一个基于Django的旅游景点数据可视化系统,我们期望为游客提供一个全面、准确、实时的旅游景点信息查询平台,帮助他们更好地了解和选择旅游景点,提升旅游体验。

本研究的意义不仅在于提供便捷的景点信息查询服务,更在于通过数据可视化技术,将复杂的旅游数据以图表、地图等形式直观地展示出来,使游客能够更加直观地了解景点分布和特色,提高景点信息的可用性和可理解性。同时,这一研究也有助于推动旅游行业的数字化转型,为旅游业的可持续发展注入新的活力。

综上所述,本研究通过Django框架和爬虫技术,整合、处理和展示国内热门旅游景点数据,旨在为游客提供更全面、准确、实时的旅游信息查询服务,推动旅游行业的数字化转型和发展。

关键词:Django框架;Web;旅游景点数据

Domestic popular tourist attraction data

Abstract

With the booming development of domestic tourism industry, people's demand for choosing tourist attractions is increasing day by day. In this information age, tourists are no longer satisfied with simple text and image introductions, but crave more comprehensive, accurate, and timely information about tourist attractions. Therefore, how to effectively integrate, process, and display these tourism data has become an important challenge faced by the tourism industry.

Django, as a powerful web development framework, is playing an increasingly important role in web applications due to its efficient and flexible features. By combining the Django framework, we can easily build an interactive web platform that provides tourists with convenient and intuitive data queries and decision support tools.

In this context, the aim of this study is to integrate, clean, store, and visualize data from popular tourist attractions in China using the Django framework and web scraping technology. By building a Django based tourist attraction data visualization system, we aim to provide tourists with a comprehensive, accurate, and real-time platform for querying tourist attraction information, helping them better understand and choose tourist attractions, and improving their travel experience.

The significance of this study is not only to provide convenient scenic spot information query services, but also to use data visualization technology to visually display complex tourism data in the form of charts, maps, etc., so that tourists can have a more intuitive understanding of the distribution and characteristics of scenic spots, and improve the availability and comprehensibility of scenic spot information. Meanwhile, this study also contributes to promoting the digital transformation of the tourism industry and injecting new vitality into its sustainable development.

In summary, this study integrates, processes, and displays data on popular domestic tourist attractions through the Django framework and web crawling technology, aiming to provide tourists with more comprehensive, accurate, and real-time tourism information query services, and promote the digital transformation and development of the tourism industry.

Keywords: Django framework; Web; Tourist attraction data

目  录

1 引言

1.1 研究背景和意义

1.2国内外研究现状

1.3论文结构与章节安排

2相关技术介绍

2.1 MySQL描述

2.2 Python编程语言

2.3 B/S模式

2.4  Django框架

3 系统分析

3.1可行性分析

3.1.1法律可行性分析

3.1.2技术可行性分析

3.1.3经济可行性分析

3.1.4社会可行性分析

3.2 系统功能分析

3.2.1 功能性分析

3.3系统性能需求分析

3.4 系统用例分析

3.5 系统流程分析

3.5.1业务流程分析

3.5.2数据流程分析

3.6本章小结

4 总体设计

4.1 系统模块设计

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.5 景点展示界面

5.2管理员功能模块

5.2.1 系统用户管理界面

5.2.2 评分信息管理界面

5.2.3 攻略数量管理界面

5.2.4景点分类管理界面

5.2.5系统管理界面

6系统测试

6.1 系统测试用例

6.2 系统测试结果

结论

参考文献

致  谢

1 引言

1.1 研究背景和意义

随着国内旅游业的蓬勃发展,人们对于旅游景点的选择需求日益增长,而旅游景点数据的研究与利用也变得越来越重要。在信息时代,人们渴望获得更全面、准确、及时的旅游景点信息,以帮助他们做出更好的旅游决策。因此,研究国内热门旅游景点数据,不仅有助于满足游客的信息需求,也有助于推动旅游业的数字化转型和发展。

国内热门旅游景点数据的研究背景,主要基于以下几个方面的考虑。首先,随着人们生活水平的提高和休闲时间的增多,越来越多的人选择旅游作为放松和娱乐的方式,旅游市场呈现出蓬勃发展的态势。其次,互联网和移动互联网的普及,使得人们可以更加便捷地获取和分享旅游信息,这也促进了旅游景点数据的产生和积累。

研究国内热门旅游景点数据具有重要的意义。首先,通过对旅游景点数据分析,我们可以了解游客的旅游偏好和需求,为旅游景点的规划和开发提供科学依据。其次,通过数据可视化技术,我们可以将复杂的旅游数据以图表、地图等形式直观地展示出来,提高数据的可用性和可理解性,帮助游客更好地了解和选择旅游景点。此外,研究旅游景点数据还有助于推动旅游行业的数字化转型和发展,提高旅游服务的质量和效率,促进旅游业的可持续发展。

综上所述,研究国内热门旅游景点数据具有重要的背景和意义。通过对旅游景点数据的挖掘和分析,我们可以更好地了解游客的需求和行为,为旅游景点的规划和开发提供科学依据,推动旅游行业的数字化转型和发展。同时,这也有助于提升旅游服务的质量和效率,提高游客的旅游体验,促进旅游业的可持续发展。

1.2国内外研究现状

在国内,随着大数据和人工智能技术的快速发展,越来越多的学者和研究机构开始关注旅游景点数据的挖掘和分析。他们利用爬虫技术从互联网上抓取大量的旅游景点数据,通过数据挖掘和机器学习等技术手段,对游客的旅游偏好、旅游行为等方面进行深入的研究。同时,国内的研究还注重将旅游景点数据与社交媒体、在线旅游服务平台等相结合,探索新的旅游信息推荐和服务模式。

在国外,对于旅游景点数据的研究已经相对成熟。许多国际知名企业和研究机构在旅游景点数据的收集、处理和分析方面积累了丰富的经验。他们不仅关注游客的旅游偏好和行为,还注重研究旅游景点与自然环境、社会文化等因素的关系。同时,国外的研究还涉及到旅游景点数据的可视化展示、旅游决策支持系统等方面,为游客提供更加全面、准确的旅游信息服务。

综上所述,国内外对于国内热门旅游景点数据的研究现状呈现出积极的发展态势。国内的研究注重技术应用和创新,而国外的研究则更加注重理论与实践的结合。未来,随着技术的不断进步和应用需求的提升,国内外的研究将会更加深入和广泛,为旅游业的可持续发展注入新的活力。

1.3论文结构与章节安排

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

第一章:引言。第一章主要介绍了课题研究的背景和意义,国内目前相关研究现状。

第二章:相关技术介绍。

第三章:系统需求分析。第三章主要从系统的用户、功能等方面进行需求分析。

第四章:系统设计。第四章主要对系统框架、系统功能模块、数据库进行功能设计。

第五章:系统实现。第五章主要介绍了系统框架搭建、系统界面的实现。

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

2相关技术介绍

2.1 MySQL描述

现在MySQL数据库在网络上它可以支撑许多个用户,而且也可以适应客服机和服务器的部署或者配置等,我们这里的服务器和客户机其实就是一种软件上的概念,并且我们使用的计算机硬件也与他们不存在一一对应的关系。

MySQL是一款非常流行的关系型数据库管理系统,它的出现一直都是佼佼者,它不仅功能非常强大,而且使用起来非常方便,并且MySQL的跨平台能力也很好,软件开发人员非常喜欢它的这些强大的优点。不同于其他关系型数据库,对于数据库的管理它有着自己的一套方案,通过对用户设定相应的权限和角色来达到对数据库的管理。由此可见,MySQL是一个能够适用于吞吐量高,可靠性高,效率高的一款数据库管理软件。

优点一:MySQL中对于不同身份的用户都设定其不同的权限来完成不同的业务逻辑,这使得MySQL在安全和完整性远远超出了其他关系型数据库。

优点二:对于那些动画、图形和声音的数据类型MySQL也可以支持,这说明多数据类型MySQL也是可以支持的。

优点三:MySQL还可以做到多个平台的开发,软件开发的多种编程语言都可以实现对MySQL数据库的操作。

2.2 Python编程语言

Python是一种开发语言,能够以直译的方式进行计算机语言,而且可以面向对象编程。它是由Guido van Rossum在十九世纪八十年代末研发出来,并且在九一年公开发行使用。Python有很多特点,比如有简洁的语法,清晰的语句,丰富的类库。正式由于这些优点,能够非常快速的和其他语言进行结合,来实现各种功能模块。很多人给它起了个外号叫“黏黏胶”语言。使用Python快速生成程序的原型,是现在很多程序员使用的方法。如果其中有比较特殊要求的地方,也非常方便的进行修改。

而且PyQt具有双证,为它能够跨平台运行(例如UNIX,微软和苹果的平台)提供了保证。

使用Python语言之前,要进行平台的安装,用户需要根据不同的平台,下载不同的版本,然后进行环境变量的配置,便可以进行运行。

Python 特点:

1.相对于其他计算机语言来说学习起来比较简单:Python的关键字较少,结构相对简单,语法简单,对于刚学编程语言的人来说更容易上手。

2.阅读起来也相对简单:Python代码结构简洁明了,并在定义上看起来也非常清晰,所以在阅读的过程中更加简单。

3.维护起来方便:Python的维护简单方便。

4.标准库特别广泛:Python的最大的最大优势是有非常多的库,而且是跨平台的,而且对系统的兼容性很好,比如在UNIX,Windows和Macintosh系统上都能够进行兼容。

5.具有方便的互动模式:有了互动模式的支持,开发者可以从代码就可以看到结果,这样开发者对程序的测试与调试,变的更方便。

6.可移植性好:Python可以跨平台运行。

7.扩展性非常好的:如果有关键的代码,你可以用特殊的语言进行编写,也能够在系统中调试运行。

2.3 B/S模式

计算机的系统软件主要分为两种:系统软件和应用软件。应用软件则是为了某个特定的应用而开发的一类软件,比如文字处理软件word、QQ、开发本软件用的myeclise工具等。而应用型软件大致的分为B/S和C/S两种模式,常用的QQ、Office办公软件就是C/S结构的,另外常见基于的B/S结构开发的有各种网站,比如淘宝、企业的门户网站[7]。

B/S模式的优势有三个:第一是开发和业务扩展简单、只需要改变网页代码,就可以达到想要的网页效果;第二学生的操作显浅易懂;第三具有分布性特定,可以随时随地的进行查询、浏览等业务的处理。这是C/S所无法实现的。综上因素,选择B/S模式来设计和实现本系统[8]。

2.4  Django框架

Django 项目是一个Python定制框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有:

  1.     用于创建模型的对象关系映射
  2.     为最终用户设计的完美管理界面
  3.     一流的 URL 设计
  4.     设计者友好的模板语言
  5.     缓存系统。

Django(发音:[`dʒæŋɡəʊ]) 是用python语言写的开源web开发框架(open source web framework),它鼓励快速开发,并遵循MVC设计。Django遵守BSD版权,初次发布于2005年7月, 并于2008年9月发布了第一个正式版本1.0 。

Django 根据比利时的爵士音乐家Django Reinhardt命名,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。

由于Django在近年来的迅速发展,应用越来越广泛,被著名IT开发杂志SD Times评选为2013 SD Times 100,位列"API、库和框架"分类第6位,被认为是该领域的佼佼者 。

3 系统分析

3.1可行性分析

3.1.1法律可行性分析

开发软件有没有触犯法律,这涉及到软件或者系统能不能发布的问题。如果触犯了法律,就必将会受到法律的制裁。常见法律问题就是软件抄袭问题,若是抄袭别人软件,将会受到严厉惩罚。

3.1.2技术可行性分析

技术可行性主要考虑当前项目所用的技术是否能够符合,在设备上是否能够满足,及各种辅助工具是否提供帮助。本系统用的是Python开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。软件方面:由于软件的开发平台成熟可行,它们速度快、容量大、可靠性能高、价格低,完全能满足系统的需求。采用Python编程语言,已无技术上的问题。

3.1.3经济可行性分析

国内热门旅游景点数据是在Python和MySQL的环境中运行的,而系统的成本也只是主要分布在软件的开发和维护上。但如果系统上线投入使用之后,不仅可以方便人们,还节省了用户的时间和精力,而且还极大限度的方便了运营者,减少了运营者的工作强度。国内热门旅游景点数据其实也不太复杂,在开发的时候经济支出也不大,在开发系统时时间用的也不多,从时间的优势和对经济利益方面产生的好处远超过维护和管理的成本,所以开发此系统是可行合适的。

3.1.4社会可行性分析

本系统是自行开发的系统,以方便高效管理旅游景点为出发点,是具有实际意义的系统,开发的环境软件和用到的数据库也都是开源代码,不存在侵权等问题,所以在社会方面也是可行的。

3.2 系统功能分析

3.2.1 功能性分析

国内热门旅游景点数据系统我划分为了注册用户管理模块和管理员模块这两大部分。

注册用户管理模块:

注册登录:注册用户需要能够通过注册登录界面输入个人信息,以创建账户并登录系统,以便享受系统提供的各项服务。

首页:注册用户登录后,可以进入系统的首页,浏览最新的网站公告、新闻通知、热门景点推荐等相关内容。

网站公告:注册用户可以查看系统发布的网站公告,包括网站更新、活动通知等内容。

新闻通知:注册用户可以获取最新的旅游新闻和通知,了解各个景点的活动和特色。

景点展示:注册用户可以浏览系统提供的热门景点信息,包括景点介绍、图片展示、游玩攻略等。

个人首页:注册用户可以查看个人信息、收藏景点等。

收藏:注册用户可以收藏感兴趣的景点或相关信息,方便以后查阅和分享。。

后台管理员管理模块:

登录:管理员需要通过安全的登录界面输入用户名和密码,以确保系统的安全性和身份验证。

系统用户:管理员可以管理系统的用户,包括注册用户、其他管理员等,进行用户信息的查看、编辑和删除。

攻略数量管理:管理员可以管理旅游攻略的数量,包括发布新攻略、编辑现有攻略、删除攻略等。

景点分类管理:管理员可以对景点进行分类管理,包括添加新分类、编辑分类信息、删除分类等,方便用户查找和选择合适的旅游目的地。

评分信息管理:管理员可以管理用户对景点的评分信息,包括评分记录、平均评分、热门景点等。

景点展示管理:管理员可以管理景点信息的展示,包括添加新景点、编辑景点信息、删除景点等,确保景点信息的准确性和完整性。

轮播图管理:管理员可以管理系统首页的轮播图,包括添加、编辑和删除轮播图图片,以提升用户体验和宣传重要信息。

网站公告管理:管理员可以发布、编辑和删除系统的网站公告,包括网站更新、活动通知等内容。

旅游资讯管理:管理员可以管理旅游资讯的发布、编辑和删除,确保资讯内容的准确性和时效性。

资讯分类管理:管理员可以对旅游资讯进行分类管理,包括添加新分类、编辑分类信息、删除分类等,方便用户查找和阅读相关资讯。

3.2.2非功能性分析

国内热门旅游景点数据的非功能性需求比如国内热门旅游景点数据的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-1表格中:

3-1国内热门旅游景点数据非功能需求表

安全性

主要指国内热门旅游景点数据数据库的安装,数据库的使用和密码的设定必须合乎规范。

可靠性

可靠性是指国内热门旅游景点数据能够安装用户的指示进行操作,经过测试,可靠性90%以上。

性能

性能是影响国内热门旅游景点数据占据市场的必要条件,所以性能最好要佳才好。

可扩展性

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

易用性

用户只要跟着国内热门旅游景点数据的页面展示内容进行操作,就可以了。

可维护性

国内热门旅游景点数据开发的可维护性是非常重要的,经过测试,可维护性没有问题

3.3系统性能需求分析

评判一个系统好坏的一项重要指标就是性能,下面是对此系统的一些性能进行阐述。

1.系统的安全性和稳定性: 响应式国内热门旅游景点数据在管理权限上有着严格的控制,即想登录此平台进行操作,则必须要有操作权限,没有权限的用户是不可能登录平台查看任何的信息和数据,从而确保了系统的安全性。

2.数据的完整性和准确性:第一个是各项记录信息的完整性,信息记录的内容可以为空;第二个是各项信息数据之间相互联系的准确性;第三个是数据在不同记录信息的一致性

3.用户操作系统简单方便

3.4 系统用例分析

在系统开发中按照“简单易用”的原则,能够使用户对系统的使用一目了然,既能保证用户使用,同时又能保证维护人员方便维护。

国内热门旅游景点数据的完整UML用例图分别是图3-1和图3-2。在参与者上包括注册用户以及管理员。注册用户角色用例包括首页、网站公告、新闻通知、景点展示、我的账户、个人中心(个人首页、收藏)等功能,注册用户角色用例如图3-1所示。

图3-1 国内热门旅游景点数据用户角色用例图

后台管理上的管理员是维护整个国内热门旅游景点数据中所有数据信息的,管理员有首页、系统用户、攻略数量管理、景点分类管理、评分信息管理、景点展示管理、系统管理、网站公告管理、资源管理等功能。管理员角色用例如图3-2所示。

图3-2国内热门旅游景点数据管理员角色用例图

3.5 系统流程分析

3.5.1业务流程分析

业务流程图不仅能反映出内部业务之间的关系,而且能体现出作业顺序及信息的流动。响应式旅游资讯网站必须支持整个组织在不同层次上的各种功能,各个功能模块之间又有各种不同相关的信息进行联系,构成了一个有机的整体,根据旅游网站的特点以及结合所面临的实际情况,设计出了系统的业务流程图。

系统的业务流程如下图所示。

图3-3系统业务流程图

3.5.2数据流程分析

在分析了系统的业务流程之后,就要分析系统的数据流,为后面设计系统的数据库做好基础。这里主要利用数据流程图来说明数据流程。数据流程图是一个图示工具,容易理解,容易在开发和用户方之间进行交流,以及在开发组织内部交流。因此数据流程图作为一种模型工具已经广泛使用在软件工程的实践中。

系统的顶层数据流图如下图所示。

图3-4系统数据流图(顶层)

根据系统的业务流程,用户浏览所使用到的数据归纳为输出信息。而用户提交的数据则作为系统的输入数据。相应的,根据系统管理员业务流程,管理员对系统内容的添加、更新和删除等所操作的数据定义为输入信息。

系统的底层数据流图如下图所示。

图3-5系统数据流图(底层)

3.6本章小结

本章主要通过对国内热门旅游景点数据的可行性分析、功能需求分析、系统用例分析,确定整个国内热门旅游景点数据要实现的功能。同时也为国内热门旅游景点数据的代码实现和测试提供了标准。

4 总体设计

本章主要讨论的内容包括国内热门旅游景点数据的功能模块设计、数据库系统设计。

4.1 系统模块设计

国内热门旅游景点数据根据前面章节的功能需求分析得出其总体设计模块图如图4-1所示。

图4-1国内热门旅游景点数据功能模块图

4.2 数据库设计

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

4.2.1 数据库概念结构设计

下面是整个国内热门旅游景点数据中主要的数据库表总E-R实体关系图。

图4-2 国内热门旅游景点数据总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_display (景点展示)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

attraction_display_id

int

10

0

N

Y

景点展示ID

2

attraction_name

text

65535

0

Y

N

景点名称

3

scenic_spot_pictures

varchar

255

0

Y

N

景点图片

4

strategy_quantity

varchar

64

0

Y

N

攻略数量

5

number_of_comments

varchar

64

0

Y

N

评论数量

6

tourism_proportion

text

65535

0

Y

N

旅游占比

7

ranking_information

text

65535

0

Y

N

排名信息

8

descriptive_information

text

65535

0

Y

N

描述信息

9

rating_information

text

65535

0

Y

N

评分信息

10

scenic_spot_details

text

65535

0

Y

N

景点详情

11

classification_of_tourist_attractions

varchar

64

0

Y

N

景点分类

12

hits

int

10

0

N

N

0

点击数

13

praise_len

int

10

0

N

N

0

点赞数

14

recommend

int

10

0

N

N

0

智能推荐

15

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

16

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

classification_name

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:

表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已取消

表rating_information (评分信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

rating_information_id

int

10

0

N

Y

评分信息ID

2

attraction_name

text

65535

0

Y

N

景点名称

3

scenic_spot_pictures

text

65535

0

Y

N

景点图片

4

strategy_quantity

text

65535

0

Y

N

攻略数量

5

number_of_comments

text

65535

0

Y

N

评论数量

6

tourism_proportion

text

65535

0

Y

N

旅游占比

7

ranking_information

text

65535

0

Y

N

排名信息

8

descriptive_information

text

65535

0

Y

N

描述信息

9

rating_information

text

65535

0

Y

N

评分信息

10

scenic_spot_details

text

65535

0

Y

N

景点详情

11

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

12

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表registered_users (注册用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

registered_users_id

int

10

0

N

Y

注册用户ID

2

user_name

varchar

64

0

Y

N

用户姓名

3

user_gender

varchar

64

0

Y

N

用户性别

4

contact_information

varchar

16

0

Y

N

联系方式

5

examine_state

varchar

16

0

N

N

已通过

审核状态

6

user_id

int

10

0

N

N

0

用户ID

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

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

更新时间:

表strategy_quantity (攻略数量)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

strategy_quantity_id

int

10

0

N

Y

攻略数量ID

2

attraction_name

text

65535

0

Y

N

景点名称

3

scenic_spot_pictures

text

65535

0

Y

N

景点图片

4

strategy_quantity

text

65535

0

Y

N

攻略数量

5

number_of_comments

text

65535

0

Y

N

评论数量

6

tourism_proportion

text

65535

0

Y

N

旅游占比

7

ranking_information

text

65535

0

Y

N

排名信息

8

descriptive_information

text

65535

0

Y

N

描述信息

9

rating_information

text

65535

0

Y

N

评分信息

10

scenic_spot_details

text

65535

0

Y

N

景点详情

11

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

12

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 Forget_password(self, ctx):

        print("===================修改密码=====================")

        ret = {

            "error": {

                "code": 70000,

                "message": "用户信息不能没有"

            }

        }

        body = ctx.body

        if not body["code"]:

            return {

                "error": {

                    "code": 70000,

                    "message": "验证码不存在或者错误"

                }

            }

        obj = service_select("user").Get_obj(

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

        )

        if not obj:

            return {

                "error": {

                    "code": 70000,

                    "message": "用户名不存在或者错误"

                }

            }

        password = md5hash(body["password"])

        if not password:

            return {

                "error": {

                    "code": 70000,

                    "message": "密码不存在或者错误"

                }

            }

        bl = service_select("user").Set({"user_id": obj["user_id"]}, {"password": password})

        if bl:

            ret = {"result": {"bl": True, "message": "修改成功"}}

        else:

            ret = {

                "error": {

                    "code": 70000,

                    "message": "修改失败",

                }

            }

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

修改密码代码如下:

 def Change_password(self, ctx):

        print("===================修改密码=====================")

        ret = {

            "error": {

                "code": 70000,

                "message": "账号未登录",

            }

        }

        request = ctx.request

        headers = request.headers

        if ("x-auth-token" in headers) and headers["x-auth-token"]:

            token = headers["x-auth-token"]

            user_id = tokenGetUserId(token, request)

            userService = service_select("user")

            body = ctx.body

            password = md5hash(body["o_password"])

            obj = userService.Get_obj({"user_id": user_id, "password": password}, {"like": False})

            if obj:

                password = md5hash(body["password"])

                bl = userService.Set({"user_id": user_id}, {"password": password})

                if bl:

                    ret = {"result": {"bl": True, "message": "修改成功"}}

                else:

                    ret = {

                        "error": {

                            "code": 70000,

                            "message": "修改失败",

                        }

                    }

            else:

                ret = {

                    "error": {

                        "code": 70000,

                        "message": "密码错误",

                    }

                }

        else:

            ret = {

                "error": {

                    "code": 70000,

                    "message": "账户未登录",

                }

            }

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

5.1.5 景点展示界面

当访客点击国内热门旅游景点数据中导航栏上的“景点展示”,用户可以浏览系统提供的热门景点信息,包括景点介绍、图片展示等。界面如下图5-5所示。

图5-5景点展示界面图

5.2管理员功能模块

5.2.1 系统用户管理界面

管理员点击“系统用户”这一菜单会显示注册用户、管理员这两个子菜单,管理员可以对这两个角色的信息进行增删改查操作;系统用户管理界面如下图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": "已存在"}}

def Del(self, ctx):

if len(ctx.query) == 0:

errorMsg = {"code": 30000, "message": "删除条件不能为空!"}

return errorMsg

result = self.service.Del(ctx.query, self.config)

if self.service.error:

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

return {"result": result}

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}

查多条数据:

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}}

查一条数据:

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.2.2 评分信息管理界面

管理员可以管理用户对景点的评分信息,包括评分记录、平均评分、热门景点等。可以导入爬虫数据添加评分信息数据。界面如下图5-7和5-8所示。

图5-7评分信息列表界面图

图5-8评分信息爬取界面图

5.2.3 攻略数量管理界面

攻略数量管理功能允许管理员通过系统进行旅游攻略的全面管理。利用爬取技术,管理员可以轻松地发布新的旅游攻略、编辑现有攻略的内容,并且有权删除不需要的攻略。这项功能的优势在于它为管理员提供了一种方便快捷的方式来更新和管理系统中的攻略信息,保持内容的新鲜和吸引力。管理员可以根据用户的反馈和需求,不断更新攻略内容,提高用户体验和吸引力,从而促进系统的活跃度和用户参与度。界面如下图5-9和5-10所示。

图5-9攻略数量列表界面图

图5-10攻略数量爬取界面图

5.2.4景点分类管理界面

管理员可以对景点进行分类管理,包括添加新分类、编辑分类信息、删除分类等,方便用户查找和选择合适的旅游目的地。界面如下图5-11和5-12所示。

图5-11景点分类列表界面图

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

5.2.5系统管理界面

国内热门旅游景点数据中的管理员可以对系统前台展示的轮播图进行增删改查,方便用户进行查看。轮播图界面如下图5-13所示。

图5-13轮播图界面图

6系统测试

6.1 系统测试用例

系统测试包括:用户登录功能测试、用户注册功能测试、景点展示展示功能测试、景点分类添加功能测试,如表6-1、6-2、6-3、6-4所示:

用户登录功能测试:

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

测试名称

测试功能

操作

操作过程

预期结果

测试结果

用户登录模块测试

正确输入用户信息,用户成功登录

输入用户的信息

1.在密码框输入用户密码。2.点击登录

跳转到首页

正确

用户注册功能测试:

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

测试名称

测试功能

操作

操作过程

预期结果

测试结果

用户注册模块测试

正确输入用户星系,完成用户注册

输入用户的基本信息

在注册页面填写用户相应的信息,然后点击“注册”按钮。

提示成功并跳转到登录界面

正确

用户注册模块测试

用户注册失败

用户两次输入密码不一致

用户在注册页面填写信息时不填写用户名然后点击“注册”按钮。

注册失败提示用户名不能为空

正确

景点展示界面测试:

表6-3 景点展示界面测试表

测试名称

测试功能

操作

操作过程

预期结果

测试结果

景点展示功能模块测试

景点展示正常的显示

浏览景点展示

在前台首页选择一个景点分类进入分类列表,然后选择一个景点

进入该景点的详细信息界面

正确

管理员添加景点分类测试:

表6-4 管理员添加景点分类测试表

测试名称

测试功能

操作

操作过程

预期结果

测试结果

管理员添加景点分类测试

添加景点分类成功的情况

输入新景点分类的基本信息

后台选择“景点分类”选项,然后填写景点分类基本信息点击“添加”按钮

景点分类添加成功

正确

管理员添加景点分类功能测试

添加景点分类失败的情况

输入景点分类基本信息不完全

后台选择“发布景点分类”选项,然后不完全填写景点分类,点击“添加”按钮。

对应信息框后出现提示请输入XXXX信息

正确

管理员添加景点分类测试

添加景点分类失败的情况

管理员在景点分类框输入非数字字符

后台选择“景点分类”选项输入非数字字符,点击“添加”按钮。

添加失败

正确

6.2 系统测试结果

通过编写国内热门旅游景点数据的测试用例,已经检测完毕用户登录模块、用户注册模块、景点分类展示模块、景点分类添加模块功能测试,通过这4大模块为国内热门旅游景点数据的后期推广运营提供了强力的技术支撑。

结 论

本研究针对国内热门旅游景点数据需求建模,数据建模及过程建模分析设计并实现国内热门旅游景点数据系统的过程。给出系统应用架构并分析优劣势,通过功能分解图,系统组件图描述功能需求。设计建立了数据库,给出系统关键数据结构的定义。通过类关系图描述组件间的协作关系,给出各个类的定义方法。通过描述每一个类的字段,属性及方法实现响应式旅游资讯网站的前后端代码。最终给出系统集成整合方法,完成响应式旅游资讯网站地设计与实现。

在此项目的开发中,先要按照产品经理做出的产品模型铺出大体的页面,并在其中找好页面的逻辑关系,并且中途总结一些页面上的问题重新反馈给产品经理,当静态页面的搭建的大体已经完善时,就需要和负责后台开发的技术开发者联系,来接好前后台的数据接口,可以让后台的信息在前台显示出来,在这个项目实现中,不光明白了前端开发和产品经理的联系,也明白了后台在整个系统中起到了什么作用,因为前后台的连接,用户可以对系统进行操作,可以在输入自己的相关信息后,通过后台加工,完成对数据库的查找、修改、添加,而理解了这些关系与实现的方法后。再去完善整个系统的功能就更加清晰与简单了。此次的项目它涉及了前台与后台系统的搭建,在学校所学的知识基础上,此次的项目,让我对于一个系统的前端开发,以及后台的作用都有了一个更深切的认知。

参考文献

[1]ZHOU D,WANG F,YE H, et al.PyCIL: a Python toolbox for class-incremental learning[J].Science China(Information Sciences),2023,66(09):291-292.

[2]鲁莹,明念坤.基于Python的“信号与系统”综合学习平台设计[J].现代计算机,2023,29(15):95-99.

[3]宗艳.Python语言与应用[J].小学教学研究,2023(30):20-22.

[4]白金川,王豪,焦宝园等.Python网络爬虫在医学影像领域的发展现状与趋势研究[J].生物医学工程学进展,2023,44(03):260-266.

[5]虞菊花,乔虹.基于Python的Web页面自动登录工具设计与实现[J].安徽电子信息职业技术学院学报,2023,22(03):19-22+28.

[6]赵越,王晶,蒋尚松.基于Python的射频自动化测试程序研究[J].数字通信世界,2023(09):5-7.

[7]李莉,李冬,杨海迎等.人工智能背景下“Python程序设计”课程改革[J].现代信息科技,2023,7(17):178-182+188.DOI:10.19850/j.cnki.2096-4706.2023.17.037.

[8]金罡.Python语言编程的课程教学设计[J].集成电路应用,2023,40(07):404-405.DOI:10.19339/j.issn.1674-2583.2023.07.182.

[9]范路桥,高洁,段班祥.基于Python+Flask+ECharts的国内热门旅游景点数据可视化系统[J].现代电子技术,2023,46(09):126-130.DOI:10.16652/j.issn.1004-373x.2023.09.024.

[10]Aryan R,Jim P,Wells C F. An array-oriented Python interface for FastJet[J]. Journal of Physics: Conference Series,2023,2438(1).

[11]Stephan L,Florian K,Gordon F. An empirical study of automated unit test generation for Python[J]. Empirical Software Engineering,2023,28(2).

[12]杜春.旅游景点评论的情感分析和可视化系统研究及实现[J].信息与电脑(理论版),2022,34(24):154-157.

[13]徐军库,蒋永生. 地标性旅游景点大视野展示系统的实现[C]//中国计算机用户协会网络应用分会.中国计算机用户协会网络应用分会2022年第二十六届网络新技术与应用年会论文集.中国计算机用户协会网络应用分会2022年第二十六届网络新技术与应用年会论文集,2022:133-137.DOI:10.26914/c.cnkihy.2022.049263.

[14]何佳讯,曹迪.旅游景点宣传信息可视化设计研究——以应县木塔为例[J].明日风尚,2022(16):107-110.

[15]杨雯丽. 基于语境感知的旅游推荐研究及实现[D].上海师范大学,2022.DOI:10.27312/d.cnki.gshsu.2022.001660.

[16]缪伟捷,乔付.湛江市红色旅游景点线上线下视听系统设计与实现[J].无线互联科技,2022,19(10):57-59.

[17]张东娇. 旅游评论文本信息挖掘及可视化系统设计[D].西北民族大学,2022.DOI:10.27408/d.cnki.gxmzc.2022.000311.

[18]贾艳平,翟晋刚.基于Python爬虫技术的游客评论数据可视化分析[J].安阳师范学院学报,2021(05):51-54.DOI:10.16140/j.cnki.1671-5330.2021.05.013.

[19]马立,许文韬,王明珠等.基于高德地图API的邯郸市旅游景点查询平台设计[J].河北工程大学学报(社会科学版),2019,36(03):53-57.

[20]程鹏. 基于众源地理数据的旅游景点及路线推荐研究[D].山东科技大学,2019.DOI:10.27275/d.cnki.gsdku.2019.000914.

致  谢

国内热门旅游景点数据的完成,标志着我即将结束在校园生活并跨入社会。在即将毕业的此刻,我想对所有帮助过我的师长、同学和亲人表达我发自内心的谢意。

感谢学校这个大家庭,在这里我们总能找到自己的归属。学校始终在向我们传达着温暖和关怀,接纳和包容我们的缺点。学校给我最大的感受便是要将自己的专业知识与实践相结合,而我也正在努力的成为学校所要求的应用型人才。

感谢各位老师,学院使我从懵懂一步步走向成熟。在这里每个老师都拥有着最大的善意和耐心,来教育我们这群大孩子。学院举办的各类活动是给予我锻炼自己的机会,正是这些机会让我成为了更好的自己,提升了自己各方面的能力。

其次我要感谢我的论文指导老师。我之所以被老师所吸引,是因为老师对于学生友爱和对于工作认真的态度。从选题到开题到论文的撰写,老师一直都在悉心的指导,在指出存在的问题后会与我们探讨解决方法。

最后,我要对即将参与本篇论文审阅和答辩的各位老师表示感谢。

点赞+收藏+关注  →私信领取本源代码、数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值