基于Python的景点随身电子导游App的设计与实现_第1页
基于Python的景点随身电子导游App的设计与实现_第2页
基于Python的景点随身电子导游App的设计与实现_第3页
基于Python的景点随身电子导游App的设计与实现_第4页
基于Python的景点随身电子导游App的设计与实现_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要到了21世纪以后,随着经济社会的快速发展,居民收入水平稳步增长,旅游业也迎来了一个迅猛发展的周期。目前,每个国家都参加到了对旅游业的投入,旅游业的发展对各个国家的发展起到极其重要的作用。目前大多数旅游景点采用的都是传统的人工导游方式,费时费力,随着信息技术的广泛普及,电子导游正在逐渐取代人工导游。基于此类现状,设计实现了一个基于Python的景点随身电子导游App,此App的实现,会让游客具备更多自主性,这对现代游客来说是异常重要的。

本系统主要是采用Python语言开发,以MySQL数据库作为媒介,采用B/S模式、Vue框架以及Spring框架等技术开发,实现了注册登录管理、景点信息管理、景点分类管理、新闻资讯管理、用户管理、景点推荐管理、景点导航管理等功能。通过大量的测试用例对系统功能进行测试,系统功能完善且运行良好,系统界面友好美观,有着较大的客户群体和应用前景,并且具有较高的实用价值。关键词:MySQL数据库;Python语言;电子导游

ABSTRACTAfterthe21stcentury,withtherapiddevelopmentoftheeconomyandsociety,theincomelevelofresidentshassteadilyincreased,andthetourismindustryhasalsousheredinarapidcycle.Atpresent,everycountryhasparticipatedintheinvestmentinthetourismindustry,andthedevelopmentofthetourismindustryplaysanextremelyimportantroleinthedevelopmentofeachcountry.Atpresent,mosttouristattractionsusetraditionalmanualtourguides,whicharetime-consumingandlabor-intensive.Withthewidespreadpopularityofinformationtechnology,electronictourguidesaregraduallyreplacingmanualtourguides.Basedonthissituation,aPythonbasedelectronictourguideappforscenicspotshasbeendesignedandimplemented.Theimplementationofthisappwillgivetouristsmoreautonomy,whichisextremelyimportantformoderntourists.ThissystemismainlydevelopedbyusingPythonlanguage,MySQLdatabaseasthemedia,B/Smode,VUEframeworkandSpringframeworketc,itrealizesthefunctionsofregistration,information,classification,newsinformation,usermanagement,recommendation,navigationandsoon.Throughalargenumberoftestcases,thefunctionofthesystemistested,andthesysteminterfaceisfriendlyandbeautiful.Ithasalargecustomergroupandapplicationprospects,andhashighpracticalvalue.Keywords:MySQLdatabase;Pythonlanguage;Electronictourguide

