數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---停車場(chǎng)管理系統(tǒng)_第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>  《數(shù)據(jù)結(jié)構(gòu)》</b></p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p><b>  計(jì)算機(jī)與信息工程系</b></p><p>  《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)評(píng)閱表</p><p><b>  引言</b></

2、p><p>  設(shè)停車場(chǎng)是一個(gè)可停放n輛汽車的狹長(zhǎng)通道,且只有一個(gè)大門可供汽車進(jìn)出。汽車在停車場(chǎng)內(nèi)按車輛到達(dá)時(shí)間的先后順序,依次由北向南排列(大門在最南端,最先到達(dá)的第一輛車停放在車場(chǎng)的最北端),若車場(chǎng)內(nèi)已停滿n輛汽車,則后來(lái)的汽車只能在門外的便道上等候,一旦有車開(kāi)走,則排在便道上的第一輛車即可開(kāi)入;當(dāng)停車場(chǎng)內(nèi)某輛車要離開(kāi)時(shí),在他之后進(jìn)入的車輛必須先退出車場(chǎng)為它讓路,待該輛車開(kāi)出大門外,其他車輛再按原次序進(jìn)入車場(chǎng),每

3、輛停放在車場(chǎng)的車在它離開(kāi)車場(chǎng)時(shí)必須按它停留的時(shí)間長(zhǎng)短交納費(fèi)用。由于停車場(chǎng)是一個(gè)狹窄通道,而且只有一個(gè)大門可供汽車進(jìn)出,問(wèn)題要求汽車停車場(chǎng)內(nèi)按車輛到達(dá)時(shí)間的先后順序,依次由北向南排列。由此很容易聯(lián)想到數(shù)據(jù)結(jié)構(gòu)中的堆棧模型,因此可首先設(shè)計(jì)一個(gè)堆棧,以堆棧來(lái)模擬停車場(chǎng),又每個(gè)汽車的車牌號(hào)都不一樣,這樣一來(lái)可以根據(jù)車牌號(hào)準(zhǔn)確找到汽車位置,所以堆棧里的數(shù)據(jù)元素我設(shè)計(jì)成汽車的車牌號(hào)。當(dāng)停車場(chǎng)內(nèi)某輛車要離開(kāi)時(shí),在他之后進(jìn)入的車輛必須先退出車場(chǎng)為它讓路

4、,待該輛車開(kāi)出大門外,其他車輛再按原次序進(jìn)入停車場(chǎng)。這是個(gè)一退一進(jìn)的過(guò)程,而且讓道的汽車必須保持原有的先后順序,因此可再設(shè)計(jì)一個(gè)堆棧,以之來(lái)暫時(shí)存放為出站汽</p><p><b>  設(shè)計(jì)過(guò)程</b></p><p><b>  1、流程圖設(shè)計(jì)</b></p><p><b>  2、設(shè)計(jì)思想</b>

5、;</p><p>  此停車場(chǎng)管理系統(tǒng)是在一個(gè)狹長(zhǎng)的通道上的,而且只有一個(gè)大門可以供車輛進(jìn)出,并且要實(shí)現(xiàn)停車場(chǎng)內(nèi)某車輛車要離開(kāi)時(shí),在它之后進(jìn)入停車場(chǎng)的車都必須先退出停車場(chǎng)為它讓路,待其開(kāi)出停車場(chǎng)后, 這些車再依原來(lái)的次序進(jìn)場(chǎng)的功能,就可以設(shè)計(jì)兩個(gè)堆棧,其中一個(gè)堆棧用來(lái)模擬停車場(chǎng),另一個(gè)堆棧用來(lái)模擬臨時(shí)停車場(chǎng),該臨時(shí)停車場(chǎng)用來(lái)存放當(dāng)有車輛離開(kāi)時(shí),原來(lái)停車場(chǎng)內(nèi)為其讓路的車輛。至于當(dāng)停車場(chǎng)已滿時(shí),需要停放車輛的通道可

6、以用一個(gè)鏈隊(duì)列來(lái)實(shí)現(xiàn)。當(dāng)停車場(chǎng)內(nèi)開(kāi)走一輛車時(shí),通道上便有一輛車進(jìn)入停車場(chǎng),此時(shí)只需要改變通道上車輛結(jié)點(diǎn)的鏈接方式就可以了,使通道上第一輛車進(jìn)入停車場(chǎng)這個(gè)堆棧,并且使通道上原來(lái)的第二車輛成為通道上的第一輛車,此時(shí)只需將模擬通道的鏈隊(duì)列的頭結(jié)點(diǎn)連到原來(lái)的第二輛車上就可以了。</p><p><b>  3、主要模塊</b></p><p>  首先定義用來(lái)模擬停車場(chǎng)的堆棧

