当前位置:文档之家› 交通信号灯模拟(PV操作)

交通信号灯模拟(PV操作)

目录第一章课程设计目的和要求 01.1 课程设计目的 01.2 课程设计要求 (1)第二章课程设计任务内容 02.1课程设计任务 02.2 课程设计原理 02.3 课程设计内容 (4)第三章详细设计说明 (5)3.1 模块描述 (5)3.2 性能描述 (5)3.3 输入项 (6)3.4 输出项 (6)3.5 数据结构 (7)3.6 算法介绍 (7)3.7 流程图 (8)3.7.1 主程序流程图 (8)3.7.2 算法流程图 (9)3.8 接口描述 (11)3.9 限制条件 (13)第四章件使用说明 (13)4.1 系统开发与运行环境 (13)4.2系统的运行说明 (13)4.3 运行结果 (13)第五章课程设计心得体会 (19)附录1:参考文献 (20)附录2:程序清单 (21)交通信号灯模拟第一章课程设计目的和要求1.1 课程设计目的根据学院课程安排,在大三的第一个学期我们开设了操作系统这门课程,操作系统可以说是是计算机系统的核心和灵魂,是计算机系统必不可少的组成部分。

通过学习,对于操作系统的运行方式以及设计理念有了较清楚的认识。

要想真正学好并理解操作系统这门课程,不但需要理解操作系统的概念和原理,还需要加强操作系统实验,上机进行编程实践,现在一学期的课程已经结束,本次课程设计在同学们掌握理解该课程的基础上,对操作系统内部的一些具体项目的实现方法进行实战演练,通过实践将知识彻底掌握。

操作系统课程设计是该课程重要的实践教学环节。

通过这次课程设计,一方面可以使学生更透彻地理解操作系统的基本概念和原理,摆脱抽象的理解,从实践中将理论具体化;另一方面,通过课程设计还可以加强学生的实践能力,培养学生独立分析问题、解决问题、应用知识的能力和创新精神。

本次课程设计的题目为交通信号灯模拟,在熟练掌握课本所讲解的计算机的P 操作和V操作的原理的基础上,利用C++程序设计语言在windows操作系统下模拟实现交通信号灯的模拟,一方面加深对原理的理解,另一方面提高根据已有原理通过编程解决实际问题的能力,为进行系统软件开发和针对实际问题提出高效的软件解决方案打下基础。

1.2 课程设计要求在深入理解操作系统基本原理和充分理解课题的基础上,对于选定的题目,独立自主思考,通过查阅相关资料,先确定设计方案,设计程序的运行流程,分析程序所需的模块及各个模块所包含的功能,之后设计每个模块的处理流程,并画出相应的流程图,要求设计合理,利用VC++6.0编程实现,并且程序要拥有可视化的运行界面,界面应清楚地反映出系统的运行结果,之后个人确定好测试方案,选择测试用例,对系统进程测试,运行程序并截图,截图要能充分说明结果,说明系统的使用方法和特点,并提交课程设计报告。

对于模拟交通信号灯的情况,要求在掌握P、V操作的基础上,能够进行合理的调度,并利用各种算法来实现车辆通行、控制、记录等功能。

第二章课程设计任务内容2.1课程设计任务一个十字路口,共有四组红绿灯,每个路口的车辆都遵循"红灯停,绿灯行"的原则,假设将每一台汽车都作为一个进程,请设计良好的机制,展示出合理的"十字路口交通管理"情况.车辆通行设定:路口宽度不限,对一个路口而言,只有当一辆车通过路口(越过对面路口的交通灯后)后,其后续车辆才能继续通过交通灯,车辆通过路口的时间可以固定,可以自行计算。

进程的互斥:交通灯进程实际上是互斥的,即不能同时为红或者同时为绿.进程的消息通信或其他通信方式:对车辆进程而言,每一个车辆在通过路口前,必须确认前面的车辆已经通过了路口.进程的调度:停留在一个路口的车辆,决定其前进或等候的因素是交通灯和前面车辆的状态,需要设计一个良好的进程调度机制来控制所有车辆的通行。

2.2 课程设计原理本实验利用P、V操作进行设计。

信号量S是一个整数,S大于等于零时代表可供并发进程使用的资源实体数,但S小于零时则表示正在等待使用临界区的进程数。

P原语操作的动作是:(1)S减1;(2)若S减1后仍大于或等于零,则进程继续执行;(3)若S减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度。

V原语操作的动作是:(1)S加1;(2)若相加结果大于零,则进程继续执行;(3)若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度。

PV操作对于每一个进程来说,都只能进行一次,而且必须成对使用。

在PV原语行期间不允许有中断的发生。

本课题利用P操作和V操作来模拟车辆的出发和到达。

2.3 课程设计内容假设在一个十字路口,共有四组红绿灯,每个路口的车辆都遵循"红灯停,绿灯行"的原则,假设将每一台汽车都作为一个进程,要求设计良好的调度机制,展示出合理的"十字路口交通管理"情况.对于本程序,对于车辆通行,设定为路口的宽度不限,对一个路口而言,只有当一辆车通过路口(越过对面路口的交通灯后)后,其后续车辆才能继续通过交通灯,车辆通过路口的时间可以固定,并且可以自行计算。

交通灯的进程实际上是互斥的,即不能同时为红或者同时为绿.对车辆进程而言,每一个车辆在通过路口前,必须确认前面的车辆已经通过了路口.同时,停留在一个路口的车辆,决定其前进或等候的因素是交通灯和前面车辆的状态,需要设计一个良好的进程调度机制来控制所有车辆的通行。

在模拟车辆运行的进程中,要求可以按要求捕捉所需要的车辆的出发时间。

