操作系统,交通信号灯问题

课 程 设 计 报 告

课程名称 操作系统 课题名称交通信号灯问题

专 业班 级 1301班 学 号 [1**********]1 姓 名李世伟

2016 年 6 月 18 日

湖南工程学院 课 程 设 计 任 务 书

课程名称 操作系统

课 题 交通信号灯问题

专业班级 信息管理与信息系统 学生姓名 李世伟

学 号 [1**********]1

指导老师 谢 雅 审 批

任务书下达日期 2016 年 6 月 3 日 任务完成日期 2016年 6 月 17 日

一、设计内容与设计要求

1. 课程设计目的:

《操作系统》课程设计是信管专业实践性环节之一,是学习完《操作系统》课程后进行的一次较全面的综合练习。其目的在于加深对操作系统的理论、方法和基础知识的理解,掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,培养学生的系统设计能力,并了解操作系统的发展动向和趋势。

进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程的学习和实验,以及毕业设计的完成打下扎实的基础。

2. 课题题目

交通信号灯问题

问题描述:一个十字路口,共有四组红绿灯,每个路口的车辆都遵循“红灯停,绿灯行”的原则,假设将每一台汽车都作为一个进程,请设计良好的机制,展示出合理的“十字路口交通管理”情况。

车辆通行设定:路口宽度不限,对一个路口而言,只有当一辆车通过路口(越过对面路口的交通灯后),其后续车辆才能继续通过交通灯,车辆通过路口的时间可以固定,可以自行计算。

进程的互斥:交通灯进程实际上是互斥的,即不能同时为红或者同时为绿。 进程的消息通信或其通信方式:对车辆进程而言,每一个车辆在通过路口前,必须确认前面的车辆已经通过了路口。

进程的调度:停留在一个路口的车辆,决定其前进或等候的因素是交通灯和前面车辆的状态,需要设计一个良好的进程调度机制来控制所有车辆的通行。

3. 设计要求:

1.根据自己对应的课题完成以下主要工作:

(1). 分析设计要求,给出解决方案,建立必要的数据结构,然后设计总体流程(包

括界面)、详细设计必要的算法,并最终显示结果。基于WINDOWS 或LINUX 操作系统都可以,用何种编程语言都有可以。

(2). 提交设计报告,包括设计要求、设计思想流程、设计所涉及的主要数据结构、

程序清单、运行结果、设计心得、参考资料等。

(3). 严禁抄袭,复制设计内容,查出后相关同学设计成绩以零分处理。 (4). 所提交源程序应是能够运行通过的完整程序。

(5). 提交不少于5000字的课程设计报告,含系统说明,系统功能图,流程图,

程序设计说明,源程序清单

2. 设计过程中既要虚心接受老师的指导,又要充分发挥主观能动性、独立思考、努力钻研、勤于实践、勇于创新。

3.在设计过程中,要严格要求自己,树立严密、严谨的科学态度,必须按时、保质、保量完成任务。要求独立完成规定的设计内容,不得弄虚作假,不准抄袭或拷贝他人的程序或其他内容。

4.不得迟到、早退、旷课。缺课节数达两次以上者,成绩按不及格处理。

二、进度安排

第 15 周 星期一 14:30—18:30 星期三 14:30—18:30 星期四 14:30—18:30 第 16 周 星期二 14:30—18:30 星期三 14:30—18:30 星期四 14:30—18:30

目 录

1 系统需求分析 ............................................................... 1

1.1设计要求 . ............................................................. 1 1.2课程设计目的 . ......................................................... 1 1.3解决方案 . ............................................................. 1 1.4系统开发与运行环境 . ................................................... 2 2 总体设计 ................................................................... 2

2.1函数定义说明 . ......................................................... 2 2.2结构设计说明 . ......................................................... 3 2.3算法流程图 . ............................................................... 3

2.4数据结构 . ............................................................. 4 3 详细设计 ................................................................... 4

3.1 模块描述 ............................................................. 4 3.2 核心函数设计 ......................................................... 5 3.3主函数的设计 . ......................................................... 7 4 系统调试 ................................................................... 9 5 程序运行结果 ............................................................... 9 6 心得体会 .................................................. 错误!未定义书签。 7附录 . ...................................................... 错误!未定义书签。

