python旅游景点推荐系统的论文

摘 要

相比于以前的传统旅游景点推荐手工管理方式,智能化的管理方式可以大幅降低景区的运营人员成本,实现了旅游景点推荐的标准化、制度化、程序化的管理,有效地防止了旅游景点推荐的随意管理,提高了信息的处理速度和精确度,能够及时、准确地查询和修正旅游景点推荐情况等信息。
课题主要采用Python开发技术和MySQL数据库开发技术以及基于OpenCV的图像识别。系统主要包括系统首页、个人中心、用户管理、景点信息管理、景点类型管理、景点门票管理、在线反馈、系统管理等功能,从而实现智能化的旅游景点推荐方式,提高旅游景点推荐的效率。

关键字:旅游景点推荐;OpenCV;Python;MySQL

Abstract

Compared with the traditional manual management of scenic spot recommendation, the intelligent management can greatly reduce the operating personnel cost of scenic spot, realize the standardized, institutionalized and programmed management of scenic spot recommendation, effectively prevent the random management of scenic spot recommendation, improve the information processing speed and accuracy, Be able to timely and accurately inquire and correct the tourist attractions recommendation information.
The subject mainly uses Python development technology and MySQL database development technology and image recognition based on OpenCV. The system mainly includes the system home page, personal center, user management, scenic spot information management, scenic spot type management, scenic spot ticket management, online feedback, system management and other functions, so as to realize the intelligent way of scenic spot recommendation, improve the efficiency of scenic spot recommendation.

Keywords: Tourist attraction recommendation; OpenCV; Python; MySQL

目 录

摘 要 1
Abstract 2
1 绪 论 1
1.1研究意义 1
1.2设计目的 1
1.3设计思想 2
1.4可行性分析 2
1.4.1经济可行性 2
1.4.2技术可行性 3
1.4.3社会可行性 3
1.5需求分析 4
2系统开发技术 6
2.1 PyCharm开发环境 6
2.2开发技术 6
2.2.1 Python 6
2.2.2 OpenCV 7
2.2.3 MySQL 8
3系统分析 9
3.1需求分析 9
3.1.1项目背景 9
3.1.2需求分析 10
3.2系统用例图 10
3.3 系统流程图 12
3.4功能分析 14
第四章 系统设计 15
4.1系统功能结构设计图 15
4.2数据库设计 15
4.2.1数据库设计原则 15
4.2.2 数据表设计 17
4.2.3数据库连接 21
4.3本章小结 21
3系统详细设计 22
3.1登录模块 22
3.2模块 22
3.3模块 22
3.4模块 22
3.5本章小结 22
4 系统调试与测试 24
4.1软件测试原则 24
4.2软件测试过程 25
4.3测试用例 26
4.4本章小结 27
结 论 29
参考文献 30
致 谢 31

1 绪 论

近年来,随着互联网科技的进步和发展,人们的生活水平得到了极大的提高,旅游景区也在快速增加,以至于各大旅游景区的数量不断扩大,管理旅游景点推荐工作也日渐繁重。由于传统的旅游景点推荐方式,人工管理成本高,效率低,还存在景点数量的不明确,与管理人员沟通方面的压力。所以人工管理方式在很大的程度上存在弊端。还可能造成旅游景点推荐秩序比较的混乱,给人们的生活带来了非常大的不便,导致不能满足现在社会的需求。现如今对景点的管理成为一个越来越受关注的社会问题,对于能够快速的找到景点,也是为了提高旅游景区管理的效率。在不断增加的旅游景点的问题,现在的旅游景点推荐的管理也是在完善。
1.1项目背景
主要是对于旅游景点推荐工作调研,以及对旅游景点推荐信息采集、存储、查询和更新。在旅游景点推荐问题上对于现有管理上的不足,用户可以通过后期查询旅游景点推荐信息情况,从而使旅游景点推荐更加便利。
在实际的系统项目开发中,需要怎么做开发和一些现实中的做法是紧密结合在一起的,整体开发的过程还有应用的场景通常也会是一个持续发展的过程,在一个特定的设计中,如何开发,将会对实际的实施流程产生影响,要注意到怎样进行部署和运行。因此,整个系统的研发,都是紧密相连的,要是真的划分为独立的几个阶段,忽视其作为一个整理的综合考虑,每个步骤的实施过程必然会遇到由于上一阶段考虑不周全带来的问题,从而影响整体开发的效率。
设计者往往以需求为中心进行工作,而大多数的功能需求是从总体上进行分析和思考,即从设计者的角度去了解需求。但是要真正理解真实需要,光从开发人员的观点出发还远远不够,还需要从实际的行业发展以及相关地方情况考虑,要从更高的层面去分析,这是真实的需要;同时,我们也要更好的了解他们的用户思维,了解他们的应用情况,和他们的思想,这是他们的需要。
1.2研究意义
社会前进的步伐带动信息化的发展,信息化的建设使得人们生活的节奏加快,至使人们更加注重信息的时效性。陈旧的管理获取信息方式将无法满足人们的需求。从而人们更加关注在线系统管理。在线系统管理可以满足现代人们获取信息实时、便捷等特点,只要有网络的地方,就能迅速查找到想要的信息。
计算机技术已成为人们管理信息的重要工具。能解决人们获取信息更加有效快捷,提高人们的工作效率为重要手段。
1.3设计目的
通过对旅游景点推荐内容的学习研究,进而设计并实现一个旅游景点推荐系统。系统能实现的主要功能应包括景点信息、景区门票的一些操作。还有可以正确的为用户服务,准确显示当前信息。
在旅游景点推荐系统的前期,即需求分析阶段,我们对旅游景点推荐的需求进行了详细的描述,并且在需求规范中有详细的描述和阐明。根据系统需求的分析,对旅游景点推荐的管理进行了整体的设计。着重对软件模块的设计进行了详细的分析,以达到对系统的需求。重点阐述了系统的划分、接口的确定、各模块间的数据传输、数据结构与模块结构的设计。在下面的概要设计中,将会详细地描述这个阶段中的系统。
1.4设计思想
在开发与设计中,要有正确的开发思路,要对开发环境、语言、架构、操作系统这些方面做一些了解,最后就是完整的思路模式。系统的设计按照以下原则执行:
(1)有效性原则
能够设计的有效,对于用户来说是比较满意的,正常的可以用是在需求,还有是有用的特定意义,都是可以说在有效的范围里。都是用一些操作,还有开发的思维,能够给使用者带来的使用。所谓设计就是需求的想法,很完整就不能够是一个好的系统,可以使用的系统有效性是很高的,而且还有效使用,在实现用户的需求时才能够很好而不会有错误的。
(2)可扩展性
从“可伸缩”的意义来看,许多人认为,讨论改进性能、实现高可用性,甚至是专门的技术和协议。很明显,这些都与可扩充性无关,你必须知道有关速度、性能、可用性、应用平台、网络等等,但是,这并不是一个可扩充的定义。其核心内容是增加一个功能逻辑,或者减少一个功能,逻辑上并不会影响到其他已经编写好的功能模块,这就是可扩展性含义。
系统的可扩展性设计非常重要,但是又非常难以掌握,很多试图通过高并发语言等方式缓解开发者精力,但是,无论采取什么技术,如果应用系统内部是比较的麻烦,比如对数据库的严重依赖,当系统的存取规模达到一定程度时,就会将资源集中在一个或两个数据库服务器上,这时进行分区扩展伸缩就比较困难[1]。
(3)用户的需求原则
在设计系统之前,一般都是先了解一下系统,了解一下系统中的信息在哪里,然后再进行相应的设置。但我们也承认,许多使用者并不能真正了解设计师的想法,并且经过研究发现,系统所服务的对象是广大的用户,并不是掌握这些知识的设计者,所以我们得通过特殊的界面来实现让用户方便使用的系统。

