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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  《數(shù)據(jù)結構》課程設計</p><p><b>  報告</b></p><p>  學 院:_電氣與信息工程學院_ 專業(yè)班級: </p><p>  設計地點(單位)__ _ 計算機基礎自主學習中心 __ _ _設計題目:________ _____________

2、__ ____ _</p><p>  指導教師評語: ______________________ ________________</p><p>  _______________________________________________________________________________________________________________

3、__________________________________________________________________________________________ __________ </p><p>  成績(五級記分制):______ __________ 指導教師(簽字):________ _______

4、 </p><p><b>  課程設計任務書</b></p><p>  設計題目:停車場管理模擬程序的設計</p><p><b>  摘 要</b></p><p>  在這個信息發(fā)達的當前社會,計算機已成為每一個人的必修課,計算機所帶來的方便使得每一個人的生活都變的更加方便快捷,數(shù)據(jù)結構

5、這門學科提供了對數(shù)據(jù)的各種操作。</p><p>  這個程序應用了棧和對列(以棧模擬停車場,以隊列模擬便道),包含了到達、離去、依次顯示停車場內停放車輛、依次顯示便道上停放車輛、讀取、保存6大功能。通過棧模擬停車場,以隊列模擬便道達到了本程序的目的。這個程序有一個主函數(shù)包含幾個復函數(shù)的結構形式,使得整個程序看來井井有條,不論對于編程,還是錯誤修改都能帶來方便,這個程序的優(yōu)點在于。</p><

6、p>  關鍵詞:棧 隊列 模擬 主函數(shù)</p><p><b>  目 錄</b></p><p><b>  摘 要3</b></p><p>  1設計內容與要求5</p><p>  1.1設計主要要求5</p><p>  1.2基本設計要求5</

7、p><p><b>  2 算法思路6</b></p><p>  2.1兩個棧和一個隊列6</p><p>  2.2操作: 棧6</p><p>  2.3隊列:進隊:車輛進入6</p><p>  3 主要功能及運行流程7</p><p><b>  

8、3.1功能介紹7</b></p><p>  3.2 具體流程7</p><p><b>  4 代碼實現(xiàn)9</b></p><p><b>  4.1 主函數(shù)9</b></p><p>  4.2核心代碼10</p><p>  4.2.1停車場棧的定

9、義10</p><p>  4.2.2定義便道10</p><p>  4.2.3查找某牌照的車在停車場中的位置10</p><p>  4.2.5進棧,出棧11</p><p>  4.2.6依次顯示停車場內停放的所有車輛11</p><p>  4.2.7依次顯示便道上停放的所有車輛12</p&g

10、t;<p>  4.2.8入隊操作12</p><p><b>  5 操作測試13</b></p><p>  5.1 具體操作13</p><p>  5.1.1 開始13</p><p><b>  總 結20</b></p><p><b

11、>  參考文獻21</b></p><p><b>  致 謝22</b></p><p><b>  1設計內容與要求</b></p><p>  利用棧和隊列分別模擬停車場位置和便道,主函數(shù)與復函數(shù)組合構成整個程序,通過對復函數(shù)的各種的調用以達到目的。</p><p>&l

12、t;b>  1.1設計主要要求</b></p><p>  假設停車場是一個可以停放n輛汽車的狹長通道,且只有一個大門可供汽車進出。汽車在停車場內按車輛到達時間的先后順序,依次由北向南排列(大門在最南端,最先到達的第一輛車停放在車場的最北端),若車場內已停滿n輛車,那么后來的車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入;當停車場內某輛車要離開時,在它之后進入的車輛必須先

13、退出車場為它讓路,待該輛車開出大門外,其他車輛再按原次序進入車場,每輛停放在車場的車在它離開時必須按它停留的時間長短交納費用(在便道上停車不收費)。試為停車場編制按上述要求進行管理的模擬程序。</p><p><b>  1.2基本設計要求</b></p><p>  以棧模擬停車場,以隊列模擬便道。每一組輸入數(shù)據(jù)包括三個數(shù)據(jù)項:汽車“到達”或“離去”信息、汽車牌照號

14、碼、到達或離去的時刻。對每一組輸入數(shù)據(jù)進行操作后的輸出信息為:若是車輛到達,則輸出汽車在停車場內或便道上的停車位置(停車位從北向南依次編號);若是車輛離去,則輸出汽車在停車場內停留的時間和應交納的費用。程序退出時,應將停車場的當前情況保存在磁盤上,以便下次運行程序時能恢復到上次退出時的狀態(tài)。</p><p><b>  2 算法思路</b></p><p>  2.1