7.1 源代码 .............................................................. 13 7.2 参考文献 ............................................................ 19 8 评分表 .................................................................... 20

1 系统需求分析

1.1 设计要求

一个十字路口, 共有四组红绿灯, 每个路口的车辆都遵循" 红灯停, 绿灯行" 的原则, 假设将每一台汽车都作为一个进程, 请设计良好的机制, 展示出合理的" 十字路口交通管理" 情况.

车辆通行设定:路口宽度不限, 对一个路口而言, 只有当一辆车通过路口(越过对面路口的交通灯后) 后, 其后续车辆才能继续通过交通灯, 车辆通过路口的时间可以固定, 可以自行计算。

进程的互斥:交通灯进程实际上是互斥的, 即不能同时为红或者同时为绿.

进程的消息通信或其他通信方式:对车辆进程而言, 每一个车辆在通过路口前, 必须确认前面的车辆已经通过了路口.

进程的调度:停留在一个路口的车辆, 决定其前进或等候的因素是交通灯和前面车辆的状态, 需要设计一个良好的进程调度机制来控制所有车辆的通行。

1.2课程设计目的

了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。

1.3 解决方案

根据设计要求,在VC++6.0环境下编译,设计了一个能够实现自由模拟某一时段交通状况并能预测某辆车需要多久才能到达路口的系统程序,改程序达到了设计要求,成功地实现了要求功能。

1.4系统开发与运行环境

代码实现:C++语言程序

开发工具:Microsoft Visual C++ 6.0 运行环境:windows XP或更高版本操作系统 执行方式:文件打开后直接执行

窗口界面:MS-DOS 窗口界面 操作方式:全键盘控制 操作需要相关专业技能:无

2总体设计

2.1函数定义说明

本设计中,定义了两个函数实现P 、V 原语的操作,其中P (int i )函数实现了i 方向上车辆等待数目减一,车辆编号增一以及输出的功能,V (int i)函数实现了时间的增加,交通转换灯的转换,无车标志的转换以及输出的功能。同时定义了东西调度函数ETW ()和南北调度函数STN (),最后当然定义了main ()来调用上述函数实现动态演示及预测功能

2.2结构设计说明

为了实现题设的要求,在VC++6.0环境下编译实现,整个系统的主要流程设计为如下步骤: 1. 定义全局变量用来存放实验所需基本信息 2.change 函数实现交换无车标志的功能 3.P 函数模拟P 原语的功能 4.V 函数模拟V 原语的功能

5.ETW 函数实现东西方向的车辆调度 6.STN 函数实现南北方向的车辆调度

7.main 函数实现程序的输入接口以及模拟演示

2.3算法流程图

2.4数据结构

为了实现题设的要求,在VC++6.0环境下编译实现,整个系统的主要流程设计为如下步骤:

1. 定义全局变量用来存放实验所需基本信息

2.change 函数实现交换无车标志的功能 3.P 函数模拟P 原语的功能

3详细设计

3.1模块描述

图3-1 交通信号灯模拟程序功能模块图

3.2核心函数的设计

设计P (int i )函数用来实现从i (东西南北)方向等待车辆中挑出当前的第一个并让其通行,同时记录此车的编号,输出此车的发车时间,代码如下:

void P(int i) //P函数,i 为方向判断标志 {

if(Max[i]>0) {

Max[i] = Max[i]-1;//i方向上的车辆等待数目减一 R[i]++;//当前车辆编号 if((PS-1)==i&&R[i]==PN)

PT = Time;//保存预测时间

cout

}

if(Max[++i]>0) {

Max[i] = Max[i]-1; R[i]++;

if((PS-1)==i&&R[i]==PN)

PT = Time;

cout

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

void V(int i) //V函数,i 为方向判断标志 {

Time=Time+4;//时间流逝 if(Max[i]>=0) {

if(Max[i]==0)

Max[i]=-1;

}

cout

}

if(Max[++i]>=0) {

if(Max[i]==0)

Max[i]=-1;

cout

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

void ETW()//东西调度函数 { }

void STN()//南北调度函数 {

if(L[1]==0)

change();

if(L[0]==0)//若为红灯则交换

change(); }

T=T-4;//绿灯时间减少 if(T