2系统开发技术

2.1 PyCharm开发环境
PyCharm是一种比较好的用来开发Python的集成开发环境,其中它里面包含了许多的可以提高开发效率的工具,对于开发者来说能够节省很大的精力,所有工具中比较常见的就是语法如果有任何的错误,都能够自动的标示出来,方便开发者可以及时的修正,还有它所自带的调试功能,方便在开发者完成相应的模块后,可以进行对于某段程序的调试。当然对于初学者也是非常友好的,因为它会自带一种对于程序的相应代码的逐条执行,并且能够及时的返回执行的显示结果,这样就可以让初学者可以更加清晰的看到程序中的基于一些算法的逻辑方面的思维模式。可以说它是一个功能比较强大的编译器同时也是调试器。
2.2开发技术
2.2.1 Python
Python是解释型的脚本语言,在运行过程中,把程序转换为字节码和机器语言,说明性语言的程序在运行之前不必进行编译,而是一个专用的解释器,当被执行时,它都会被翻译,与之对应的还有编译性语言[3]。
同时,这也是一种用于电脑编程的跨平台语言,这是一门将编译、交互和面向对象相结合的脚本语言(script language[4])。
可以说其优点也是非常的突出,下面就其优点进行具体的说明:
(1)首先它是一种比较简单易学的,而且对初学者来说也是非常容易上手的一种语言,与其他的语言相比较在进行编写和阅读的时候,会更加接近人的思维模式,非常的适合用户的阅读性和易于理解的特点。
(2)由于其底层的逻辑是用c语言完成的,所以在运行的速度来说也是非常快的,就如许多的开发者所了解的,它的很多的标准库以及第三方的依赖都是由c语言所开发的,所以执行起来比较高效率。
(3)并且,它始终是一个面向对象的程序设计,它支持面向过程和面向对象的编写[5],在以流程为导向的语言里,一个程序是建立在一个过程或者一个简单的可重复使用的代码的功能上,在面向对象中,一个程序是以数据和函数为基础的对象构造的。
(4)如果需要代码的扩充或者是快速查看,在使用它的时候格式也是非常的清晰,还有便于维护的特点,在不同的开发人员共同开发的过程中,都会比较方便的理解所编写的内容。
(5)同时也是因为它开源的特点,能够被移植到很多的平台进行使用,并且它也是完全支持重载、派生、继承等有助于增强代码的复用的特点,同时有两个标准库(functools, itertools[6])提供了开发的支持。
2.2.2 OpenCV
OpenCV是一款基于 BSD授权的跨平台电脑视觉库,它可以在 Linux, Windows,安卓和 Mac操作系统下运行[7],该系统既轻便又有效,是由C和一些 C++类,并能与 Python, Ruby, MATLAB等语言进行交互,并能完成许多常用的图形处理和计算机视觉的算法[8]。同时在数码图象中的某些处理,其中包括对于图像特征的提取,能够根据不同的图形就行各个目标的识别,而且它的识别技术在现在的许多视觉领域都是应用比较广泛的。根据其所具有的一些特征可以从以下几个方面说明功能优势:
(1)由于是计算机视觉应用中比较好的专用技术,它具有非常多的特点,其中就有支持许多的编程语言的特点,而且还支持跨平台的开发使用,给编程人员带来了极大的便利。
(2)同时,我们还提供了大量的可视化算法,用 C语言编写,再加上开源的特点,只要操作得当,就能完成编译,不需要别的操作,就能完成整个代码的编译,因此,很多人都把它用于移植算法[9]。
(3)在项目的开发过程中,其作为比较优势的开源库并且还能够具有非常丰富的视图的处理方面的函数库,所以被很多的开发者使用,能够提供一些基础的学习算法的调用,使得图像的处理和分析变得更加容易操作,所以让许多的编程人员更加易于学习。
2.2.3 MySQL
MySQL是一种用于数据存储的关系数据库管理系统,MySQL是最好的 RDBMS (Relational Database Management System[10],关系数据库管理系统) 应用软件之一。由于计算机是一个巨大的数据处理工具,所以数据库管理系统在计算机中占有重要地位。数据的管理不仅仅只是数据的存储,而是已经转变成用户需要的许多的数据的管理。其也有很多不同的类型,能够做到有简单的数据管理到大量的数据的管理能力[11]。
这种数据库是比较灵活的方式,优势就在于更加的切合开发者的思考逻辑,所以理解起来也会比较的方便,还能够和其他的语言一起使用,在连接起来就是比较的易懂,同时对于一些基本的查询以及添加的操作也是必须能够掌握的功能。
2.2.4 B/S结构
使用B/S结构的系统是通过有网络的计算机进行使用,它最大的优点是不需要安装专门的软件,最先,计算机浏览器向服务器发送要求,随后服务器解决要求并将信息回到给计算机浏览器。不用再次计算数据或进行存取,只管负责显示数据来降低要求。与C/S构架对比,B/S构架与C/S架构的较大差别取决于,B/S构架的系统软件以web计算机浏览器为服务平台与消费者实现互动,如下图2-1所显示,而C/S则必须开发专业的运用。
在这里插入图片描述

