基于Python对广东省旅游景点的数据分析与可视化 毕业设计源码00054

                                                         目  录

1 引言

1.1 研究背景和意义

1.2开发现状

1.3论文结构与章节安排

2相关技术介绍

2.1 MySQL描述

2.2 Python编程语言

2.3 B/S模式

2.4 Tomcat简介

3 广东省旅游景点的数据分析与可视化系统分析

3.1可行性分析

3.1.1法律可行性分析

3.1.2技术可行性分析

3.1.3经济可行性分析

3.1.4社会可行性分析

3.2 系统功能分析

3.2.1 功能性分析

3.3系统性能需求分析

3.3.1业务流程分析

3.3.2数据流程分析

3.4 系统用例分析

3.5本章小结

4 广东省旅游景点的数据分析与可视化总体设计

4.1 系统模块设计

3.2 数据库设计

3.2.1 数据库概念结构设计

3.2.2 数据库逻辑结构设计

3.4本章小结

5 广东省旅游景点的数据分析与可视化详细设计与实现

5.1注册用户功能模块

5.1.1 注册首页界面

5.1.2 用户注册界面

5.1.3 注册登录界面

5.1.4我的账户界面

4.1.5 景点评分界面

5.2管理员功能模块

5.2.1 系统用户管理界面

5.2.2 景点爬取列表界面

5.2.3 旅游人数列表界面

5.2.4城市信息列表界面

5.2.5景点评分列表界面

5.2.6景点购票列表界面

5.2.6轮播图界面

6系统测试

6.1 系统测试用例

6.2 系统测试结果

结论

参考文献

致  谢

摘 要

21世纪时信息化的时代,几乎任何一个行业都离不开计算机,将计算机运用于旅游景点的数据分析与可视化也是十分常见的。过去使用手工的管理方式对旅游特产、旅游景区等进行信息管理,造成了管理繁琐、难以维护等问题,如今使用计算机对旅游特产、旅游景区的各项基本信息进行管理,比起手工管理来说既方便又简单,而且具有易于管理、搜索速度快、存储量大等多个优点。将其使用在旅游景点的数据分析与可视化管理中,不仅能够提高旅游景点的数据分析与可视化管理中管理员的工作效率,而且可以使旅游景点的数据分析与可视化管理更加科学与规范。在信息化时代的不断冲击下,旅游景点的数据分析与可视化管理与计算机技术的结合,将会是一条提高旅游景点的数据分析与可视化管理水平的捷径。

经过本人的综合考虑,广东省旅游景点的数据分析与可视化的设计是基于Python技术、Mysql数据库、Apache服务器的方式设计,以ZendStudio和Dreamweaver为开发工具,在ZendStudio集成环境下调试并允许,并运用Photoshop技术美化网页,辅之以CSS技术。

该系统实现了旅游景点的数据分析与可视化管理的各种工作流程计算机管理化,其中包括首页、系统用户(管理员、注册用户)、景点爬取管理(景点爬取列表、景点爬取添加)、游客人数管理(游客人数列表)、景点分类管理(景点分类列表、景点分类添加)、城市信息管理(城市信息列表、城市信息添加)、旅游景点管理(旅游景点列表)、景点评分管理(景点评分列表)、景点购票管理(景点购票列表)、系统管理(轮播图管理)、网站公告管理(网站公告)、资源管理(旅游资讯、资讯分类)等功能。

关键词:Python语言;MySQL数据库;旅游数据分析与可视化

Data Analysis and Visualization of Tourist Attractions in Guangdong

Province Based on Python

Abstract

In the era of information technology in the 21st century, almost any industry cannot do without computers. It is also very common to use computers for data analysis and visualization of tourist attractions. In the past, manual management methods were used for information management of tourism specialties and scenic spots, which caused problems such as cumbersome management and difficulty in maintenance. Nowadays, using computers to manage various basic information of tourism specialties and scenic spots is not only convenient and simple compared to manual management, but also has multiple advantages such as easy management, fast search speed, and large storage capacity. Applying it to data analysis and visual management of tourist attractions can not only improve the efficiency of administrators in data analysis and visual management of tourist attractions, but also make data analysis and visual management of tourist attractions more scientific and standardized. Under the continuous impact of the information age, the combination of data analysis and visual management of tourist attractions with computer technology will be a shortcut to improve the level of data analysis and visual management of tourist attractions.

