2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  操作系統(tǒng)</b></p><p><b>  課程設(shè)計(jì)</b></p><p>  題 目: 交通燈問題 </p><p>  專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) </p><p>  姓 名:

2、 </p><p>  學(xué) 號(hào): </p><p>  學(xué) 院: 信息工程學(xué)院 </p><p>  2011年 12 月 23 日</p><p><b>  課程設(shè)計(jì)題目:</b></p><p><b>  信號(hào)燈模擬

3、程序</b></p><p><b>  1、設(shè)計(jì)目的:</b></p><p>  一個(gè)十字路口,共有四組紅綠燈,每個(gè)路口的車輛都遵循“紅燈停、綠燈行”的原則,假設(shè)將每一臺(tái)汽車都作為一個(gè)進(jìn)程,請(qǐng)?jiān)O(shè)計(jì)良好的機(jī)制,展示出合理的“十字路口交通管理”情況。設(shè)計(jì)復(fù)雜路段信號(hào)燈控制,要求實(shí)現(xiàn)圖形用戶界面。</p><p><b> 

4、 2、設(shè)計(jì)要求:</b></p><p>  車輛數(shù)目:每個(gè)路口的車輛數(shù)目不超過(guò)5輛,程序能夠提供參數(shù)來(lái)設(shè)定初始的車輛數(shù)目。</p><p>  交通燈設(shè)定:初始情況一個(gè)路口為紅燈、一個(gè)路口為綠燈;紅燈變?yōu)榫G燈的間隔為3秒,必須保持十字路口交通燈的設(shè)定正確。</p><p>  車輛通行設(shè)定:路口寬度不限,對(duì)一個(gè)路口而言,只有當(dāng)一輛車通過(guò)路口(越過(guò)對(duì)面路

5、口的交通燈后)后,其后續(xù)車輛才能繼續(xù)通過(guò)交通燈,車輛通過(guò)路口的時(shí)間可以固定、可以自行計(jì)算,但是不能為3秒。(即必須體現(xiàn)交通燈對(duì)通行的管制)。</p><p>  進(jìn)程的互斥:交通燈進(jìn)程實(shí)際上是互斥的,即不能同時(shí)為紅或者同時(shí)為綠。</p><p>  進(jìn)程的消息通信或其他通信方式:對(duì)車輛進(jìn)程而言,每一個(gè)車輛在通過(guò)路口前,必須確認(rèn)前面的車輛已經(jīng)通過(guò)了路口。</p><p&g

6、t;  進(jìn)程的調(diào)度:停留在一個(gè)路口的車輛,決定其前進(jìn)或等候的因素是交通燈和前面車輛的狀態(tài),需要設(shè)計(jì)一個(gè)良好的進(jìn)程調(diào)度機(jī)制來(lái)控制所有車輛的通行。</p><p><b>  開發(fā)環(huán)境說(shuō)明:</b></p><p>  開發(fā)軟件:Microsoft Visual studio 2010</p><p><b>  功能需求分析:</

7、b></p><p>  程序需實(shí)現(xiàn)以下功能:</p><p>  車輛正常通過(guò)十字路口</p><p><b>  車輛都遵守交通規(guī)則</b></p><p><b>  合理的使用資源</b></p><p><b>  概念設(shè)計(jì):</b>&l

8、t;/p><p>  根據(jù)程序功能需求本程序涉及實(shí)體很簡(jiǎn)單,包括車實(shí)體和燈實(shí)體,根據(jù)實(shí)體屬性和實(shí)體間的聯(lián)系進(jìn)行設(shè)計(jì)。</p><p><b>  車實(shí)體</b></p><p>  這里我們需要解決四類車輛對(duì)象的各種功能和操作,所以在設(shè)計(jì)過(guò)程中添加如下四個(gè)用戶控件(即是四個(gè)不同的類)</p><p>  此四個(gè)類各種實(shí)現(xiàn)不同