15、兩個棧和一個隊列</p><p>  根據(jù)題目要求,停車場只有一個大門,因此可用一個棧來模擬:當棧滿后,繼續(xù)來到的車輛只能停在便道上,根據(jù)便道停車的特點,可知這可以用一個隊列來模擬,先排隊的車輛先離開便道,進入停車場。由于排在停車場中間的車輛可以提出離開停車場,并且要求在離開車輛到停車場大門之間的車輛都必須先離開停車場,讓此車離開,然后讓這些車輛依原來的次序進入停車場,因此在一個棧和一個隊列的基礎上,還需要用一個

16、棧來保存為了讓路離開停車場的車輛。所以本題要用兩個棧和一個隊列。</p><p><b>  2.2操作: 棧</b></p><p><b>  進棧:車輛進入</b></p><p><b>  出棧:車輛離開</b></p><p>  查找:允許排中間的車輛先離開停車場

17、,因此需要在棧中進行查找。</p><p>  2.3隊列:進隊:車輛進入</p><p><b>  出隊:車輛離開</b></p><p>  查找:允許排中間的車輛先離開停車場,因此需要在隊中進行查找。</p><p>  3 主要功能及運行流程</p><p><b>  3.1

18、功能介紹</b></p><p>  本程序一共有6大功能,分別為到達、離去、依次顯示停車場內停放車輛、依次顯示便道上停放車輛、讀取、保存。各種功能以滿足使用者的需求。通過以上功能可以記錄車輛的到達時間、離去時間用以計算車輛的停車費用,還可以查看停車場的停車狀況。</p><p><b>  3.2 具體流程</b></p><p>

19、;  打開程序后,首先要輸入每小時的停車費用,然后選擇需要進行的命令,然后按提示輸入即可。當要推出程序時應將停車場的當前情況保存在磁盤上,以便下次運行程序時能恢復到上次退出時的狀態(tài),當要推出時選擇退出指令即可。</p><p>  這個程序是主函數(shù)包含副函數(shù)構成的,所以在程序中可以看到許多的單獨定義的副函數(shù)</p><p>  圖3.1 主要函數(shù)結構圖</p><p&g

20、t;  圖3.2 程序流程圖</p><p>  圖3.3停車場模擬圖</p><p><b>  4 代碼實現(xiàn)</b></p><p>  為了實現(xiàn)程序的目的,需要定義很多函數(shù)和創(chuàng)建結構體,在模擬停車場和便道的時候都需要創(chuàng)建結構體。</p><p><b>  4.1 主函數(shù)</b></p&

21、gt;<p><b>  實現(xiàn)程序目的</b></p><p>  void main()</p><p>  {double time,cost;</p><p><b>  int ch;</b></p><p>  int x,*y,z;</p><p>

22、;  int i,flag=1,h,m,s,unit_price,hh,mm,ss;</p><p>  y=new int;</p><p>  Seqstack *t; //定義停車場棧</p><p>  t=new Seqstack;</p><p>  InitSeqstack(t

23、);</p><p>  biandao *Q; //定義便道隊列</p><p>  Q=new biandao;</p><p>  Initbiandao(Q);</p><p>  Seqstack *r; //定義讓路棧</p>

24、;<p>  r=new Seqstack;</p><p>  InitSeqstack(r);</p><p>  printf("請設置停車費用單價:(__元/小時)\n");</p><p>  scanf("%d",&unit_price);</p><p>  whil