change(); int temp;//换灯 temp = L[0]; L[0] = L[1]; L[1] = temp;

T = 30-Time%30;//修正红绿灯时间

while(T>0&&L[0]==1&&EW==1)//绿灯有时间且南北无车 { }

int b = 0; P(b); V(b);

while(T>0&&L[1]==1&&SN==1)//绿灯有时间且东西无车 }

{ }

int a = 2; P(a); V(a);

3.2主函数的设计

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

int main() {

cout

cout>a; if(a==1) { } if(a==2) { }

L[0] = 1; L[1] = 0; L[0] = 0; L[1] = 1;

cout

cin>>Max[0]>>Max[1]>>Max[2]>>Max[3];

cout>PS;

cout>PN;

while(Max[0]!=-1&&Max[1]!=-1&&Max[2]!=-1&&Max[3]!=-1)//调度函数

{ }

cout

ETW(); STN();

4. 系统调试

交通信号灯模拟程序的运行说明如下:

1、按照系统提示一步一步向下走即可顺利执行程序。

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

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

本系统是一款多功能,操作方便,界面友好的软件。软件所提供的所有功能都可以通过键盘操作实现,简单易行,会给用户的相关操作带来很大方便。

5程序运行结果

1. 系统初始界面如图5-1所示。

图5-1

2. 选择东西方信号灯状态

图5-2

3. 选择红绿灯状态后会出现图5-3的界面。

图5-3

4. 依次输入四个方向的车的数量之后出现如图5-4所示的画面。

图5-4

5. 选择预测方向之后会出现如果5-5所示的画面。

图5-5

6. 输入预测的车辆编号之后会直接开始执行,出现如图5-6所示的画面。

图5-6

7. 在运行过程中遇到红绿灯切换的状态,如图5-7所示

5-7

8. 最终运行完毕后,程序会给出相应预测的结果,内容如图5-8所示。

图5-8

6 心得体会

两周周的课程设计结束了,我的课程设计题目是交通信号灯模拟,通过课程设计我 对P 操作和V 操作又有了更深入的认识,同时更加熟练的掌握了利用VC++6.0去解决这类模拟问题的方法。

刚开始接触到课题感觉到无从下手,不知道P 、V 操作要从那方面入手,后来通过逐步的思考,认真的研究逐步的建立了整个宏观的流程,然后就是一段时间的埋头苦干,狂敲代码。这就告诉我们理论与实践的关系。想到不一定能做到,但做到了一定会想到,做到不一定有想象的那么难。只要你愿意做,就一定能做到。放手去做吧。当然课设也有很多的不足,由于编译环境的限制无法实现程序的互斥执行,将是今后研究的重点。

最后,在此我要感谢给于过我帮助的指导老师和热心的同学们,谢谢大家,我也会继续努力。

7附录

7.1 源代码

交通信号灯模拟: #include #include #include #include using namespace std; int Max[4]; int Time=0; int R[30];

int PS=1,PN=1,PT=1,SN=0,EW=1; int T=30; int L[2]; char FX[4]; void P(int); void V(int); void change(); void STN(); void ETW();

void P(int i) //P函数,i 为方向判断标志 {

if(Max[i]>0) {

Max[i] = Max[i]-1;//i方向上的车辆等待数目减一 R[i]++;//当前车辆编号 if((PS-1)==i&&R[i]==PN)

PT=Time;//保存预测时间

cout

}

if(Max[++i]>0) { }

Max[i] = Max[i]-1; R[i]++;

if((PS-1)==i&&R[i]==PN)

PT = Time;

cout

void V(int i) //V函数,i 为方向判断标志 {

Time=Time+4;//时间流逝 if(Max[i]>=0) {

if(Max[i]==0)

Max[i]=-1;

cout

if(Max[++i]>=0) {

if(Max[i]==0)

Max[i]=-1;

cout

T=T-4;//绿灯时间减少 if(T

change();

}

}

temp = L[0]; L[0] = L[1]; L[1] = temp;

T = 30-Time%30;//修正红绿灯时间

void ETW()//东西调度函数 { }

void STN()//南北调度函数 {

if(L[1]==0)

change();

if(L[0]==0)//若为红灯则交换

change();

while(T>0&&L[0]==1&&EW==1)//绿灯有时间且南北无车 { }