9、車道上的車的相關(guān)動(dòng)作。如:運(yùn)動(dòng)</p><p><b>  燈實(shí)體</b></p><p>  此次設(shè)計(jì)過(guò)程中,有一個(gè)極為重要的功能實(shí)現(xiàn)就是交通燈的計(jì)時(shí)和交通規(guī)則問題。這里在設(shè)計(jì)紅綠燈的亮燈規(guī)則有如下波形圖:</p><p>  還有如下等函數(shù)來(lái)控制亮燈的顏色:</p><p>  在通過(guò)各種判斷和控制就實(shí)現(xiàn)了最終的交通

10、燈問題。</p><p>  開始按鈕后,交通燈將按照一定的邏輯開始變換亮燈,于此同時(shí)將隨機(jī)的產(chǎn)生各種不同的車輛對(duì)象,開始在道路上按規(guī)則進(jìn)行運(yùn)動(dòng)。然后在車輛完成在道路上的運(yùn)動(dòng)時(shí),合理撤銷對(duì)象,釋放其所占有的資源。</p><p><b>  用戶界面設(shè)計(jì)</b></p><p><b>  道路設(shè)計(jì):</b></p&

11、gt;<p>  簡(jiǎn)單,交通燈為label,車道是背景圖片,沒有進(jìn)行加工,只是最簡(jiǎn)單的繪畫。</p><p><b>  下來(lái)車:</b></p><p><b>  上來(lái)車:</b></p><p><b>  左來(lái)車:</b></p><p><b>

12、;  右來(lái)車:</b></p><p><b>  運(yùn)行界面:</b></p><p>  注:次車道為三車道,因?yàn)闀r(shí)間原因,車輛的左轉(zhuǎn)和右轉(zhuǎn)還沒有實(shí)現(xiàn),所以暫時(shí)只有直行的功能。</p><p><b>  紅燈停</b></p><p>  車輛在還沒有通過(guò)先時(shí)遇見紅燈則在線之外等待綠

13、燈才能通行。</p><p><b>  綠燈行</b></p><p>  車輛在綠燈情況下運(yùn)行。</p><p><b>  黃燈等待和通行問題</b></p><p>  當(dāng)黃燈時(shí),已經(jīng)通過(guò)先的車輛繼續(xù)通行,未通過(guò)的則等待。</p><p><b>  車輛間

14、距問題</b></p><p>  前后車輛必須保持一定的車距</p><p><b>  語(yǔ)言代碼:</b></p><p><b>  main 類</b></p><p>  MyCarLeft 等</p><p><b>  各種參數(shù)的解釋&l

15、t;/b></p><p>  ArrayList用來(lái)存儲(chǔ)各個(gè)方向的對(duì)象,上的bool都是用來(lái)記錄各個(gè)燈的紅、黃和綠的狀態(tài)。</p><p>  控制交通燈顏色的函數(shù)(一個(gè)樣式)</p><p><b>  交通燈控制</b></p><p>  #region 通ª¡§燈Ì