After my comprehensive consideration, the design of data analysis and visualization for tourist attractions in Guangdong Province is based on Python technology, MySQL database, and Apache server. ZendStudio and Dreamweaver are used as development tools, debugged and allowed in the ZendStudio integrated environment, and Photoshop technology is used to beautify web pages, supplemented by CSS technology.

This system implements various workflow computerization for data analysis and visual management of tourist attractions, including homepage, system users (administrators, registered users), attraction crawling management (attraction crawling list, attraction crawling addition), visitor number management (visitor number list), attraction classification management (attraction classification list, attraction classification addition) City information management (city information list, city information addition), tourist attraction management (tourist attraction list), tourist attraction rating management (tourist attraction rating list), tourist attraction ticket management (tourist attraction ticket list), system management (broadcast map management), website announcement management (website announcement), resource management (tourist information, information classification), and other functions.

Keywords: Python language; MySQL database; Tourism Data Analysis and Visualization

1 引言

1.1 研究背景和意义

随着经济水平的提高,国内的旅游业发展快速,但是相对来说,国内旅游业发展的程度并不能完全适应经济的发展和人民生活水平提高的需要。因此国内旅游业在国民经济中的地位和作用凸显重要。

但国内旅游产业管理滞后,基础弱,企业效益差,信息化较低。旅游行政管理部门的管理方式些许落后,缺少信息化管理,信息沟通渠道不顺畅等一系列问题。面对挑战和挫折,国内旅游产业必须转变旧观念,勇于创新,打破传统理念,提供各种资源,这样一来使整个行业有了崭新的一幕。同时要加强旅游信息化的建设,不断提高各级管理部门的管理能力和工作效率,简化办事的程序,减少工作的成本,加快信息的传播速度,多做宣传,提高信息的真实性;另一方面通过开展旅游产业来满足游客的需求,提升旅游的服务质量,缩减成本,转变旅游企业传统经营模式,这样做的话不仅提高整个旅游产业的素质,而且提升旅游产业的信息化,优化产业的结构和资源。进而带动许多产业的发展,提高就业机率,对经济的发展有着积极的推动作用。

1.2开发现状

我国的旅游局要求落实全方位发展中国旅游业的战略目标,其中的重要任务就是要有效利用十年左右的时间,尽最大努力地提高信息技术应用中各方位、各层次的旅游服务水平,将旅游和信息服务相互融合,促进信息化发展。基本上建成了覆盖全国的旅游基础设施和旅游信息数据库平台,追求信息资源的交流与共享,最终形成一个有示范效应的智慧旅游城市,智慧旅游企业。目前,许多城市都在开展智能城市建设。中国的旅游局已经对智慧旅游城市的战略落实了试行方案,初步肯定了国内十八个城市。我国大部分的旅游网站在开发初期,由于缺少对旅游行业和网络运营的全而了解,未能找准切入点,使旅游网站建成之后缺乏特色与“卖点”,往往照搬照抄其它旅游网站的现成模式,成为欧美等网络业发达国家网站的中文翻版,或者是大型网站的缩影。其结果是版而设计相似,内容雷同,重复建设问题严重,既没有形成具有一定规模的经营模式,也没有达到网上促销、预订的高成功率,使整个旅游业电子商务的销售额少得可怜。旅游产品交易的安全性问题是旅游网站发展的瓶颈。是否能够确保在动态、开放的旅游网站上,安全的完成旅游产品的整个交易过程,是旅游者选择网站上购买旅游产品首要考虑的问题之一。而我国大部分旅游网站在线支付手段不健全,缺乏统一的标准体系,在线交易的安全性更是令人担忧。恶意订购、交易出错的现象屡见不鲜,所以,消费者对旅游产品的网上交易信赖度不高。因此,交易不安全问题成为旅游网站发展中最大的障碍。

