操作系统。
课程设计。题目: 交通灯问题
专业: 计算机科学与技术
姓名廖俊军
学号09041129
学院: 信息工程学院
2023年 12 月 23 日。
一、 课程设计题目:
信号灯模拟程序。
1、设计目的:
一个十字路口,共有四组红绿灯,每个路口的车辆都遵循“红灯停、绿灯行”的原则,假设将每一台汽车都作为一个进程,请设计良好的机制,展示出合理的“十字路**通管理”情况。设计复杂路段信号灯控制,要求实现图形用户界面。
2、设计要求:
车辆数目:每个路口的车辆数目不超过5辆,程序能够提供参数来设定初始的车辆数目。
交通灯设定:初始情况一个路口为红灯、一个路口为绿灯;红灯变为绿灯的间隔为3秒,必须保持十字路**通灯的设定正确。
车辆通行设定:路口宽度不限,对一个路口而言,只有当一辆车通过路口(越过对面路口的交通灯后)后,其后续车辆才能继续通过交通灯,车辆通过路口的时间可以固定、可以自行计算,但是不能为3秒。(即必须体现交通灯对通行的管制)。
进程的互斥:交通灯进程实际上是互斥的,即不能同时为红或者同时为绿。
进程的消息通信或其他通信方式:对车辆进程而言,每一个车辆在通过路口前,必须确认前面的车辆已经通过了路口。
进程的调度:停留在一个路口的车辆,决定其前进或等候的因素是交通灯和前面车辆的状态,需要设计一个良好的进程调度机制来控制所有车辆的通行。
开发环境说明:
开发软件:microsoft visual studio 2010
二、 功能需求分析:
程序需实现以下功能:
车辆正常通过十字路口。
车辆都遵守交通规则。
合理的使用资源。
三、 概念设计:
根据程序功能需求本程序涉及实体很简单,包括车实体和灯实体,根据实体属性和实体间的联系进行设计。
1. 车实体。
这里我们需要解决四类车辆对象的各种功能和操作,所以在设计过程中添加如下四个用户控件(即是四个不同的类)
此四个类各种实现不同车道上的车的相关动作。如:运动。
2. 灯实体。
此次设计过程中,有一个极为重要的功能实现就是交通灯的计时和交通规则问题。这里在设计红绿灯的亮灯规则有如下波形图:
还有如下等函数来控制亮灯的颜色:
在通过各种判断和控制就实现了最终的交通灯问题。
开始按钮后,交通灯将按照一定的逻辑开始变换亮灯,于此同时将随机的产生各种不同的车辆对象,开始在道路上按规则进行运动。然后在车辆完成在道路上的运动时,合理撤销对象,释放其所占有的资源。
四、 用户界面设计。
道路设计:简单,交通灯为label,车道是背景**,没有进行加工,只是最简单的绘画。
下来车:上来车:
左来车:右来车:
运行界面:注:次车道为三车道,因为时间原因,车辆的左转和右转还没有实现,所以暂时只有直行的功能。
1. 红灯停。
车辆在还没有通过先时遇见红灯则**之外等待绿灯才能通行。
2. 绿灯行。
车辆在绿灯情况下运行。
3. 黄灯等待和通行问题。
当黄灯时,已经通过先的车辆继续通行,未通过的则等待。
4. 车辆间距问题。
前后车辆必须保持一定的车距。
五、 语言**:
1. main 类。
2. mycarleft 等。
3. 各种参数的解释。
arraylist用来存储各个方向的对象,上的bool都是用来记录各个灯的红、黄和绿的状态。
4. 控制交通灯颜色的函数(一个样式)
5. 交通灯控制。
#region 通§灯?控?制?
7int time = 0;
8private void timer1_tick(object sender, eventargs e)
10time++;
12if (time > 0 &&time < 30)
13if (time > 30)
14if (time ==1)
17light_sn_strandright();
19if (time ==31)
21light_sn_yellow();
23if (time ==36)
25light_sn_left();
27if (time ==66)
29light_snew_yellow();
31if (time ==71)
33light_ew_strandright();
35if (time ==101)
37light_ew_yellow();
39if (time ==106)
41light_ew_left();
43if (time ==136)
45light_sn_ew_yellow();
47if (time > 141)
49time = 0;
52endregion
使用timer控件计时来模拟进程,以time参数的值来调用不同的控制等的各个函数实现灯的亮。
53. 创建车对象。
54. private void timer2_tick(object sender, eventargs e)
rdmcar = new random();
57int carfrom =
rdmdrction = new random();
59int carto = 4);
61进?入¨?各自?的?道¨¤
62if(carfrom==1) /南?路¤口¨
65if (carto ==1)//左¨
67mycarbottom carbottom = new mycarbottom(carfrom, carto, scount_1, this);
68bottom_
69scount_1++;
71if (carto ==2)//直。
73mycarbottom carbottom = new mycarbottom(carfrom, carto, scount_2, this);
74bottom_
75scount_2++;
77if (carto ==3)//右¨°
79mycarbottom carbottom = new mycarbottom(carfrom, carto, scount_3, this);
80bottom_
81scount_3++;
86if(carfrom==2)//北路¤口¨
88if (carto ==1)//左¨
90mycartop cartop = new mycartop(carfrom, carto, ncount_1, this);
91top_
92ncount_1++;
95if (carto ==2)//直。
97mycartop cartop = new mycartop(carfrom, carto, ncount_2, this);
98top_
操作系统课程设计报告
西安郵電大學。院系名称 计算机学院。专业名称 软件工程。班级 1104 学生姓名 赵大伟。学号 8位 04113124 指导教师 舒新峰。设计起止时间 2013.11.10 2013.11.20 1 通过观察 分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在posix 规范中...
操作系统课程设计报告
课程设计。课程名称操作系统。题目名称多级文件系统 2 学生学院计算机学院 专业班级。学号。学生姓名。指导教师。年月日。目录。一 课程设计 6 二 开发工具及环境 6 三 设计内容 6 四 结构图 8 五 部分 9 六 运行截图 11 七 参考文献 15 八 心得体会 15 本课程设计要求设计一个模拟...
操作系统课程设计报告
实验一进程管理。一 实验目的。1 开发一个函数,建立进程控制块和资源控制块结构,并实现相关数据结构的初始化。2 开发一系列操作,由进程调用这些操作,达到控制进程申请或释放各种资源的目的。通过实验理解进程的概念,进程的组成 pcb结构 进程的并发执行和操作系统进行进程管理的相关原语 主要是进程的创建 ...