(word)C语言程序设计策划书
C语言程序设计策划书 ——模拟火车调度系统
一、 实验目的
对于一年多以来程序的学习,C语言也好,java也好,我们已经初步掌握了它们的语法,具备了初步的算法设计能力,但显然我们也仅仅是初学者,无论是任何语言,它的功能也绝对不会仅仅是对数组的排序那么简单。这一次的程序设计更是要求我们能够综合应用之前所学知识,掌握较复杂问题的求解过程。通过本次程序设计,一方面我们要掌握复杂问题的问题分析和方案求解过程,提高抽象和建模能力;另一方面通过这一次的程序设计,也就是进行初步的软件工程训练,了解软件的开发过程,体会软件工程的思想,同时还要提高团队合作意识。
另外,在这一次的程序设计过程中,对于我们,仅仅是一个初学者来说,有许多各种各样的难点,比如,我们之前的课程中结构体并没有学,另外还有像自动机等还没有任何接触,数组我们大致了解,但链表我们仍不懂,所以在复杂数据结构的应用上我们还要再多加学习。对于我们来说这些是极大的挑战,还有在绘图方面我打算使用ege,因为C语言实现绘图比较困难所以必须还要借助其它程序,而ege在课本上没有任何介绍,一切我们能够了解的手段几乎只有网络。与此同时这也是锻炼我们的一次机会,如果我们克服这次困难,我相信我们对C语言,乃至程序方面都会在认知方面有很大的提高。
二、功能要求
1.火车的配置
(1)共有两辆小火车A和B
(2)小火车A和B分别沿顺时针方向行驶在各自的闭合轨道上,它们的轨道都经过公共的车站,进站的轨道只有一条,所以当火车A在车站的公共轨道运行时,另一辆火车B如果也想进站就必须等待,直到火车A离开了车站让出了轨道火车B才能进站。为了防止两辆火车在车站的公共轨道上相撞,就必须要有一个中央控制系统来调度火车的运行。
(3)为了能及时识别火车想进入车站公共轨道或者已经离开公共轨道,在车站附近(等待进站区和出站区)的A车和B车的轨道上分别安装两个探测点,当探测点发现火车经过此点时将会发送信号给中央控制系统,中央控制系统根据发送信号的是哪个探测点,能识别出哪辆火车想进入或者已经驶出车站的公共轨道。
2.火车的运行控制
(1)火车A和火车B开动前停放的位置分别在轨道的最上方中间和轨道的最下方中间,如图。
(2)火车一旦运行除非等待公共轨道的释放或者人为操作而暂停,否则一直在运行。
(3)必须保证两辆火车有序运行,交替使用公共轨道。
(4)火车的运行速度、运行轨道的长和宽可以在配置文件中设置。是是同时启动两列火车、还是先启动某一辆、两辆车启动的间隔时间也可以在配置文件中设置。(即输入)
(5)在火车运行期间,火车除了因为等待公共轨道的释放而暂停,也可以通过人为操作而暂停,本次设计中,通过单击该火车使其暂停,再单击该火车重新运行。
3.火车运行的控制策略
如果出现2个监测点同时向中央控制中心发信号,即两列火车同时达到进站区,这时需要根据以下策略来决定哪辆火车被允许优先进站。
A车优先
B车优先
快车优先
交替策略:A、B交替使用公共轨道。第一次出现同时申请进站的情况时,让A车先行,第二次让B车先行,以此类推。
三、时间划分
由于本次假期的可利用性我们大致可以想象,所以在暑假过程中我们的任务就是把前边所学的知识好好巩固,有余力的可以把结构体看一看,这次假期并没有太多繁杂的任务。
开学之后的一个月内,掌握之前没学过或者说没掌握的结构体,标准库(即.h的使用),数据结构,线程,自动机等(仅仅是通过看书了解这些一周时间足矣,但需要实践来掌握),并且对原有的分配进行微调,进一步细分好各自的任务。十一正式开始对该程序的编写。
一个月内各个人员完成对各自项目的编写,再通过半个月自己对自己所编写的内容进行调试、改进,再花五天左右时间完成整合(大约在11月20日左右)。
最后十天对完整的程序进行调试,确保程序按照要求能够运行,再从整体的角度上在细节进行修整,准备答辩。
四、人员分工
刘明:main函数 绘图 优化程序
施亚军:判断火车是否出轨 右转 火车运行函数
李杰:停车 判断运行方向
陈舫:右转 判断速度是否合法 判断是否撞车
冯奇:判断坐标是否在轨道内 判断火车是否在两个传感器之间
周杨:初始化(输入)
张勤: 输出函数
钱泽宇:模拟开始时间 存储
夏晶:初始化按钮 点击按钮 绘制按钮
路雯雯:对于声音音效的添加
王丽影:打印火车运行方向 主循环
马珍珍:获取鼠标或者键盘信息
A
B
车站公共轨道