2 qq 34613168 qq_34613168 于 2016.05.07 19:33 提问

求模拟三辆火车调度系统得程序 88C

一、参数配置
1、火车数量:最小为3
2、火车类型:快车、慢车
3、火车运行方向:顺时针、逆时针
4、火车启动运行位置:有默认值,系统运行时可修改初始配置
5、火车启动时间:0表示即可启动,其它整数值表示系统运行整数秒后启动
6、火车运行速度:每秒移动的距离
7、火车占用公共轨道停靠时间:0表示不占用,单位为秒,值不0为要占用时,要求在公共轨道中间停靠。
二、火车基本要求
1、至少有三辆小火车 (如图1所示)。
2、小火车各自分别沿参数指定方向行驶在自己的闭合轨道上。当运行到公共轨道时 需监测是否会有冲突发生,如当火车A在公共轨道上运行的时候,另一辆火车B如果也想进入公共轨道,则必须等待,直到列车A离开了公共轨道,让出该段轨道。为了防止两辆火车在公共轨道上相撞,必须要有一个中央控制系统来调度火车的运行。
3、为了能及时识别火车想进入公共轨道或者已经离开公共轨道,在公共轨道等待进入和驶出轨道双方向上,分别安装两个探测点,当探测点发现火车经过此点时,将会发送信号给中央控制系统,中央控制系统根据发送信号的是哪个探测点,识别出是哪辆火车想进入或者驶出公共轨道。
图片说明

三.火车的运行控制
1.火车从启动位置开始运行,除非因为等待公共轨道的释放而暂停,或者被人为停止,否则会一直运行。
2.必须要保证所有火车有序运行,交替使用公共轨道。
3.火车的运行速度等参数可以在配置文件中设置,也可在系统刚开始运行时提示是否修改默认配置,如果是则可以修改默认参数。
4.在火车运行期间,火车除了因为等待公共轨道的释放而暂停,也可能由于某些特殊原因被人为停止,用户可以通过输入命令信号来控制火车的暂停和继续运行。
5. 如果火车在公共轨道停靠时间不为0时,要求在轨道中间位置停靠,并以秒为单位显示停靠倒计时的时间。
四.火车运行的控制策略
如果出现2个监测点同时向中央控制中心发信号,提示火车要进入公共运行轨道,这时需要根据以下三种策略来决定哪辆火车被允许进入。
交替策略:快、慢车交替使用公共轨道。第一次出现同时申请进入的情况时,让A车先行,第二次时让B车先行,第三次还是让A车先行,第四次B车先行。
快车优先策略:根据火车的运行速度,选择快车优先通过,慢车等待快车通过后再进入公共轨道,同级别情况下采用交替策略。
人工控制策略:当同时有多辆车请求进入公共轨道时,可以人工控制指定某辆车进入,其它车等待。

五.输入输出
要求开发两个版本:命令行版本和动画版本。具体说明如下:
命令行版本,要求实现键盘输入、命令行输出,并将输出结果记录到文件。
动画版本,要求实现图形界面输入、动画输出,并将输出结果记录到文件。
(一)输入
一系列的火车控制信息和调度命令。输入数据包括以下两种:
1)初始化信息,包括:各辆火车的车速、启动时间(相对于程序开始运行时间,以秒为单位)、启动位置以及探测点位置等,参见内容一说明。轨道宽度、高度、位置坐标可为常量。
2)暂停或者继续某辆火车运行的控制信号。
输入方式可以采用两种方法:
a.从键盘输入。例如:可以在程序刚开始运行时,先提示用户从键盘输入初始化信息;运行中从键盘接受小火车的控制信号。以A车示例,可以设定初始化信息的输入顺序如下:
[A Speed] //A运行速度
[A StartTime] //启动时间,0表示即刻启动
[A StartPoint] //A启动位置(例如将A轨道分为0-12点刻度,启动位置在0点)
[A InPoint] //A进入公共轨道探测点的位置,可以是绝对坐标,也可以是相对公共轨道的距离
[A OutPoint] //A驶出公共轨道探测点位置,可以是绝对坐标,也可以是相对公共轨道的距离
[A Type] //火车类型,1快车,2慢车;也可根据火车速度规定快慢判别区间
开始运行后,以A车示例,可以设定控制信号的按键如下:
A车暂停:‘PA’
A车继续:‘CA’

b.图形界面输入。程序运行时,先提示是否修改默认配置,若修改则首先出现初始化信息录入界面,在文本框中输入全部的初始化信息。然后程序根据这些参数绘制主画面。在主画面中,鼠标第一次点击小火车时,小火车启动运行,再次点击小火车时,火车暂停。火车申请进入公共轨道时,探测点点亮。
(二)输出:
a.命令行输出:
两种方案:(1)周期性在命令行窗口打印出各辆火车的状态信息,包括:运行到轨道的哪个位置、状态(运行-非公共轨道,运行-公共轨道、暂停-等待公共轨道、停靠-占用公共轨道)。(2)当小火车状态发生变化时,如刚启动时,或从暂停变为运行,或申请进入公共轨道,获准进入时,在命令行窗口打印出小火车当前新的位置、暂停还是运行、是否等候进入、进入/驶出等。
b.动画显示:在窗口中显示小火车在绘制的轨道中匀速运行的动画,显示每段公共轨道的四个探测点,显示调度控制面板。为了直观显示调度的结果,当火车被允许进入公共轨道时,有绿色信号灯点亮;若调度错误,导致两车在轨道上相撞,要模拟撞车效果。
c.火车运行情况的记录(结果)文件。
记录文件也是文本文件,每一行表示一个时刻的火车运行状态,包括以下内容:
当前时间:程序开始运行的系统时钟时间,单位秒。
火车运行方向:顺时针、逆时针。
火车当前位置:0.0-12.0。假如将A轨道分为0-12点刻度,当前位置在几点。因有多条轨道,还需有字符表示某辆火车当前处于那个轨道。
火车当前状态:运行-非公共轨道,运行-公共轨道、暂停-等待公共轨道、停靠-占用公共轨道。
每个数据项之间用一个空格隔开。

2个回答

caozhy
caozhy   Ds   Rxr 2016.05.08 08:07
qq_20246395
qq_20246395   2016.05.08 00:48

共享路段加个锁,要进去先判断是否有锁,有就等,没就继续,出了共享路段就解锁,是这意思?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
火车调度详解
最近写数据结构的车厢调度,写好后给老师验收,我用回溯树的阐释了下我的想法,老师却说我这种解释很牵强。唉,现帖于博客,献丑了,惭愧惭愧啊。题目核心说白了就是让你求所有出栈序列,言简意赅,但就是程序不太好写,特别是里面涉及到递归中又有栈。还好之前有位前辈(也是个学生)已经把这个写出来了,写得很不错的,前辈很谦虚,报告中仍感慨唏嘘不已,令晚生更是惭愧了。 //求所有序列的伪码算法:A
数学建模列车调度问题的MATLAB模拟程序实现
关于用matlab模拟的列车调度问题,通过做的仿真,很好的实现了这一环节
C++——NOIP模拟题——列车调度
列车调度 题目背景 161114-练习-DAY1-AHSDFZ T2 题目描述 有 N 辆列车,标记为 1,2,3,…,N。它们按照一定的次序进站,站台共有 K 个轨道,轨道遵从先进先出的原则。列车进入站台内的轨道后可以等待任意时间后出站,且所有列车不可后退。现在要使出站的顺序变为 N,N-1,N-2,…,1,询问 K 的最小值是多少。      例如上图中进站
[递归]使用栈解决n辆列车调度问题(列车编号1-n)
void Permutation(int n); void Recursion(int *a,int n,int k); void Print(int *a,int n); void PrintError(int *a,int n); void GetStackList(int *a,int n,int k); static int flag = 0; static int errorNum =
火车调度问题的两种解决方法(C语言描述)
 (1)正统递归#include #include #define N 10typedef struct{ int a[N]; int top;}stack;stack tran;//声明全局栈int a[N]={0};//声明一个数组用于存放原火车顺序int b[N];//声明一个数组用于存放输出的出栈的火车int len;//用于存放火车的列数
火车站售票系统模拟程序
#include #include DWORD WINAPI fun1proc(LPVOID lparameter); DWORD WINAPI fun2proc(LPVOID lparameter); int index=0; int tickets=100; HANDLE hmutex;   //定义互斥对象句柄 int main() { HANDLE ht1;   //
多线程练习程序 之 模拟火车票售票系统01版
程序源码: http://pan.baidu.com/s/1pKF5vpL模拟火车票售票系统用来练习多线程再好不过了. 这是第01版,尽量简化难度,我们在之后的版本,一步一步完善. 本节,我们将学习构建一个线程安全且高效的简易版火车票售票系统题目描述为了简化数据,我们只考虑以下的火车站点: 模拟列车表如下:列车 始发点=时间 抵达点=时间 抵达点=时间 D011 北
使用多线程模拟火车站售票系统
程序模拟了火车站售票系统,程序中使用了多线程的实现方法,并用多种方法实现了线程的同步,麻雀虽小,五脏俱全。
java多线程之火车售票系统模拟
1.前言 为了学习多线程共享与通信,我们模拟一个火车售票系统,假设有10张火车票,三个窗口(也就是三个线程)同时进项售票。 2.非同步代码 package com.tl.skyLine.thread; /** * Created by tl on 17/3/6. */ public class SellTicket { public static void main(Stri
java模拟火车站售票系统源代码
模拟火车站售票系统模拟火车站售票系统模拟火车站售票系统模拟火车站售票系统