第1个回答 2022-06-25
1 列车运行图自动编制系统结构
城市轨道列车运行图的要素包括:列车区间运行时分、列车停站时间、列车在折返站停留时间、列车折返出发间隔时间、列车出入车辆段作业时间、追踪列车间隔时间和连发间隔时间[2]。
整个系统有两个主要组成部分:数据库子系统和运行图调图子系统。其中数据库子系统包括数据管理和数据存储两个模块,它是编图的基础又是编图的归属,负责存储、组织、管理整个排布系统的数据信息。调图子系统包括运行图自动编制、运行图调整、运行图输出模块,它是系统的核心部分。根据地铁运营情况,通过求解模型中的函数,得到编制列车运行图的数据,自动完成列车运行图的排布并经人工介入调整后输出使用。运行图自动编制系统结构如图1所示。

2 调图子系统结构设计与实现
2.1 调图子系统中的文档/视图结构
微软MFC的文档/视图结构为实现运行图自动编制系统提供了方便、实用的框架结构,便于程序的设计、分工、调试和系统维护,所以本系统采用文档/视图结构[3]。所用到的几个非常重要的成员函数如下:
(1)CView::GetDocument函数:该函数返回的是指向文档的指针,利用它就可以对文档类成员函数及公共数据成员进行访问。
(2)CView::OnInitialUpdate函数:对视图对象进行初始化。当应用程序启动或用户从File菜单中选择了New或Open时,该CView虚函数会被自动调用。
(3)CDocument::UpdateAllViews函数:文档数据改变时通知所有视图对所显示的数据进行相应的更新。
(4)CView::OnUpdate函数:对文档进行访问、读取文档数据,然后对视图的数据成员或控制进行更新,以便文档的变化。应用程序调用CDocument::UpdateAllViews时,应用程序框架会相应地调用该函数。
(5)CDocument::OnNewDocument函数:当用户从File菜单中选择了New时,框架将首先构造一个文档对象,然后调用该虚函数,在此设置文档数据成员的初始值。
2.2 文档/视图结构的实现
主要图形数据放在CMTTDDoc类(从CDocument派生的文档类)中,在CDynSplitView2视图(运行图显示与调图视图)中用图形数据对象提供的接口对图形数据进行显示输出,即显示/打印运行图。在CMTTDview视图(站名与区间信息视图)中,同样调用图形数据对象接口显示车站和区间信息。
由于车站信息也是运行图的一部分,因此,两视图显示的位置必须一致,二者都依赖于文档类中的图形数据进行统一。m_TrainGraph是一个CTrainGraph类的对象,而CTrainGraph类封装了运行图的图形数据,并提供操作接口,基本上所有的运行图操作都围绕该类进行。与CMTTDDoc类相关联的有CMTTDview类和CDynSplitView2类两个视图类,后者用于运行图的显示和调图操作,而前者在与后者对应的位置显示车站和区间信息。