基于Python的网络票务查询系统的设计与开发毕业论文
2020-03-27 11:25:07
摘 要
随着我国交通行业的持续快速发展,以及带薪休假制度的广泛推广,现在人们出行的频率越来越高,出行方式也日益灵活。选择怎样的出行方式最适合自己,是人们出行前常考虑的问题。因此,人们需要一个快捷且直观的方式来查看并对比可供选择的各种出行方式。本文对票务信息查询系统做的设计以及实现进行了详细的分析与说明,以python为开发工具实现票务信息查询,以及通过Python在爬虫上的优势来获取票务信息。
本文在第一章讨论了票务信息查询系统的现状,第二章对携程网这一国内最大的的在线旅行预订网站的功能进行分析,同时对本系统的需求进行了分析。在第三章主要撰写了系统设计相关问题。第四章对系统实现进行了说明。第五章则是对系统进行测试以及说明测试结果。第六章则是总结与展望本系统的现状与将来发展。
关键词:Python;爬虫;Flask;票务信息查询
Abstract
With the continuous and rapid development of China's transportation industry and the widespread promotion of paid vacation system, people are traveling more and more frequently and in more flexible ways. How to choose the most suitable way to travel is often considered before people travel. Therefore, people need a quick and intuitive way to view and compare various travel options. In this paper, the ticketing information query system for the design and implementation of a detailed analysis and explanation, and development tool for the python implementation ticketing information query, and by the advantage of python on crawler to get ticket information.
In this paper, in the first chapter discusses the ticketing information query system present situation, the second chapter of ctrip, the country's largest online travel booking the functionality of the site were analyzed, and the demand of this system are analyzed at the same time. In the third chapter, the related problems of system design are mainly written. The fourth chapter explains the system implementation. The fifth chapter is to test the system and explain the test results. The sixth chapter summarizes and looks forward to the present situation and future development of the system.
Key Words:Python;web crawler;Flask;Ticketing information inquiry system
目录
摘 要 I
Abstract II
第1章绪论 1
1.1 研究背景 1
1.2 研究目的及意义 1
1.3 研究现状 2
1.4 主要设计内容 2
1.5论文组织结构 2
第2章系统分析 4
2.1 对携程网的主要功能分析 4
2.2 对系统功能需求分析 4
2.3 系统主要功能模块 5
第3章系统设计 8
3.1数据库设计 8
3.2 爬虫信息 10
3.3 web前端页面 11
3.4 服务器后台 14
第4章系统的实现 16
4.1 爬虫部分 16
4.1.1 数据库链接 16
4.1.2 获取城市列表 17
4.1.3 爬虫模块 18
4.2 服务器端 18
4.2.1 注册模块 18
4.2.2 登录模块 19
4.2.3 注销模块 19
4.2.4 搜索模块 19
4.2.5 收藏模块 20
4.2.6 订票模块 20
4.2.7 前端 21
第5章系统测试 22
5.1功能实现测试 22
5.2前端页面显示测试 28
5.3结果分析 31
第6章总结与展望 32
6.1系统总结 32
6.2系统功能的不足 32
6.3未来展望 33
参考文献 35
致 谢 36
绪论
1.1 研究背景
随着我国交通行业的持续快速发展,以及带薪休假制度的广泛推广,现在人们出行的频率越来越高,出行方式也日益灵活。选择怎样的出行方式最适合自己,是人们出行前常考虑的问题。因此,人们需要一个快捷且直观的方式来查看并对比可供选择的各种出行方式。一个能为用户收集根据出发时间和目的地,包括飞机、铁路和客运的各种时刻表,方便用户选择和比较的系统可以为用户出行提供大量有效信息,同时节省了时间,极大提高了效率。
截止至2017年6月,我国网民数量达到7.51亿,互联网普及率达54.3%。[1]截至2017 年 6 月,在网上预订过机票、酒店、火车票或旅游度假产品的网民规模达到 3.34 亿,较 2016 年底增长 3441 万人,增长率为 11.5%。在网上预订火车票、机票、酒店和旅游度假产品的网民分别占比 37.6%,19.1%,20.5% 和 9.3%。[1]这对现代化旅客信息服务提出了新要求:不同的旅行出行方案、到达和出发时间、晚点时分;而且要求能在任何地点任何时间,迅速、简单、全面地向旅客提供这些信息。而网络票务查询系统为解决交通问题带来了新的思路。
图1.1 2016至2017在线旅行预订用户规模及使用率[1]
1.2 研究目的及意义
在目前,我国主要两个能够进行在线查询时刻表以及在线购买车票的网站主要有去哪网和携程网。两个网站都已经发展的比较完善,主要提供汽车、火车、飞机的票务查询与预订,酒店预订,度假产品预订以及酒店预订等服务。
现在国内有3.34亿[1]以上网民通过浏览网页进行时刻表的查询。很多人是由于公务等其它原因出行,并不需要票务信息查询与预定以外的功能。因此我们决定制作一个基于Python的票务信息查询系统。依托Python在制作爬虫上的优势,从不同交通方式的官方网站上获取时刻表和票务信息供用户对比。Flask 基于Werkzeug和Jijia2,有良好的扩展性 [2]。同时Flask的可扩展性可以为之后的功能扩展,以及满足不断变化的用户需求打下良好基础。
1.3 研究现状
采用Python作为主要开发工具,主要原因在于Python 是一门优雅而健壮的编程语言,简洁而易读,它继承了传统编译语言的强大性与通用性,同时也借鉴了简单的脚本和解释语言的易用性。Python应用广泛,在许多领域都有对应的工具和库。Python的标准库和第三方库很强大。从 2005年Django开源,2008年Reddit开源,到2010年Flask开源,Python用作Web开发已经有着十多年的历史。国内的豆瓣,搜狐,国外的Reddit,YouTube,Instagram等公司都选择Python作为Web开发语言。因此没有必要担心Python的可靠性与性能问题,因为他已经接受了时间和大规模用户并发访问的考验[3]。
1.4 主要设计内容
爬取票务信息的爬虫用于构建网站的基础数据,在无直达时推荐用户换乘路线的规划算法。基于上述预期目标,为用户提供一个有别于携程网,去哪网的票务查询以及订票软件,排除了其他非票务功能造成的功能冗余,同时提供机票和火车票的订购。同时提供换乘规划功能,整合过后四票务系统可以让用户通过火车与飞机实现换乘,并同时完成订票。
1.5论文组织结构
本篇论文共分为六个章节,各个章节概述如下:
第一章:绪论。本章首先介绍了票务信息的研究背景及意义,然后对国内网络票务信息查询业务的现状进行了分析,接着对所用技术的的研究现状进行了介绍,其次对本系统的主要设计内容进行了说明,最后对论文的组织结构做了简要的描述。
第二章:系统分析。本章首先对携程网这一国内知名旅行预订网站进行了分析,然后对系统的功能需求进行了分析,接着对系统功能结构进行了划分,最后对介绍了票务信息查询系统开发中所用的技术进行了介绍,主要包括Python语言概述,Flask框架介绍,Bootstrap介绍以及用于爬取票务信息的selenium介绍。
第三章:票务信息系统设计。本章按模块对系统进行了详细设计,确定了每个模块的处理过程。
第四章:票务信息系统的实现。本章首先介绍了爬虫的实现与应用,然后介绍了网站前端页面的实现,最后介绍了网站后台的实现过程。
第五章:票务信息查询系统的测试。本章按模块对系统的各个功能进行了测试,并记录了测试结果。
第六章:工作总结与展望。本章首先对项目的研究内容和成果做了总结,然后对项目的待改善处进行了分析,展望了对网站的后续改进工作。
系统分析
本章着重介绍本系统的需求分析以及系统分析内容
2.1 对携程网的主要功能分析
由于携程网已经是国内最大的在线旅行预订网站,因此,分析携程网的功能对本系统的设计有重要参考意义。携程旅行网于1999年成立,总部设在中国上海,在国内个城市设立分公司,互联网服务覆盖国内个城市,目前员近人,以互联网和传统旅游结合的运作模式,向超过两千万会员提供全方位的旅游服务。[4]
携程网在年的时候建造了世界最大的旅游呼叫中心,坐落于江苏南通,坐席达万个。并且,携程为了更具规模化的运营、为会员提供更多的选择、保障服务的质量、降低运营成本为会员谋取更大的福利,同全球134个国家和地区的28000余家酒店建立了长期稳定的合作关系。[4]
携程网目前向超过1400万会员提供集酒店预订、机票预订、火车票预订、长途汽车票预订、度假预订、商旅管理、特惠商户及旅游资讯在内的全方位旅行服务。携程网主要的经营方向以商旅为主,观光度假游客为辅。酒店及机票的代理费用是其主要的盈利手段。2016年携程、去哪、途牛同城等OTA平台重回线下获客、线下整合旅游资源的趋势更为明显。[5]
2.2 对系统功能需求分析
电子商务是一种依托现代信息技术和网络技术,集金融电子化、管理信息化、商贸信息网络化为一体,旨在实现物流、资金流与信息流和谐统一的新型贸易方式, 是贸易活动全过程的电子化、网络化和数字化。[6]
截至2017年6月,在网上预订过机票、酒店、火车票或旅游度假产品的网民规模达 到3.34亿,较2016年底增长3441万人,增长率为11.5%[1]。因此本系统主要的功能应定位在机票、火车票预订,随着后续发展考虑添加酒店预订等功能。
在票务预订上,不单单只能对用户所搜索的出发地与目的地之间的票务信息作出响应,同时也应该能在不存在直达线路时为用户提供相应的换乘路线供客户选择。提供合理的换乘路线规划,也是本系统的重要功能之一。同时,为了支撑换乘路线规划的数据,应提前将获取的数据存储在数据库,便于服务器查询。为了方便用户,还应该提供订票功能。
2.3 系统主要功能模块
本系统功能主要划分为如下部分。
图2.1 系统功能模块划分
本系统功能主要分为两个部分,爬虫部分和票务信息查询系统。票务信息查询系统部分是本系统的核心部分,信息查询系统从功能上主要划分为两个模块网页前端和服务器后台。本系统的各个模块将在第三章系统设计以及第四章的系统实现做详细的介绍。
2.4主要技术介绍
1. Bootstrap:
Bootstrap 的原生的响应式 CSS 能够自适应于台式机、平板电脑和手机等不同尺寸的屏幕。响应式 Web 设计是一个让用户通过各种尺寸的设备浏览网站获得良好的视觉效果的方法[6]。
Bootstrap已经在Bootstrap的流动布局实例中应用了响应性能,使得用户即使在在不同的屏幕尺寸下进行浏览也能够获得相似的体验。
同时Bootstrap3做出了一项重要的更新,那就是移动设备优先。这是由于Bootstrap 3 的设计目标是移动设备优先,然后才是桌面设备。这实际上是一个非常及时的转变,因为现在越来越多的用户使用移动设备。[6]这也意味着,我们的票务信息查询系统能够在不需要做出大量修改的前提下就能够支持当前流行的移动端访问。
Bootstrap 提供了一个带有网格系统、链接样式、背景的基本结构。
CSS:Bootstrap 自带以下特性:全局的 CSS 设置、定义基本的 HTML 元素样式、可扩展的 class,以及一个先进的网格系统[7]。
同Bootstrap中自带12种jQuery插件,并且扩展了功能,可以给站点添加更多的互动。使得票务信息查询系统的页面中的收藏预订等按钮可以以全新的方式呈现。按钮利用 Bootstrap数据 API(Bootstrap Data API),大部分的插件可以在不编写任何代码的情况被触发。[8]
由于Bootstrap是基于HTML5标准的。其自带的过渡效果(Transition)插件提供了简单的过渡效果。包括具有幻灯片或淡入效果的模态对话框(Modal)、具有淡出效果的标签页(Tab)、具有淡出效果的警告框(Alert)、具有幻灯片效果的轮播板(Carousel)。这些自带的过渡效果可以极大地改善用户的浏览体验。
2.Selenium:
Selenium是Web应用程序的功能和验收测试工具[9]。Selenium就像真正的用户在操作一样,能够直接运行在浏览器中。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上[10]。
3.Python:
Python是一种编程语言,可以让编写者更快地工作,更有效地集成系统[11]。本系统采用Python3环境。Python的设计哲学是优雅、明确、简单。Python有关键字少,结构简单,语法清晰,易读,易维护等优点[12]。Python以包/模块的形式提供了web框架[13],简化了编写应用程序的任务。
4.Flask:
在上文中,我们已经提到了,我们使用flask作为开发框架。除了Python标准库之外,该框架没有依赖关系[11]。该框架提供的服务包括内置HTTP服务器、对单元测试的支持和REST Web服务[14]。虽然在大多数标准中,flask都算是小型框架,但是这并不是意味着他的功能比其他框架少。Flask在设计之初就被设计成了一个可扩展的,它包含着有一个含有基本服务的核心,其他功能则通过扩展插件实现。虽然Flask并不包含类诸如数据库抽象层、表单验证这样的已经可以由其他的库实现的功能模块。但是Flask 可以通过使用扩展或者插件来给应用添加这些功能。flask拥有的大量扩展程序/库,可以完美的实现数据库集成、表单验证等功能。
系统设计
本章主要介绍本系统的详细系统设计,包括数据库设计,爬虫设计,前端设计,后台设计。
3.1数据库设计
根据系统需求分析设计数据库表。在保证需求的前提下尽量提高范式。
表3.1 用户表
属性名称 | 含义 | 数据类型 | 长度 | 说明 | 约束 | |||||
name | 用户名 | varchar | 20 | not null | 主键 | |||||
password | 密码 | varchar | 32 | not null |
表3.2 用户收藏表
属性名称 | 含义 | 数据类型 | 长度 | 说明 | 约束 | |||||
name | 用户名 | varchar | 20 | not null | 外码 | |||||
id | 票务信息id | int | 11 | not null | 外码 |
表3.3 票务信息表
属性名称 | 含义 | 数据类型 | 长度 | 说明 | 约束 | |||||
id | 票务代码 | int | 11 | 自动生成 | 主码 | |||||
fromCity | 出发城市 | varchar | 10 | not null | ||||||
toCity | 到达城市 | varchar | 10 | not null | ||||||
fromTime | 出发时间 | bigint | 20 | not null | ||||||
toTime | 到达时间 | bigint | 20 | not null | ||||||
price | 价格 | int | 11 | |||||||
code | 车次/班次 | varchar | 10 | |||||||
seat | 座位等级 | varchar | 10 | |||||||
fromStation | 出发站 | varchar | 30 | |||||||
toStation | 目的站 | varchar | 30 | |||||||
isFlight | 是否飞机 | int | 11 |
表3.4 城市信息表
属性名称 | 含义 | 数据类型 | 长度 | 说明 | 约束 | |||||
name | 城市名称 | varchar | 20 | not null | 主码 | |||||
flightCode | 飞机城市 | varchar | 10 | not null | ||||||
trainCode | 火车城市 | varchar | 10 | not null |
表3.5 订单信息表
属性名称 | 含义 | 数据类型 | 长度 | 说明 | 约束 | |||||
name | 用户名 | varchar | 20 | not null | 主码 | |||||
realName | 真实姓名 | varchar | 20 | not null | ||||||
idCard | 身份证号 | bigint | 20 | not null | ||||||
tid | 订单编号 | int | 11 | not null | ||||||
id | 票务信息 | int | 11 | not null |
3.2 爬虫信息
本网站票务信息全部由携程网爬取。爬虫主要分为两个模块,火车票模块和机票模块。
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示: