学校编码:10384 分类号 密级 学号:X2013232421 UDC
工 程 硕 士 学 位 论 文
基于分布式数据存储的售票系统的设计与实现
Design and Implementation of Management System for Ticket
Based on Distributed Data Storage
江
乃
深
指 导 教 师 :
吴 清 强 副教授
专 业 名 称 :
软
件
工
程
论文提交日期:
2 0 1 5 年 0 9 月
论文答辩日期:
2 0 1 5 年 1 1 月
学位授予日期: 2 0 1 5 年 1 2 月
指
导
教
师:
答辩委员会主席:
2015
年
9
月
厦门大学博硕士论文摘要库
厦门大学学位论文原创性声明
本人呈交的学位论文是本人在导师指导下,独立完成的研究成果。本人在
论文写作中参考其他个人或集体已经发表的研究成果,均在文中以适当方式
明确标明,并符合法律规范和《厦门大学研究生学术活动规范(试行)》
。
另外,该学位论文为( )课题(组)的
研究成果,获得( )课题(组)经费或实验室的资助,在
( )实验室完成。(请在以上括号内填写课题或课题组负责
人或实验室名称,未有此项声明内容的,可以不作特别声明。
)
声明人(签名):
年 月 日
厦门大学博硕士论文摘要库
厦门大学学位论文著作权使用声明
本人同意厦门大学根据《中华人民共和国学位条例暂行实施办法》等规
定保留和使用此学位论文,并向主管部门或其指定机构送交学位论文(包括
纸质版和电子版)
,允许学位论文进入厦门大学图书馆及其数据库被查阅、借
阅。本人同意厦门大学将学位论文加入全国博士、硕士学位论文共建单位数
据库进行检索,将学位论文的标题和摘要汇编出版,采用影印、缩印或者其
它方式合理复制学位论文。
本学位论文属于:
( )1.经厦门大学保密委员会审查核定的保密学位论文,于 年
月 日解密,解密后适用上述授权。
( )2.不保密,适用上述授权。
(请在以上相应括号内打“√”或填上相应内容。保密学位论文应是已
经厦门大学保密委员会审定过的学位论文,未经厦门大学保密委员会审定的
学位论文均为公开学位论文。此声明栏不填写的,默认为公开学位论文,均
适用上述授权。)
声明人(签名):
年 月 日
厦门大学博硕士论文摘要库
摘要
摘 要
车站售票系统是一个基于分布式数据存储的三层架构的信息管理系统。系统的开发和 应用目的是使售票活动能够在多个不同的售票站点进行,并且能够通过系统查询到所需要 的出行信息。该系统的中心功能是列车座位的查询和票务运营。除了中心功能外,该系统 还需要一些辅助功能。如用户控制管理,基本资料设定,班次管理,座位调度等,这些功 能都是为了实现售票功能而需要预先定义好的。有了这些功能辅助,整个系统才能够正常 的运转。 本文讨论了在数据库系统中对数据进行分散式存储方式下,对售票系统内相关数据进 行有效管理的实现方式。并依据数据分片和读写分离原理,对 MySQL 中的 Replication 技 术原理加以运用和改进,达到了一个在较为复杂网络情况下,对存储于不同物理介质的相 关数据进行有效控制管理和调度的目标。 分布式数据存储的售票系统使用了业界经典的 LAMP 平台模式实现系统功能,并结合 C++ Builder 快速开发编译环境制作了搭载在 Windows 系统的界面客户端;通过 XML 文档, 作为有效的数据传输和共享媒介;通过 HTTP 协议访问的方式,实现了客户端与 Server 的数据业务交互,运行良好。 本文依据软件工程的标准流程,使用 UML 建模语言,主要通过相关用户用例分析,时 序图分析等方法系统性的完成了售票系统的需求分析,系统设计和系统实现。在数据库方 面,通过 DFD,E-R,数据字典等相关方法,完成了数据库的概念抽取和结构设计。文章还 列出了系统中的几个核心功能,如查找座位,售票划位等功能的代码实现,并且有详细的 解读。 关键词:售票系统;LAMP;分布式数据库厦门大学博硕士论文摘要库
Abstract
Abstract
Station ticketing system is a three - level MIS based on distributed data storage. The development and application of the system is to make the ticket activities in a number of different sale sites and can query through the system to the required travel information. The central function of the system is the train seat query and ticketing operations. In addition to the center functions, the system also needs some auxiliary functions. Such as user control management, set basic baise, schedules management, seat management, etc., these functions are to achieve the ticket function and need to be defined in advance. With these functions, the system can work properly.
This dissertation discusses the implementation of distributed storage and management of the relevant data in the distributed database system. Based on the principle of data sharding and reading-writing separate, the Replication technology principle in MySQL is applied and improved, and and the target of effective control and management of the relevant data stored in different physical media is achieved.
Based on Distributed data storage of Ticket Management uses the industry's classic LAMP platform mode to realize the function, and combined with the C++ Builder rapid development of the Windows OS; the XML file, as the effective data transmission and sharing media, through the HTTP protocol, the client and the server data business interaction, running well.
According to the standard process of software engineering, using user case and sequence chart form UML, this paper mainly analyzes the requirements, system design, system design and implementation of the system.In the database, through the DFD, E-R, data dictionary and other related methods, the database of the concept of the concept extraction and structural design.Several core functions of the system, such as the search for seats and ticket sales are also detailed analysis.
目录 I
目 录
第
1
章
引言
... 1
1.1 研究的背景及意义 ... 1 1.2 研究现状和问题 ... 1 1.3 研究内容以及文章结构 ... 2第 2 章 关键技术综述
... 3
2.1 LAMP平台... 3 2.2 XML ... 4 2.3 C++ Builder ... 4 2.4 分布式数据库架构 ... 4 2.5 本章小结 ... 6第 3 章 系统需求分析
... 7
3.1 系统主要功能概述 ... 7 3.2 功能和用例 ... 7 3.2.1 系统设计目标 ... 7 3.2.2 用例分析与描述 ... 7 3.3 非功能性需求分析 ... 17 3.4 本章小结 ... 17第
4
章
系统设计
... 19
4.1 总体网络架构 ... 19 4.2 功能模块设计 ... 20 4.2.1 系统用户管理模块 ... 21 4.2.2 基本数据的录入和管理 ... 24 4.2.3 班次线路管理 ... 26 4.2.4 票务运营 ... 29 4.2.5 财务报表统计 ... 32 4.3 数据库设计 ... 32厦门大学博硕士论文摘要库
基于分布式数据存储的售票系统的设计与实现 II 4.3.1 售票过程的数据流图(DFD) ... 32 4.3.2 数据字典 ... 35 4.3.3 数据库概念结构设计 ... 36 4.3.4 车站售票系统核心表结构 ... 39 4.4本章小结 ... 42
第
5
章
系统实现
... 43
5.1 三层架构 ... 43 5.2 界面设计 ... 44 5.2.1 登入界面 ... 44 5.2.2 系统与用户管理模块 ... 44 5.2.3 基本数据录入 ... 46 5.2.4 线路班次管理 ... 49 5.2.5 票务运营 ... 51 5.2.6 财务报表 ... 52 5.3 系统核心业务功能代码设计与实现 ... 53 5.3.1 权限管理方法 ... 53 5.3.2 座位生成方式 ... 54 5.3.3 查询可售座位 ... 58 5.3.4 划位售票 ... 61 5.3.5 数据同步传输的实现方式 ... 65 5.4 本章小结 ... 70第
6
章
总结与展望
... 71
6.1 总结 ... 71 6.2 展望 ... 71参考文献
... 73
致 谢
... 75
厦门大学博硕士论文摘要库
Comtent
I
Contents
Chapter 1 Introduction ... 1
1.1 Research Background and Significance... 1
1.2 Research Situation and the Problem ... 1
1.3 Research Content and Structure ... 2
Chapter 2 Introduction to Technologies ... 3
2.1 LAMP Platform ... 3
2.2 XML ... 4
2.3 C++ Builder ... 4
2.4 Distributed Database Architecture ... 4
2.5 Summary ... 6
Chapter 3 System Requirements Analysis ... 7
3.1 Main Functions ... 7
3.2 Features and Use Case ... 7
3.2.1 System Design Object ... 7
3.2.2 Cases Analysis and Description ... 7
3.3 Non-Functional Requirements Analysis ... 17
3.4 Summary ... 17
Chapter 4 System Design ... 19
4.1 Network Architecture ... 19
4.2 Function Module Design ... 20
4.2.1 User Information Management Module ... 21
4.2.2 Basic Data Entry and Management ... 24
4.2.3 Service Line Management ... 26
4.2.4 Ticketing Operations ... 29
4.2.5 Financial Statements Statistics ... 32
4.3 Database Design ... 32
4.3.1 Data Flow Diagram for Ticketing Process ... 32
4.3.2 Data Dictionary ... 35
4.3.3 Database Logical Structure Design ... 36
4.3.4 Core Table Structure ... 39
基于分布式数据存储的售票系统的设计与实现
II
4.4 Summary ... 42
Chapter 5 System Implementation ... 43
5.1 Three-Tier Application ... 43
5.2 Interface Design ... 44
5.2.1 Login Interface ... 44
5.2.2 User Management Interface ... 44
5.2.3 Basic Data Entry Interface ... 46
5.2.4 Service Line Management Interface ... 49
5.2.5 Ticketing Operation Interface ... 51
5.2.6 Financial Statements... 52
5.3 Design and Implementation of Core Function Code ... 53
5.3.1 Rights Management ... 53
5.3.2 Make Seats ... 54
5.3.3 Query Empty Seats ... 58
5.3.4 Sell Ticket ... 61
5.3.5 The Methods of Data Synchronization ... 65
5.4 Summary ... 70
Chapter 6 Conclusions and Prospect ... 71
6.1 Conclusions ... 71
6.2 Prospect ... 71
References ... 73
Acknowledgements ... 75
第1章 引言 1
第
1
章
引言
1.1
研究的背景及意义
在信息技术快速更新和发展的今天,信息与计算机相结合的应用技术已经遍布与我们 身边的每个角落。在社会新一轮的变革和发展下,各个传统行业经常依赖新技术的出现不 断的改善和突破原有的管理方式和体制的束缚,或主动或者被动的适应着数据信息时代对 社会各个行业的冲击。 在进行现代化建设浪潮中,为了满足日益富裕的民众的出行需求,以交通基础设施建 设快速发展的背景下,以公路,铁路,民航等为主体的交通运输业行业取得了长足的进步, 尤其是高速铁路,已经发展成为世界上极其有竞争力的系统之一,起着“一路一带”建设 和中国制造业走出国门的龙头引擎作用。而与高铁系统相配套的除了除了制造业的更新换 代的升级外,铁路管理方式的因高铁技术的跨越式发展,也不得不主动或者被动的进行调 整,以应对新形式和和新环境的变化。同样,相对应于行业密切相关的信息管理软件,也 同样面临着调整。 由于网络技术的高速发展以及计算机硬件的逐步成熟,过去的系统已经不能适应网 络的高速发展以及用户需求的不断深入,用户要求逐步提高,实时、高效、扩充性好的 软件已经成为一种趋势。例如,无人售票机,网上订票系统的出现,无不考验并挑战着 旧有的铁路行业管理系统的支撑架构。 在网络和计算机数据存储技术快速发展的今天,进一步审视旧有管理系统,尤其是 对其票务管理系统的结构进行进一步的梳理。以分布式数据存储为基础,建立一个弹性 比较大的票务管理系统解决方案,无疑是具有现实意义的。1.2
研究现状和问题
目前,售票系统广泛的使用在民航,铁路,客运巴士等交通系统,其票务大都依靠相 对应的票务系统进行管理。而火车座位售票系统相对汽车,飞机,轮船等其他交通工具, 由于人员运载量大,路线复杂,对于信息系统的设计的考验就显得尤为重要。虽然欧美的 相关的售票系统的起步比较早,但在欧洲这样的类型的国家,国土面积小,站点分布相对 简单,乘客人员相对有限,而美国虽然幅员辽阔,但是火车并不是主要的出行工具。由于 乘车人数的相对稳定性和使用环境的原因,大部分在软件结构上仍然采用集中处理的方 式,相较于之前,并没有太多突破性的进展。 而在中国,火车作为主要的远行的交通工具。由于人口基数的原因,加上由于幅员辽厦门大学博硕士论文摘要库
基于分布式数据存储的售票系统的设计与实现 2 阔产生的网络和通信等众多方面的限制,在体系结构上就需要使用的是既有集中又有分布 的运营体系。即使如此,这种结构仍然无法满足数据库的全国联网。从 1996 年开始,中 国铁路客票发售和预订系统,随着整个铁路系统的快速发展,经过数个版本的研制和升级, 目前已经发展改至 5.2 版,虽然成就巨大,但是仍无法满足现阶段的人们的需求。因此, 在火车的售票系统的研究和开发方面,依旧是需要进一步的摸索和发展当中。
1.3
研究内容以及文章结构
本文从车站售票的业务需求上入手,以分布式数据存储技术为基础,通过软件工程的 分析建模的方式,设计和构造了一个较为完整的车站售票系统,完整的模拟了在车站上一 个票务工作的基本过程,并就其中一些重要技术细节进行了相关的分析与实现。 本文的主要内容包括以下6章: 第1章引言,主要阐明了开展此次研究的主要目的及方向。 第2章关键技术综述,主要介绍了系统开发的相关技术。 第3章系统需求分析,主要通过用例方式,对需求进行了功能分析和归纳。 第4章系统设计,主要包含了功能模块的设计和数据库设计等内容。 第5章系统实现,主要涵盖了界面和主要功能模块的代码实现和解析。 第 6 章总结与展望,是对工作进行了总结,客观评价了系统的成果和缺失,并对下 一步的工作方向做出了展望。厦门大学博硕士论文摘要库
第2章 关键技术综述
3
第 2 章 关键技术综述
本文所设计的系统利用了 LAMP 平台,结合 Borland C++ build 快速开发环境制作 UI, 通过 XML 作为数据传输和共享媒介,实现了一个车站售票系统。并在以分布式数据库理论 下数据分片和读写分离原理,对 MySQL 中的 Replication 技术原理加以改进,实现了一个 在复杂网络情况下,对车站所售车票数据的控制管理。
2.1
LAMP
平台
LAMP 名称是起源于德国计算机杂志 c't(Magazine For Computer Technology)的一篇 文章,1998 年,Michael Kunze 在该文章中提出了 LAMP 这个名词,来表示操作系统 Linux、 网络服务器上的 Apache、MySQL 数据库和脚本语言(PHP 或 Perl 或 Python)的组合。这 一由四个单词首字母组合而成的术语迅速便被普及和接受。这四个呈现分层结构的组件, 每一层都各自提供了软件栈的一个关键部分,既各自独立,又互相兼容,构成了一个服务 器应用平台。
底层:操作系统层 L(Linux)。提供操作系统,在其上运行者其他组件,但操作系统
并不局限于 Linux。由于作为服务器操作系统,类 Unix 系统 FreeBSD 在网络方面拥有更为 稳定的表现,本文在该层上面使用了 FreeBSD 系统作为该层组件。
次低层 Apache:Apache 的全称是 Apache HTTP Server,源于 NCSAhttpd 服务器,经 过多次的修改发展而来。简单、速度快、性能稳定是其特点。支持 SSL 和多个虚拟主机技 术等。最初仅在实验室和小型 Internet 网络上应用,之后在各类 Unix 系统中应用。归属
Apache Software Foundation管理。
数据存储端 MySQL:MySQL 是一个 RDBMS(关系型数据库管理系统),属 Oracle 旗下所 有。在应用上,MySQL 与 PHP,Apache 的搭配,是比较合理的开发环境组成。MySQL 在架构
上可以分为单点(Single),复制(Replication)和集群(Cluster)。其中单点架构合适
小规模应用。复制架构适合在中小规模级别,而大规模的数据集应用则比较适合集群的方 式。本文中所搭建的为复制(Replication)级别。
最后,作为服务器端脚本解释器,本文采用了 PHP 语言:PHP(PHP: Hypertext Preprocessor,超文本预处理器)属于一种脚本编程语言。使用广泛,利于学习。其吸收 了 C,Java 和 Perl 的语言特点,简答而又有效率。通过编写的 PHP 程序对 MYSQL 中存储 的数据进行访问,同时又能调用类 Unix 操作系统提供的一些特性,它将其他组件有效的 粘合在一起,起着粘合剂的作用。
基于分布式数据存储的售票系统的设计与实现 4 本文的服务器端是采用 LAMP 模式,应用逻辑程序是由 PHP 脚本所编写,通过客户端 所发送的 URL 请求、表单数据和从客户端上所捕捉的会话信息,或访问 MySQL 数据库获得 信息;或处理来自客户机的信息,在有必要时更新数据库,进行双向的交流。
2.2
XML
XML全称(eXtensible Markup Language,可扩展标记语言),于1998年2月10日成为
W3C的推荐标准。它用来对数据类型进行定义和数据标记,是一种允许用户对自己的标记 语言进行定义的源语言[17]。被设计用来传输和存储数据。适合于互联网的内容传输,是在 跨平台的环境中处理分布式结构信息的有效工具和技术。
2.3
C++ Builder
C++ Builder 是一款可视化集成开发编译环境,早期来源于 Borland 公司。包含有各 类已经定义好的组件(Component)和窗体(Form),以 C++语言为基础,是一款能够快速 开发桌面应用程序界面的工具。2.4
分布式数据库架构
分布式数据库特点主要体现在分布,它克服了集中式数据库的物理局限,把数据分散 存储于不同地域和网络之间的数据存储节点上,达到提高并发访问量和数据存储量的目 的。在存储方式上每个数据节点中含有自己的局部数据库,有一份完整或者部分完整的拷 贝副本,通过网络互联,一起组成了逻辑上集中、物理上分布的数据库。 而扩展数据库性能的方式主要从数据分片和读写分离两个方面着手。 数据分片(Sharding)就是水平切分存储数据。在应用架构上去解决随之而来的数据合 并与路由访问的问题。它的集群扩展和容错能力比较高,是比较实用的数据库扩展方案。 其缺点在于跨节点 join 查询比较难以处理,从功能上会失去一些 RDB 的特性而退化成为 Key-Value 存储。所以数据分片技术对应用场景有一定的限制。 在图 2-1 Sharding 中,展示了分布式数据库数据分片原理。厦门大学博硕士论文摘要库
第2章 关键技术综述
5
图 2-1:Sharding
读写分离则是建立在数据库复制技术的基础上,逻辑上将读和写的功能分开,引导分 布到不同的节点上,提高了并发访问量。在 MySQL 中主要通过 Replication 技术来实现, Master 数据库负责 Write 操作,然后将其操作过程部分或完整复制到与之相关联的 Slave 数据库上,而 Slave 相应承担 Read 操作。这种模式随着 Slave 的节点和数量的增长,读 的性能也会随之线性增长。它适合于 read-intensive 的业务模式,而集群中 Master 端通 常会有两台以上数据库做多机热备份,用来克服中心节点的故障影响。
在图 2-2 读写分离中,展示了分布式数据库读写分离原理。
基于分布式数据存储的售票系统的设计与实现 6 图 2-2:读写分离
2.5
本章小结
本章简要概括介绍了在车站售票系统中所用到的主要技术,包括 LAMP 平台,XML 文本, 以及分布式数据库的理论下数据分片和读写分离原理,为后续的设计工作奠定基础。厦门大学博硕士论文摘要库
第3章 系统需求分析 7
第 3 章 系统需求分析
3.1
系统主要功能概述
车站售票系统是一个以车次管理、座位销售、车票查询、买票、退票等票务运营为主 要功能,使用者主要为售票员,消费者需要通过售票员才能间接买到车票。该系统的中心 功能是座位管理和票务运营。这两个功能在业务上有着互为因果的联系。 除此之外,系统需要一些设定功能,用来为中心功能支持。如用户设定,线路设定, 票价设定等。在通过设置后,使售票等业务相关的活动能够顺利的进行。3.2
功能和用例
本节主要通过用例对售票系统的功能进行分析。 3.2.1 系统设计目标 系统的最中心的需求是旅客能通过车站售票员在系统中查询到自己所期望的车次座 位,然后正常的进行售票等业务。 较为完整的售票管理信息系统应具有用户权限设定、线路设点、车次管理、票务运营 和统计等相关功能,在通过相关基本资料设定后,能够正常的进行座位查询调度,售票和 报表统计等相关工作。 3.2.2 用例分析与描述 系统的用户可以大概分为四类:系统管理员、管理员、站点售票员、财务人员这三类, 其中管理员又可详细分为车站管理员、线路制定员、调度员三种,分别施与不同的职责。 通过职责的不同分类,从而归类出用户在使用系统过程中的不同权限。系统管理员负责对 用户的管理和权限的授予;管理员中车站管理员负责站点管理和其他基本数据的维护,线 路制定员主要负责对线路,车次和票价的制定,调度员是负责每日班车的开班作业和座位 的调度管理, 而站点售票员的职能在系统中所需要的功能就是查找座位,售票等。 1. 系统管理员用例分析 在系统内,定义了一个特殊用户(系统管理员,或称超级管理员)用来管理系统的所 有用户的权限和对系统进行监控和日志管理。在管理用户中,对用户相关信息进行 CUID 操作,并且赋予相关的权限。图 3-1 系统管理员用例图中描述了这一分析过程。厦门大学博硕士论文摘要库
Degree papers are in the “Xiamen University Electronic Theses and
Dissertations Database”.
Fulltexts are available in the following ways:
1. If your library is a CALIS member libraries, please log on
http://etd.calis.edu.cn/ and submit requests online, or consult the interlibrary
loan department in your library.
2. For users of non-CALIS member libraries, please mail to [email protected]
for delivery details.