图2-1 B/S结构图

3系统分析

3.1需求分析
系统的性能是指操作系统完成现有的程序的有效性、稳定性以及响应速度,操作系统完成一个任务时,与系统自身设置、路由的设计、网络性能的测试、设备的使用情况等多个方面都密切相关,要是任何一个环节出现问题,就都会影响整个系统的性能。所以要从网络的设置、系统的操作、硬件的组合、程序的应用等方面综合检查,然后问题出现在哪个部分,可以集中进行解决。
在程序的应用、系统的操作、硬件的组合、网络的设置等方面,影响性能最大的是程序的应用和系统的操作两个方面,因为这两个方面如果出现的问题是不太容易察觉,隐蔽性非常的强。而硬件的组合、网络的设置只要出现问题,一般都能马上发现。主要了解一下系统的操作方面的性能操作思路,程序的应用方面需要具体问题还需要有具体的解决办法。
随着智能设备的快速发展,以及对于网络的深入认识,这种高度分布式架构最终会变为移动计算。但是,随着计算量的日益增大,系统架构师开始将计算任务转移到共享网络的计算上,这样,他们就可以利用共享网络的计算可以无限制的计算量和存储相关的资源,并享受其带来的比较高的可靠性以及低成本。因此,近年来,许多的企业开始向以共享网络计算为中心的更加有效化的方式发展。
要想在实际的情况下,开发出一套符合使用者要求的旅游景点推荐系统,首先要了解使用者的需求。对旅游景点推荐的需求有深刻的了解,无论设计与开发工作多么优秀,都是一个成功的先决条件,也可以这么说,要不能满足用户需求的程序,是创造不出非常大的使用价值的,而且还给设计者带来很多的不利。需求分析是旅游景点推荐系统设计时期的比较重要的一个阶段,它的基本内容是准确地解释出系统将会能够做些什么事情的关键问题,最终完成的是一份完整的系统的使用说明。
(1)有一些功能方面的需求,通过需求分析,可以找出需要完成的几个基本功能模块。性能要求也是指在系统设计的时候,需要满足一定的要求和限制,比如响应时间、信息处理、内存容量、磁盘容量、安全等等。
(2)系统的可靠性要求也是一个必须考虑的问题,它可以将可用性和可靠性结合起来,显示了用户在使用时经常遇到的问题。硬件要求也包括需要处理错误,以表明系统如何应对环境错误。如果自己的系统收到来自其他系统的信息,这些信息违背了某些格式,这时系统应该会有什么样的响应情况。
(3)软件方面的需求还有一些逆向的需求,就是系统不能做的事情。可以说,有很多种不同的要求,而开发人员应该能够准确的理解他们的真正需要,并且可以应用到旅游景点推荐系统中。还有应该明确地找出一些虽然不属于当前旅游景点推荐系统开发的情况,但是据现在的分析,将来是非常可能会需要的可能需求。经过这个需求的分析,在设计过程中对旅游景点推荐系统将来有机会出现的问题有所准备,要能够确实需要的时候可以更加轻松的修改。
3.2可行性分析
3.2.1经济可行性
系统采用的是开发环境PyCharm进行设计以及编写,并且根据所学的Python技术来实现相应的功能的开发,综合就是一个比较基础的系统开发设计,所以所用到的有开源的开发环境所构成。而且可以利用现有的设备,不用进行另外的硬件设备购买。
用户通过使用旅游景点推荐系统,很大程度减小了人员成本,极大提高了管理的效率。目前的由人员管理的方式存在很多不足,首先是人工成本大,并且工作效率比较低,然后是存在着很多现金流失的问题。在结合旅游景点推荐系统的特点,还有一些记录和统计,智能旅游景点推荐杜绝了以上的问题,提高了旅游景点推荐的安全性。
经济可行性是主要计算项目的开发成本,还有项目成功后可能带来的有效收益。很多的项目只有开发成本能控制在企业有可能接受的范围内的情况下,这样的项目才会被批准开发。然而本次系统的开发在上述所有的问题的情况下,是可以完成相关的系统设计。
3.2.2技术可行性
在研究技术可行性的时候,系统的开发环境是可以确定的,所以技术可行性最好与系统功能和性能以及一些实际的情况同时考虑。在可行性研究阶段,结合实际调整开发的内容和选择能够完成的技术体系是一个可用的手段,如果系统进入开发阶段,任何的调整都意味着会耗费更多的经历。需要再次明确的问题是,技术可行性不只是考虑在技术上是否可实现,实际上还包含了在当前的实际的情况下的技术可行性。有很多的因素例如时间不足、预期的开发目标技术难度比较难、不能有充足的技术积累、而且对于技术的掌握不够等这些实际存在的情况,都是要提前部署和认真规划的。
开发旅游景点推荐系统的技术内容分析,目前的状况是从网络硬件和相关技术上看是可行的。该系统采用了 Python和 MySQL技术。到现在可以知道,很多的基础知识都是经过学习使用的,在后续的设计中还需要不断的练习,学习更多相关的技术经验来充实自己对于系统的开发。
3.2.3社会可行性
在社会可行性分析中,首先能结合国家经济和社会发展的实际情况,还需要能够让用户更加的便利,给使用者带来多方面的高效益,使得可以比较快速的发展以及应用,随着很多领域的发展,尤其是智能化的社会下,据统计许多的人都拥有属于自己的信息,这种情况下就带来很多的问题,比较突出的就是管理上的不足,不管是从用户还是管理员的角度看待,都形成了比较困难的情况,而且很多的地方都有景点信息不明确从而出现低效率的原因。
在可行性分析中的收益分析,是比较清晰地发掘开发的系统带来的各种直接的有效的利益以及一些隐藏起来的好处,以便在后续的设计中更加的坚定和确信系统开发的意义。解决一些社会方面存在的问题,设计并开发系统肯定是要发现某类社会存在的问题,并且能够带来一定的社会价值。还有一些社会的影响力,是通过系统优势和切实的好处来产生的,能够在一定的情况下提高效率,肯定会增加一些社会的进步和发展。社会上的可行性,包括法律上的可行性,也包括法律上的可能性,法律上的可行性,需要社会上的许多因素[2],可以来实现系统建设的现实性。如果所开发的系统与国家法律或政策等相关的因素不相符合,在某些信息化的邻域中使用的是一些加密的信息或者技术问题,还有不经过正常的操作使用其他的一些公开的信息等这些情况,这样的系统的开发在法律的范围中就是不能被允许的。
其中还有一个比较重要的用户使用可行性也是通过执行系统时的可行性,是从所有情况下用户的角度来考虑系统的可行性,由于设计开发相关的系统就是站在社会中广大的用户体验考虑的,所以在这个层面考虑也是符合的。