与国外相比,我国旅游电子商务起步稍晚,1996年才开始出现专业的旅游网站,其后旅游电子商务快速发展,到2000年进入第一个高潮期,但在2001年由于受世界旅游业整体负增长形势的影响,中国的旅游业在这一年经历了一定的困境,增长速度有所下降;2002年中国旅游业又开始整体回升,到2005年Web2.0的刺激下掀起了新的一轮旅游电子商务热,自此又进入了一个新的“加速发展期”。目前,我国具有一定旅游资讯能力的网站已有5000多家。其中专业旅游300余家,主要包括地区性网站、专业网站和门户网站的旅游频道3大类。

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 Tomcat简介

Tomcat是开发源代码,使用者可根据个人习惯、系统的需求对tomcat进行配置;另外对于系统的发布和运行是非常简单的[10],开发人员只需要在MyEclipse开发工具中导入Tomcat,服务器的配置就算完成了;这是非常适合JSP程序的。对于程序人员开发程序经常可能会遇到乱码的问题,而使用tomcat作为服务器,只需要在tomcat的安装目录下找到配置文件夹conf下的服务器配置文件server.xml,打开后改动端口号为8080的接收环节与请求处理环节的连接器Connector为相对应的编码,运行项目后,就不会出现中文乱码问题。本系统的设计和实现编码使用的是UTF-8,所以需要在端口号为8080的连接器中设置编URIEncoding="UTF-8"[11] [12]。

3 广东省旅游景点的数据分析与可视化系统分析

3.1可行性分析

3.1.1法律可行性分析

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

3.1.2技术可行性分析

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

3.1.3经济可行性分析

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

3.1.4社会可行性分析

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

3.2 系统功能分析

3.2.1 功能性分析

广东省旅游景点的数据分析与可视化系统我划分为了注册用户管理模块和管理员模块这两大部分。

注册用户管理模块:

(1)用户注册:将用户信息录入数据库,用户利用注册的账号以及密码登录系统,浏览查看各种信息,添加部分信息,用户对个人信息的增删改查,比如个人资料,密码修改。

(2)个人信息模块:修改信息功能,用户修改个人资料信息,但不能修改账号;密码修改功能,修改登录密码。

(3)注册首页界面:在广东省旅游景点的数据分析与可视化的首页界面上采用了上下的方式来布局界面,上面是导航栏,下面是网站公告。

(4)注册登录界面:注册用户是可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到广东省旅游景点的数据分析与可视化的首页中;否则将会提示相应错误信息。

(5)个人中心界面:用户登录以后点击“我的账户”可以查看到自己的个人信息,对个人信息进行更新操作。

(6)景点评分界面:当访客点击广东省旅游景点的数据分析与可视化中导航栏上的“景点评分”后将会进入到该“景点评分”界面,可以对相应的景点进行评分,还可以进行查询和重置的操作。

后台管理员管理模块:

(1)系统用户管理界面:管理员点击“系统用户”这一菜单会显示注册用户、管理员这两个子菜单,管理员可以对这两个角色的信息进行增删改查操作。

(2)景点爬取列表界面:管理人员是可以查看景点名称、景点地址、景点级别、携程评分、携程热度、评分分数、开放时间等详情,还可以进行查询、重置、删除、下载导入文档等操作。

(3)旅游人数列表界面:管理人员是可以查看景点名称、月份、游客量、备注、创建时间、更新时间等详情,还可以进行查询、重置、删除等操作。

(4)城市信息列表界面:管理人员是可以查看城市信息的创建时间、更新时间等详情,还可以进行查询、重置、删除等操作。

(5)景点评分列表界面:管理人员是可以查看景点名称、景点类型、城市评分、用户评分、景点评价、间等详情,还可以进行查询、重置、删除等操作。

(6)景点购票列表界面:管理人员是可以查看景点名称、景点类型、城市、票价、购买用户、姓名、购买数量等详情,还可以进行查询、重置、删除等操作。

(7)轮播图界面:广东省旅游景点的数据分析与可视化中的管理员可以对系统前台展示的轮播图进行增删改查,方便用户进行查看。

