




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、. . . . 數據結構課程設計報告設計題目停車場管理系統班 級網絡1102姓 名翟瑜璇學 號40指導教師延嶺日 期2012年6月25日計算機與信息工程系數據結構課程設計評閱表設計題目停車場管理系統班級網絡1102翟瑜璇學號40答辯評語:總結報告評語:功能實現答辯效果設計報告創 新總 分一、 引言設停車場是一個可停放n輛汽車的狹長通道,且只有一個大門可供汽車進出。汽車在停車場按車輛到達時間的先后順序,依次由北向南排列(大門在最南端,最先到達的第一輛車停放在車場的最北端),若車場已停滿n輛汽車,則后來的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入;當停車場某輛車要離開
2、時,在他之后進入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其他車輛再按原次序進入車場,每輛停放在車場的車在它離開車場時必須按它停留的時間長短交納費用。由于停車場是一個狹窄通道,而且只有一個大門可供汽車進出,問題要求汽車停車場按車輛到達時間的先后順序,依次由北向南排列。由此很容易聯想到數據結構中的堆棧模型,因此可首先設計一個堆棧,以堆棧來模擬停車場,又每個汽車的車牌號都不一樣,這樣一來可以根據車牌號準確找到汽車位置,所以堆棧里的數據元素我設計成汽車的車牌號。當停車場某輛車要離開時,在他之后進入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其他車輛再按原次序進入停車場。這是個一退一進的
3、過程,而且讓道的汽車必須保持原有的先后順序,因此可再設計一個堆棧,以之來暫時存放為出站汽車暫時讓道的汽車車牌號。當停車場滿后,繼續進來的汽車需要停放在停車場旁邊的便道上等候,若停車場有汽車開走,則按排隊的先后順序依次進站,最先進入便道的汽車將會最先進入停車場,這完全是一個先進先出模型,因此可設計一個隊列來模擬便道,隊列中的數據元素仍然設計成汽車的車牌號。另外,停車場根據汽車在停車場停放的總時長來收費的,在便道上的時間不計費,因此必須記錄車輛進入停車場時的時間,車輛離開停車場時的時間不需要記錄,當從終端輸入時可直接使用。二、 設計過程開始1、流程圖設計輸入車輛的號碼與到達時間停車場是否已滿?進入
4、停車場進入便道等候離開停車場判斷停車場是否為空?車場里沒有車輸出離開時間計算價格判斷便道為空?便道里面沒有車輛車輛進入停車場車輛進入停車場結束2、設計思想此停車場管理系統是在一個狹長的通道上的,而且只有一個大門可以供車輛進出,并且要實現停車場某車輛車要離開時,在它之后進入停車場的車都必須先退出停車場為它讓路,待其開出停車場后, 這些車再依原來的次序進場的功能,就可以設計兩個堆棧,其中一個堆棧用來模擬停車場,另一個堆棧用來模擬臨時停車場,該臨時停車場用來存放當有車輛離開時,原來停車場為其讓路的車輛。至于當停車場已滿時,需要停放車輛的通道可以用一個鏈隊列來實現。當停車場開走一輛車時,通道上便有一輛
5、車進入停車場,此時只需要改變通道上車輛結點的方式就可以了,使通道上第一輛車進入停車場這個堆棧,并且使通道上原來的第二車輛成為通道上的第一輛車,此時只需將模擬通道的鏈隊列的頭結點連到原來的第二輛車上就可以了。3、主要模塊首先定義用來模擬停車場的堆棧以與用來模擬通道的鏈隊列為全局變量,然后編寫主函數,在此主函數中實現對其它各個模塊的調用。在主函數中首先調用option()函數,出現歡迎用戶使用的主界面,然后提示用戶進入此停車場管理系統后,再出現一個工用戶選擇的界面,在用戶的選擇過程中,程序又分別調用車輛的到達、車輛的離開、停車場停放車輛的信息以與退出程序這四個函數模塊。4、模塊間關系開始初始化兩個
6、棧與一個隊列。進入主菜單車離開車到達列表顯示退出車場內信息車場是否為空便道車信息是否退出列表顯示Room前車輛進臨時棧對Room計費否判便道是否有車判斷棧是否為滿是是否便道車進車場元素進棧元素進隊列棧元素出棧隊列中元素出隊結束隊列中元素進棧三、 測試與運行結果1、 常見的錯誤容易將程序中的字母打錯:在寫程序時多注意,盡量不打錯2、 運行過程與結果(1)程序開始運行(2)車輛到達輸入信息(3)車輛離開(4)車輛信息(5)退出系統四、 總結一周的課程設計結束了,在這次的課程設計中不僅檢驗了我所學習的知識,也培養了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情的方法和技巧。再設計過程中,
7、和同學們相互探討,相互學習,相互監督。我學會了運籌帷幄,學會了寬容,學會了理解,也學會了做人與處世,這次課程設計對我來說受益良多。課程設計是我們專業課程知識綜合應用的實踐訓練,這是我們邁向社會,從事職業工作前一個比不少的過程,“千里之行始于足下”,通過這次課程設計,我深深體會到了這句千古名言的真正含義,我今天認真的進行課程設計,學會腳踏實地邁開這一步,就是為明天能穩健的在社會大潮中奔跑打下堅實的基礎。我這次設計的科目是停車場管理系統。數據結構,是一門研究非數值計算的程序設計問題中計算機的操作對象以與它們之間的關系和運算等的學科,而且確保經過這些運算后所得到的新結構仍然是原來的結構類型。作為一門
8、獨立的課程在國外是從1968年才開始設立的。1968年美國唐-歐-克努特教授開創了數據結構的最初體系,他所著的計算機程序設計技巧第一卷基本算法是第一本較系統地闡述數據的邏輯結構和存儲結構與其操作的著作。“數據結構”在計算機科學中是一門綜合性的專業基礎課。數據結構是介于數學、計算機硬件和計算機軟件三者之間的一門核心課程。數據結構這一門課的容不僅是一般程序設計的基礎,而且是設計和實現編譯程序、操作系統、數據庫系統與其他系統程序的重要基礎。通過這次模具設計,我在多方面都有所提高。通過這次的課程設計,更是讓我深刻認識到自己在學習中的不足,同時也找到了克服這些不足的方法,這也是一筆很大的資源。在以后的時
9、間中,我們應該利用更多的實踐去上機實驗,加強自學的能力,多編寫程序,相信不久后我們的編程能力都會有很大的提高,能設計出更多的更有創新的作品。五、 參考文獻1、C語言程序設計 高等教育 廖雷 第三版 2009年2、數據結構(C語言描述) 中國水利水電 馬秋菊 2006年3、.baidu.4、.doc88./p-2.html六、 附錄#include "stdio.h" #include "stdlib.h" #include "string.h" #include
10、"conio.h"int MAX; /*定義一個全局變量用來存儲車庫最大容量*/ float price;/*每車每小時的費用*/ typedef struct time int hour; int min; Time; /*時間結點*/ typedef struct node char num10; Time reach; &
11、#160; Time leave; Car; /*車輛信息結點*/ typedef struct NODE Car *stack100; int top; SqStack; /*停車站*/ typedef struct car Car *data; struct car *next; QNode; typedef stru
12、ct Node QNode *head; QNode *rear; LinkQueue; /*通道*/ void InitStack(SqStack *); /*初始化棧*/ int InitQueue(LinkQueue *); /*初始化便道*/ int arrive(SqStack *,LinkQueue *); /*車輛到達*/ void leave(SqStack *,SqStac
13、k *,LinkQueue *); /*車輛離開*/ void info(SqStack,LinkQueue); /*顯示停車場信息*/ void PRINT(Car *p,int room);void InitStack(SqStack *s) /*初始化棧*/ int i; s->top=0; for(i=0;i<=MAX;i+) s->stacks->
14、;top=NULL; int InitQueue(LinkQueue *Q) /*初始化便道*/ Q->head=(QNode *)malloc(sizeof(QNode); if(Q->head!=NULL) Q->head->next=NULL; Q->rear=Q->head;
15、0; return(1); else return(-1); void main() SqStack In,Out; LinkQueue Wait; int ch; InitStack(&In); /*初始化停車站*/ InitStack(&Out); /*初始化讓路的
16、臨時棧*/ InitQueue(&Wait); /*初始化通道*/ while(1) printf("-歡迎使用停車場管理系統-n"); printf("t本系統由5011工作室開發,*、*、*、*。nn"); printf("請輸入停車場的容量:"); scanf("%d",&
17、MAX); printf("請輸入停車場的收費標準(元/小時):"); scanf("%f",&price); printf("您輸入的停車場容量為%d位,費用為%2.1f元/小時。n",MAX,price); printf("n(1)車輛到達n(2)車輛離開n(3)停車場信息n(4)退出系統n請選擇n"); while(1)
18、 ch=getch(); switch(ch) case 49:arrive(&In,&Wait);break; /*車輛到達*/ case 50:leave(&In,&Out,&Wait);break; /*車輛離開*/ case 51:info(In,Wait);break; /*輸出車站信息*/case 52:p
19、rintf("使用!");exit(0); /*退出主程序*/ default:printf("n按鍵無效,請重新按鍵選擇!");/*49-52分別表示"1"-"4"這四個按鍵的鍵值*/system("CLS");printf("-歡迎使用停車場管理系統-n");printf("t本系統由CG工作室開發,*、*、*、*。nnn");printf("您輸入的停車場容量為%d位,費用為%2.1f元/小時。n",MAX
20、,price);printf("n(1)車輛到達n(2)車輛離開n(3)停車場信息n(4)退出系統n請選擇n"); int arrive(SqStack *In,LinkQueue *W) /*車輛到達*/ Car *p; QNode *t; p=(Car *)malloc(sizeof(Car); flush
21、all(); printf("n停車場還有%d停車位(若停車位為0,車可先進入便道等待)",MAX-In->top); printf("n請輸入車牌(例:湘D0734):"); gets(p->num); if(In->top<MAX) /*停車場未滿,車進車場*/ In->top+; printf("n
22、停車的位置:%d號停車位。",In->top); /printf("n請輸入車到達的時間(格式"*:*"):"); printf("n請輸入車到達的時間:"); scanf("%d:%d",&(p->reach.hour),&(p->reach.min); In->stackIn->top=p; pr
23、intf("請按任意鍵返回"); getch(); return(1); else /*停車場已滿,車進便道*/ printf("n停車位已滿,該車須在便道等待!"); t=(QNode *)malloc(sizeof(QNode); t->
24、data=p; t->next=NULL; W->rear->next=t; W->rear=t; printf("請按任意鍵返回"); getch(); return(1); void leave(SqStack *In,SqStack *Ou
25、t,LinkQueue *W) /*車輛離開*/ int room; Car *p,*t; QNode *q; /*判斷車場是否有車*/ if(In->top>0) /*有車*/ while(1) /*輸入離開車輛的信息*/
26、;printf("n請輸入車在停車場的位置(1-%d):",In->top); scanf("%d",&room); if(room>=1&&room<=In->top) break; while(In->top>room) /*車輛離開*/
27、160; Out->top+; Out->stackOut->top=In->stackIn->top; In->stackIn->top=NULL; In->top-; p=In->stackIn->top; In->st
28、ackIn->top=NULL; In->top-; while(Out->top>=1) In->top+; In->stackIn->top=Out->stackOut->top; Out->stackOut->top=NULL; &
29、#160; Out->top-; PRINT(p,room); /*判斷通道上是否有車與車站是否已滿*/ if(W->head!=W->rear)&&In->top<MAX) /*便道的車輛進入停車場*/ q=W->
30、;head->next; t=q->data; In->top+; printf("n便道的%s號車進入車場第%d號停車位。",t->num,In->top); /printf("n請輸入現在的時間(格式"*:*"):");
31、0;printf("n請輸入現在的時間:"); scanf("%d:%d",&(t->reach.hour),&(t->reach.min); W->head->next=q->next; if(q=W->rear) W->rear=W->head; In->stackIn->top=t;
32、60; free(q); else printf("n停車場里沒有車n"); /*沒車*/ printf("請按任意鍵返回"); getch();void info1(SqStack *S) /*列表輸出車場信息*/ int i; if(S->top>0) /*判斷停車場是否有車*/&
33、#160; printf("n車場:"); printf("n 位置 到達時間 車牌號n"); for(i=1;i<=S->top;i+) printf(" %dt",i); printf("%d
34、:%d ",S->stacki->reach.hour,S->stacki->reach.min); puts(S->stacki->num); else printf("n停車場里沒有車"); void info2(LinkQueue *W) /*顯示便道信息*/
35、160; QNode *p; p=W->head->next; if(W->head!=W->rear) /*判斷通道上是否有車*/ printf("n便道中車輛的為:n"); while(p!=NULL) puts(p->data->
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 激光技術考試考點分析與記憶方法試題及答案
- 藥物知識與應用題目示例試題及答案
- 藥劑學結構與功能試題及答案
- 衛生管理老年醫療考題及答案
- 母豬小群體管理技巧的試題及答案
- 激光技術考試重點難點試題及答案
- 激光技術工程師證書考試各類試題及答案分類
- 母豬日常護理技能試題及答案
- 激光行業人才流動與發展試題及答案
- 西醫臨床實際案例分析試題及答案
- 安全設施施工情況報告(范文)
- 豐田的品質管理及案例分析(56頁)ppt課件
- 空氣軸承技術培訓教程
- 20xx老舊樓加裝電梯方案計劃(含詳細預算清單)
- 北京中小學生天文知識競賽復習題庫
- 新標日初級上考試試卷試題(1-7-10課)
- 鄉村旅游經營管理的八種模式知識講解
- 施工現場日周月安全檢查記錄表
- 板材生產線的張力控制和負荷平衡控制
- G101-2現澆混凝土板式樓梯
- 招標代理企業內部管理規章制度
評論
0/150
提交評論