3.3系统用例图
在设计系统的过程中,除了上述的结构图,用例图也是系统设计过程中必不可少的模型,如果说系统的结构图可以简洁明了的表示出系统的有关功能模块,那么用例图则可以更为细致的,结合系统中人员的有关分配,能够从细节上描绘出系统中有关功能所完成的具体事件,确切的反映出某个操作以及它们相互之间的内部联系。
其中参与者就是和系统能够发生交互的外在实体,一般可以指系统的某个用户。一个用例图就能对应出系统中的一个功能过程,系统中完整的功能都是由许多不同的用例图所组成的。
系统用例图如图3-1、图3-2所示。
在这里插入图片描述

图3-1 管理员用例分析图
在这里插入图片描述

图3-2 用户用例分析图

3.4系统流程图
流程图就是用它已经特定的图形符号以及相应的线条,用来展现出系统在执行中的整个的过程。由于这种图形能够很方便的描绘系统的一系列流程,所以它的所有的图形符号是比较关键的,基本都是一个图形符号就能表示某个过程的一个单独的步骤。流程图不只是提供出比较完整、全面的执行过程,而且在整个团队的协作设计过程中,还可以发现其中有可能存在的缺陷以及不足,便于在后续的过程中能够及时的纠正和完善系统。
通过流程图可以对系统的需求和相关过程进行分析,能够详细的细分到每个部分的设计。对于设计者来说在开发过程中能够使用流程图作为基础,可以快速提高自身的逻辑思想,并且还能在后续的操作中能够有章可循,在系统的设计中最重要的就是程序的设计,然后才是程序的具体编写,流程图便是在设计过程中重要的工具,以下就是流程图设计。
登录流程图和添加信息流程图分别如图3-3、图3-4所示。
在这里插入图片描述

图3-3 登录流程图

在这里插入图片描述

