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

下載本文檔

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

文檔簡介

1、<p>  《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)</p><p><b>  報(bào)告</b></p><p>  學(xué) 院:_電氣與信息工程學(xué)院_ 專業(yè)班級(jí): </p><p>  設(shè)計(jì)地點(diǎn)(單位)__ _ 計(jì)算機(jī)基礎(chǔ)自主學(xué)習(xí)中心 __ _ _設(shè)計(jì)題目:________ _____________

2、__ ____ _</p><p>  指導(dǎo)教師評(píng)語: ______________________ ________________</p><p>  _______________________________________________________________________________________________________________

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

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

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

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

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

8、3.1功能介紹7</b></p><p>  3.2 具體流程7</p><p><b>  4 代碼實(shí)現(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進(jìn)棧,出棧11</p><p>  4.2.6依次顯示停車場內(nèi)停放的所有車輛11</p><p>  4.2.7依次顯示便道上停放的所有車輛12</p&g

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

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

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

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

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

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

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

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

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

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

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

21、gt;<p><b>  實(shí)現(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; //定義便道隊(duì)列</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("請?jiān)O(shè)置停車費(fèi)用單價(jià):(__元/小時(shí))\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:到達(dá)\n");</p><p>  printf("2:

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

27、保存\n");</p><p>  printf("7:結(jié)束\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]; //時(shí)</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、 //結(jié)構(gòu)體定義隊(duì)列</p><p>  typedef struct Node //便道結(jié)點(diǎn),表示一輛汽車</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); //當(dāng)i>棧頂時(shí),錯(cuò)誤</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é)點(diǎn)P</p><p>  p=Q.front->next; //頭結(jié)點(diǎn)指向下一個(gè)節(jié)點(diǎn)</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、一個(gè)節(jié)點(diǎn)</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.2.5進(jìn)棧,出棧</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]; //將要?jiǎng)h除的棧頂元素賦值給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依次顯示停車場內(nèi)停放的所有車輛</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èi)沒有停放車輛\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é)點(diǎn)P </p><p>  p=Q.front->next; //頭結(jié)點(diǎn)指向下一個(gè)節(jié)點(diǎn)</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; //指向下一個(gè)節(jié)點(diǎn)</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  4.2.8入隊(duì)操作<

51、/b></p><p>  當(dāng)停車場滿了的時(shí)候,再到達(dá)的車輛進(jìn)去便道隊(duì)列</p><p>  int Enterbiandao(biandao *Q,int x)</p><p><b>  {</b></p><p>  node *NewNode; //定義節(jié)點(diǎn)</p>&

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

53、=NULL; //將下一個(gè)節(jié)點(diǎn)定義為空</p><p>  Q->rear->next=NewNode;//把擁有元素x新節(jié)點(diǎn)NewNode賦值給原隊(duì)尾結(jié)點(diǎn)的后繼</p><p>  Q->rear=NewNode; // 把當(dāng)前的NewNode設(shè)置為對尾節(jié)點(diǎn),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>  通過實(shí)際操作,進(jìn)一步確定程序是否有錯(cuò),是否符合設(shè)計(jì)要求。</p><p><b>  5.1 具體操作</b></p><p>  為了使程序更加完整,也為了進(jìn)一步檢測程序是否還有漏洞這需要對程序進(jìn)行全方位的測試,所以一次完整的測試時(shí)必須的。</p><p><b>  5.1.1 開始</b

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

57、:</b></p><p><b>  圖5.2</b></p><p>  如果有車輛進(jìn)入選擇‘1’會(huì)提示輸入車牌號(hào)與進(jìn)入停車場時(shí)間</p><p><b>  具體測試如圖所示:</b></p><p><b>  圖5.3</b></p><

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

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

60、所示:</b></p><p><b>  圖5.6</b></p><p>  當(dāng)進(jìn)入車輛大于5時(shí),所停車輛會(huì)在便道等候。</p><p><b>  具體測試如圖所示:</b></p><p><b>  圖5.7</b></p><p>

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

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

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

64、于棧只能從棧定加入和剪掉數(shù)據(jù)一樣,而隊(duì)列模擬便道也是一樣,車輛只能從一個(gè)方向進(jìn)入,另一個(gè)方向則是通往停車場,所以在構(gòu)思時(shí)把握住這一點(diǎn)將有利于程序的編寫。在編寫程序的時(shí)候要注意當(dāng)有車輛離開停車場的時(shí)候后面的車輛會(huì)前進(jìn)一步,便道內(nèi)的車也會(huì)開進(jìn)停車場,這樣需要重新編號(hào)。</p><p>  這個(gè)程序的因?yàn)槭褂昧酥骱瘮?shù)引用副函數(shù)的結(jié)構(gòu),所以在編寫或者修改的時(shí)候帶來很多的方便,這個(gè)程序的功能也十分強(qiáng)大除了模擬車輛進(jìn)入和退出

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

66、07.3</p><p>  2.程杰 ,大話數(shù)據(jù)結(jié)構(gòu),清華大學(xué)出版社,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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論