25、e(flag)</p><p>  {printf("***************************\n");</p><p>  printf("請選擇命令\n");</p><p>  printf("1:到達\n");</p><p>  printf("2:

26、離開\n");</p><p>  printf("3:依次顯示停車場內停放車輛\n");</p><p>  printf("4:依次顯示便道上停放車輛 \n");</p><p>  printf("5:讀取\n");</p><p>  printf("6:

27、保存\n");</p><p>  printf("7:結束\n");</p><p>  printf("***************************\n");</p><p>  scanf("%d",&ch);</p><p>  switch(ch

28、)</p><p><b>  {</b></p><p>  case 1:case 2:case 3:case 4: case 5: case 6: case 7:</p><p><b>  4.2核心代碼</b></p><p>  核心代碼里是使程序完成各種功能的不同代碼。</p&g

29、t;<p>  4.2.1停車場棧的定義</p><p>  typedef struct</p><p><b>  {</b></p><p>  Datatype bianhao[M]; //定義停車場的大小</p><p>  int top; //定義棧頂</p>

30、;<p>  int h[M]; //天</p><p>  int m[M]; //時</p><p>  int s[M]; //分</p><p>  }Seqstack; </p><p><b>  4.2.2定義便道</b><

31、;/p><p>  typedef struct</p><p><b>  {</b></p><p>  node *front;</p><p>  node *rear;</p><p>  int count;</p><p>  }biandao;

32、 //結構體定義隊列</p><p>  typedef struct Node //便道結點,表示一輛汽車</p><p><b>  {</b></p><p>  Datatype bianhao; </p><p>  struct Node *next;</p><p>

33、;<b>  }node;</b></p><p>  4.2.3查找某牌照的車在停車場中的位置</p><p>  int Find(Seqstack t,int x)</p><p><b>  {</b></p><p><b>  int i;</b></p&g

34、t;<p>  for(i=0;i<=t.top;i++) //循環(huán)查找車輛</p><p>  {if(t.bianhao[i]!=x) </p><p>  continue; //沒找到車輛繼續(xù)查找</p><p><b>  else </b></p><p>  break;

35、 //找到后退出</p><p><b>  }</b></p><p>  if(i>t.top)</p><p>  return(-1); //當i>棧頂時,錯誤</p><p><b>  else </b></p><p> 

36、 return(i); //輸出位置i</p><p><b>  }</b></p><p>  4.2.4依次顯示便道上停放的所有車輛</p><p>  void Showbiandao(biandao Q)</p><p><b>  {</b></p>&l

37、t;p>  node *p; //定義節(jié)點P</p><p>  p=Q.front->next; //頭結點指向下一個節(jié)點</p><p>  if(p==NULL)</p><p>  printf("便道上沒有停放車輛!\n");</p><p>&

38、lt;b>  else</b></p><p>  while(p!=NULL)</p><p><b>  {</b></p><p>  printf("牌照:%d ,p->bianhao\n");</p><p>  p=p->next; //指向下

39、一個節(jié)點</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.2.5進棧,出棧</p><p>  int Push(Seqstack *t,int x,int h,int m,int s)</p><p><b&g

40、t;  {</b></p><p>  if(t->top==M-1)</p><p>  return 0; //確定停車場棧已滿</p><p><b>  t->top++;</b></p><p>  t->bianhao[t->top]=x;//將新插入的元素賦

41、值給棧頂空間</p><p>  t->h[t->top]=h;</p><p>  t->m[t->top]=m;</p><p>  t->s[t->top]=s;</p><p><b>  return 1;</b></p><p><b> 

42、 }</b></p><p>  int Pop(Seqstack *t,int *x,int *h,int *m,int *s)</p><p><b>  {</b></p><p>  if(t->top==-1) //</p><p><b>  return 0;</b&

43、gt;</p><p><b>  else</b></p><p><b>  {</b></p><p>  *x=t->bianhao[t->top]; //將要刪除的棧頂元素賦值給x</p><p>  *h=t->h[t->top];</p><

44、p>  *m=t->m[t->top];</p><p>  *s=t->s[t->top];</p><p>  t->top--; //棧頂指針減一</p><p><b>  return 1;</b></p><p><b>  }</

45、b></p><p><b>  }</b></p><p>  4.2.6依次顯示停車場內停放的所有車輛</p><p>  void ShowSeqstack(Seqstack t)</p><p><b>  {</b></p><p><b>  in

46、t i;</b></p><p>  if(t.top==-1) //確定停車場是否停放了車輛</p><p>  printf("停車場內沒有停放車輛\n"); </p><p><b>  else</b></p><p>  for(i=0;i<=t

47、.top;i++) </p><p>  printf("牌照:%d \n",t.bianhao[i]);</p><p><b>  }</b></p><p>  4.2.7依次顯示便道上停放的所有車輛</p><p>  void Showbiandao(biandao Q)</p>

48、;<p><b>  {</b></p><p>  node *p; //定義節(jié)點P </p><p>  p=Q.front->next; //頭結點指向下一個節(jié)點</p><p>  if(p==NULL)</p><p

49、>  printf("便道上沒有停放車輛!\n");</p><p><b>  else</b></p><p>  while(p!=NULL)//條件循環(huán)顯示便道上的停放的車輛</p><p><b>  {</b></p><p>  printf("牌照

50、:%d \n",p->bianhao);</p><p>  p=p->next; //指向下一個節(jié)點</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  4.2.8入隊操作<

51、/b></p><p>  當停車場滿了的時候,再到達的車輛進去便道隊列</p><p>  int Enterbiandao(biandao *Q,int x)</p><p><b>  {</b></p><p>  node *NewNode; //定義節(jié)點</p>&

52、lt;p>  NewNode=new node; </p><p>  if(NewNode!=NULL) </p><p><b>  {</b></p><p>  NewNode->bianhao=x; //將節(jié)點賦值為X</p><p>  NewNode->next

53、=NULL; //將下一個節(jié)點定義為空</p><p>  Q->rear->next=NewNode;//把擁有元素x新節(jié)點NewNode賦值給原隊尾結點的后繼</p><p>  Q->rear=NewNode; // 把當前的NewNode設置為對尾節(jié)點,rear指向NewNode</p><p>  Q->count++

54、; </p><p>  return(true);</p><p><b>  }</b></p><p>  else return(false);</p><p><b>  }</b></p><p><b>  5 操作測試</b></

55、p><p>  通過實際操作,進一步確定程序是否有錯,是否符合設計要求。</p><p><b>  5.1 具體操作</b></p><p>  為了使程序更加完整,也為了進一步檢測程序是否還有漏洞這需要對程序進行全方位的測試,所以一次完整的測試時必須的。</p><p><b>  5.1.1 開始</b

56、></p><p>  打開程序首先會提示輸入停車費用。</p><p><b>  具體測試如圖所示:</b></p><p><b>  圖5.1</b></p><p>  當輸入具體數(shù)字后會出現(xiàn)程序提示指令</p><p><b>  具體測試如圖所示

57、:</b></p><p><b>  圖5.2</b></p><p>  如果有車輛進入選擇‘1’會提示輸入車牌號與進入停車場時間</p><p><b>  具體測試如圖所示:</b></p><p><b>  圖5.3</b></p><

58、;p>  如果要查看停車場內的停車情況可以選擇‘3’會顯示停車狀況</p><p><b>  具體測試如圖所示:</b></p><p><b>  圖5.4</b></p><p>  當有車要離開時可以輸入指令‘2’,輸入指令后會提示輸入離開時間用以計算停車費用。</p><p><

59、;b>  具體測試如圖所示:</b></p><p><b>  圖5.5</b></p><p>  由于車輛離開停車場為空,所以當我們再次輸入指令‘3’時,會出現(xiàn)提示‘停</p><p><b>  車場內沒有車輛’。</b></p><p><b>  具體測試如圖

60、所示:</b></p><p><b>  圖5.6</b></p><p>  當進入車輛大于5時,所停車輛會在便道等候。</p><p><b>  具體測試如圖所示:</b></p><p><b>  圖5.7</b></p><p>

61、;  當需要查看停車場和便道的具體情況的時候可以輸入‘3’‘4’指令。</p><p><b>  具體測試如圖所示:</b></p><p><b>  圖5.8</b></p><p><b>  圖5.9</b></p><p>  使用完后可以使用保存功能保存當前數(shù)據(jù)以

62、便可以下次繼續(xù)使用。</p><p><b>  具體測試如圖所示:</b></p><p><b>  圖5.10</b></p><p><b>  圖5.11</b></p><p>  最后當要結束本軟件的時候可以輸入指令‘7’。</p><p>

63、;<b>  具體測試如圖所示:</b></p><p><b>  圖5.12</b></p><p><b>  總 結</b></p><p>  本次課程的程序比較大,要理清思路才能快速的完成。在構思這個程序時要注意如何利用棧和隊列來模擬停車場和便道,停車場里的車輛只能從入口進入和出去這就類似

64、于棧只能從棧定加入和剪掉數(shù)據(jù)一樣,而隊列模擬便道也是一樣,車輛只能從一個方向進入,另一個方向則是通往停車場,所以在構思時把握住這一點將有利于程序的編寫。在編寫程序的時候要注意當有車輛離開停車場的時候后面的車輛會前進一步,便道內的車也會開進停車場,這樣需要重新編號。</p><p>  這個程序的因為使用了主函數(shù)引用副函數(shù)的結構,所以在編寫或者修改的時候帶來很多的方便,這個程序的功能也十分強大除了模擬車輛進入和退出

65、停車場二個功能外還附帶了數(shù)據(jù)讀取與保存,這使得用戶在使用的時候更加方便快捷。在學習上,通過本次課程設計使我更加熟練的使用棧和隊列,數(shù)據(jù)結構也理解的更透徹。程序也存在一定的缺陷,畫面不夠好看,在一些數(shù)據(jù)讀取上沒有確切的界限,這也導致了本程序的不完整性。</p><p><b>  參考文獻</b></p><p>  1.嚴蔚敏 吳偉民, 數(shù)據(jù)結構,清華大學出版社,20

66、07.3</p><p>  2.程杰 ,大話數(shù)據(jù)結構,清華大學出版社,2011.6</p><p>  3.(美)Stephen Prata, C Primer Plus中文版(第五版),人民郵電出版社,2005.2</p><p><b>  致 謝</b></p><p>  本次課程中,在程序書寫過程中遇到了很多

溫馨提示

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

評論

0/150

提交評論