图3-4 添加信息流程图
3.5功能分析
(1)管理员登录:在整个系统设计中登录界面的设计方便管理员操作,让整个的系统更加安全可靠,注册的账号和密码都会被记录和储存在数据库当中。
(2)管理员管理:管理员进入系统,可以对用户信息进行管理,而且可以对景点信息、景点类型、景点门票、在线反馈、系统等进行查看,修改和删除等。
(3)用户管理:用户进入系统首页,可以对个人信息进入修改,而且可以对景点信息、景点门票、旅游资讯、在线反馈等进行查看等。

4系统设计

4.1系统功能设计
本次系统所涉及到的有关的功能,都是用功能结构图来简洁和清晰的表示出来,功能结构图就是能够把比较复杂的功能结构用图的形式清晰的描绘下来,并且为后续的设计以及测试等模块提供了明确的方向,在构思功能结构图的时候,便可以给设计的过程带来一定的思维导向,不至于在设计过程中有所遗漏,可以尽可能的明确系统所涉及到的功能。
系统的功能结构图如图4-1所示。
在这里插入图片描述

图 4-1系统功能结构图

4.2数据库设计
4.2.1数据库设计原则
学习程序设计,如果要了解数据库管理系统或者是根据需求而制定的系统接口,就必须创建一种数据库管理系统的模式,用来保存数据资料,这样当在应用编程过程中时候,就不需要再向操作系统页面上加载信息,进而增加了整个系统的工作效率。信息库管理系统中保存着许多数据,应该说是一个管理信息系统建设的中心和基础,而信息库管理系统也为管理信息系统建设提出了新增、删除、更改和搜索的操作功能,使管理信息系统建设能够迅速地查询所需要的数据,而不会直接从程序代码中查找。信息库管理系统通过将信息表的各个组成部分按照特定的方法准确地合并,排序和组成信息库管理系统。
通过对旅游景点推荐系统的主要功能信息进行规划并分为若干功能实体信息[14],实体信息将使用E-R图加以表示,本系统的主要功能实体图如图4-2、图4-3、图4-4、图4-5所示。
在这里插入图片描述

图4-2景点信息实体图
在这里插入图片描述

图4-3景点门票实体图
在这里插入图片描述

图4-4用户实体图
在这里插入图片描述

图4-5旅游资讯实体图
4.2.2数据表设计
在关系数据E-R图中,分析并创建数据表,数据表用来记录信息,数据表关系由多个数据表组成,下面介绍的是数据表各个字段信息如下表所示。

表4-1:景点信息评论表
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
refid bigint 关联表id
userid bigint 用户id
avatarurl longtext 4294967295 头像
nickname varchar 200 用户名
content longtext 4294967295 评论内容
reply longtext 4294967295 回复内容

表4-2:景点门票评论表
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
refid bigint 关联表id
userid bigint 用户id
avatarurl longtext 4294967295 头像
nickname varchar 200 用户名
content longtext 4294967295 评论内容
reply longtext 4294967295 回复内容

表4-3:配置文件
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
name varchar 100 配置参数名称
value varchar 100 配置参数值

表4-4:用户
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
yonghuzhanghao varchar 200 用户账号
xingming varchar 200 姓名
mima varchar 200 密码
xingbie varchar 200 性别
shouji varchar 200 手机
touxiang longtext 4294967295 头像

表4-5:用户表
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
username varchar 100 用户名
password varchar 100 密码
role varchar 100 角色 管理员
addtime timestamp 新增时间 CURRENT_TIMESTAMP

表4-6:收藏表
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
userid bigint 用户id
refid bigint 商品id
tablename varchar 200 表名
name varchar 200 名称
picture longtext 4294967295 图片
type varchar 200 类型(1:收藏,21:赞,22:踩,31:竞拍参与,41:关注) 1
inteltype varchar 200 推荐类型
remark varchar 200 备注

表4-7:旅游资讯
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
title varchar 200 标题
introduction longtext 4294967295 简介
picture longtext 4294967295 图片
content longtext 4294967295 内容

表4-8:在线反馈
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
userid bigint 留言人id
username varchar 200 用户名
avatarurl longtext 4294967295 头像
content longtext 4294967295 留言内容
cpicture longtext 4294967295 留言图片
reply longtext 4294967295 回复内容
rpicture longtext 4294967295 回复图片

表4-9:景点信息
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
jingdianmingcheng varchar 200 景点名称
jingdianleixing varchar 200 景点类型
jingdiandengji varchar 200 景点等级
tupian longtext 4294967295 图片
piaojia float 票价
piaoshu int 票数
kaifangshijian varchar 200 开放时间
fuwudianhua varchar 200 服务电话
xiangxidizhi varchar 200 详细地址
jingdianxiangqing longtext 4294967295 景点详情
clicktime datetime 最近点击时间
clicknum int 点击次数 0

表4-10:景点门票
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
laiyuan longtext 4294967295 来源
biaoti varchar 200 标题
fengmian longtext 4294967295 封面
miaoshu longtext 4294967295 描述
weizhi varchar 200 位置
dianping varchar 200 点评
pinglun varchar 200 评论
jiage int 价格
tese longtext 4294967295 特色
kaifangshijian longtext 4294967295 开放时间
clicktime datetime 最近点击时间
clicknum int 点击次数 0

表4-11:景点类型
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
jingdianleixing varchar 200 景点类型