目录23702第1章绪论 178931.1研究目的和意义 117521.2国内外研究现状 1257271.3论文组织架构 225767第2章相关理论和技术 3190132.1Python简介 348222.2MySQL特点 325172.3B/S模式 315350第3章系统分析 511923.1可行性分析 5245803.1.1技术可行性 5300933.1.2经济可行性 598053.1.3操作可行性 5182833.1.4法律可行性 5296043.2需求分析 58143.2.1功能需求分析 638743.2.2非功能需求分析 75626第4章系统设计 8128074.1功能模块设计 8312554.2数据库概念设计 88794.3数据库物理设计 1024637第5章系统实现 14181765.1实现环境 1492465.2注册登录 14321905.3用户管理 20282585.4景点推荐管理 22293385.5景点信息管理 25142005.6景点分类管理 26144675.7新闻资讯管理 30148145.8景点导航管理 323590第6章系统测试 3661056.1测试步骤 36314076.2测试用例 36224466.2.1登录测试用例 36237676.2.2用户管理测试用例 37130196.2.3景点信息测试用例 3747386.2.4景点导航测试用例 38224996.2.5景点分类测试用例 38323706.3测试结论 3931652结论 4029345参考文献 4115965致谢 42第1章绪论1.1研究目的和意义到了21世纪以来,旅游业到来了一个猛烈上涨的周期。这个时间段,任何国家都参与进入对旅游业的投入,因为相对比较工业生产,旅游业不只是能带动周围地区经济发展、解决了就业的问题,而且在这个能源耗费和环境控制这两方面具有非常大的优势,旅游业的发展对各个国家的经济起到及其重要的作用。根据电子导游市场运作情况可以看出,电子导游正在逐渐取代人工导游。基于此类现状,设计实现一个基于Python的景点随身电子导游App,此App的实现,这让很多游客具有一定自主性,对于现代旅客是非常重要的。1.2国内外研究现状现在,我国距国外的电子导游研究还有较大差距,比如国外理论方面研究成果有显著里程碑作用的当属MichaelKenteris等人(2011)发布一份关于电子导游的调研报告,在解析了解目前具备广泛影响电子导游产品的基础上分析出了这方面客户使用时所不便利的漏洞并对此作出针对性的优化方案,而且他们还对电子导游信息库做出革新,那就是用信息推送技术对导游信息库进行更新。这一举措对国外电子导游理论方面研究具有巨大建树,使其相较于之前主要对游客进行调查分析和学习有关科研专家建议的单一方法相比更加成熟完善,它的研究重点更注重游客需求以及电子导游的实用性。在技术方向上的研究国外更是获得了巨大的研究成果。最近几年,在人工智能的影响下,虽说我国对电子导游App的研发与观察比外国晚了很多,但是很久以来我们国家的研究成果也是很丰盛的。庄立汉是上海交通大学的研究生,2020年在他的工程硕士学位论文智慧旅游系统设计与实现中对智慧旅游的概念进行了全面的分析和界定,并且对云计算、推荐系统和智能终端应用等技术做了相当多的讨论,他的论文不只是加深了基本理论相对智慧旅游来说,为后面的研究提供了借鉴基础REF_Ref14949\r\h[1]。来自电子科技大学的研究生张顺亮,2020年在他的硕士学位论文智慧旅游系统的设计与实现里着重表达了后台为用户提供旅游信息,用户的交流和贸易渠道等。为游客系统的提供吃、住、行等旅游的详细信息和其他旅游的相关咨询,提供给用户旅游时的各种服务需要,更是从用户体验这一方向上,更是分析了智慧旅游的发展史和未来发展趋势,他的内容更多是对系统的设计和实现的研究探讨,同时也有很大意义对于理论这方面的研究REF_Ref18016\r\h[2]。看了国内研究现状,国内研究明显是在电子导游的实现技术上下了功夫,推动电子导游在导游服务领域变得更方便适用性更高。1.3论文组织架构本文的结构安排如下:第一章:绪论。本章节主要对论文的研究目的和意义和国内外有关的研究现状还有论文结果安排的介绍。第二章:本章主要介绍系统程序开发环境和技术工具。第三章:系统分析。本章主要针对论文的可行性和需求展开分析。第四章:系统设计。本章主要针对系统的数据库设计以及功能模块的设计展开介绍。第五章:系统实现。本章对系统的 各个功能模 块进行界面设计和编码实现。第六章:系统测试。本章节针对主要功能模块进行完整的测试,然后 将测试结果展示出来。第2章相关理论和技术2.1Python简介Python是荷兰的数学计算机科学研究所研究出来的,在GuidovanRossum发展到八十年代末和九十年代初期的时候。这个Python其本身也是根据其它语言变化形成的,里面更是有ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unixshell还有别的脚本语言。例如Perl语言,Python源代码是遵循GPL(GNUGeneralPublicLicense)协定。这里Python是通过核心开发团队在维修护理,GuidovanRossum是有一定的作用,指示它的进程。Python2.7被确立是最后一个Python2.x版本,到现在为止它的版本是Python3.8+。Python的官方版是CPython,经过C语言表现出来的,广泛的应用。CPython会把源文件变成Pyc字节码文件,在Python虚拟机上面进行运行。PyPy就是Python的Python实现版本,它的原理是PyPy运行在CPython(或者其它实现)的上面,然后用户程序运行在PyPy上。2.2MySQL特点MySQL是Oracle公司所有的关系数据库管理系统、是瑞典MySQLAB公司开发的关系型数据库中最受欢迎的一个。它应用范围很广适用性高,很多操作系统它都支持,比如苹果旗下的MacOS、微软的SQLServer等。其主要功能之一是为数据存储提供空间,数据处理是其优先事项的核心。一般来说,数据库不是和数据存储直接相对接的,是作为完整的表/索引被提供给基础选项。MySQL数据库是客户端和服务端的模型,这是通过请求客户用ID账号和对应的密码连接服务器来完成的。连接成功后,可以进行相应的数据库操作包括增加、删删、修改、查询等。MySQL在此过程中使用了IO复用和可扩展连接池的使用为竞争激烈的网络贡献了高并发的经典模型。 2.3B/S模式客户端应用程序是我们的系统中固定的模块,让用户能够直接与操作系统的数据进行交互。例如,SERVERMANAGERS管理一个用户信息系统数据库,它有一个关键性的特点:当在同一时间点有多个客户端对服务器上的同一个资源进行访问时,就会出现瓶颈,在这里共同资源尽可能的被服务器有序的管理以供用户使用,用户拥有广泛的访问权。中间组织者在应用程序和数据库的交互过程中,可以非常良好的状态连接到服务器管理器和客户端的应用程序。在论文里,提到的B/S模型是全新的MIS系统平台,一个凭借着网络关系并且同用户层叠加的管理平台形成的。根据理论这个角度来说,B/S模型它是基本的三层系统管理平台。这其中,所说的B/S模型是单一的服务器管理层,鉴于是一个或多个服务器,又或者是服务器和应用程序的结合,在三层系统管理平台传递信息,建立在用户和服务器上。三层系统管理平台的第一层是用户连接到WEB的接口节点,每天运行的应用程序被嵌入到浏览器中。使用的浏览器,HTML文件会把单调的代码变成可以看的见的色彩鲜艳的网页。这个时候,平常的生活中所见到的网页不仅仅是信息的显示,还有很多通过网页将许多关键性的重要信息进行交流融汇和在线沟通等功能,所以这包含着以内部形式向服务器发送信息。第二层服务器是在用户前一层的行为做出反应,通过公开作为用户想要期望的结果的一系列的WEB之前的代码,但是生成的新的WEB代码自动地发送,用户在使用的浏览器中,方便快捷的交互所需要的信息是必要的。也就是说,当用户第一次请求访问数据库时,网络服务器就会处理数据库以满足用户的需求,里面还有非常复杂的技术。第三层是数据库服务器,其管理过程类似于上面的B/S模型,基于并行任务协调。