7、以及用來(lái)模擬通道的鏈隊(duì)列為全局變量,然后編寫主函數(shù),在此主函數(shù)中實(shí)現(xiàn)對(duì)其它各個(gè)模塊的調(diào)用。在主函數(shù)中首先調(diào)用option()函數(shù),出現(xiàn)歡迎用戶使用的主界面,然后提示用戶進(jìn)入此停車場(chǎng)管理系統(tǒng)后,再出現(xiàn)一個(gè)工用戶選擇的界面,在用戶的選擇過(guò)程中,程序又分別調(diào)用車輛的到達(dá)、車輛的離開(kāi)、停車場(chǎng)內(nèi)停放車輛的信息以及退出程序這四個(gè)函數(shù)模塊。</p><p><b>  4、模塊間關(guān)系</b></p&

8、gt;<p><b>  測(cè)試及運(yùn)行結(jié)果</b></p><p><b>  常見(jiàn)的錯(cuò)誤</b></p><p>  容易將程序中的字母打錯(cuò):在寫程序時(shí)多注意,盡量不打錯(cuò)</p><p><b>  運(yùn)行過(guò)程及結(jié)果</b></p><p><b> ?。?/p>

9、1)程序開(kāi)始運(yùn)行</b></p><p> ?。?)車輛到達(dá)輸入信息</p><p><b> ?。?)車輛離開(kāi)</b></p><p><b>  (4)車輛信息</b></p><p><b> ?。?)退出系統(tǒng)</b></p><p>

10、<b>  總結(jié)</b></p><p>  一周的課程設(shè)計(jì)結(jié)束了,在這次的課程設(shè)計(jì)中不僅檢驗(yàn)了我所學(xué)習(xí)的知識(shí),也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情的方法和技巧。再設(shè)計(jì)過(guò)程中,和同學(xué)們相互探討,相互學(xué)習(xí),相互監(jiān)督。我學(xué)會(huì)了運(yùn)籌帷幄,學(xué)會(huì)了寬容,學(xué)會(huì)了理解,也學(xué)會(huì)了做人與處世,這次課程設(shè)計(jì)對(duì)我來(lái)說(shuō)受益良多。</p><p>  課程設(shè)計(jì)是我

11、們專業(yè)課程知識(shí)綜合應(yīng)用的實(shí)踐訓(xùn)練,這是我們邁向社會(huì),從事職業(yè)工作前一個(gè)比不少的過(guò)程,“千里之行始于足下”,通過(guò)這次課程設(shè)計(jì),我深深體會(huì)到了這句千古名言的真正含義,我今天認(rèn)真的進(jìn)行課程設(shè)計(jì),學(xué)會(huì)腳踏實(shí)地邁開(kāi)這一步,就是為明天能穩(wěn)健的在社會(huì)大潮中奔跑打下堅(jiān)實(shí)的基礎(chǔ)。</p><p>  我這次設(shè)計(jì)的科目是停車場(chǎng)管理系統(tǒng)。數(shù)據(jù)結(jié)構(gòu),是一門研究非數(shù)值計(jì)算的程序設(shè)計(jì)問(wèn)題中計(jì)算機(jī)的操作對(duì)象以及它們之間的關(guān)系和運(yùn)算等的學(xué)科,而

12、且確保經(jīng)過(guò)這些運(yùn)算后所得到的新結(jié)構(gòu)仍然是原來(lái)的結(jié)構(gòu)類型。作為一門獨(dú)立的課程在國(guó)外是從1968年才開(kāi)始設(shè)立的。1968年美國(guó)唐-歐-克努特教授開(kāi)創(chuàng)了數(shù)據(jù)結(jié)構(gòu)的最初體系,他所著的《計(jì)算機(jī)程序設(shè)計(jì)技巧》第一卷《基本算法》是第一本較系統(tǒng)地闡述數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)及其操作的著作?!皵?shù)據(jù)結(jié)構(gòu)”在計(jì)算機(jī)科學(xué)中是一門綜合性的專業(yè)基礎(chǔ)課。數(shù)據(jù)結(jié)構(gòu)是介于數(shù)學(xué)、計(jì)算機(jī)硬件和計(jì)算機(jī)軟件三者之間的一門核心課程。數(shù)據(jù)結(jié)構(gòu)這一門課的內(nèi)容不僅是一般程序設(shè)計(jì)的基礎(chǔ),