在进程程序设计的过程中要保证程序运行的流畅度,合理模拟车辆遇到红绿灯变换是黄灯的暂停情况。

对于结果的分析要能够得到具有代表性的数据,比如可以根据用户需要捕获特定的某辆车的情况等。

第三章详细设计说明3.1 模块描述对于交通信号灯模拟程序,其功能模块图如下图3-1所示:图3-1 交通信号灯模拟程序功能模块图对于交通信号灯模拟程序,系统需要实现的功能包括:1、模拟车辆驶出十字路口的一端。

2、模拟车辆到达路十字路口的另一端。

3、可以记录需要的车辆的出发时间和编号。

4、利用有效的调度程序对车辆的行进进行相应的控制。

5、要能对车辆是否能行进进行合理的判断。

6、要能合理的进行红绿灯的变换操作。

3.2 性能描述交通信号灯模拟程序,要求能模拟出交通信号灯处的车辆运行状况,要求能进行合理的调度和红绿灯切换,不考虑车辆在十字路口中间行驶的过程,视为离开后下一时刻直接到达对面。

要求能记录想要记录的车辆的运行时间以及车辆编号。

车辆的运行通过P操作和V操作执行,P操作进行车辆驶出的操作,V操作进行车龄到达的操作。

车辆运行调度通过ETW和STN执行,分别判断南北向和东西向是否有车,由此来控制是否能进行通车。

红绿灯的变换用来调整南北和东西是否有车的状态,同时进行输出,报告红绿灯切换状态并暂停2秒。

3.3 输入项对于交通信号灯模拟程序,需要的输入项包括:东、西、南、北四个方向的车辆数量,需要记录的车两的驶来方向和需要记录的车辆的编号,如表3-1所示。

表3-1 自行输入数据表需要在定义里定义的数据,可自行更改,如下:绿灯持续时间,如表3-2所示。

表3-2 初始定义数据表3.4 输出项对于交通信号灯模拟程序,需要的输出项包括:车辆行驶的方向、车辆编号、车辆出发时间,如表3-3所示:表3-3 输出项表3.5 数据结构为了实现题设的要求,在VC++6.0环境下编译实现,整个系统的主要流程设计为如下步骤:1.定义全局变量用来存放实验所需基本信息2.change函数实现交换无车标志的功能3.P函数模拟P原语的功能4.V函数模拟V原语的功能5.ETW函数实现东西方向的车辆调度6.STN函数实现南北方向的车辆调度7.main函数实现程序的输入接口以及模拟演示3.6 算法介绍设计P(int i)函数用来实现从i(东西南北)方向等待车辆中挑出当前的第一个并让其通行,同时记录此车的编号,输出此车的发车时间。

设计V(int i)函数实现时间的流逝,红绿灯的转换以及无车标志的转换,同时输出上一时刻调用P函数车辆的到达时间。

设计东西调度函数ETW()以及南北调度函数STN()在互斥方向无车且绿灯状态下循环调用P、V函数实现单方向队列上车辆的循环调度。

设计main()函数用来提供程序的输入接口,并实现南北东西方向函数的交叉调度,以及预测车辆出发时间的输出显示。

3.7 流程图3.7.1 主程序流程图交通信号灯模拟程序,运行开始时显示制作人信息,确定后按要求输入各个方向的车辆数量,之后输入初始红绿灯状况并输入要记录的车辆的来向和车辆编号。

组程序的流程图如图3-2所示。

图3-2 交通信号灯模拟主程序流程图3.7.2 算法流程图P(int i)函数用来实现从i(东西南北)方向等待车辆中挑出当前的第一个并让其通行,同时记录此车的编号,输出此车的发车时间,P操作算法流程图如图3-3所示。

图3-3 P操作算法流程图V(int i)函数实现时间的流逝,红绿灯的转换以及无车标志的转换,同时输出上一时刻调用P函数车辆的到达时间,V操作算法流程图如图3-4所示:图3-4 V操作算法流程图3.8 接口描述int Max[4]说明:记录东、西、南、北四个方向的车数量。

int Time说明:记录当前行进时间。

int R[30]说明:记录当前车辆的编号。

int PS说明:用来存储东西南北的数字编号。

int PN说明:存储预测车辆编号。

int PT说明:用来存储测车辆出发时间。

int SN说明:东西有无车(1无车,0有车)int EW说明:南北有无车(1无车,0有车)int T说明:红绿灯变幻时间。

int L[2]说明:东西方向红绿灯状态,0时为红灯,1时为绿灯。

char FX[4]说明:用来存储东西南北四个方向的名字,分别为E、W、S、N。

3.9 限制条件交通信号灯模拟程序限制条件如下:1、每个方向的车辆数量不能超过100;2、车辆按照先后次序进行排号,不能自定义编号;3、必须指定程序开始执行时的红绿灯状况。

第四章软件使用说明4.1 系统开发与运行环境代码实现:C++语言程序开发工具:Microsoft Visual C++ 6.0运行环境:windows XP或更高版本操作系统执行方式:文件打开后直接执行窗口界面:MS-DOS窗口界面操作方式:全键盘控制操作需要相关专业技能:无4.2系统的运行说明交通信号灯模拟程序的运行说明如下:1、按照系统提示一步一步向下走即可顺利执行程序。

2、输入数据的过程中一定要尽量保证数据的正确性,防止因数据不正确而造成程序的崩溃等问题。

3、在所有数据都输入之后,程序会自动直接开始运行,运行过程中程序会自动执行到最后,而不会运行一步停下来等待用户的指示,因此为了保证用户检验数据,请在运行之前做好充分的数据记录,以便与理论值进行对照。

相关主题