int b = 0; P(b); V(b);

while(T>0&&L[1]==1&&SN==1)//绿灯有时间且东西无车 }

void change() {

{ }

int a = 2; P(a); V(a);

cout

int ss;

ss=SN;

SN=EW;

EW=ss;

Sleep(2000);

}

int main()

{

int a;

char b;

for(;;)

{

cout

*********************"

cin>>b;

if(b=='Y'||b=='y')

break;

else

cout

}

system("cls");

while(1)

{

cout

cout

cout

cout

int a;

cin>>a;

通信号灯模拟系统

} if(a==1) { } if(a==2) { } L[0] = 1; L[1] = 0; break; L[0] = 0; L[1] = 1; break; cout>Max[0]>>Max[1]>>Max[2]>>Max[3];//输入各方位车辆数量 cout>PS; cout>PN;

Time = 0;

T =32;

EW = 1; SN = 1; FX[0]='E'; FX[1]='W'; FX[2]='S'; FX[3]='N';

while(Max[0]!=-1&&Max[1]!=-1&&Max[2]!=-1&&Max[3]!=-1)//表示四个方向有车循环,无车就停止循环

}

{ } cout

7.2参考文献

[1] 胡志刚,谭长庚等,《计算机操作系统》,中南大学出版社2005年

[2] 罗宇,邹鹏等,《操作系统》(第二版),电子工业出版社2007年4月

[3] 汤子瀛,哲风屏,汤小冉等,《计算机操作系统》,西安电子科技大学出社,2001年8月

[4] 张尧学,史美林,《计算机操作系统课程》,清华大学出版社,2000年

[5] 庞丽萍,《操作系统原理》,华中理工大学出版社,2000年

[6] 马季兰等Linux 操作系统,电子工业出版社2002年

[7] 任爱华,李鹏,刘方毅,操作系统实验指导,清华大学出版社,2004年

[8] 谭浩强著.C 程序设计,清华大学出版社,1999年12月第2版

[9] 谭浩强著.C++程序设计实践指导,清华大学出版社,2005年7月底1版

8评分表

计算机与通信学院课程设计评分表

教师签名:

日 期:

课 程 设 计 报 告

课程名称 操作系统 课题名称交通信号灯问题

专 业班 级 1301班 学 号 [1**********]1 姓 名李世伟

2016 年 6 月 18 日

湖南工程学院 课 程 设 计 任 务 书

课程名称 操作系统

课 题 交通信号灯问题

专业班级 信息管理与信息系统 学生姓名 李世伟

学 号 [1**********]1

指导老师 谢 雅 审 批

任务书下达日期 2016 年 6 月 3 日 任务完成日期 2016年 6 月 17 日

一、设计内容与设计要求

1. 课程设计目的:

《操作系统》课程设计是信管专业实践性环节之一,是学习完《操作系统》课程后进行的一次较全面的综合练习。其目的在于加深对操作系统的理论、方法和基础知识的理解,掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,培养学生的系统设计能力,并了解操作系统的发展动向和趋势。

进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程的学习和实验,以及毕业设计的完成打下扎实的基础。

2. 课题题目

交通信号灯问题

问题描述:一个十字路口,共有四组红绿灯,每个路口的车辆都遵循“红灯停,绿灯行”的原则,假设将每一台汽车都作为一个进程,请设计良好的机制,展示出合理的“十字路口交通管理”情况。

车辆通行设定:路口宽度不限,对一个路口而言,只有当一辆车通过路口(越过对面路口的交通灯后),其后续车辆才能继续通过交通灯,车辆通过路口的时间可以固定,可以自行计算。

进程的互斥:交通灯进程实际上是互斥的,即不能同时为红或者同时为绿。 进程的消息通信或其通信方式:对车辆进程而言,每一个车辆在通过路口前,必须确认前面的车辆已经通过了路口。

进程的调度:停留在一个路口的车辆,决定其前进或等候的因素是交通灯和前面车辆的状态,需要设计一个良好的进程调度机制来控制所有车辆的通行。

3. 设计要求:

1.根据自己对应的课题完成以下主要工作:

(1). 分析设计要求,给出解决方案,建立必要的数据结构,然后设计总体流程(包

括界面)、详细设计必要的算法,并最终显示结果。基于WINDOWS 或LINUX 操作系统都可以,用何种编程语言都有可以。

