随着计算机技术发展,计算机系统的应用已延伸到社会的各个领域,大量基于大数据的广泛应用给生活带来了十分的便利。所以把旅游数据分析与可视化系统开发管理与现在网络相结合,利用计算机搭建旅游数据分析与可视化系统开发系统,实现旅游数据分析与可视化系统开发的信息化。则对于进一步提高旅游数据分析与可视化系统开发管理发展,丰富旅游数据分析与可视化系统开发管理经验能起到不少的促进作用。
系统阐述的是使用旅游数据分析与可视化系统开发的设计与实现,对于Python、B/S结构、MySQL进行了较为深入的学习与应用。主要针对系统的设计,描述,实现和分析与测试方面来表明开发的过程。开发中使用了django框架和MySQL数据库技术搭建系统的整体架构。利用这些技术结合实际需求开发了具有系统用户、数据信息管理、攻略分析管理、点评分析管理、景点信息管理、景点分类管理、美食信息管理、系统管理、资源管理、交流管理等功能的系统,最后对系统进行相应的测试,测试系统有无存在问题以及测试用户权限来优化系统,最后系统达到预期目标。
关键词:django;python语言;旅游数据分析与可视化系统开发;MySQL
Abstract
With the development of computer technology, the application of computer systems has extended to various fields of society, and the widespread use of big data has brought great convenience to life. So, combining tourism data analysis and visualization system development management with the current network, using computers to build a tourism data analysis and visualization system development system, realizing the informatization of tourism data analysis and visualization system development. It can play a significant role in further improving the development and management of tourism data analysis and visualization systems, and enriching the experience of tourism data analysis and visualization system development and management.
The system elaborates on the design and implementation of using tourism data analysis and visualization system development, and has conducted in-depth learning and application of Python, B/S structure, and MySQL. Mainly targeting the design, description, implementation, analysis, and testing aspects of the system to demonstrate the development process. The overall architecture of the system was built using the django framework and MySQL database technology during development. A system with functions such as system user, data information management, strategy analysis management, review analysis management, attraction information management, attraction classification management, food information management, system management, resource management, communication management, etc. was developed using these technologies combined with practical needs. Finally, the system was tested for any problems and user permissions were tested to optimize the system. Finally, the system achieved the expected goals.
Keywords :django; Python language; Development of tourism data analysis and visualization system; MySQL
1 绪论
1.1研究背景与意义
旅游行业是全球范围内增长最快的行业之一,吸引了越来越多的游客。随着人们生活水平的提高和休闲旅游需求的增加,旅游行业迅速发展。对于旅游景点的数据进行分析和研究,有助于优化旅游产品和服务,提升游客体验和满意度。同时,随着信息技术的发展,大数据技术在旅游行业中得到广泛应用。通过收集和分析海量的旅游景点数据,可以挖掘其中潜在的规律和价值,为旅游景点的运营和发展提供决策支持。
旅游景点运营越来越倾向于数据化管理。通过收集和分析大量的数据,如游客行为、满意度调查、预订记录等,可以了解游客需求和偏好,以便优化景点的资源配置、服务流程和市场推广策略。现代人对旅游体验的要求越来越个性化和多样化。通过对旅游景点数据的分析,可以深入了解不同群体的旅游偏好和需求,为他们提供更加个性化和定制化的旅游产品和服务。智能化技术的发展也促进了旅游数据分析与可视化系统开发的研究。通过智能化系统和算法的应用,可以实现旅游景点的智能化管理,如智能导览、智能排队、智能推荐等,提高旅游景点的运营效率和服务质量。
综上所述,大数据旅游数据分析与可视化系统开发的研究背景与意义主要源于旅游行业的快速发展、大数据技术的应用、数据化运营的趋势、个性化旅游需求的增加以及智能化旅游管理的推动。这些研究对于优化景点运营、提升游客体验、推动旅游行业发展具有重要的意义。
1.2研究方法
首先,通过搜索引擎或查阅相关文献资料,了解本系统开发的背景和设计系统的意义,并收集用户需求信息。其次,在选择开发工具方面,决定使用Python平台来设计开发该系统,并使用MySQL作为数据库工具。这样可以利用Python语言实现用户界面,并与数据库进行连接,实现完整的通信功能。然后,设计系统的主要功能模块,从方便系统用户和系统管理员的角度进行分析,明确系统应具备的功能。最后,进行系统测试,通过用例测试发现问题并找到解决方案。利用现有的开发平台,结合所学知识,在指导下完成系统设计,确保系统具有可用性和实用性。
2 旅游数据分析与可视化系统开发系统分析
2.1 可行性分析
可行性分析是系统分析的第一步,通过可行性分析我们可以得出系统是不是值得开发,如果系统的开发是不可信的,那么就没有必要再进行下面的操作,对于本旅游数据分析与可视化系统开发,在可行性方面进行了技术、经济以及操作的分析。
2.1.1 技术可行性分析
旅游数据分析与可视化系统开发是一个基于Web的交易、管理平台,我们在实现这个系统所采用的技术方案是基于python语言,django框架,MYSQL数据库,在大学的学习中这两门课程都已经学过,而且自己也用这些技术开发过小的项目,在平时的课程设计以及作业也经常用到python和MYSQL,在技术上实现自己的自主开发是可行的。
2.1.2 经济可行性分析
开发旅游数据分析与可视化系统开发并不需要投入太多,开发工具、服务器、数据库等,都可以通过网络搜索、下载、安装,只需要一台普通的计算机就可以完成操作,而且在系统功能规划上通过走访调查目前用户对旅游数据分析与可视化系统开发的需求,了解它们对系统具体实现的功能需求,然后进行设计开发,不存在任何开销,因此系统的开发在经济方面是可行的。
2.1.3 操作可行性分析
操作方面主要考虑的是用户在使用以及管理人员在管理的时候,是否简单可行,没有任何计算机基础的用户能否使用,开发的旅游数据分析与可视化系统开发在设计的时候秉承简单易学的理念,在用户进入系统后都会有固定的导航按钮,只要认字就可以操作完成,而且管理员在管理方面也只需简单的增删改查即可完成,因此在操作上也是可行的。
2.2 系统性能分析
系统的性能方面主要是从系统的安全性、存储性、可靠性、易学性、稳定性等方面进行分析:
(1)安全性:系统应具备良好的安全性,确保用户数据和敏感信息的保密性。采用合适的安全措施,如数据加密、访问控制等,防止未经授权的访问和数据泄露。
(2)存储性:系统需要具备足够的存储容量,能够存储大量的旅游景点数据和相关信息。同时,系统的数据库设计应优化存储结构和查询效率,提高数据读取和写入的性能。
(3)可靠性:系统应具备高度可靠性,能够稳定运行并处理大量的并发请求。通过采用负载均衡、备份和容灾等机制,提高系统的可用性和容错性,避免单点故障导致系统崩溃或数据丢失。
(4)易学性:系统的界面设计应简洁直观,操作流程易于理解和掌握。提供清晰的操作指南和帮助文档,减少用户学习成本,并提供良好的用户体验。
(5)稳定性:系统应具备稳定的性能,能够在长时间运行过程中保持高效和稳定。通过性能监控和故障排查等手段,及时发现和解决系统性能问题,保证系统的稳定运行。
2.3 系统功能分析
旅游数据分析与可视化系统开发中采用了python的django框架进行开发,在数据库上选择MYSQL,在功能上旅游数据分析与可视化系统开发我划分为了普通用户管理模块和管理员模块这两大部分。
普通用户管理模块:
(1)用户注册登录:游客可以随时进入到系统中,对系统中的信息浏览,但是想要实现酒店信息的收藏评论等,就必须有这个系统的账号,如果没有账号的话,可以注册成用户进行相关的操作,同时用户还可以对个人信息以及操作的信息进行管控。
(2)查看旅游数据分析与可视化系统开发的首页信息:旅游数据分析与可视化系统开发的首页信息包含了首页、交流论坛、通知公告、新闻资讯、景点信息、美食信息。
(3)交流论坛:用户点击“交流论坛”菜单显示管理员在后台发布的各类论坛内容,用户可选取任意一篇进行详细查看并点赞、收藏、并可发布论坛内容。
(3)通知公告:用户点击“通知公告”菜单显示管理员在后台发布的所有的通知公告信息,可以查看通知公告详情。
(4)新闻资讯:用户点击“新闻资讯”菜单显示所有的新闻资讯信息,可以按照条件进行新闻资讯的筛选或者输入关键词进行局部搜索,点击可以进入新闻资讯详细展示界面,在此界面用户可以收藏、点赞和评论。
(5)景点信息:用户点击“景点信息”菜单可以查看所有景点信息,可以按照条件查看景点信息,或者输入关键词进行查询,点击可以进入景点信息详细展示界面,在此界面用户可以收藏、点赞和评论,用户点击了景点信息后系统会根据点击类型推荐。
(7)美食信息:用户点击“美食信息”菜单可以查看所有美食信息,可以按照条件查看美食信息,或者输入关键词进行查询,点击可以进入美食信息详细展示界面,在此界面用户可以收藏、点赞和评论,美食为热度推荐、根据用户点击率推荐、最高的排在前面。
(6)我的账户:用户点击“我的”可以对个人资料以及密码进行更新。
(7)收藏:用户点击“我的”,会显示出自己收藏的所有信息,点击某一条收藏可以查看信息详细介绍,同时删除收藏;
管理员管理模块:
(1)登录:管理员在后台可以输入用户名+密码进行登录,管理员的用户名和密码是在数据库中直接设定好的。
(2)后台首页:管理员在此页面可以页面的数据信息统计、攻略分析统计、点评分析统计管理统计网站的数据情况,统计图根据模块数据统计。
(3)系统用户:管理员点击“系统用户”菜单可以对系统中存在的用户进行管理,包含了管理员用户和普通用户。
(4)数据信息管理:管理员点击“数据信息”会显示出所有的数据信息,支持输入景点名称对数据信息进行查询、先下载导入文档,把数据复制进去后导入数据,如果想要添加新的景点信息,点击“添加”按钮,输入景点名称、攻略数量、评分、简介、排名、经度、维度等信息,点击“提交”按钮就可以添加了,同时可以选择某一条景点信息,点击“删除”进行删除,也可以对用户提交的数据信息详情、攻略分析、点评分析进行管控。
(5)攻略分析管理:管理员对攻略分析管理列表信息进行管控。
(6)点评分析管理:管理员对点评分析管理列表进行管控。
(7)景点信息管理:景点信息:管理员点击“景点信息”会显示出所有的景点信息,支持输入景点名称对景点信息进行查询,如果想要添加新的景点信息,点击“添加”按钮,输入景点名称、景点分类、景点门票、景点评分、景点排名、景点图片、景点简介、创建时间等信息,点击“提交”按钮就可以添加了,同时可以选择某一条景点信息,点击“删除”进行删除,也可以对用户提交的景点信息评论的信息进行管控。
(8)景点分类管理:管理员点击“景点分类”会显示出所有的景点分类信息,支持输入景点名称对景点分类进行查询,如果想要添加新的景点分类,点击“添加”按钮,输入景点分类、创建时间等信息,点击“提交”按钮就可以添加了,同时可以选择某一条景点分类,点击“删除”进行删除。
(9)美食信息管理:管理员点击“美食信息”会显示出所有的美食信息,支持输入美食名称对美食信息进行查询,如果想要添加新的美食信息,点击“添加”按钮,输入美食名称、美食食材、美食口味、美食价格、美食图片、美食内容介绍等信息,点击“提交”按钮就可以添加了,同时可以选择某一条美食信息,点击“删除”进行删除,也可以对用户提交的美食信息评论的信息进行管控。
(10)系统管理:管理员点击“系统管理”菜单可以对首页展示的轮播图进行增删改查。
(11)通知公告管理:管理员点击“通知公告”菜单可以查看到系统中的所有通知公告信息,对已经存在的通知公告,管理员可以修改,也可以添加新的通知公告或者删除通知公告。
(12)资源管理:管理员点击“资源管理”菜单能够对其下子菜单新闻资讯和资讯的分类进行增删改查。
(13)交流管理:管理员点击“资源管理”菜单能够对其下子菜单交流论坛和论坛的分类进行增删改查。
2.4 系统用例分析
系统的用例展示的是系统功能与用户之间的关系,通过用例的方式能够直观的展示出来,本旅游数据分析与可视化系统开发的完整UML用例图分别是图2-1、图2-2。
图2-1 旅游数据分析与可视化系统开发前台用户角色用例图
3 旅游数据分析与可视化系统开发总体设计
本章主要讨论的内容包括旅游数据分析与可视化系统开发的功能模块设计、数据库系统设计。
3.1 系统功能模块设计
3.1.1整体功能模块设计
本旅游数据分析与可视化系统开发是一个集信息查询、发布、管理为一体的平台,在功能上实现了前台和后台两部分的功能,根据第三章的系统功能分析,得出本旅游数据分析与可视化系统开发的功能模块图,如图3-1所示。
图3-1 旅游数据分析与可视化系统开发功能模块图
3.1.2用户管理模块设计
本旅游数据分析与可视化系统开发是一个通过浏览器自主查询、交流的平台,用户想要参与进来,必须有账号和密码,登录后方可交流,管理员则实现对用户的管控,如下图:
图3-2用户管理模块结构图
3.1.3新闻资讯模块设计
旅游数据分析与可视化系统开发为用户提供了一个新闻资讯查询的平台,管理员在后台实现对新闻资讯的管理,具体的结构图如下:
图3-3旅游资讯管理模块结构图
3.1.4景点信息管理模块设计
旅游数据分析与可视化系统开发是中需要存储不少景点信息,其模块功能结构,具体的结构图如下:
图3-4景点信息模块结构图
3.2 数据库设计
3.2.1 数据库概念结构设计
在数据库概念模型设计的时候,一般都采用E-R实体图进行展示,在实体图中可以展示出数据库表中的所有字段名称,本旅游数据分析与可视化系统开发中的主要的数据库E-R模型图如下图所示。
图3-5普通用户E-R关系图
图3-6 美食信息E-R关系图
图3-7 景点信息E-R关系图
图3-8 数据信息E-R关系图
旅游数据分析与可视化系统开发的总E-R图如下:
图3-9总体ER图
3.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 | classification_of_tourist_attractions | varchar | 64 | 0 | Y | N | 景点分类 | |
4 | attraction_tickets | varchar | 64 | 0 | Y | N | 景点门票 | |
5 | scenic_spot_rating | varchar | 64 | 0 | Y | N | 景点评分 | |
6 | scenic_spot_ranking | varchar | 64 | 0 | Y | N | 景点排名 | |
7 | scenic_spot_pictures | varchar | 255 | 0 | Y | N | 景点图片 | |
8 | introduction_to_scenic_spots | longtext | 2147483647 | 0 | Y | N | 景点简介 | |
9 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
10 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
11 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | 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_of_tourist_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: |
表comment_analysis (点评分析)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_analysis_id | int | 10 | 0 | N | Y | 点评分析ID | |
2 | attraction_name | text | 65535 | 0 | Y | N | 景点名称 | |
3 | scenic_spot_rating | varchar | 64 | 0 | Y | N | 景点评分 | |
4 | scenic_spot_ranking | varchar | 64 | 0 | Y | N | 景点排名 | |
5 | longitude_of_tourist_attractions | varchar | 64 | 0 | Y | N | 景点经度 | |
6 | attraction_latitude | varchar | 64 | 0 | Y | N | 景点纬度 | |
7 | number_of_comments | varchar | 64 | 0 | Y | N | 点评数量 | |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表data_information (数据信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | data_information_id | int | 10 | 0 | N | Y | 数据信息ID | |
2 | attraction_name | text | 65535 | 0 | Y | N | 景点名称 | |
3 | strategy_quantity | varchar | 64 | 0 | Y | N | 攻略数量 | |
4 | scenic_spot_rating | varchar | 64 | 0 | Y | N | 景点评分 | |
5 | introduction_to_scenic_spots | text | 65535 | 0 | Y | N | 景点简介 | |
6 | scenic_spot_ranking | varchar | 64 | 0 | Y | N | 景点排名 | |
7 | longitude_of_tourist_attractions | varchar | 64 | 0 | Y | N | 景点经度 | |
8 | attraction_latitude | varchar | 64 | 0 | Y | N | 景点纬度 | |
9 | number_of_comments | varchar | 64 | 0 | Y | N | 点评数量 | |
10 | number_of_hikers | varchar | 64 | 0 | Y | N | 驴友数量 | |
11 | details_link | varchar | 255 | 0 | Y | N | 详情链接 | |
12 | overview_of_scenic_spots | text | 65535 | 0 | Y | N | 景点概述 | |
13 | attraction_address | text | 65535 | 0 | Y | N | 景点地址 | |
14 | opening_hours | text | 65535 | 0 | Y | N | 开放时间 | |
15 | ticket_information | text | 65535 | 0 | Y | N | 门票信息 | |
16 | transportation_guidelines | text | 65535 | 0 | Y | N | 交通指南 | |
17 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
18 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表food_information (美食信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | food_information_id | int | 10 | 0 | N | Y | 美食信息ID | |
2 | food_name | varchar | 64 | 0 | Y | N | 美食名称 | |
3 | food_ingredients | varchar | 64 | 0 | Y | N | 美食食材 | |
4 | food_flavors | varchar | 64 | 0 | Y | N | 美食口味 | |
5 | food_prices | varchar | 64 | 0 | Y | N | 美食价格 | |
6 | food_pictures | varchar | 255 | 0 | Y | N | 美食图片 | |
7 | content_introduction | longtext | 2147483647 | 0 | Y | N | 内容介绍 | |
8 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
9 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
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 | 更新时间 |
表forum (论坛)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | forum_id | mediumint | 8 | 0 | N | Y | 论坛id | |
2 | display | smallint | 5 | 0 | N | N | 100 | 排序 |
3 | user_id | mediumint | 8 | 0 | N | N | 0 | 用户ID |
4 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
5 | praise_len | int | 10 | 0 | Y | N | 0 | 点赞数 |
6 | hits | int | 10 | 0 | N | N | 0 | 访问数 |
7 | title | varchar | 125 | 0 | N | N | 标题 | |
8 | keywords | varchar | 125 | 0 | Y | N | 关键词 | |
9 | description | varchar | 255 | 0 | Y | N | 描述 | |
10 | url | varchar | 255 | 0 | Y | N | 来源地址 | |
11 | tag | varchar | 255 | 0 | Y | N | 标签 | |
12 | img | text | 65535 | 0 | Y | N | 封面图 | |
13 | content | longtext | 2147483647 | 0 | Y | N | 正文 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
16 | avatar | varchar | 255 | 0 | Y | N | 发帖人头像: | |
17 | type | varchar | 64 | 0 | N | N | 0 | 论坛分类:[0,1000]用来搜索指定类型的论坛帖 |
表forum_type (论坛分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
3 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
4 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
5 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
6 | icon | varchar | 255 | 0 | Y | N | 分类图标: | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | 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: |
表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已取消 |
表regular_users (普通用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | regular_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_phone_number | 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 | 更新时间 |
表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 | 更新时间 |
表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_analysis (攻略分析)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | strategy_analysis_id | int | 10 | 0 | N | Y | 攻略分析ID | |
2 | attraction_name | text | 65535 | 0 | Y | N | 景点名称 | |
3 | strategy_quantity | varchar | 64 | 0 | Y | N | 攻略数量 | |
4 | scenic_spot_rating | varchar | 64 | 0 | Y | N | 景点评分 | |
5 | scenic_spot_ranking | varchar | 64 | 0 | Y | N | 景点排名 | |
6 | longitude_of_tourist_attractions | varchar | 64 | 0 | Y | N | 景点经度 | |
7 | attraction_latitude | varchar | 64 | 0 | Y | N | 景点纬度 | |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | 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 | | 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 旅游数据分析与可视化系统开发详细设计与实现
4.1用户功能模块
4.1.1 首页界面
当进入旅游数据分析与可视化系统开发的时候,可以看到系统中的导航栏,搜索框,轮播图等信息,其主界面展示如下图4-1所示。
![](https://i-blog.csdnimg.cn/direct/7e2c1dcbc9a64a2789b8e8849a963d5e.png)
图4-1 首页界面图
4.1.2 用户注册界面
游客可以随时进入到系统中,对系统中的信息浏览,但是想要实现收藏、评论等,就必须有这个系统的账号,如果没有账号的话,可以注册成用户进行相关的操作。其用用户注册界面展示如下图4-2所示。
![](https://i-blog.csdnimg.cn/direct/a17ed364c47a4c6e89b74c894d8f69fb.png)
图4-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))
4.1.3 用户登录界面
当用户注册完成后就可以登录了,输入用户名+密码,点击“登录”按钮进行登录,登录界面如下图4-3所示。
![](https://i-blog.csdnimg.cn/direct/9e63439bc614419890ebf8597d59e5af.png)
图4-3登录界面图
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))
4.1.4我的账户界面
当用户点击右上角“我的”这个按钮,会出现子菜单,点击“我的账户”可以对个人的资料、登录系统的密码以及自己收藏的信息进行设置管理,我的账户界面如下图4-4所示。
![](https://i-blog.csdnimg.cn/direct/8d7c94679c6e40ceba8891364fbea8b1.png)
图4-4我的账户界面图
4.1.5 景点信息详情界面
用户点击“景点信息”菜单可以查看所有景点信息,可以按照条件查看景点信息,或者输入关键词进行查询,点击可以进入景点信息详细展示界面,在此界面用户可以收藏、点赞和评论。界面如下图4-5所示。
![](https://i-blog.csdnimg.cn/direct/6e15aae9a2954b61a0f95ae19d38bb1c.png)
图4-5景点信息详情界面图
4.1.6 新闻资讯详情界面
用户点击“新闻资讯”菜单显示所有的新闻资讯信息,可以按照条件进行新闻资讯的筛选或者输入关键词进行局部搜索,点击可以进入新闻资讯详细展示界面,在此界面用户可以收藏、点赞和评论。界面如图4-6所示。
![](https://i-blog.csdnimg.cn/direct/7fa3d7dac32f4001868cfccebbdc6df5.png)
图4-6 新闻资讯详情界面图
4.1.7 美食信息详情界面
用户点击“美食信息”菜单可以查看所有美食信息,可以按照条件查看美食信息,或者输入关键词进行查询,点击可以进入美食信息详细展示界面,在此界面用户可以收藏、点赞和评论。界面如下图4-7所示。
![](https://i-blog.csdnimg.cn/direct/b735e554dceb4f23a8dc59522c9dfc92.png)
图4-7 美食信息详情界面图
4.2管理员功能模块
4.2.1系统用户管理界面
管理员点击“系统用户”这一菜单会显示管理员和普通用户这两个子菜单,管理员可以对这两个角色的信息进行增删改查操作。界面如下图4-8所示。
![](https://i-blog.csdnimg.cn/direct/1fe1b158d5b849448fffc856d8220a45.png)
图4-8 系统用户管理界面图
系统用户管理关键代码如下:
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": "已存在"}}
4.2.2 景点信息管理界面
管理员点击“景点信息管理”菜单可以查看到系统中的所有景点信息,对已经存在的景点信息,管理员可以修改,也可以添加新的景点信息或者删除景点信息。界面如下图4-9所示。
![](https://i-blog.csdnimg.cn/direct/0aa72a7f484a4f22a30739036942c42f.png)
图4-9景点信息管理界面图
景点信息管理关键代码如下:
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}
4.2.3 美食信息管理界面
管理员点击“美食信息”会显示出所有的美食信息,支持通过美食名称对美食信息信息进行查询,如果想要添加新的美食信息,点击“添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条美食信息,点击“删除”进行删除。界面如下图4-10所示。
![](https://i-blog.csdnimg.cn/direct/747bbb0e096e4f2e812620b692eee9a4.png)
4.2.4数据信息管理界面
数据信息管理:管理员点击“数据信息”会显示出所有的数据信息,支持输入景点名称对数据信息进行查询、先下载导入文档,把数据复制进去后导入数据,如果想要添加新的景点信息,点击“添加”按钮,输入景点名称、攻略数量、评分、简介、排名、经度、维度等信息,点击“提交”按钮就可以添加了,同时可以选择某一条景点信息,点击“删除”进行删除,也可以对用户提交的数据信息详情、攻略分析、点评分析进行管控。界面如下图4-11所示。
![](https://i-blog.csdnimg.cn/direct/3c971778125c4286ac3326dd38af145c.png)
图4-11数据信息管理界面图
数据信息管理关键代码如下:
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}
4.2.5 景点分类管理界面
管理员点击“景点分类”会显示出所有的景点分类信息,支持输入景点名称对景点分类进行查询,如果想要添加新的景点分类,点击“添加”按钮,输入景点分类、创建时间等信息,点击“提交”按钮就可以添加了,同时可以选择某一条景点分类,点击“删除”进行删除。界面如下图4-12所示。
![](https://i-blog.csdnimg.cn/direct/2d0aaf3ca6ef4faaa2ffd98b5612c2b2.png)
图4-12景点分类管理界面图
景点分类管理关键代码如下:
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系统测试
5.1 测试目的
系统测试的目的就是为了找错,从开发好的系统当中通过各种手段、方法进行找错,看看系统是不是存在乱码的现象,是不是用户功能混乱,通过各种纠错,保证系统能够正常的运行,在测试中我们通过采用的是黑盒测试和白盒测试两种测试方法,通过黑盒测试,我们可以了解系统各项功能是不是能够实现,界面是不是美观,操作是不是方便,通过白盒测试,我们可以了解到某一条的具体编程代码是不是运行路径正确,能不能达到预期,从错误中不断完善,想尽一切办法找到系统中存在的错误,然后找到出错的具体原因,然后对系统进行修改,达到我们所要实现的功能,进而提高了系统的各种性能(安全性、可靠性、稳定性等)。
系统测试不是程序开发完以后才开始的,他贯穿了开发的整个过程,在开发的过程中我们都会对实现的代码进行一点一点的测试,从而完成系统,再对系统进行整体测试,保证每个用户在使用的时候都能做到系统运行流程,满足信息增删改查等主要功能。
5.2 系统测试用例
表5.1 登录模块功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
登录模块测试 | 登录成功的情况 | 管理员可以通过浏览器进入到旅游数据分析与可视化系统开发后台的登录界面,输入用户名:admin和密码admin后,点击“登录”按钮。 | 成功登录到管理员管理的界面 | 正确 |
登录模块测试 | 登录失败的情况 | 管理员可以通过浏览器进入到旅游数据分析与可视化系统开发的后台登录界面,输入用户名:admin和密码111后,点击“登录”按钮。 | 系统提示“用户名和密码不匹配” | 正确 |
新闻资讯信息添加功能测试:
表5.2 新闻资讯信息添加功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
新闻资讯添加模块测试 | 新闻资讯添加成功的情况 | 在“资源管理”菜单中选择“新闻资讯”点击 “新增”,输入新闻资讯相关信息,输入正确的信息后,点击“提交”按钮。 | 提示添加成功 | 正确 |
新闻资讯添加模块测试 | 新闻资讯添加失败的情况 | 在“资源管理”菜单中选择“新闻资讯”点击 “新增”,不输入新闻标题,其他信息正常填写后,点击“提交”按钮。 | 提示“添加失败,新闻标题不能为空” | 正确 |
查看美食信息功能模块测试:
表5.3 查看美食信息功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
查看美食信息功能测试 | 美食信息显示成功的情况 | 用户在首页点击“美食信息”进入美食信息,任性一条美食信息,查看详情 | 视频显示成功 | 正确 |
数据信息添加功能测试:
表5.4 数据信息添加功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
数据信息添加模块测试 | 数据信息添加成功的情况 | 在“数据信息管理”菜单中选择“数据信息添加”,输入数据信息相关信息,输入正确的信息后,点击“提交”按钮。 | 提示添加成功 | 正确 |
数据信息添加模块测试 | 数据信息添加失败的情况 | 在“数据信息管理”菜单中选择“数据信息添加”,不输入景点名称,其他信息正常填写后,点击“提交”按钮。 | 提示“添加失败,景点名称不能为空” | 正确 |
5.3 系统测试结果
通过编写旅游数据分析与可视化系统开发的测试用例,已经检测完毕登录、新闻资讯添加、美食信息查看、数据信息添加,通过这4大模块为旅游数据分析与可视化系统开发的后期推广运营提供了强力的技术支撑。
结论
至此,旅游数据分析与可视化系统开发已经结束,在开发前做了许多的准备,在本系统的设计和开发过程中阅览和学习了许多文献资料,从中我也收获了很多宝贵的方法和设计思路,对系统的开发也起到了很重要的作用,系统的开发技术选用的都是自己比较熟悉的,比如Python、Django技术、MYSQL,这些技术都是在以前的学习中学到了,其中许多的设计思路和方法都是在以前不断地学习中摸索出来的经验,其实对于我们来说工作量还是比较大的,但是正是由于之前的积累与准备,才能顺利的完成这个项目,由此看来,积累经验跟做好准备是十分重要的事情。
当然在该系统的设计与实现的过程中也离不开老师以及同学们的帮助,正是因为他们的指导与帮助,我才能够成功的在预期内完成了这个系统。同时在这个过程当中我也收获了很多东西,此系统也有需要改进的地方,但是由于专业知识的浅薄,并不能做到十分完美,希望以后有机会可以让其真正的投入到使用之中。
参考文献
[1]Jiang Y ,Bugby L S ,Lees E J . PMST: A custom Python-based Monte Carlo Simulation Tool for research and system development in portable pinhole gamma cameras [J]. Nuclear Inst. and Methods in Physics Research, A, 2024, 1061 169161-.
[2]Hagelin S . Shake my hand: Racial fantasies, white saviors, and Django Unchained's haunted screen [J]. The Journal of Popular Culture, 2023, 56 (5-6): 781-796.
[3]姜永成. 基于Django的网络招聘数据可视化分析系统的设计与实现 [J]. 科技资讯, 2023, 21 (19): 57-60.
[4]Karthik G ,Debashish M ,Jagoda C , et al. Developing a MySQL Database for the Provenance of Black Tiger Prawns (Penaeus monodon). [J]. Foods (Basel, Switzerland), 2023, 12 (14):
[5]吴斌. 知识可视化在中职《旅游文化》课程教学中的实践研究[D]. 浙江师范大学, 2023.
[6]范路桥,高洁,段班祥. 基于Python+Flask+ECharts的国内热门旅游景点数据可视化系统 [J]. 现代电子技术, 2023, 46 (09): 126-130.
[7]秦旭,吴宇锋. 我国生态旅游研究热点可视化分析——基于CSSCI期刊载文数据 [J]. 智慧农业导刊, 2023, 3 (04): 29-32.
[8]李轩宇,赵颖,肖忠良等. 基于Python爬虫的旅游网站数据分析与可视化设计分析 [J]. 电脑知识与技术, 2022, 18 (33): 58-60+70.
[9]张乐,孙怡芳. 基于Python的运城旅游数据可视化分析 [J]. 计算机时代, 2022, (10): 85-88.
[10]赵蔷. 基于Python爬虫的旅游网站数据分析与可视化 [J]. 电子设计工程, 2022, 30 (16): 152-155.
[11]徐一帆,朱梅新. 中国体育旅游研究可视化分析——基于CNKI(2011—2021)文献数据 [J]. 当代体育科技, 2022, 12 (17): 154-156.
[12]邓梦莹. 基于GIS和大数据技术的少林寺旅游信息管理系统研究[D]. 华北水利水电大学, 2022.
[13]王雪超,姚雪梅. 图书馆文旅融合研究的热点与前沿 [J]. 大学图书情报学刊, 2021, 39 (06): 116-121.
[14]关阳,张徐,苏振. 基于Python数据可视化的国内外游客桂林旅游感知对比分析 [J]. 资源开发与市场, 2021, 37 (11): 1380-1387+1408.
[15]孙文杰,张素莉,许骏等. 长白山旅游数据爬取及可视化分析 [J]. 吉林大学学报(信息科学版), 2021, 39 (04): 416-420.
[16]平力俊. 结合社交媒体的交通数据可视分析技术研究[D]. 中国计量大学, 2021.
[17]庞潇. 基于多源数据的旅游路线可视分析与规划[D]. 四川大学, 2021.
[18]郑萌,朱福军. 基于数据可视化的红色旅游研究热点分析 [J]. 旅游纵览, 2021, (08): 23-26.
[19]王德瑞. BI可视化下的旅游大数据分析你的钱都花哪了 [J]. 数据, 2021, (03): 30-31.
[20]吴星星. 我国智慧旅游研究热点可视化分析——基于CNKI核心期刊载文数据 [J]. 湖北文理学院学报, 2021, 42 (02): 35-40.
致 谢
“时光荏苒,岁月如梭”,四年的大学生涯在这里即将结束,我也即将离开我的母校,踏入社会,在这离开之际,借此机会,我首选要感谢的就是我的老师们,在这四年的学习、生活中,他们给了我很多的帮助,在我消极的时候鼓励我,帮助我走出困境,学习遇到困难的时候,每位老师都孜孜不倦;其次我要感谢我的指导老师,在开发本旅游数据分析与可视化系统开发的时候遇到了很多困难,比如前期调查不仔细,功能模块设计的有问题,导师通过细心的沟通、讲解,慢慢让我对系统有了更进一步的了解,在系统开发框架的选择上,导师给我推荐了django,让我在系统的设计上更加省力,在这期间我对这两个框架还不够熟悉,都是导师耐心的讲解、指导,无论多晚,导师有多忙,总是第一时间为我答疑解惑,可以说没有导师的帮助,我是没有办法完成这个旅游数据分析与可视化系统开发的,在这里我还要感谢我的同学们,他们无论在学习还是在生活中都给予了我很大的帮助,我相信我们的友谊会天长地久。
最后向所有关心我、帮助我的老师及同学们表示衷心的感谢!祝愿我的母校越来越辉煌,祝愿老师们桃李满天下,祝愿同学们前程似锦!
免费领取项目源码,请关注❤点赞收藏并私信博主,谢谢-