13、而且是設(shè)計(jì)和實(shí)現(xiàn)編譯程序、操作系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)及其他系統(tǒng)程序的重要基礎(chǔ)。通過(guò)這次模具設(shè)計(jì),我在多方面都有所提高。</p><p>  通過(guò)這次的課程設(shè)計(jì),更是讓我深刻認(rèn)識(shí)到自己在學(xué)習(xí)中的不足,同時(shí)也找到了克服這些不足的方法,這也是一筆很大的資源。在以后的時(shí)間中,我們應(yīng)該利用更多的實(shí)踐去上機(jī)實(shí)驗(yàn),加強(qiáng)自學(xué)的能力,多編寫程序,相信不久后我們的編程能力都會(huì)有很大的提高,能設(shè)計(jì)出更多的更有創(chuàng)新的作品。</p>

14、<p><b>  參考文獻(xiàn)</b></p><p>  1、C語(yǔ)言程序設(shè)計(jì) 高等教育出版社 廖雷 第三版 2009年</p><p>  2、數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言描述) 中國(guó)水利水電出版社 馬秋菊 2006年</p><p>  3、www.baidu.com</p><p>

15、;  4、http://www.doc88.com/p-317736654952.html</p><p><b>  附錄</b></p><p>  #include "stdio.h"   </p><p>  #include "stdlib.h"   &l

16、t;/p><p>  #include "string.h"   </p><p>  #include "conio.h"</p><p>  int MAX; /*定義一個(gè)全局變量用來(lái)存儲(chǔ)車庫(kù)最大容量*/   </p><p>  float price;/*每車

17、每小時(shí)的費(fèi)用*/   </p><p>  typedef struct time</p><p>  {    int hour;   </p><p>  int min;   </p><p>  }Time; /*時(shí)間結(jié)點(diǎn)*/ 

18、0; </p><p>  typedef struct node</p><p>  {    char num[10];   </p><p>  Time reach;   </p><p>  Time leave;   </p>

19、<p>  }Car; /*車輛信息結(jié)點(diǎn)*/   </p><p>  typedef struct NODE</p><p>  {   Car *stack[100];   </p><p>  int top;   </p><p>  }SqSt

20、ack; /*停車站*/   </p><p>  typedef struct car</p><p>  {   Car *data;   </p><p>  struct car *next;   </p><p>  }QNode;  

21、; </p><p>  typedef struct Node</p><p>  {    QNode *head;   </p><p>  QNode *rear;   </p><p>  }LinkQueue; /*通道*/    

22、 </p><p>  void InitStack(SqStack *); /*初始化棧*/   </p><p>  int InitQueue(LinkQueue *); /*初始化便道*/   </p><p>  int arrive(SqStack *,LinkQueue *); /*車輛到達(dá)*/ 

23、60; </p><p>  void leave(SqStack *,SqStack *,LinkQueue *); /*車輛離開(kāi)*/   </p><p>  void info(SqStack,LinkQueue); /*顯示停車場(chǎng)信息*/   </p><p>  void PRINT(Car *p,int room)