(2). 提交设计报告,包括设计要求、设计思想流程、设计所涉及的主要数据结构、

程序清单、运行结果、设计心得、参考资料等。

(3). 严禁抄袭,复制设计内容,查出后相关同学设计成绩以零分处理。 (4). 所提交源程序应是能够运行通过的完整程序。

(5). 提交不少于5000字的课程设计报告,含系统说明,系统功能图,流程图,

程序设计说明,源程序清单

2. 设计过程中既要虚心接受老师的指导,又要充分发挥主观能动性、独立思考、努力钻研、勤于实践、勇于创新。

3.在设计过程中,要严格要求自己,树立严密、严谨的科学态度,必须按时、保质、保量完成任务。要求独立完成规定的设计内容,不得弄虚作假,不准抄袭或拷贝他人的程序或其他内容。

4.不得迟到、早退、旷课。缺课节数达两次以上者,成绩按不及格处理。

二、进度安排

第 15 周 星期一 14:30—18:30 星期三 14:30—18:30 星期四 14:30—18:30 第 16 周 星期二 14:30—18:30 星期三 14:30—18:30 星期四 14:30—18:30

目 录

1 系统需求分析 ............................................................... 1

1.1设计要求 . ............................................................. 1 1.2课程设计目的 . ......................................................... 1 1.3解决方案 . ............................................................. 1 1.4系统开发与运行环境 . ................................................... 2 2 总体设计 ................................................................... 2

2.1函数定义说明 . ......................................................... 2 2.2结构设计说明 . ......................................................... 3 2.3算法流程图 . ............................................................... 3

2.4数据结构 . ............................................................. 4 3 详细设计 ................................................................... 4

3.1 模块描述 ............................................................. 4 3.2 核心函数设计 ......................................................... 5 3.3主函数的设计 . ......................................................... 7 4 系统调试 ................................................................... 9 5 程序运行结果 ............................................................... 9 6 心得体会 .................................................. 错误!未定义书签。 7附录 . ...................................................... 错误!未定义书签。

7.1 源代码 .............................................................. 13 7.2 参考文献 ............................................................ 19 8 评分表 .................................................................... 20

1 系统需求分析

1.1 设计要求

一个十字路口, 共有四组红绿灯, 每个路口的车辆都遵循" 红灯停, 绿灯行" 的原则, 假设将每一台汽车都作为一个进程, 请设计良好的机制, 展示出合理的" 十字路口交通管理" 情况.

车辆通行设定:路口宽度不限, 对一个路口而言, 只有当一辆车通过路口(越过对面路口的交通灯后) 后, 其后续车辆才能继续通过交通灯, 车辆通过路口的时间可以固定, 可以自行计算。

进程的互斥:交通灯进程实际上是互斥的, 即不能同时为红或者同时为绿.

进程的消息通信或其他通信方式:对车辆进程而言, 每一个车辆在通过路口前, 必须确认前面的车辆已经通过了路口.

进程的调度:停留在一个路口的车辆, 决定其前进或等候的因素是交通灯和前面车辆的状态, 需要设计一个良好的进程调度机制来控制所有车辆的通行。

1.2课程设计目的

了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。

1.3 解决方案

根据设计要求,在VC++6.0环境下编译,设计了一个能够实现自由模拟某一时段交通状况并能预测某辆车需要多久才能到达路口的系统程序,改程序达到了设计要求,成功地实现了要求功能。

1.4系统开发与运行环境

代码实现:C++语言程序

开发工具:Microsoft Visual C++ 6.0 运行环境:windows XP或更高版本操作系统 执行方式:文件打开后直接执行

窗口界面:MS-DOS 窗口界面 操作方式:全键盘控制 操作需要相关专业技能:无

2总体设计

2.1函数定义说明

本设计中,定义了两个函数实现P 、V 原语的操作,其中P (int i )函数实现了i 方向上车辆等待数目减一,车辆编号增一以及输出的功能,V (int i)函数实现了时间的增加,交通转换灯的转换,无车标志的转换以及输出的功能。同时定义了东西调度函数ETW ()和南北调度函数STN (),最后当然定义了main ()来调用上述函数实现动态演示及预测功能