第3章系统分析3.1可行性分析3.1.1技术可行性从技术可行性方面就是对于使用的平台和框架,以及使用的设计模式,开发系统时使用的技术,都在基础介绍那里进行了有关说明并对此做出了进一步的具有针对性分析。这次的开发是基于Python的景点随身电子导游App开发,所使用的语言是Python,在开发过程中主要基于SSM框架,还有整个开发思路采用MVC设计模式,弹性管理代码,Idea是现今做得最好的一款多语言集成开发环境,同时大多数与之相关的开发工具都是免费的。3.1.2经济可行性经济可行性主要是指发展水平与以往的发展预算相符。所有的开发过程的支出都会有明确的文件记录,并符合此次开发过程的具体要求。本系统建设完成后,为景区开发的景点随身电子导游系统具有较高的经济价值,前景广阔。在开发系统之前,开发系统也考虑到了这一点。综上所述,认为设计和开发这个景点电子导游应用在经济上是可以执行的。3.1.3操作可行性从操作可行性的角度分析,在系统交付到了使用人员之后,为了让系统可以看起来简洁明了,使系统容易操作,大多数功能都可以用一些代表性的设计图案来表达,同时要做到数据输入设计也要方便简洁,使之便于使用不易产生歧义,所以要将重点放在系统的效率上,保证系统在设计方面的简洁度,在这一过程中要注意管理不同等级用户的使用权限。综上所述,能够说明从操作可行性方面来看此次开发有很高的可行性。3.1.4法律可行性1.开发过程全部由自己独立完成,原创作品,产权归自己所有,不参与承担相应法律责任;2.开发中使用的所有技术资料均合法获得,不涉及偷用、擅用;3.研发开发过程中没有抄袭任何一个网站,根本不会有侵权问题。3.2需求分析系统的功能需求分析能够进一步了解接下来在软件功能需求的实现过程中,所需要实现的功能和不需要实现的功能。好的分析可以帮助避开或更早提出初期错的方面,随后将软件生产率提上去,开发成本降下来,软件质量也要涨高。3.2.1功能需求分析旅游业的发展对于绝大多数国家的经济发展都起到了异常重要的作用。本系统从用户角度出发完成了用户的注册登录、查看景点信息、景点分类、新闻资讯、用户管理、景点推荐、景点导航等功能。系统的用户用例图如图3.1所示:图3.1用户用例图系统的管理员用例图如图3.2所示:图3.2管理员用例图3.2.2非功能需求分析本论文所开发的景点随身电子导游是基于Python开发的App,这一电子产品的设计和实现是一个在质量上和用户存储上相关的基本信息基础上,以确保证系统的数据安全,系统的设计和开发的过程中,专门为用户识别和衡量真正控制模块访问权限的用户识别体系。该系统有其相应的授权,根据用户的身份信息,并确保用户只能在授权范围内并在授权范围内只能调阅数据。此设计的亮点主要是包括用户权限控制机制,有效的保证了系统数据的安全性。用户在身份比对这一关卡通过后才能够进行本人实名身份所拥有的相对权限操作,同样的如果身份比对不过关,系统为了保护用户安全就会自动停止该用户的访问行为。