3.2.2非功能性分析

广东省旅游景点的数据分析与可视化的非功能性需求比如广东省旅游景点的数据分析与可视化的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-1表格中:

3-1广东省旅游景点的数据分析与可视化非功能需求表

安全性

主要指广东省旅游景点的数据分析与可视化数据库的安装,数据库的使用和密码的设定必须合乎规范。

可靠性

可靠性是指广东省旅游景点的数据分析与可视化能够安装用户的指示进行操作,经过测试,可靠性90%以上。

性能

性能是影响广东省旅游景点的数据分析与可视化占据市场的必要条件,所以性能最好要佳才好。

可扩展性

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

易用性

用户只要跟着广东省旅游景点的数据分析与可视化的页面展示内容进行操作,就可以了。

可维护性

广东省旅游景点的数据分析与可视化开发的可维护性是非常重要的,经过测试,可维护性没有问题

3.3系统性能需求分析

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

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

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

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

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

3.3.1业务流程分析

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

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

图3-2系统业务流程图

3.3.2数据流程分析

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

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

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

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

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

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

3.4 系统用例分析

广东省旅游景点的数据分析与可视化的完整UML用例图分别是图3-5和图3-6。在参与者上包括注册用户以及管理员。注册用户角色用例包括我的账户、个人中心(个人首页、景点评分、景点购票、收藏)、退出,首页、网站公告(网站公告、关于我们、联系方式、网站介绍)、旅游资讯、旅游景点等功能,注册用户角色用例如图3-5所示。

图3-5 广东省旅游景点的数据分析与可视化用户角色用例图

后台管理上的管理员是维护整个广东省旅游景点的数据分析与可视化中所有数据信息的,管理员有首页、系统用户(管理员、注册用户)、景点爬取管理(景点爬取列表、景点爬取添加)、游客人数管理(游客人数列表)、景点分类管理(景点分类列表、景点分类添加)、城市信息管理(城市信息列表、城市信息添加)、旅游景点管理(旅游景点列表)、景点评分管理(景点评分列表)、景点购票管理(景点购票列表)、系统管理(轮播图管理)、网站公告管理(网站公告)、资源管理(旅游资讯、资讯分类)等功能。管理员角色用例如图3-6所示。

图3-6 广东省旅游景点的数据分析与可视化管理员角色用例图

3.5本章小结

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

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

用户编号:

表attraction_rating (景点评分)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

attraction_rating_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

city

varchar

64

0

Y

N

城市

5

rating_users

int

10

0

Y

N

0

评分用户

6

score

varchar

64

0

Y

N

评分

7

attraction_evaluation

text

65535

0

Y

N

景点评价

8

recommend

int

10

0

N

N

0

智能推荐

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

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

更新时间:

表city_information (城市信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

city_information_id

int

10

0

N

Y

城市信息ID

2

city

varchar

64

0

Y

N

城市

3

recommend

int

10

0

N

N

0

智能推荐

4

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表classification_of_scenic_spots (景点分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

classification_of_scenic_spots_id

int

10

0

N

Y

景点分类ID

2

types_of_attractions

varchar

64

0

Y

N

景点类型

3

recommend

int

10

0

N

N

0

智能推荐

4

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表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:

表logistics_delivery (物流配送)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

logistics_delivery_id

int

10

0

N

Y

物流配送ID

2

order_number

varchar

64

0

Y

N

订单号

3

product_name

varchar

64

0

Y

N

商品名称

4

purchase_quantity

varchar

64

0

Y

N

购买数量

5

total_transaction_amount

double

11

2

Y

N

0.00

交易总额

6

the_date_of_issuance

date

10

0

Y

N

发货日期

7

delivery_number

varchar

30

0

Y

N

配送订单

8

ordinary_users

int

10

0

Y

N

0

普通用户

9

shipping_address

varchar

64

0

Y

N

收货地址

10

delivery_status

varchar

64

0

Y

N

配送状态

11

signing_status

varchar

64

0

Y

N

签收状态

12

recommend

int

10

0

N

N

0

智能推荐

13

contact_name

varchar

255

0

Y

N

联系人名字

14

merchant_id

int

10

0

Y

N

商家id

15

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

16

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表number_of_tourists (游客人数)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

number_of_tourists_id

int

10

0

N

Y

游客人数ID

2

attraction_name

varchar

64

0

Y

N

景点名称

3

month

varchar

64

0

Y

N

月份

4

tourist_volume

int

10

0

Y

N

0

游客量

5

remarks

text

65535

0

Y

N

备注

6

recommend

int

10

0

N

N

0

智能推荐

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

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

recommend

int

10

0

N

N

0

智能推荐

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

更新时间

表scenic_spot_crawling (景点爬取)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

scenic_spot_crawling_id

int

10

0

N

Y

景点爬取ID

2

attraction_name

varchar

64

0

Y

N

景点名称

3

attraction_address

varchar

64

0

Y

N

景点地址

4

attraction_level

varchar

64

0

Y

N

景点级别

5

ctrip_rating

varchar

64

0

Y

N

携程评分

6

ctrip_fever

varchar

64

0

Y

N

携程热度

7

evaluation_score

varchar

64

0

Y

N

评价分数

8

opening_hours

text

65535

0

Y

N

开放时间

9

other_introduction

text

65535

0

Y

N

其他简介

10

recommend

int

10

0

N

N

0

智能推荐

11

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

12

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表sensitive_vocabulary (敏感词汇)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

sensitive_vocabulary_id

int

10

0

N

Y

敏感词汇ID

2

sensitive_vocabulary

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

更新时间

表tourist_attractions (旅游景点)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

tourist_attractions_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

city

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

longtext

2147483647

0

Y

N

详情

13

recommend

int

10

0

N

N

0

智能推荐

14

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

15

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

attraction_name

varchar

64

0

Y

N

景点名称

3

types_of_attractions

varchar

64

0

Y

N

景点类型

4

city

varchar

64

0

Y

N

城市

5

ticket_price

varchar

64

0

Y

N

票价

6

purchasing_users

int

10

0

Y

N

0

购买用户

7

name

varchar

64

0

Y

N

姓名

8

purchase_quantity

varchar

64

0

Y

N

购买数量

9

total_price

varchar

64

0

Y

N

总价格

10

remarks

varchar

64

0

Y

N

备注

11

pay_state

varchar

16

0

N

N

未支付

支付状态

12

pay_type

varchar

16

0

Y

N

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

13

recommend

int

10

0

N

N

0

智能推荐

14

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

15

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

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

表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-7景点爬取列表界面图

5.2.3 旅游人数列表界面

广东省旅游景点的数据分析与可视化中的管理人员可以查看景点名称、月份、游客量、备注、创建时间、更新时间等详情,还可以进行查询、重置、删除等操作。旅游人数列表界面如下图5-8所示。

图5-8旅游人数列表界面图

5.2.4城市信息列表界面

广东省旅游景点的数据分析与可视化中的管理人员可以查看城市信息的创建时间、更新时间等详情,还可以进行查询、重置、删除等操作。城市信息列表界面如下图5-9所示。

图5-9城市信息列表界面图

5.2.5景点评分列表界面

广东省旅游景点的数据分析与可视化中的管理人员可以查看景点名称、景点类型、城市评分、用户评分、景点评价、间等详情,还可以进行查询、重置、删除等操作。景点评分列表界面如下图5-10所示。

图5-10景点评分列表界面图

5.2.6景点购票列表界面

广东省旅游景点的数据分析与可视化中的管理人员可以查看景点名称、景点类型、城市、票价、购买用户、姓名、购买数量等详情,还可以进行查询、重置、删除等操作。景点购票列表界面如下图5-11所示。

图5-11景点购票列表界面图

5.2.7轮播图界面

广东省旅游景点的数据分析与可视化中的管理员可以对系统前台展示的轮播图进行增删改查,方便用户进行查看。轮播图界面如下图5-12所示。

图5-12轮播图界面图

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]宗艳.Python语言与应用[J].小学教学研究,2023(30):20-22.

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

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

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

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

[6]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.

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

[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、付费专栏及课程。

余额充值