2.2结构设计说明

为了实现题设的要求,在VC++6.0环境下编译实现,整个系统的主要流程设计为如下步骤: 1. 定义全局变量用来存放实验所需基本信息 2.change 函数实现交换无车标志的功能 3.P 函数模拟P 原语的功能 4.V 函数模拟V 原语的功能

5.ETW 函数实现东西方向的车辆调度 6.STN 函数实现南北方向的车辆调度

7.main 函数实现程序的输入接口以及模拟演示

2.3算法流程图

2.4数据结构

为了实现题设的要求,在VC++6.0环境下编译实现,整个系统的主要流程设计为如下步骤:

1. 定义全局变量用来存放实验所需基本信息

2.change 函数实现交换无车标志的功能 3.P 函数模拟P 原语的功能

3详细设计

3.1模块描述

图3-1 交通信号灯模拟程序功能模块图

3.2核心函数的设计

设计P (int i )函数用来实现从i (东西南北)方向等待车辆中挑出当前的第一个并让其通行,同时记录此车的编号,输出此车的发车时间,代码如下:

void P(int i) //P函数,i 为方向判断标志 {

if(Max[i]>0) {

Max[i] = Max[i]-1;//i方向上的车辆等待数目减一 R[i]++;//当前车辆编号 if((PS-1)==i&&R[i]==PN)

PT = Time;//保存预测时间

cout

}

if(Max[++i]>0) {

Max[i] = Max[i]-1; R[i]++;

if((PS-1)==i&&R[i]==PN)

PT = Time;

cout

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

void V(int i) //V函数,i 为方向判断标志 {

Time=Time+4;//时间流逝 if(Max[i]>=0) {

if(Max[i]==0)

Max[i]=-1;

}

cout

}

if(Max[++i]>=0) {

if(Max[i]==0)

Max[i]=-1;

cout

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

void ETW()//东西调度函数 { }

void STN()//南北调度函数 {

if(L[1]==0)

change();

if(L[0]==0)//若为红灯则交换

change(); }

T=T-4;//绿灯时间减少 if(T

change(); int temp;//换灯 temp = L[0]; L[0] = L[1]; L[1] = temp;

T = 30-Time%30;//修正红绿灯时间

while(T>0&&L[0]==1&&EW==1)//绿灯有时间且南北无车 { }

int b = 0; P(b); V(b);

while(T>0&&L[1]==1&&SN==1)//绿灯有时间且东西无车 }

{ }

int a = 2; P(a); V(a);

3.2主函数的设计

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