第4章系统设计4.1功能模块设计本系统是基于Python的景点随身电子导游App,本系统操作系统为Windows系统、后端技术为Python语言、SpringBoot框架。前端技术:Android、Vue。数据库:MySQL。数据库工具:Navicat、开发工具:Idea、AndroidStudio。服务器:Tomcat。该系统应完成的主要功能有注册登录、景点信息、景点分类、新闻资讯、用户管理、景点推荐、景点导航。系统的功能模块如图4.1所示:图4.1系统功能模块图4.2数据库概念设计1.管理员实体图图4.2管理员实体图2.用户实体图图4.3用户实体图景点实体图图4.4景点实体图新闻资讯实体图图4.5新闻资讯实体图系统ER图图4.6系统ER图4.3数据库物理设计景点随身电子导游系统具体表如下:1.新闻资讯表“新闻资讯表”用来记录资讯的主要内容,新闻资讯结构如表4.1所示。表4.1新闻资讯表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPtitlevarchar200标题introductionlongtext4294967295简介picturelongtext4294967295图片contentlongtext4294967295内容2.景点信息表“景点信息表”记录景点的所有信息,景点信息结构如表4.2所示。表4.2景点信息表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPjingdianmingchengvarchar200景点名称jingdianfenleivarchar200景点分类jingdiantupianlongtext4294967295景点图片jingdiandengjivarchar200景点等级kaifangshijianvarchar200开放时间jingdiandizhivarchar200景点地址fuwudianhuavarchar200服务电话yiqingtixingvarchar200新闻资讯tixingxiangqinglongtext4294967295提醒详情jingdianxiangqinglongtext4294967295景点详情clicktimedatetime最近点击时间clicknumint点击次数03.景点分类表“景点分类表”记录景点信息的主要内容,景点分类结构如表4.3所示。表4.3景点分类表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPjingdianfenleivarchar200景点分类4.配置文件表“配置文件表”记录配置的主要参数,配置文件结构如表4.4所示。表4.4配置文件表字段名称类型长度字段说明主键默认值idbigint主键主键namevarchar100配置参数名称valuevarchar100配置参数值5.用户表“用户表”记录用户的主要信息,用户表结构如表4.5所示。表4.5用户表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPyonghuzhanghaovarchar200用户账号mimavarchar200密码yonghuxingmingvarchar200用户姓名xingbievarchar200性别nianlingvarchar200年龄youxiangvarchar200邮箱shoujihaovarchar200手机号shenfenzhengvarchar200身份证touxianglongtext4294967295头像管理员表“管理员表”记录管理员的主要信息,管理员表结构如表4.6所示。表4.6管理员表字段名称类型长度字段说明主键默认值idbigint主键主键usernamevarchar100用户名passwordvarchar100密码rolevarchar100角色管理员addtimetimestamp新增时间CURRENT_TIMESTAMP7.景点推荐表“景点推荐表”推荐景点的主要信息,景点推荐表结构如表4.7所示。表4.7景点推荐表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPuseridbigint用户idtablenamevarchar200表名namevarchar200名称picturelongtext4294967295图片inteltypevarchar200推荐类型remarkvarchar200备注

