交通信号灯模拟(PV操作).doc
- 文档编号:245650
- 上传时间:2022-10-07
- 格式:DOC
- 页数:27
- 大小:1,023.42KB
交通信号灯模拟(PV操作).doc
《交通信号灯模拟(PV操作).doc》由会员分享,可在线阅读,更多相关《交通信号灯模拟(PV操作).doc(27页珍藏版)》请在冰豆网上搜索。
网络操作系统课程设计
目录
第一章课程设计目的和要求 1
1.1课程设计目的 1
1.2课程设计要求 1
第二章课程设计任务内容 3
2.1课程设计任务 3
2.2课程设计原理 3
2.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所示:
交通信号灯模拟
车辆驶出控制P操作
车辆到达控制V操作
东西方向的调度操作
图3-1交通信号灯模拟程序功能模块图
对于交通信号灯模拟程序,系统需要实现的功能包括:
1、模拟车辆驶出十字路口的一端。
2、模拟车辆到达路十字路口的另一端。
3、可以记录需要的车辆的出发时间和编号。
4、利用有效的调度程序对车辆的行进进行相应的控制。
5、要能对车辆是否能行进进行合理的判断。
6、要能合理的进行红绿灯的变换操作。
3.2性能描述
交通信号灯模拟程序,要求能模拟出交通信号灯处的车辆运行状况,要求能进行合理的调度和红绿灯切换,不考虑车辆在十字路口中间行驶的过程,视为离开后下一时刻直接到达对面。
要求能记录想要记录的车辆的运行时间以及车辆编号。
车辆的运行通过P操作和V操作执行,P操作进行车辆驶出的操作,V操作进行车龄到达的操作。
车辆运行调度通过ETW和STN执行,分别判断南北向和东西向是否有车,由此来控制是否能进行通车。
红绿灯的变换用来调整南北和东西是否有车的状态,同时进行输出,报告红绿灯切换状态并暂停2秒。
3.3输入项
对于交通信号灯模拟程序,需要的输入项包括:
东、西、南、北四个方向的车辆数量,需要记录的车两的驶来方向和需要记录的车辆的编号,如表3-1所示。
表3-1自行输入数据表
数据项名称
东车数量
南车数量
西车数量
北车数量
编号
方向
数据类型
int
int
int
int
int
int
数据值有效范围
0~100
0~100
0~100
0~100
任意
任意
输入媒体
键盘
键盘
键盘
键盘
键盘
键盘
需要在定义里定义的数据,可自行更改,如下:
绿灯持续时间,如表3-2所示。
表3-2初始定义数据表
输入项名称
红绿灯变幻时间
数据类型
int
有效范围
任意(建议30~40)
输入媒体
键盘
3.4输出项
对于交通信号灯模拟程序,需要的输出项包括:
车辆行驶的方向、车辆编号、车辆出发时间,如表3-3所示:
表3-3输出项表
输出项名称
行驶方向
车辆编号
出发时间
数据类型
char
int
int
可选值
E、W、S、N
任意
任意
长度
1
任意
任意
输出位置
屏幕
屏幕
屏幕
3.5数据结构
为了实现题设的要求,在VC++6.0环境下编译实现,整个系统的主要流程设计为如下步骤:
1.定义全局变量用来存放实验所需基本信息
2.change函数实现交换无车标志的功能
3.P函数模拟P原语的功能
4.V函数模拟V原语的功能
5.ETW函数实现东西方向的车辆调度
6.STN函数实现南北方向的车辆调度
7.main函数实现程序的输入接口以及模拟演示
3.6算法介绍
设计P(inti)函数用来实现从i(东西南北)方向等待车辆中挑出当前的第一个并让其通行,同时记录此车的编号,输出此车的发车时间。
设计V(inti)函数实现时间的流逝,红绿灯的转换以及无车标志的转换,同时输出上一时刻调用P函数车辆的到达时间。
设计东西调度函数ETW()以及南北调度函数STN()在互斥方向无车且绿灯状态下循环调用P、V函数实现单方向队列上车辆的循环调度。
设计main()函数用来提供程序的输入接口,并实现南北东西方向函数的交叉调度,以及预测车辆出发时间的输出显示。
3.7流程图
3.7.1主程序流程图
交通信号灯模拟程序,运行开始时显示制作人信息,确定后按要求输入各个方向的车辆数量,之后输入初始红绿灯状况并输入要记录的车辆的来向和车辆编号。
组程序的流程图如图3-2所示。
否
继续作业
图3-2交通信号灯模拟主程序流程图
3.7.2算法流程图
P(inti)函数用来实现从i(东西南北)方向等待车辆中挑出当前的第一个并让其通行,同时记录此车的编号,输出此车的发车时间,P操作算法流程图如图3-3所示。
图3-3P操作算法流程图
V(inti)函数实现时间的流逝,红绿灯的转换以及无车标志的转换,同时输出上一时刻调用P函数车辆的到达时间,V操作算法流程图如图3-4所示:
图3-4V操作算法流程图
3.8接口描述
intMax[4]
说明:
记录东、西、南、北四个方向的车数量。
intTime
说明:
记录当前行进时间。
intR[30]
说明:
记录当前车辆的编号。
intPS
说明:
用来存储东西南北的数字编号。
intPN
说明:
存储预测车辆编号。
intPT
说明:
用来存储测车辆出发时间。
intSN
说明:
东西有无车(1无车,0有车)
intEW
说明:
南北有无车(1无车,0有车)
intT
说明:
红绿灯变幻时间。
intL[2]
说明:
东西方向红绿灯状态,0时为红灯,1时为绿灯。
charFX[4]
说明:
用来存储东西南北四个方向的名字,分别为E、W、S、N。
3.9限制条件
交通信号灯模拟程序限制条件如下:
1、每个方向的车辆数量不能超过100;
2、车辆按照先后次序进行排号,不能自定义编号;
3、必须指定程序开始执行时的红绿灯状况。
第四章软件使用说明
4.1系统开发与运行环境
代码实现:
C++语言程序
开发工具:
MicrosoftVi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通 信号灯 模拟 PV 操作