操作系统课程设计报告

发布 2022-10-05 12:12:28 阅读 6415

操作系统。

课程设计。题目: 交通灯问题

专业: 计算机科学与技术

姓名廖俊军

学号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结构 进程的并发执行和操作系统进行进程管理的相关原语 主要是进程的创建 ...