int main() {

cout

cout>a; if(a==1) { } if(a==2) { }

L[0] = 1; L[1] = 0; L[0] = 0; L[1] = 1;

cout

cin>>Max[0]>>Max[1]>>Max[2]>>Max[3];

cout>PS;

cout>PN;

while(Max[0]!=-1&&Max[1]!=-1&&Max[2]!=-1&&Max[3]!=-1)//调度函数

{ }

cout

ETW(); STN();

4. 系统调试

交通信号灯模拟程序的运行说明如下:

1、按照系统提示一步一步向下走即可顺利执行程序。

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

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

本系统是一款多功能,操作方便,界面友好的软件。软件所提供的所有功能都可以通过键盘操作实现,简单易行,会给用户的相关操作带来很大方便。

5程序运行结果

1. 系统初始界面如图5-1所示。

图5-1

2. 选择东西方信号灯状态

图5-2

3. 选择红绿灯状态后会出现图5-3的界面。

图5-3

4. 依次输入四个方向的车的数量之后出现如图5-4所示的画面。

图5-4

5. 选择预测方向之后会出现如果5-5所示的画面。

图5-5

6. 输入预测的车辆编号之后会直接开始执行,出现如图5-6所示的画面。

图5-6

7. 在运行过程中遇到红绿灯切换的状态,如图5-7所示

5-7

8. 最终运行完毕后,程序会给出相应预测的结果,内容如图5-8所示。

图5-8

6 心得体会

两周周的课程设计结束了,我的课程设计题目是交通信号灯模拟,通过课程设计我 对P 操作和V 操作又有了更深入的认识,同时更加熟练的掌握了利用VC++6.0去解决这类模拟问题的方法。

刚开始接触到课题感觉到无从下手,不知道P 、V 操作要从那方面入手,后来通过逐步的思考,认真的研究逐步的建立了整个宏观的流程,然后就是一段时间的埋头苦干,狂敲代码。这就告诉我们理论与实践的关系。想到不一定能做到,但做到了一定会想到,做到不一定有想象的那么难。只要你愿意做,就一定能做到。放手去做吧。当然课设也有很多的不足,由于编译环境的限制无法实现程序的互斥执行,将是今后研究的重点。

最后,在此我要感谢给于过我帮助的指导老师和热心的同学们,谢谢大家,我也会继续努力。

7附录

7.1 源代码

交通信号灯模拟: #include #include #include #include using namespace std; int Max[4]; int Time=0; int R[30];

int PS=1,PN=1,PT=1,SN=0,EW=1; int T=30; int L[2]; char FX[4]; void P(int); void V(int); void change(); void STN(); void ETW();

void P(int i) //P函数,i 为方向判断标志 {

if(Max[i]>0) {

Max[i] = Max[i]-1;//i方向上的车辆等待数目减一 R[i]++;//当前车辆编号 if((PS-1)==i&&R[i]==PN)

PT=Time;//保存预测时间

cout

}

if(Max[++i]>0) { }

Max[i] = Max[i]-1; R[i]++;

if((PS-1)==i&&R[i]==PN)

PT = Time;

cout

void V(int i) //V函数,i 为方向判断标志 {

Time=Time+4;//时间流逝 if(Max[i]>=0) {

if(Max[i]==0)

Max[i]=-1;

cout

if(Max[++i]>=0) {

if(Max[i]==0)

Max[i]=-1;

cout

T=T-4;//绿灯时间减少 if(T

change();

}

}

temp = L[0]; L[0] = L[1]; L[1] = temp;

T = 30-Time%30;//修正红绿灯时间

void ETW()//东西调度函数 { }

void STN()//南北调度函数 {

if(L[1]==0)

change();

if(L[0]==0)//若为红灯则交换

change();

while(T>0&&L[0]==1&&EW==1)//绿灯有时间且南北无车 { }

int b = 0; P(b); V(b);

while(T>0&&L[1]==1&&SN==1)//绿灯有时间且东西无车 }

void change() {

{ }

int a = 2; P(a); V(a);

cout

int ss;

ss=SN;

SN=EW;

EW=ss;

Sleep(2000);

}

int main()

{

int a;

char b;

for(;;)

{

cout

*********************"

cin>>b;

if(b=='Y'||b=='y')

break;

else

cout

}

system("cls");

while(1)

{

cout

cout

cout

cout

int a;

cin>>a;

通信号灯模拟系统

} if(a==1) { } if(a==2) { } L[0] = 1; L[1] = 0; break; L[0] = 0; L[1] = 1; break; cout>Max[0]>>Max[1]>>Max[2]>>Max[3];//输入各方位车辆数量 cout>PS; cout>PN;

Time = 0;

T =32;

EW = 1; SN = 1; FX[0]='E'; FX[1]='W'; FX[2]='S'; FX[3]='N';

while(Max[0]!=-1&&Max[1]!=-1&&Max[2]!=-1&&Max[3]!=-1)//表示四个方向有车循环,无车就停止循环

}

{ } cout

7.2参考文献

[1] 胡志刚,谭长庚等,《计算机操作系统》,中南大学出版社2005年

[2] 罗宇,邹鹏等,《操作系统》(第二版),电子工业出版社2007年4月

[3] 汤子瀛,哲风屏,汤小冉等,《计算机操作系统》,西安电子科技大学出社,2001年8月

[4] 张尧学,史美林,《计算机操作系统课程》,清华大学出版社,2000年

[5] 庞丽萍,《操作系统原理》,华中理工大学出版社,2000年

[6] 马季兰等Linux 操作系统,电子工业出版社2002年

[7] 任爱华,李鹏,刘方毅,操作系统实验指导,清华大学出版社,2004年

[8] 谭浩强著.C 程序设计,清华大学出版社,1999年12月第2版

[9] 谭浩强著.C++程序设计实践指导,清华大学出版社,2005年7月底1版

8评分表

计算机与通信学院课程设计评分表