第5章系统实现5.1实现环境开发语言:Python框架:FlaskPython版本:Python3.7.7数据库:MySQL5.7(一定要5.7版本)数据库工具:Navicat11开发软件:PyCharm浏览器:谷歌浏览器5.2注册登录用户进行登录操作时,就是需要进行一个账号密码的填写,随后点“登录”即可。如果没有填写用户名和密码的话,系统即刻提醒用户填写用户名还有密码。客户登录上去的页面就是如图5.1所示;登录到后台管理系统这一时间(管理员登录),填写正确的用户名和密码,页面就会跳转到系统主页。图5.1注册登录界面实现该功能的源代码如下:@main_bp.route("/pythond6um5/yonghu/register",methods=['POST'])defpythond6um5_yonghu_register():ifrequest.method=='POST':msg={'code':normal_code,'message':'success','data':[{}]}req_dict=session.get("req_dict")error=yonghu.createbyreq(yonghu,yonghu,req_dict)iferror!=None:msg['code']=crud_error_codemsg['msg']="注册用户已存在"returnjsonify(msg)管理员在登录界面,如图5.2,登陆界面中输入用户名和密码并选择登录角色后,会直接跳转到服务平台首页,管理员完成登录界面如图5.3所示。图5.2管理员登录界面图5.3管理员完成登录界面使用该功能的源代码如下:#coding:utf-8#author:ilaimportclick,py_compile,osfromcparserimportConfigParserfromconfigsimportconfigsfromutils.mysqlinitimportCreate_Mysqlfromapiimportcreate_appfromapi.extsimportdbfromapi.models.user_modelimport*fromapi.models.config_modelimport*fromapi.models.brush_modelimport*@click.group()defsub():pass@mand()@click.option("-v",default=0.1,type=float)defverr(v):#VERSION=0.1click.echo("pysubsystemversion:{}".format(v))@mand()defrun():app=create_app(configs)app.debug=configs['defaultConfig'].DEBUGapp.run(host=configs['defaultConfig'].HOST,port=configs['defaultConfig'].PORT,threaded=configs['defaultConfig'].threaded,processes=configs['defaultConfig'].processes)@mand()defcreate_all():app=create_app(configs)withapp.app_context():print("creat_all")db.create_all()@mand()@click.option("--ini",type=str)definitsql(ini):cp=ConfigParser()cp.read(ini)sqltype=cp.get("sql","type")database=cp.get("sql","db")ifsqltype=='mysql':cm=Create_Mysql(ini)cm.create_db("CREATEDATABASEIFNOTEXISTS`{}`/*!40100DEFAULTCHARACTERSETutf8*/;".format(database))withopen("./db/mysql.sql",encoding="utf8")asf:createsql=f.read()createsql="DROPTABLE"+createsql.split('DROPTABLE',1)[-1]cm.create_tables(createsql.split(';')[:-1])cm.conn_close()elifsqltype=='mssql':cm=Create_Mysql(ini)cm.create_db("CREATEDATABASEIFNOTEXISTS`{}`DEFAULTCHARACTERSETutf8COLLATEutf8_general_ci;".format(database))withopen("./db/mssql.sql",encoding="utf8")asf:createsql=f.read()createsql="DROPTABLE"+createsql.split('DROPTABLE',1)[-1]cm.create_tables(createsql.split(';')[:-1])cm.conn_close()else:print('请修改当前面目录下的config.ini文件')@mand()@click.option("--py_path",type=str)defcompile(py_path):print("py_path====>",py_path)py_pile(py_path)@mand()defreplace_admin():filePath=os.path.join(os.getcwd(),"api/templates/front/index.html")ifos.path.isfile(filePath):print(filePath)withopen(filePath,"r",encoding="utf-8")asf:datas=f.read()datas=datas.replace('baseurl+"admin/dist/index.html#"','"http://localhost:8080/admin"')datas=datas.replace('baseurl+"admin/dist/index.html#/login"','"http://localhost:8080/admin"')withopen(filePath,"w",encoding="utf-8")asf:f.write(datas)用户登录进入平台后,点击“我的”进入用户信息页面,可以修改用户信息、密码、性别、年龄、邮箱、手机号等,用户信息界面如图5.4所示。图5.4用户信息界面该功能实现的源代码如下:@main_bp.route("/pythond6um5/yonghu/update",methods=['POST'])

defpythond6um5_yonghu_update():

'''

'''

ifrequest.method=='POST':

msg={"code":normal_code,"msg":"success","data":{}}

req_dict=session.get("req_dict")

ifreq_dict.get("mima")and"mima"notinyonghu.__table__.columns:

delreq_dict["mima"]

ifreq_dict.get("password")and"password"notinyonghu.__table__.columns:

delreq_dict["password"]

try:

delreq_dict["clicknum"]

except:

pass

error=yonghu.updatebyparams(yonghu,yonghu,req_dict)

iferror!=None:

msg['code']=crud_error_code

msg['msg']=error

returnjsonify(msg)

@main_bp.route("/pythond6um5/yonghu/delete",methods=['POST'])

defpythond6um5_yonghu_delete():

'''

'''

ifrequest.method=='POST':