4.2.3数据库连接
在本系统的设计与开发中,数据库承担着重要的作用,可以说要是没有数据的存储和管理,而系统也不会执行对应的函数。数据库是基于数据结构而设计的,数据库管理员利用数据库管理系统对海量数据进行管理,而数据库的添加、删除、修改、查询等都是非常关键的一环。
在本系统中首先进行数据库的连接,具体的配置文件uimg_sql.py中进行数据库的连接,还有创建了本次数据库中所用到的表和相关的一些参数,这些操作和建立的实现是通过在PyCharm中编写完成的,有一些时间点的记录,旅游景点推荐信息是在数据库uchepai中完成的。

5系统实现

5.1系统功能实现
当人们打开系统的网址后,首先看到的就是首页界面。在这里,人们能够看到系统的导航条,通过导航条导航进入各功能展示页面进行操作。系统首页界面如图5-1所示。
在这里插入图片描述

图5-1 系统首页界面

用户注册:在用户注册页面的输入栏中输入用户注册信息进行注册操作,用户注册页面如图5-2所示。
在这里插入图片描述

图5-2 用户注册页面

景点信息:在景点信息页面的输入栏中输入景点名称和选择景点类型进行查询,可以查看到景点详细信息,并根据需要进行评论或收藏操作;景点信息页面如图5-3所示。
在这里插入图片描述

图5-3 景点信息详细页面

景点门票:在景点门票页面的输入栏中标题进行查询,可以查看到景点门票详细信息;景点门票页面如图5-4所示。
在这里插入图片描述

图5-4景点门票详细页面

在线反馈:在在线反馈页面通过填写留言内容、上传图片进行立即提交或重置操作;在线反馈页面如图5-5所示:
在这里插入图片描述

图5-5在线反馈界面

个人中心:在个人中心页面通过填写个人详细信息进行信息更新操作;还可以对我的收藏进行详细操作,个人中心页面如图5-6所示:
在这里插入图片描述

图5-6个人中心页面

5.2管理员模块实现
管理员登录,在登录页面正确输入用户名和密码后,进入操作系统进行操作;如图5-7所示:
在这里插入图片描述

图5-7管理员登录界面

管理员进入主页面,主要功能包括对系统首页、个人中心、用户管理、景点信息管理、景点类型管理、景点门票管理、在线反馈、系统管理等进行操作。管理员主界面如图5-8所示:
在这里插入图片描述

图5-8管理员主界面

管理员点击用户管理。在用户页面输入用户账号和姓名进行查询、新增或删除用户列表,并根据需要对用户详情信息进行详情、修改或删除操作;如图5-9所示:
在这里插入图片描述

图5-9用户管理界面

管理员点击景点信息管理。在景点信息页面输入景点名称和选择景点类型进行查询、新增或删除景点信息列表,并根据需要对景点详情信息进行详情、修改、查看评论或删除操作;如图5-10所示:
在这里插入图片描述

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

管理员点击景点类型管理。在景点类型页面输入景点类型进行查询、新增或删除景点类型列表,并根据需要对景点类型详情信息进行详情、修改或删除操作;如图5-11所示:
在这里插入图片描述

图5-11景点类型管理界面

管理员点击景点门票管理。在景点门票页面输入标题进行查询、删除或爬取数据景点门票列表,并根据需要对景点门票详情信息进行删除操作;如图5-12所示:
在这里插入图片描述

图5-12景点门票管理界面

管理员点击在线反馈。在在线反馈页面输入用户名进行查询或删除在线反馈列表,并根据需要对在线反馈详情信息进行详情、修改、回复或删除操作;如图5-13所示:
在这里插入图片描述

图5-13在线反馈界面

管理员点击系统管理。在旅游资讯页面输入标题进行查询、新增或删除旅游资讯列表,并根据需要对旅游资讯详情信息进行详情、修改或删除操作;还可以对轮播图管理进行详细操作。如图5-14所示:
在这里插入图片描述

图5-14系统管理界面

6 系统调试与测试