教师签名:

日 期:


相关内容

  • 城市交通控制系统研究热点与现状
  • 城市交通控制系统研究热点与现状 周申培1,一,吴超仲1,严新平1 (1.武汉理工大学智能运输与研究中心,武汉430063: 2.武汉理工大学自动化学院,武汉430070) 摘要:随着城市化进程的加快和汽车的普及,交通问题已经成为困扰全世界的严重问题.作为智能交通系统的重要子系统之一,城市智能交通控制 ...

  • 浅谈交通管理与控制的关系
  • 浅谈交通管理与控制的关系 理论分析 交通管理与控制是交通工程学的主要研究对象之一.其内容涉及交通立法.法律性或行政性的管理措施.工程技术性的管理措施以及信号控制技术等各个方面,也就是实际工作中所谓"交通综合治理"中的各种治理措施. 1.交通管理与控制的概念 交通管理是对道路上的行 ...

  • 道路交通安全问题小论文
  • 城市道路交通问题 城市交通问题已经成为我国社会的难点和热点问题,在解决其对策上,大致可以分为两类:硬件对策--道路设施建设.交通工具改进.土地使用结构调整.土地开发强度控制等:软件对策--交通研究.观念更新.管理机制.交通政策.法规建设等.当前,各城市对硬件建设普遍重视,而软件建设则往往被忽略. 近 ...

  • 交通安全问题
  • 北斗导航系统对道路安全的影响 交通工程09-2班 陆建波 3090538210 目前的交通安全存在很多问题,具体来说,当前道路交通安全工作存在的问题主要体现在五个方面: 一是道路交通科学规划工作有待加强.由于历史等各方面原因,一些城市缺乏科学规划,道路建设滞后,公交分担率低,道路.停车供需矛盾突出. ...

  • 我国公共交通存在问题及对策分析
  • http://www.paper.edu.cn 我国公共交通存在问题及对策分析 马莉莉 孟祥辉 张广娟 河海大学交通学院海洋学院,江苏南京(210098) E-mail:[email protected] 摘要:随着我国经济的发展和人们生活水平的快速提高,我国的交通问题也在日趋严峻.公共交通是公认的效率最 ...

  • 智能交通系统
  • 学 号 课程作业 交通信息系统的发展 The development of transportation information system 学 班 成 指 生姓名 级 绩 交通班 导教师 土木工程学院 年 月 日 注:工作内容应为实质性工作,禁止如"论文整理.资料收集.打字等" ...

  • 人工智能在智能交通系统中的应用
  • 人工智能在智能交通系统中的应用术 严新平",吴超仲1',刘清∞,马晓风1' 1)武汉理工大学水路公路交通安全控制与装备教育部工程研究中心武汉, 2)武汉理工大学自动化学院,武汉,湖北,430063湖北,430063 ''摘要s智能交通系统是最近十多年发展起来的一个新兴领域,它的核心是智能,需要大量智 ...

  • 基于系统动力学的城市人均出行次数研究
  • STRATEGY &PLANNING OF TRANSPORT DEVELOPMENT 交通发展战略与规划 交通标准化·2010年5月上半月刊(总第220期) 基于 系统动力学的城市人均出行次数研究 李宇航,何世伟 (北京交通大学交通运输学院,北京100044) 摘要:人均出行次数是居民出行 ...

  • 城市交通需求管理的层次
  • 城市交通需求管理的层次 □ 陆华 随着城市经济迅速发展,人们出行频率和距离大幅增加,也导致了对交通工具需求结构的显著变化,大中城市交通拥挤状况不但没有好转反而有进一步恶化的趋势.事实上,中国包括北京在内的许多大城市所面临的交通问题,是世界发达国家大城市发展进程中曾经遇到的,他们有许多理论.方法和经验 ...

  • 昆明市城市交通拥堵的原因及对策分析
  • 华中科技大学 硕士学位论文 昆明市城市交通拥堵的原因及对策分析 姓名:李云飞 申请学位级别:硕士 专业:公共管理 指导教师:严丹屏 20050424 华中科技大学硕士学位论文 摘要 城市交通是城市管理的重要问题,城市交通拥堵是目前许多大中城市普遍面临 的城市顽症.为此,国内外许多学者对此问题进行了广 ...