msg={"code":normal_code,"msg":"success","data":{}}

req_dict=session.get("req_dict")

error=yonghu.delete(

yonghu,

req_dict

)

iferror!=None:

msg['code']=crud_error_code

msg['msg']=error

returnjsonify(msg)5.3用户管理管理员在登录系统后,点击“用户管理”按钮点击用户,可以对所有用户进行新增、删除、修改、查询的操作,界面如图5.5所示。图5.5用户管理界面实现该功能的代码如下:@main_bp.route("/pythond6um5/yonghu/update",methods=['POST'])

defpythond6um5_yonghu_update():

'''

'''

ifrequest.method=='POST':

msg={"code":normal_code,"msg":"success","data":{}}

req_dict=session.get("req_dict")

ifreq_dict.get("mima")and"mima"notinyonghu.__table__.columns:

delreq_dict["mima"]

ifreq_dict.get("password")and"password"notinyonghu.__table__.columns:

delreq_dict["password"]

try:

delreq_dict["clicknum"]

except:

pass

error=yonghu.updatebyparams(yonghu,yonghu,req_dict)

iferror!=None:

msg['code']=crud_error_code

msg['msg']=error

returnjsonify(msg)@main_bp.route("/pythond6um5/yonghu/delete",methods=['POST'])

defpythond6um5_yonghu_delete():

'''

'''

ifrequest.method=='POST':

msg={"code":normal_code,"msg":"success","data":{}}

req_dict=session.get("req_dict")

error=yonghu.delete(

yonghu,

req_dict

)

iferror!=None:

msg['code']=crud_error_code

msg['msg']=error