系统的测试是必须的,需要知道的是这个阶段不是单独的,而是在全部的时间进行。这么做可以及时发现问题,还能找到产生矛盾的地方,并且可以尝试修改,这样就能完善系统。对于被测试的系统,都可以找到一些问题,而且还可以找到对应的位置在哪。其目的是对于整体的测试,发现需求中存在的矛盾,就可以做出修改了。测试的过程是对应于整体,有对软件的测试,发现需求的符合度,接下来,就是对数据的检测,以及对硬件的检测。
在软件测试规划中,必须了解测试流程,包括功能概述,测试周期,测试方法,测试范围,测试配置,测试技巧,测试交流,风险分析等[12]。对于一些开发的人员,是可以知道测试方法,找到测试过程的一些的问题,然后可以应对这些问题。
6.1软件测试原则
系统的项目开始启动,系统测试也就是正式开始。软件也有很多特殊性质,其一些测试也是整体的时间,不是一个单独的过程,因为有可能在所以时间段里,可以有不同的问题。从需求分析、系统设计的过程中,就可以进行系统的测试,制定相应的测试内容和设计文档,并且在整个开发过程中,都要进行系统的审核和确认[13],只有这样,才能更快的发现错误,从而提升系统的质量。为了更早地进行检测,让测试人员可以早知道测试难度,还有进行工作的准备,提前了解关于问题的风险,便于能够提高测试的效率,而且还能保证开发质量,还能够避免风险存在于测试里的,可以有更加完善的方案。
在测试过程中有一些问题,还有一些不足以被发现,这样测试可以使软件中有比较少的问题。有些人觉得只要能够通过软件测试的系统,就不会再存在任何问题,便可以比较放心的使用。这种把软件测试夸大的思想是违反原则的。总的来说即使软件测试能够发现任何问题,也不足以证明软件当中就没有任何的问题,系统就是完全正确的。软件测试必须很快地到软件开发过程中,这样就可以很快的地发现软件缺陷,并且越快发现软件问题,软件的修复成本就会越小。可以让测试人员加入需求的开发过程,以确保需求的可以测试的性质、正确性等,便可以更加有效地节省开发带来的成本。在有关于测试的环节当中也会尽早的找到问题,要是开发人员在某个模块发现了问题,那么在这模块中或许会存在不止一个问题。现在软件都比较复杂,而且测试也有难度,几乎不能有测试可以是完全。
测试是在一定的顺序,每个不同的阶段能够由出现的问题,可以了解到它的风险,这样也可以加强测试,从而可以保证软件使用时的质量。测试是需要比较早开始的,一方面就是保证软件的质量,有效的降低风险以及成本。测试的人员一般在分析需求时候就已经开始测试准备了,使得系统的不足在需求或者设计阶段就可以被发现出,就这点来说发现越早,能够修复的成本就越小。测试的设计可以确定测试的有效性以及效率问题,测试的工具只是提升了测试的效率,而非测试本身。在设计一个测试案例时,是还能改善可靠性,可以用更有效的方法。
6.2软件测试过程
软件测试中每当用户提出新的功能需求时,测试人员需要与开发人员一起做测试,这样测试人员就会对本次测试有个比较清晰的认识,具体要完成什么,都有什么功能等。而且当集成测试在完成后,开发的模块就会被联接在一起,从而形成一个完整的程序。每个各模块间的接口存在的许多缺陷都被消除,就可以进入了确认测试的阶段。确认测试是按照软件的需求规格,对软件进行评估是确保它否满足需求规格,然后决定最后的软件是否正常。
在测试规范后,就可以进行测试用例的编写,主要根据功能模块而展开,例如界面包括哪些操作,其中的操作是否可以正常进行,然后根据相关功能来设计,可以根据不同的情况来设计,对于一些测试过程中出现的问题等,以便查找测试任务的相关情况。
(1)单元测试
这种测试是一种用代码的编写,然后完成的测试方法,在整个检测流程中,是一个非常关键的步骤。在一项有关的程序中,可以进行测试的代码,这种的步骤和实现功能的运行过程是一样的,更加能够突出实现的时候,有关于一些数据的正确还有难易的问题。而且单元测试都由开发人员自己来实现。通常都是开发人员有义务编写相关的功能模块代码,由于对于这些问题的出现,会比别人更加的清楚。有目的单元测试,就是能够出现相应地方代码的执行行为与我们预期的具有一样的效果。一般是由开发人员查看相关代码来查找出问题,而且同样是不同的开发人员相互查看对方的代码,这样才能发现更多的问题。在使用工具扫描程序时,可以根据程序的一些错误的特征,是能够发现而且记录代码中的错误原因。还有就是可以使用工具能够自动生成测试用例,而且也能执行相关程序的测试,这种方式也是由于发现一些行为上的特征,并且报告错误的原因,这种测试的方法只能够发现一些明显的错误的问题,对一些不明显的错误就不能测试出原因所在,就比如一直简单的加法函数,其中的错误是相对比较简单的,但是以上的测试方法仍不能发现,是由于这种测试工具不可能自动的理解代码的功能。
(2)系统测试
所谓系统测试,就是把被确定的软件系统,包括电脑的硬件和网络,都是一个整体,它可以完成整个系统的检测和验证[14],系统试验是对整个软件系统进行的一次试验,其目的在于检测该系统能否达到要求,发现一些和需求规定不一样或者有歧义的地方,从而能够提出更加有效的方案。这里要有出现的任何问题,为了能够找到出现问题的位置,就是需要有调试的过程,然后进一步的改正。
这种测试也能够发现和规定不一样的时候,或者是出现的一些矛盾。都是需要提前有关于规定的需求做出比较,做出能够在实际的应用里,可以运行的一些对应的测试过程的用例。
(3)集成测试
集成测试是在单元测试后面开始的,将确定测试单元之间可以相互协调的运行。由于在很大的情况中,需要的系统不是有单独的几个或者一个人来完成,所以在前面的测试过程是,通过负责独立部分的开发者,同时也要负责这里的功能测试。但是如果要是把所以的测试部分都整合在一起,就可以发生一些问题。所以这里的测试是能够说明,不同的负责者的模块可以完全的正常执行,通常在执行集成测试之前,是必须先执行单元测试。
集成测试通过将逻辑上相关的两个或许多的功能模块连接起来执行增量的测试,接着又加入更多功能模块,以及对其功能进行的测试,一直到完成所有功能模块的集然后成功测试为止。集成测试又可以是自上而下方法[15],一般从测试最顶层的功能模块开始,接着一步步地降到最低的功能模块,其中测试是按照软件的具体控制流程从上到下的进行。还可以是自底向上的集成测试,可以很快的发现底层功能模块的问题,能够提高测试的效率。如果要是了解整个的框架,就必须是对应的功能测试在可以检测完的条件。
测试过程中的集成是相对容易的,而且用到的方法也是不太难,根据对应的方法,做出测试用例的需要也比较少,但是由于无法避免的功能模块间接口的问题,所以能够一次运行成功的可能性比较小。而且要是一次集成的功能模块数量比较多,在集成测试后有可能还出现大量的错误,这样系统的错误定位以及相关的修改就会存在比较大的问题,即便能够完成集成测试,但是有可能会留下很多的错误进入系统测试。
6.3测试用例
部分系统测试用例如表6-1所示。

