购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 问题引入

火车票管理系统

很多人坐火车出行时,会选择通过“中国铁路12306”网站或“铁路12306”App(即火车票管理系统)购买车票。本章以一个简化的火车票管理系统为例,从需求分析、功能划分、系统设计等层面分析火车票管理系统的实现,直至“破茧”底层的数据结构。

火车票管理系统是一种典型的高性能大数据应用,主要用于解决旅客查票、购票,以及管理员制订列车运行计划、票务管理等问题。通过对火车票管理系统的功能调研,进行火车票管理系统的需求分析,如图1-1所示。本系统考虑两类用户:管理员与旅客,使用人形图标表示。

图1-1展示了火车票管理系统中用户功能和数据之间的关系。下面简单梳理一下系统功能。

对管理员来说,首先需要添加列车运行计划,这是整个系统最基础的信息。简单起见,列车运行计划只包括车次号、日期、额定乘员、途经站点、时长与票价等信息,车次对应该列车途经站点的序列。管理员还需要查询列车运行计划。

管理员还需要负责车票的发售与停售。在列车开行前若干天发售车票,而列车发车前停止售票,因此管理员需要频繁地进行票池的维护与管理。

对旅客来说,可以按照其行程需要查询相应线路。例如,旅客只知道自己的出发站和到达站,并不知道相应的路线,通过路线查询可以得知从出发站到到达站是否可达(直达或转车)。旅客可能还想知道从出发站到到达站可以选择哪些路线,分别经过哪些站点,并按照票价最低、历时最短等偏好筛选最优路线及车次,系统将根据列车运行计划回复旅客。获知路线后,旅客还可以进行余票查询、购票、退票、已购车票查询等操作。

图1-1 火车票管理系统的需求分析图

旅客信息的管理是两类用户共同涉及的功能。旅客可以注册、修改、查询自己的信息。在实际的火车票管理系统中,军人和老弱病孕残通常可以优先购票或退票,所以每个旅客都对应一个优先级。旅客的优先级不能自己指定,只能由管理员核实并修改。

用户与各系统功能在交互过程中产生的各类数据在图1-1中单独列出,如列车运行图、列车运行计划、旅客行程、余票信息、旅客信息等。这些数据与功能之间通过有向箭头连接。从数据指向功能的数据流代表此功能需要从系统中查询此类数据;从功能指向数据的数据流代表此功能产生新的数据或修改已有数据,需要写入系统。

上文简要介绍了火车票管理系统,可以看出,它涉及的数据种类较多(如旅客信息、行程、车次、车票、站点等),数据与数据之间(如某车次所途经的站点之间、列车运行图中站点之间等)、数据与功能之间(车票与购票、行程与查询、车次与发售等)的交互也颇为紧密。由此,可将火车票管理系统划分为5个子系统:列车运行计划管理子系统(列车运行计划添加和列车运行计划查询)、票务管理子系统(车票发售和车票停售)、车票交易子系统(查询已购车票、余票查询、购票、退票)、路线查询子系统(路线查询)、旅客管理子系统(旅客信息添加、修改和查询),如图1-2所示。其中,许多旅客可能会同时使用车票交易子系统,则该子系统将旅客的购票与退票交易请求按照先后顺序形成交易请求队列,并按顺序完成相应交易;也可以将旅客的购票与退票交易请求按照优先级顺序排列,高优先级的先交易,低优先级的后交易。

在实现火车票管理系统的过程中,如何管理好各子系统的数据并高效地使用这些数据,就是数据结构要解决的基本问题。

图1-2 火车票管理系统的构成 CvWQewsVHfrqE9EkXmdyvK3Be3kGMeCWLDtcAPm0yStOvXm2p5J3RWR7EFbvsw3+

点击中间区域
呼出菜单
上一章
目录
下一章
×