16、?控?制?</p><p>  int time = 0;</p><p>  private void timer1_Tick(object sender, EventArgs e)</p><p><b>  {</b></p><p><b>  time++;</b></p>

17、<p>  btnstart.Text = time.ToString();</p><p>  if (time > 0 && time < 30) label1.Left+=4;</p><p>  if (time > 30) label1.Top+=4;</p><p>  if (time == 1)</p

18、><p><b>  {</b></p><p>  light_SN_STRandRight();</p><p><b>  }</b></p><p>  if (time == 31)</p><p><b>  {</b></p>&

19、lt;p>  light_SN_yellow();</p><p><b>  }</b></p><p>  if (time == 36)</p><p><b>  {</b></p><p>  light_SN_left();</p><p><b>

20、;  }</b></p><p>  if (time == 66)</p><p><b>  {</b></p><p>  light_SNEW_yellow();</p><p><b>  }</b></p><p>  if (time == 71)&

21、lt;/p><p><b>  {</b></p><p>  light_EW_STRandRight();</p><p><b>  }</b></p><p>  if (time == 101)</p><p><b>  {</b></p&

22、gt;<p>  light_EW_yellow();</p><p><b>  }</b></p><p>  if (time == 106)</p><p><b>  {</b></p><p>  light_EW_left();</p><p>&

23、lt;b>  }</b></p><p>  if (time == 136)</p><p><b>  {</b></p><p>  light_SN_EW_yellow();</p><p><b>  }</b></p><p>  if (tim

24、e > 141)</p><p><b>  {</b></p><p><b>  time = 0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  #endre

25、gion</p><p>  使用Timer控件計(jì)時(shí)來(lái)模擬進(jìn)程,以time參數(shù)的值來(lái)調(diào)用不同的控制等的各個(gè)函數(shù)實(shí)現(xiàn)燈的亮。</p><p><b>  創(chuàng)建車對(duì)象</b></p><p>  private void timer2_Tick(object sender, EventArgs e)</p><p><

26、b>  {</b></p><p>  System.Random rdmCar = new Random();</p><p>  int carFrom = rdmCar.Next(1,5);</p><p>  System.Random rdmDrction = new Random();</p><p>  int

27、 carTo = rdmDrction.Next(1, 4);</p><p>  //進(jìn)?入¨?各¡Â自Á?的Ì?道̨¤</p><p>  if(carFrom==1) //南?路¡¤口¨²</p><p><b>  {</

28、b></p><p>  if (carTo == 1)//左Á¨®</p><p><b>  {</b></p><p>  MyCarBottom carbottom = new MyCarBottom(carFrom, carTo, Scount_1, this);</p><p&

29、gt;  bottom_1.Add(carbottom);</p><p>  Scount_1++;</p><p><b>  }</b></p><p>  if (carTo == 2)//直¡À</p><p><b>  {</b></p><p&

30、gt;  MyCarBottom carbottom = new MyCarBottom(carFrom, carTo, Scount_2, this);</p><p>  bottom_2.Add(carbottom);</p><p>  Scount_2++;</p><p><b>  }</b></p><p&g

31、t;  if (carTo == 3)//右®¨°</p><p><b>  {</b></p><p>  MyCarBottom carbottom = new MyCarBottom(carFrom, carTo, Scount_3, this);</p><p>  bottom_3.Add(carbot

32、tom);</p><p>  Scount_3++;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(carFrom==2)//北À¡À路¡¤口¨²</p>

33、<p><b>  {</b></p><p>  if (carTo == 1)//左Á¨®</p><p><b>  {</b></p><p>  MyCarTop cartop = new MyCarTop(carFrom, carTo, Ncount_1, this);

34、</p><p>  top_1.Add(cartop);</p><p>  Ncount_1++;</p><p><b>  }</b></p><p>  if (carTo == 2)//直¡À</p><p><b>  {</b></p

35、><p>  MyCarTop cartop = new MyCarTop(carFrom, carTo, Ncount_2, this);</p><p>  top_2.Add(cartop);</p><p>  Ncount_2++;</p><p><b>  }</b></p><p> 

36、 if (carTo == 3)//右®¨°</p><p><b>  {</b></p><p>  MyCarTop cartop = new MyCarTop(carFrom, carTo, Ncount_3, this);</p><p>  top_3.Add(cartop);</p>&

37、lt;p>  Ncount_3++;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(carFrom==3)//東?路¡¤口¨²</p><p><b>  {</b><

38、;/p><p>  if (carTo == 1)//左Á¨®</p><p><b>  {</b></p><p>  MyCarRight carright = new MyCarRight(carFrom, carTo, Ecount_1, this);</p><p>  right_

39、1.Add(carright);</p><p>  Ecount_1++;</p><p><b>  }</b></p><p>  if (carTo == 2)//直¡À</p><p><b>  {</b></p><p>  MyCarRig