表 5-1 测试用例表
测试功能、流程 预期结果 实际结果 结论
测试管理登录。管理员在登陆页面输入对应信息可以进入主页面 登陆成功,
之后跳转页面 登陆成功,
成功跳转页面 测试成功
测试景点信息。添加景点信息。 添加成功,之后进入景点信息页面。 添加成功,成功进入景点信息页面。 测试成功

结 论

历经六个月左右的时间,本次的毕业设计已画上了句号。原本以为完成一个系统会很顺利,因为在之前课上,也曾动手操作过相关的模块编写,但当真正接触到一个完整的系统时,发现并没有想象地那么简单。首先,以前实践过的只是单独的模块,而这次,是一个庞大的系统,许多细节不容忽视,有时候稍不留意的一个小错误,会致使整个系统都运行不起来,而查找错误的过程又漫长且艰辛,这也正是经验不足所导致的。在整个系统开发过程中,也查阅了很多书籍和相关资料,这让我不但巩固了原本的知识,同时还学习到了一些新的知识,这让我受益匪浅。
此次系统从整体看来,已基本达到预期的设计目的,能够实现基本的功能,但相较于市场的一些优秀系统而言,还是有许多不足的地方。遗憾的是,由于时间的有限,已经不允许再投入更多的时间和精力进行研究开发。相信在以后的工作中,我会接触到更多相关的知识,会更丰富自身的经验,我希望到时能够在此基础上完成一个丰富完整的系统,这将对我有很大的意义。
通过这次的毕业设计,我学到了很多,除了学识方面的知识,在态度上也有了很大的转变,细心和耐心是整个开发过程中最重要的两件事。我也在跟随着系统的完善而成长,这次毕业设计考核地也不单单是所学的知识,也同样在衡量着面对困难时的态度。

参考文献

[1]王晓川. 超市库存管理系统的设计与实现[D]. 福州:福州大学硕士学位论文, 2019:3-4.
[2]张立立,张振坤,刘明钊,等.基于深度学习技术的超市库存收费管理系统设计与实现[J].电子器件,2021,44(01):231-235.
[3]徐明. 人工智能开源硬件与Python编程实践[M]. 重庆:重庆大学出版社, 2020:229-235.
[4]Ravishankar Chityala,Sridevi Pudipeddi. Image Processing and Acquisition using Python[M].CRC Press:2020:67-73.
[5]王学军,胡畅霞,韩艳峰. Python程序设计[M]. 北京:人民邮电出版社, 2018:236-247.
[6]Speight April. Bite‐Size Python®:An Introduction to Python Programming[M].John Wiley & Sons, Inc:2020:43-54.
[7]刘奥卓,曹煜辉,周岳斌.基于树莓派的车辆识别与车流监测系统的设计[J].机械管理开发,2020,35(01):170-172.
[8]葛笑飞. 基于OpenCV的车牌自动识别系统的研究与实现[D]. 南京:东南大学硕士学位论文, 2019:2-3.
[9]潘伟清.浅谈车牌识别超市库存管理系统[J].通讯世界,2018:337-338.
[10] Jesper Wisborg Krogh. MySQL Connector/Python Revealed[M].Apress, Berkeley, CA:2018:33-42.
[11] 肖睿,程宁,田崇峰,等. MySQL数据库应用技术及实战[M]. 北京:人民邮电出版社, 2018:177-185.
[12] 江小静,解祥新,杭益柳,等.小区自助超市库存管理系统的设计与实现[J].无线互联科技,2020,17(21):35-36.
[13] 瞿中,宋琦,刘玲慧,等. 软件工程[M].北京:人民邮电出版社, 2020:409.
[14] 查燕.软件测试的策略和方法[J].信息与电脑(理论版),2021,33(10):67-69.
[15] 张凤霞.大数据背景下软件测试研究[J].电子技术与软件工程,2021:38-39.

致 谢

时间如白驹过隙转瞬即逝,转眼间,四年的本科生学习即将结束,这段时间的校园生活充满了温暖和快乐,感谢家里人的支持、老师们的细心指导和同学们的热情伴随我度过了这段充实的本科生时光。
首先,我要感谢我的导师。我的论文是在老师的悉心指导下完成的。从最初的论文选题、构思到后来的写作,老师都给予了我细心指导。在我初稿完成之后,老师又抽出空来对我的论文认真的批改,提出许多中肯的指导意见,使我在研究和写作过程中比较的顺利。借此机会,我谨向老师致以深深地谢意。
其次,我还要感谢任教老师,正是因为有了他们严格、无私、高质量的教导,我才能在这几年的学习过程中获得专业知识,然后为论文的写作打下了扎实的理论基础;我还要感谢这四年来与我一同学习与生活的本科生同学们以及我的室友们。衷心地感谢他们在学习和生活中给予我的鼓励和帮助,愿友谊长存!
在此还要感谢父母在我求学生涯中给予我无微不至的关怀和照顾,是他们的理解与支持让我能够在学校专心完成我的学业。同时,还要感谢同学们四年来的包容和帮助,是他们让我的生活每天都充满激情,生活充实而有意义。最后,我向母校老师们再次表示衷心的感谢和美好的祝福,感谢你们的辛勤栽培,祝老师们幸福健康!

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值