- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统课程设计报告---信号灯模拟程序
操作系统课程设计题目:交通灯问题专业:计算机科学与技术姓名:学号:学院:信息工程学院2011年12月23日课程设计题目:信号灯模拟程序1、设计目的:一个十字路口,共有四组红绿灯,每个路口的车辆都遵循“红灯停、绿灯行”的原则,假设将每一台汽车都作为一个进程,请设计良好的机制,展示出合理的“十字路口交通管理”情况。设计复杂路段信号灯控制,要求实现图形用户界面。2、设计要求:车辆数目:每个路口的车辆数目不超过5辆,程序能够提供参数来设定初始的车辆数目。交通灯设定:初始情况一个路口为红灯、一个路口为绿灯;红灯变为绿灯的间隔为3秒,必须保持十字路口交通灯的设定正确。车辆通行设定:路口宽度不限,对一个路口而言,只有当一辆车通过路口(越过对面路口的交通灯后)后,其后续车辆才能继续通过交通灯,车辆通过路口的时间可以固定、可以自行计算,但是不能为3秒。(即必须体现交通灯对通行的管制)。进程的互斥:交通灯进程实际上是互斥的,即不能同时为红或者同时为绿。进程的消息通信或其他通信方式:对车辆进程而言,每一个车辆在通过路口前,必须确认前面的车辆已经通过了路口。进程的调度:停留在一个路口的车辆,决定其前进或等候的因素是交通灯和前面车辆的状态,需要设计一个良好的进程调度机制来控制所有车辆的通行。开发环境说明:开发软件:Microsoft Visual studio 2010功能需求分析:程序需实现以下功能:车辆正常通过十字路口车辆都遵守交通规则合理的使用资源概念设计:根据程序功能需求本程序涉及实体很简单,包括车实体和灯实体,根据实体属性和实体间的联系进行设计。车实体这里我们需要解决四类车辆对象的各种功能和操作,所以在设计过程中添加如下四个用户控件(即是四个不同的类)此四个类各种实现不同车道上的车的相关动作。如:运动灯实体此次设计过程中,有一个极为重要的功能实现就是交通灯的计时和交通规则问题。这里在设计红绿灯的亮灯规则有如下波形图:还有如下等函数来控制亮灯的颜色:在通过各种判断和控制就实现了最终的交通灯问题。 开始按钮后,交通灯将按照一定的逻辑开始变换亮灯,于此同时将随机的产生各种不同的车辆对象,开始在道路上按规则进行运动。然后在车辆完成在道路上的运动时,合理撤销对象,释放其所占有的资源。用户界面设计道路设计:简单,交通灯为label,车道是背景图片,没有进行加工,只是最简单的绘画。下来车:上来车:左来车:右来车:运行界面:注:次车道为三车道,因为时间原因,车辆的左转和右转还没有实现,所以暂时只有直行的功能。红灯停车辆在还没有通过先时遇见红灯则在线之外等待绿灯才能通行。绿灯行车辆在绿灯情况下运行。黄灯等待和通行问题当黄灯时,已经通过先的车辆继续通行,未通过的则等待。车辆间距问题前后车辆必须保持一定的车距语言代码:main 类MyCarLeft等各种参数的解释ArrayList用来存储各个方向的对象,上的bool都是用来记录各个灯的红、黄和绿的状态。控制交通灯颜色的函数(一个样式)交通灯控制#region通a?§灯ì?控?制?int time = 0;privatevoid timer1_Tick(object sender, EventArgs e) { time++;btnstart.Text = time.ToString();if (time 0 time 30) label1.Left+=4;if (time 30) label1.Top+=4;if (time == 1) {light_SN_STRandRight(); }if (time == 31) {light_SN_yellow(); }if (time == 36) {light_SN_left(); }if (time == 66) {light_SNEW_yellow(); }if (time == 71) {light_EW_STRandRight(); }if (time == 101) {light_EW_yellow(); }if (time == 106) {light_EW_left(); }if (time == 136) {light_SN_EW_yellow(); }if (time 141) { time = 0;
文档评论(0)