40、ht carright = new MyCarRight(carFrom, carTo, Ecount_2, this);</p><p>  right_2.Add(carright);</p><p>  Ecount_2++;</p><p><b>  }</b></p><p>  if (carTo == 3

41、)//右®¨°</p><p><b>  {</b></p><p>  MyCarRight carright = new MyCarRight(carFrom, carTo, Ecount_3, this);</p><p>  right_3.Add(carright);</p><p&

42、gt;  Ecount_3++;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if (carFrom==4)//西¡Â路¡¤口¨²</p><p><b>  {</b

43、></p><p>  if (carTo == 1)//左Á¨®</p><p><b>  {</b></p><p>  MyCarLeft carleft = new MyCarLeft(carFrom, carTo, Wcount_1, this);</p><p>  le

44、ft_1.Add(carleft);</p><p>  Wcount_1++;</p><p><b>  }</b></p><p>  if (carTo == 2)//直¡À</p><p><b>  {</b></p><p>  MyCarL

45、eft carleft = new MyCarLeft(carFrom, carTo, Wcount_2, this);</p><p>  left_2.Add(carleft);</p><p>  Wcount_2++;</p><p><b>  }</b></p><p>  if (carTo == 3)//

46、右®¨°</p><p><b>  {</b></p><p>  MyCarLeft carleft = new MyCarLeft(carFrom, carTo, Wcount_3, this);</p><p>  left_3.Add(carleft);</p><p>  Wco

47、unt_3++;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  隨機(jī)產(chǎn)生兩個(gè)數(shù)值來(lái)確定車輛所在的車道。</p><p>  MyCarBottom carbot

48、tom = new MyCarBottom(carFrom, carTo, Scount_1, this);</p><p>  bottom_1.Add(carbottom);</p><p>  這是向相應(yīng)的類傳送參數(shù),并且每生產(chǎn)一個(gè)對(duì)象則在相應(yīng)的ArryList中添加一個(gè)值。</p><p><b>  具體車的控制</b></p&

49、gt;<p>  private void MyCarRight_Load(object sender, EventArgs e)</p><p><b>  {</b></p><p>  timer1.Start();</p><p><b>  }</b></p><p>  p

50、rivate void timer1_Tick(object sender, EventArgs e)</p><p><b>  {</b></p><p><b>  try</b></p><p><b>  {</b></p><p>  bool _index = f

51、alse;</p><p>  int i = 0;</p><p>  if (_form.right_1.Contains(this))</p><p><b>  {</b></p><p>  i = _form.right_1.IndexOf(this);</p><p>  if (i

52、 > 0)</p><p><b>  {</b></p><p>  MyCarRight carright = (MyCarRight)_form.right_1[i - 1];</p><p>  if (this.Left - carright.Left > 90)</p><p><b>

53、  {</b></p><p>  _index = true;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if (this.Left >

54、368 && (_index||i==0))//已°?經(jīng)-紅¨¬燈Ì?但Ì?是º?還1沒?有®D超?出?線? 并¡é且¨°與®?前¡ã面?車¦Ì輛¢?距¨¤離¤?較?大䨮</p>

55、;<p><b>  x1 -= 4;</b></p><p>  if (_form.right_2.Contains(this))</p><p><b>  {</b></p><p>  i = _form.right_2.IndexOf(this);</p><p>  if

56、 (i > 0)</p><p><b>  {</b></p><p>  MyCarRight carright = (MyCarRight)_form.right_2[i - 1];</p><p>  if (this.Left - carright.Left > 90)</p><p><b&

57、gt;  {</b></p><p>  _index = true;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if (this.Left &

58、gt; 368 && (_index || i == 0))//已°?經(jīng)-紅¨¬燈Ì?但Ì?是º?還1沒?有®D超?出?線? 并¡é且¨°與®?前¡ã面?車¦Ì輛¢?距¨¤離¤?較?大䨮&l

59、t;/p><p><b>  x2 -= 4;</b></p><p>  if (_form.right_3.Contains(this))</p><p><b>  {</b></p><p>  i = _form.right_3.IndexOf(this);</p><p&

60、gt;  if (i > 0)</p><p><b>  {</b></p><p>  MyCarRight carright = (MyCarRight)_form.right_3[i - 1];</p><p>  if (this.Left - carright.Left > 90)</p><p>

61、;<b>  {</b></p><p>  _index = true;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if (this

62、.Left > 368 && (_index || i == 0))//已°?經(jīng)-紅¨¬燈Ì?但Ì?是º?還1沒?有®D超?出?線? 并¡é且¨°與®?前¡ã面?車¦Ì輛¢?距¨¤離¤?較?大ä¨&

63、#174;</p><p><b>  x3 -= 4;</b></p><p>  if (_form.EW_Str_R || this.Left <= 116 )//當(dāng)Ì¡À綠¨¬燈Ì?時(shí)º¡À前¡ã進(jìn)?</p><p>&l

64、t;b>  {</b></p><p><b>  x1 -= 4;</b></p><p><b>  x2 -= 4;</b></p><p><b>  x3 -= 4;</b></p><p><b>  }</b></p&

65、gt;<p>  if (_form.EW_Str_R_Yellow && this.Left < 373)</p><p><b>  {</b></p><p><b>  x1 -= 10;</b></p><p><b>  x2 -= 10;</b><

66、;/p><p><b>  x3 -= 10;</b></p><p><b>  }</b></p><p>  if (_from == 3)</p><p><b>  {</b></p><p>  if (_to == 1)</p>

67、<p><b>  {</b></p><p><b>  y = 212;</b></p><p>  this.Left = 430 + x1;</p><p>  this.Top = y;</p><p>  _form.Controls.Add(this);</p>

68、<p><b>  }</b></p><p>  if (_from == 3 && _to == 2)</p><p><b>  {</b></p><p><b>  y = 192;</b></p><p>  this.Top = y;&

69、lt;/p><p>  this.Left = 430 + x2;</p><p>  _form.Controls.Add(this);</p><p><b>  }</b></p><p>  if (_from == 3 && _to == 3)</p><p><b&g

70、t;  {</b></p><p><b>  y = 162;</b></p><p>  this.Top = y;</p><p>  this.Left = 430 + x3;</p><p>  _form.Controls.Add(this);</p><p><b&

71、gt;  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  finally</b></p><p><b>  {</b></p><p>  if

72、(this.Left <= 0) this.Dispose();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  總結(jié)</b></p><p>  本次課程設(shè)計(jì)雖然遇見許多困難,但最終都解決了,在設(shè)計(jì)過(guò)程中遇見問

73、題而提出問題并且尋找解決方法的過(guò)程中頗是受益。我們通過(guò)咨詢有更多經(jīng)驗(yàn)的人和在網(wǎng)上、書籍上查找相應(yīng)的資料,最后在規(guī)定的收件內(nèi)完成本次課程設(shè)計(jì)??傮w來(lái)講,在表面上,基本已經(jīng)實(shí)現(xiàn)了車輛和交通燈等基本操作功能,而且在設(shè)計(jì)過(guò)程中也有合理的邏輯。</p><p>  但是,細(xì)觀察設(shè)計(jì)內(nèi)容可以發(fā)現(xiàn)許多的問題,一下是我個(gè)人認(rèn)為的不足之處:</p><p>  面向?qū)ο笏枷氩粔蛎鞔_。</p>

74、<p>  操作過(guò)于繁瑣,就代碼本身而言,代碼的結(jié)構(gòu)和功能都十分的雜亂,有待提高</p><p>  設(shè)計(jì)過(guò)程中,存在許多不完整性的控制,整個(gè)設(shè)計(jì)流程簡(jiǎn)單,但是卻沒有陣中的使用進(jìn)程機(jī)制。</p><p>  許多功能沒有能夠?qū)崿F(xiàn)。</p><p>  最后、通過(guò)這次課程設(shè)計(jì),我們對(duì)程序設(shè)計(jì)有了基本的認(rèn)識(shí),對(duì)計(jì)算機(jī)操作系統(tǒng)的進(jìn)程機(jī)制也有了更進(jìn)一步的理解,而且

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論