數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---停車場管理系統(tǒng)_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  《數(shù)據(jù)結(jié)構(gòu)》</b></p><p><b>  課程設(shè)計報告</b></p><p><b>  計算機與信息工程系</b></p><p>  《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計評閱表</p><p><b>  引言</b></

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

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

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

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

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

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

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

9、1)程序開始運行</b></p><p> ?。?)車輛到達輸入信息</p><p><b> ?。?)車輛離開</b></p><p><b> ?。?)車輛信息</b></p><p><b>  (5)退出系統(tǒng)</b></p><p>

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

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

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

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

14、<p><b>  參考文獻</b></p><p>  1、C語言程序設(shè)計 高等教育出版社 廖雷 第三版 2009年</p><p>  2、數(shù)據(jù)結(jié)構(gòu)(C語言描述) 中國水利水電出版社 馬秋菊 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; /*定義一個全局變量用來存儲車庫最大容量*/   </p><p>  float price;/*每車

17、每小時的費用*/   </p><p>  typedef struct time</p><p>  {    int hour;   </p><p>  int min;   </p><p>  }Time; /*時間結(jié)點*/ 

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é)點*/   </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 *); /*車輛到達*/ 

23、60; </p><p>  void leave(SqStack *,SqStack *,LinkQueue *); /*車輛離開*/   </p><p>  void info(SqStack,LinkQueue); /*顯示停車場信息*/   </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); /*初始化讓路的臨時棧*/   </p><p>  InitQueue(&Wait); /*初始化通道*/   </p><p>  while(1)   </p><p>  {     printf("--------

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

31、 scanf("%d",&MAX);</p><p>  printf("請輸入停車場的收費標準(元/小時):");</p><p>  scanf("%f",&price);</p><p>  printf("您輸入的停車場容量為%d位,費用為%2.1f元/小時。\n"

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

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

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

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

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

37、(3)停車場信息\n(4)退出系統(tǒng)\n請選擇\n"); </p><p>  }   }   }   </p><p>  int arrive(SqStack *In,LinkQueue *W) /*車輛到達*/   </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停車場還有%d停車位(若停車位為0,車可先進入便道等待)",MAX-In->top);</p><p>  printf("\n請輸入車牌號碼(例:湘D0734):");   </p><p>  gets(p->num);   </p><p>  if(In->

40、top<MAX) /*停車場未滿,車進車場*/   </p><p>  {    In->top++;</p><p>  printf("\n停車的位置:%d號停車位。",In->top);   </p><p>  //printf("\n請輸

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

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

43、p>  else /*停車場已滿,車進便道*/   </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("請

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

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

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

48、f("\n請輸入車在停車場的位置(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) /*車輛離開*/   </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) /*便道的車輛進入停車場*/ 

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

55、"\n便道的%s號車進入車場第%d號停車位。",t->num,In->top);   </p><p>  //printf("\n請輸入現(xiàn)在的時間(格式"**:**"):");  </p><p>  printf("\n請輸入現(xiàn)在的時間:");</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停車場里沒有車\n"); /*沒車*/</p

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

59、;  </p><p>  if(S->top>0) /*判斷停車場內(nèi)是否有車*/   </p><p>  {   printf("\n車場:");   </p><p>  printf("\n 位置 到達時間 車牌號\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停車場里沒有車");  }  </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便道中車輛的號碼為:\n");   </p><p>

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

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

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

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

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

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

最新文檔

評論

0/150

提交評論