returnjsonify(msg)5.4景点推荐管理用户进入到系统中,点击景点信息,进入到景点信息界面,可以查看到推荐的景点,具体有景点分类以及景点名称,如图5.6所示;管理员进入到系统中,点击景点推荐,进入景点推荐界面,可以对推荐的景点进行修改,如图5.7所示。图5.6用户景点推荐界面图5.7管理员景点推荐界面实现该功能源代码如下:@main_bp.route("/pythond6um5/jingdianfenlei/autoSort2",methods=['GET'])defpythond6um5_jingdianfenlei_autoSort2():ifrequest.method=='GET':leixing=set()req_dict=session.get("req_dict")userinfo=session.get("params")sql="selectinteltypefromstoreupwhereuserid="+userinfo.get("id")+"andtablename='jingdianfenlei'orderbyaddtimedesc"try:data=db.session.execute(sql)rows=data.fetchall()forrowinrows:foriteminrow:ifitem!=None:leixing.add(item)except:leixing=set()L=[]sql="select*fromjingdianfenleiwhere$intelRecomColumnin('%s"%("','").join(leixing)+"')unionallselect*fromjingdianfenleiwhere$intelRecomColumnnotin('%s"%("','").join(leixing)+"')"data=db.session.execute(sql)data_dict=[dict(zip(result.keys(),result))forresultindata.fetchall()]foronline_dictindata_dict:forkeyinonline_dict:if'datetime.datetime'instr(type(online_dict[key])):online_dict[key]=online_dict[key].strftime("%Y-%m-%d%H:%M:%S")else:passappend(online_dict)returnjsonify({"code":0,"msg":'',"data":{"currPage":1,"totalPage":1,"total":1,"pageSize":5,"list":L[0:int(req_dict['limit'])]}})5.5景点信息管理通过管理员身份登录到平台中,单击景点信息,可以进行信息的完善,增加信息或者是删除无效的信息,管理员景点信息界面如图5.8所示,用户登录到系统,可以查看景点信息,用户景点信息界面如图5.9所示。图5.8管理员景点信息界面图5.9用户景点信息界面实现该功能的源代码如下:@main_bp.route("/pythond6um5/yonghu/detail/<id_>",methods=['GET'])defpythond6um5_yonghu_detail(id_):''''''ifrequest.method=='GET':msg={"code":normal_code,"msg":"success","data":{}}data=yonghu.getbyid(yonghu,yonghu,int(id_))iflen(data)>0:msg['data']=data[0]#浏览点击次数try:__browseClick__=yonghu.__browseClick__except:__browseClick__=Noneif__browseClick__and"clicknum"inyonghu.__table__.columns:click_dict={"id":int(id_),"clicknum":str(int(data[0].get("clicknum")or0)+1)}ret=yonghu.updatebyparams(yonghu,yonghu,click_dict)ifret!=None:msg['code']=crud_error_codemsg['msg']=retreturnjsonify(msg)5.6景点分类管理通过管理员身份登录到平台中,单击景点分类,进行查询、增加和删除操作,景点分类界面如图5.10所示,景点分类查询界面如图5.11所示,景点分类新增界面如图5.12所示,景点分类删除界面如图5.13所示。图5.10景点分类界面图5.11景点分类查询界面图5.12景点分类新增界面图5.13景点分类删除界面实现该功能的源代码如下: @main_bp.route("/pythond6um5/yonghu/page",methods=['GET'])defpythond6um5_yonghu_page():''''''ifrequest.method=='GET':msg={"code":normal_code,"msg":"success","data":{"currPage":1,"totalPage":1,"total":1,"pageSize":10,"list":[]}}req_dict=session.get("req_dict")userinfo=session.get("params")try:__hasMessage__=yonghu.__hasMessage__except:__hasMessage__=Noneif__hasMessage__and__hasMessage__!="否":tablename=session.get("tablename")iftablename!="users"andsession.get("params")!=Noneandyonghu!='chat':req_dict["userid"]=session.get("params").get("id")tablename=session.get("tablename")iftablename=="users":try:passexcept:passelse:mapping_str_to_object={}formodelinBase_model._decl_class_registry.values():ifhasattr(model,'__tablename__'):mapping_str_to_object[model.__tablename__]=modeltry:__isAdmin__=mapping_str_to_object[tablename].__isAdmin__except:__isAdmin__=Noneif__isAdmin__!="是"andsession.get("params")!=None:req_dict["userid"]=session.get("params").get("id")else:try:delreq_dict["userid"]except:passclause_args=[]or_clauses=or_(*clause_args)msg['data']['list'],msg['data']['currPage'],msg['data']['totalPage'],msg['data']['total'],\msg['data']['pageSize']=yonghu.page(yonghu,yonghu,req_dict,or_clauses)returnjsonify(msg)5.7新闻资讯管理用户进入系统之后,点击新闻资讯,进入到新闻资讯界面。有新闻标题,点击新闻标题可以进入新闻页面查看具体内容,如图5.14所示。图5.14用户新闻资讯界面实现该功能的源代码如下:@main_bp.route("/pythond6um5/yonghu/thumbsup/<id_>",methods=['GET'])defpythond6um5_yonghu_thumbsup(id_):''''''ifrequest.method=='GET':msg={"code":normal_code,"msg":"success","data":{}}req_dict=session.get("req_dict")id_=int(id_)type_=int(req_dict.get("type",0))rets=yonghu.getbyid(yonghu,yonghu,id_)update_dict={"id":id_,}iftype_==1:#赞update_dict["thumbsupnum"]=int(rets[0].get('thumbsupnum'))+1eliftype_==2:#踩update_dict["crazilynum"]=int(rets[0].get('crazilynum'))+1error=yonghu.updatebyparams(yonghu,yonghu,update_dict)iferror!=None:msg['code']=crud_error_codemsg['msg']=errorreturnjsonify(msg)管理员进入系统之后,点击新闻资讯,进入到新闻资讯界面。可以对各个景点新闻资讯进行新增、删除、修改、查询的操作,如图5.15所示。图5.15管理员新闻资讯界面实现该功能的源代码如下:@main_bp.route("/pythond6um5/yonghu/add",methods=['POST'])

defpythond6um5_yonghu_add():

'''

'''

ifrequest.method=='POST':

msg={"code":normal_code,"msg":"success","data":{}}

req_dict=session.get("req_dict")

try:

__foreEndListAuth__=yonghu.__foreEndListAuth__

except:

__foreEndListAuth__=None

if__foreEndListAuth__and__foreEndListAuth__!="否":

tablename=session.get("tablename")

iftablename!="users":

req_dict['userid']=session.get("params").get("id")

error=yonghu.createbyreq(yonghu,yonghu,req_dict)

iferror!=None:

msg['code']=crud_error_code

msg['msg']=error

returnjsonify(msg)5.8景点导航管理用户登录进入平台后,点击地图,进入地图界面,可以选择想去的景点进行导航,如图5.16所示。图5.16景点导航界面实现该功能的源代码如下:@main_bp.route("/pythond6um5/cal/<tableName>/<columnName>",methods=['GET'])

defpythond6um5_cal(tableName,columnName):

'''

计算规则接口

'''

ifrequest.method=='GET':

msg={"code":normal_code,'data':[]}