24、;</p><p>  void InitStack(SqStack *s) /*初始化棧*/   </p><p>  {    int i;   </p><p>  s->top=0;   </p><p>  for(i=0;i<=M

25、AX;i++)   </p><p>  s->stack[s->top]=NULL;   }   </p><p>  int InitQueue(LinkQueue *Q) /*初始化便道*/   </p><p>  {   Q->head=(

26、QNode *)malloc(sizeof(QNode));   </p><p>  if(Q->head!=NULL)   </p><p>  {   Q->head->next=NULL;   </p><p>  Q->rear=Q->head;&

27、#160;  </p><p>  return(1);    }   </p><p>  else return(-1);   }</p><p>  void main()   </p><p>  {    

28、;SqStack In,Out;   </p><p>  LinkQueue Wait;   </p><p>  int ch;   </p><p>  InitStack(&In); /*初始化停車站*/   </p><p>  InitStac

29、k(&Out); /*初始化讓路的臨時(shí)棧*/   </p><p>  InitQueue(&Wait); /*初始化通道*/   </p><p>  while(1)   </p><p>  {     printf("--------

30、------------歡迎使用停車場(chǎng)管理系統(tǒng)--------------------\n");</p><p>  printf("\t本系統(tǒng)由5011工作室開(kāi)發(fā),作者:****、*****、*****、******。\n\n");</p><p>  printf("請(qǐng)輸入停車場(chǎng)的容量:");</p><p> 

31、 scanf("%d",&MAX);</p><p>  printf("請(qǐng)輸入停車場(chǎng)的收費(fèi)標(biāo)準(zhǔn)(元/小時(shí)):");</p><p>  scanf("%f",&price);</p><p>  printf("您輸入的停車場(chǎng)容量為%d位,費(fèi)用為%2.1f元/小時(shí)。\n"

32、;,MAX,price);</p><p>  printf("\n(1)車輛到達(dá)\n(2)車輛離開(kāi)\n(3)停車場(chǎng)信息\n(4)退出系統(tǒng)\n請(qǐng)選擇\n");</p><p>  while(1)   </p><p>  {     ch=getch();</p><

33、;p>  switch(ch)   </p><p>  {   case 49:arrive(&In,&Wait);break; /*車輛到達(dá)*/   </p><p>  case 50:leave(&In,&Out,&Wait);break; /*車輛離開(kāi)*/ 

34、0; </p><p>  case 51:info(In,Wait);break; /*輸出車站信息*/</p><p>  case 52:{printf("謝謝使用!");exit(0);} /*退出主程序*/   </p><p>  default:printf("\n按鍵無(wú)效,請(qǐng)重新按鍵選擇!"

35、);</p><p>  }/*49-52分別表示"1"-"4"這四個(gè)按鍵的鍵值*/</p><p>  system("CLS");</p><p>  printf("--------------------歡迎使用停車場(chǎng)管理系統(tǒng)--------------------\n");&l

36、t;/p><p>  printf("\t本系統(tǒng)由CG工作室開(kāi)發(fā),作者:***、***、***、***。\n\n\n");</p><p>  printf("您輸入的停車場(chǎng)容量為%d位,費(fèi)用為%2.1f元/小時(shí)。\n",MAX,price);</p><p>  printf("\n(1)車輛到達(dá)\n(2)車輛離開(kāi)\n

37、(3)停車場(chǎng)信息\n(4)退出系統(tǒng)\n請(qǐng)選擇\n"); </p><p>  }   }   }   </p><p>  int arrive(SqStack *In,LinkQueue *W) /*車輛到達(dá)*/   </p><p>  { &

38、#160;  Car *p;   </p><p>  QNode *t;   </p><p>  p=(Car *)malloc(sizeof(Car));   </p><p>  flushall();   </p><p>  printf(&

39、quot;\n停車場(chǎng)還有%d停車位(若停車位為0,車可先進(jìn)入便道等待)",MAX-In->top);</p><p>  printf("\n請(qǐng)輸入車牌號(hào)碼(例:湘D0734):");   </p><p>  gets(p->num);   </p><p>  if(In->

40、top<MAX) /*停車場(chǎng)未滿,車進(jìn)車場(chǎng)*/   </p><p>  {    In->top++;</p><p>  printf("\n停車的位置:%d號(hào)停車位。",In->top);   </p><p>  //printf("\n請(qǐng)輸

41、入車到達(dá)的時(shí)間(格式"**:**"):");</p><p>  printf("\n請(qǐng)輸入車到達(dá)的時(shí)間:");</p><p>  scanf("%d:%d",&(p->reach.hour),&(p->reach.min));   </p><p&g

42、t;  In->stack[In->top]=p;</p><p>  printf("請(qǐng)按任意鍵返回");</p><p><b>  getch(); </b></p><p>  return(1);    }   </p><

43、p>  else /*停車場(chǎng)已滿,車進(jìn)便道*/   </p><p>  {     printf("\n停車位已滿,該車須在便道等待!");   </p><p>  t=(QNode *)malloc(sizeof(QNode));   </p>

44、<p>  t->data=p;   </p><p>  t->next=NULL;   </p><p>  W->rear->next=t;  </p><p>  W->rear=t; </p><p>  printf("請(qǐng)

45、按任意鍵返回");  </p><p><b>  getch();</b></p><p>  return(1);    }   }  </p><p>  void leave(SqStack *In,SqStack *Out,LinkQueue *

46、W)   </p><p>  { /*車輛離開(kāi)*/   </p><p>  int room;   </p><p>  Car *p,*t;   </p><p>  QNode *q;   </p><p>  

47、/*判斷車場(chǎng)內(nèi)是否有車*/   </p><p>  if(In->top>0) /*有車*/   </p><p>  {     while(1) /*輸入離開(kāi)車輛的信息*/   </p><p>  {    print

48、f("\n請(qǐng)輸入車在停車場(chǎng)的位置(1-%d):",In->top);   </p><p>  scanf("%d",&room);   </p><p>  if(room>=1&&room<=In->top) break;   }

49、   </p><p>  while(In->top>room) /*車輛離開(kāi)*/   </p><p>  {   Out->top++;   </p><p>  Out->stack[Out->top]=In->stack[In->top

50、];  </p><p>  In->stack[In->top]=NULL;   </p><p>  In->top--;   }  </p><p>  p=In->stack[In->top];   </p><

51、;p>  In->stack[In->top]=NULL;   </p><p>  In->top--;   </p><p>  while(Out->top>=1)   </p><p>  {   In->top++; 

52、0;</p><p>  In->stack[In->top]=Out->stack[Out->top];  </p><p>  Out->stack[Out->top]=NULL;  </p><p>  Out->top--;     }&

53、#160;  </p><p>  PRINT(p,room);  </p><p>  /*判斷通道上是否有車及車站是否已滿*/   </p><p>  if((W->head!=W->rear)&&In->top<MAX) /*便道的車輛進(jìn)入停車場(chǎng)*/ 

54、0;</p><p>  {      q=W->head->next;   </p><p>  t=q->data;   </p><p>  In->top++;   </p><p>  printf(

55、"\n便道的%s號(hào)車進(jìn)入車場(chǎng)第%d號(hào)停車位。",t->num,In->top);   </p><p>  //printf("\n請(qǐng)輸入現(xiàn)在的時(shí)間(格式"**:**"):");  </p><p>  printf("\n請(qǐng)輸入現(xiàn)在的時(shí)間:");</p>

56、<p>  scanf("%d:%d",&(t->reach.hour),&(t->reach.min));   </p><p>  W->head->next=q->next;</p><p>  if(q==W->rear) W->rear=W->head; 

57、  </p><p>  In->stack[In->top]=t;   </p><p>  free(q);  }    }   </p><p>  else printf("\n停車場(chǎng)里沒(méi)有車\n"); /*沒(méi)車*/</p

58、><p>  printf("請(qǐng)按任意鍵返回");</p><p><b>  getch();}</b></p><p>  void info1(SqStack *S) /*列表輸出車場(chǎng)信息*/  </p><p>  {    int i; 

59、;  </p><p>  if(S->top>0) /*判斷停車場(chǎng)內(nèi)是否有車*/   </p><p>  {   printf("\n車場(chǎng):");   </p><p>  printf("\n 位置 到達(dá)時(shí)間 車牌號(hào)\n");&#

60、160; </p><p>  for(i=1;i<=S->top;i++)   </p><p>  {    printf("  %d\t",i);   </p><p>  printf("%d:%d 

61、0; ",S->stack[i]->reach.hour,S->stack[i]->reach.min);      puts(S->stack[i]->num);     }   }   </p><p>  else pri

62、ntf("\n停車場(chǎng)里沒(méi)有車");  }  </p><p>  void info2(LinkQueue *W) /*顯示便道信息*/   </p><p>  {    QNode *p;   </p><p>  p=W->h

63、ead->next;   </p><p>  if(W->head!=W->rear) /*判斷通道上是否有車*/   </p><p>  {     printf("\n便道中車輛的號(hào)碼為:\n");   </p><p>

64、  while(p!=NULL)   </p><p>  {      puts(p->data->num);   </p><p>  p=p->next;     }    }   <

65、;/p><p>  else printf("\n便道里沒(méi)有車\n");</p><p>  printf("請(qǐng)按任意鍵返回");</p><p>  getch();}  </p><p>  void info(SqStack S,LinkQueue W)   &

66、lt;/p><p>  {   info1(&S); /*顯示停車場(chǎng)信息*/   </p><p>  info2(&W); /*顯示停便道信息*/   }  </p><p>  void PRINT(Car *p,int room) /*輸出停車站車的信息*/ 

67、  </p><p>  {   int A1,A2,B1,B2;   </p><p>  //printf("\n請(qǐng)輸入車離開(kāi)的時(shí)間(格式"**:**"):"); </p><p>  printf("\n請(qǐng)輸入車離開(kāi)的時(shí)間:"); </

68、p><p>  scanf("%d:%d",&(p->leave.hour),&(p->leave.min));   </p><p>  printf("\n車牌號(hào)碼:");   </p><p>  puts(p->num);   &

69、lt;/p><p>  printf("\n車到達(dá)的時(shí)間是: %d:%d",p->reach.hour,p->reach.min);  </p><p>  printf("車離開(kāi)的時(shí)間是: %d:%d",p->leave.hour,p->leave.min);   </p>

70、<p>  A1=p->reach.hour;   </p><p>  A2=p->reach.min;   </p><p>  B1=p->leave.hour;   </p><p>  B2=p->leave.min;   </p>

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論