mapping_str_to_object={}

formodelinBase_model._decl_class_registry.values():

ifhasattr(model,'__tablename__'):

mapping_str_to_object[model.__tablename__]=model

data=mapping_str_to_object[tableName].getcomputedbycolumn(

mapping_str_to_object[tableName],

mapping_str_to_object[tableName],

columnName

)

ifdata:

msg['data']={

"sum":'%.05f'%float(data[0][0]),

"max":'%.05f'%float(data[0][1]),

"min":'%.05f'%float(data[0][2]),

"avg":'%.05f'%float(data[0][3]),

}

returnjsonify(msg)@main_bp.route("/pythond6um5/follow/<tableName>/<columnName>/<level>/<parent>",methods=['GET'])

defpythond6um5_follow_level(tableName,columnName,level,parent):

'''

'''

ifrequest.method=='GET':

msg={"code":normal_code,'data':[]}

#组合查询参数

params={

"level":level,

"parent":parent

}

mapping_str_to_object={}

formodelinBase_model._decl_class_registry.values():

ifhasattr(model,'__tablename__'):

mapping_str_to_object[model.__tablename__]=model

data=mapping_str_to_object[tableName].getbyparams(

mapping_str_to_object[tableName],

mapping_str_to_object[tableName],

params

)

#只需要此列的数据

foriindata:

msg['data'].append(i.get(columnName))

returnjsonify(msg)

@main_bp.route("/pythond6um5/follow/<tableName>/<columnName>",methods=['GET'])

defpythond6um5_follow(tableName,columnName):

ifrequest.method=='GET':

msg={"code":normal_code,'data':[]}

#组合查询参数

params=session.get('req_dict')

columnValue=params.get("columnValue")

params={columnName:columnValue}

mapping_str_to_object={}

formodelinBase_model._decl_class_registry.values():

ifhasattr(model,'__tablename__'):

mapping_str_to_object[model.__tablename__]=model

data=mapping_str_to_object[tableName].getbyparams(

mapping_str_to_object[tableName],

mapping_str_to_object[tableName],

params

)

msg['data']=data[0]

returnjsonify(msg)

第6章系统测试在系统测试阶段为了确保系统的稳定运行,开发系统中在系统的各项功能都完备之后进行了有关说明和针对性的优化修复。确保在产品正式被用户使用之前需要做出在数量和质量上都非常客观的系统测试。关于测试方法,经过一系列的比对研究,测试系统最终选择了黑盒测试,其主要特点是能够测试出系统整体功能,具有完整性高、准确率高等优势特点。测试时主要从用户的观点出发进行测试,所得到的成果和展望的情况皆是用户使用中所有利的条件。在黑盒测试过程中测试系统主要采取用错位分析法和边界值分析法这两种方法。因为系统发生错误大多在输入或输出值的部分而非内部,因此边界值分析法包括在确定好输入和输出范围之后选择测试系统的极限值,这样可以提高系统的可靠性和稳定性。6.1测试步骤关于测试步骤,综合可实施性、测试结果的准确性、稳定性等多种因素考虑,测试系统做出了以下规划:1.模块测试(寻找编码和设计错误)。2.程序测试(发现设计错误)。3.验收(规范错误验收方案要求)。6.2测试用例6.2.1登录测试用例用户端根据用户要求进行的设计,用到了黑盒测试的方法,由于篇幅的问题,这里只给了有代表性的一些测试用例的表,如表6.1所示。表6.1登录测试用例表测试编号测试目的操作步骤预期结果实际结果001登录测试输入正确的用户名和密码登录成功登录成功002登录测试输入错误的用户名登录失败登录失败003登录测试输入错误的的密码登录失败登录失败6.2.2用户管理测试用例管理端在运行时要满足浏览器的运行需求,比如添加用户信息测试、修改用户信息测试、删除用户信息测试等。本节根据管理端各模块进行测试,因考虑到本文篇幅有限,这里代表性的部分测试用例,如表6.2所示。表6.2用户管理测试用例表测试编号测试目的操作步骤预期结果实际结果001添加用户信息测试在添加页面输入用户信息,点击确认按钮添加成功添加成功002修改用户信息测试在修改页面修改用户信息,点击确认按钮修改成功修改成功003删除用户信息测试在管理用户信息页面,点击某一试卷的删除按钮删除成功删除成功004查询用户信息测试在用户信息管理页面查询输入框输入要查询的用户名字,点击查询按钮查询成功查询成功6.2.3景点

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论