版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 課 程 設(shè) 計(jì) 報(bào) 告</p><p> 課程名稱 數(shù)據(jù) 結(jié)構(gòu) </p><p> 題 目 停車場(chǎng)管理 </p><p> 學(xué)生姓名 </p><p> 班級(jí)/學(xué)號(hào) &l
2、t;/p><p><b> 需求分析</b></p><p> 設(shè)停車場(chǎng)是一個(gè)可停放n輛汽車的狹長(zhǎng)通道,且只有一個(gè)大門可供</p><p> 汽車進(jìn)出。汽車在停車場(chǎng)內(nèi)按車輛到達(dá)時(shí)間的先后順序,依次由北向南排列(大門在最南端),若停車場(chǎng)內(nèi)已停滿n輛汽車,則后來(lái)的汽車只能在門外的便道上等候,一旦有車開(kāi)走,則排在便道上的第一輛車即可開(kāi)入;當(dāng)停車場(chǎng)內(nèi)
3、某輛車要離開(kāi)時(shí),在它之后進(jìn)入的車輛必須先退出車場(chǎng)為它讓路,待該輛車開(kāi)出大門外,其他車輛再按原次序進(jìn)入車場(chǎng),每輛停放在車場(chǎng)的車在它離開(kāi)停車場(chǎng)時(shí)必須按它停留的時(shí)間長(zhǎng)短交納費(fèi)用。試為停車場(chǎng)編制按上述要求進(jìn)行管理的模擬程序。</p><p><b> 【測(cè)試數(shù)據(jù)】</b></p><p> 設(shè)n=2,輸入數(shù)據(jù)為:(’A’,1,5),(’A’,2,10),(’D’,1,15
4、),(’A’,3,20),(’A’,4,25),(’A’,5,30),(’D’,2,35),(’D’,4,40),(’E’,0,0)。其中:’A’表示到達(dá);’D’表示離去;’E’表示輸入結(jié)束。</p><p><b> 概要設(shè)計(jì)</b></p><p> 以棧模擬停車場(chǎng),以隊(duì)列模擬車場(chǎng)外的便道。棧以順序結(jié)構(gòu)實(shí)現(xiàn)。隊(duì)列以鏈表結(jié)構(gòu)實(shí)現(xiàn)。每一組輸入數(shù)據(jù)包括:汽車“到達(dá)”
5、或“離去”信息、汽車牌照號(hào)碼以及到達(dá)或離去的時(shí)刻。</p><p> 輸出信息:若是車輛到達(dá),則輸出汽車在停車場(chǎng)內(nèi)或便道上的停車位置;若是車輛離去,則輸出汽車在停車場(chǎng)內(nèi)停留的時(shí)間和應(yīng)交納的費(fèi)用(在便道上停留的時(shí)間不收費(fèi))。 </p><p><b> 詳細(xì)設(shè)計(jì)</b></p><p><b> 程序設(shè)計(jì)</b&g
6、t;</p><p><b> 1.數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)</b></p><p> /*棧,模擬停車場(chǎng)*/</p><p> typedef struct Car1</p><p> { //車</p><p> int number;//汽車車號(hào)</p>
7、<p> int ar_time;//汽車到達(dá)時(shí)間</p><p><b> }CarNode;</b></p><p> typedef struct</p><p> { //停車場(chǎng)</p><p> CarNode *base;//停車場(chǎng)的堆棧底</p&g
8、t;<p> CarNode *top;//停車場(chǎng)的堆棧頂</p><p> int stacksize;</p><p><b> }Park;</b></p><p> /*隊(duì)列,模擬便道*/</p><p> typedef struct Car2</p><p>
9、 { //車</p><p> int number;//汽車車號(hào)</p><p> int ar_time;//汽車到達(dá)時(shí)間</p><p> struct Car2 *next;</p><p><b> }*CarPtr;</b></p><p> typ
10、edef struct</p><p> { //便道</p><p> CarPtr front;//便道的隊(duì)列的對(duì)頭</p><p> CarPtr rear;//便道的隊(duì)列的隊(duì)尾</p><p> int length;</p><p> }Shortcut;</p&
11、gt;<p><b> 2.程序設(shè)計(jì)</b></p><p> 主函數(shù)中包括3個(gè)子函數(shù),A(arrive),D(depart),E(end)</p><p> ?。?)輸入車輛數(shù)據(jù):A為到達(dá),D為離去,E為結(jié)束程序。</p><p> ?。?)接著輸入車輛的牌照信息(3)若為到達(dá)的車輛,輸入進(jìn)場(chǎng)信息,若為離去的車輛,輸入離場(chǎng)
12、信息。</p><p> (4)若車輛到達(dá),可得到車輛的停放位置信息,若車輛離去,可得到車輛的停放時(shí)間(在便道上的停放時(shí)間除外),以及應(yīng)該交納的費(fèi)用。</p><p> ?。?)本程序不斷循環(huán)要求輸入車輛信息,直到輸入的車輛數(shù)據(jù)為E時(shí),程序結(jié)束。</p><p><b> 調(diào)試分析</b></p><p> 一開(kāi)始
13、在調(diào)試程序時(shí)遇到了內(nèi)存錯(cuò)誤,經(jīng)過(guò)DEBUG,找到了引起內(nèi)存錯(cuò)誤的原因:即在建立隊(duì)頭指針與隊(duì)尾指針時(shí)沒(méi)有對(duì)指針進(jìn)行初始化(沒(méi)有為指針動(dòng)態(tài)分配空間)。問(wèn)題得到解決。</p><p> 本程序中:車輛到達(dá),離去時(shí)的時(shí)間復(fù)雜度均為:O(n)。本程序空間復(fù)雜度為:O(n)</p><p><b> 使用說(shuō)明和測(cè)試結(jié)果</b></p><p> 1.
14、使用說(shuō)明:用戶按照屏幕所顯示的提示來(lái)選擇需要進(jìn)行操作</p><p><b> 2、測(cè)試結(jié)果:</b></p><p> 測(cè)試結(jié)果滿足題目要求,程序無(wú)錯(cuò)誤。</p><p><b> 心得體會(huì)</b></p><p> 通過(guò)此實(shí)驗(yàn),加深了我對(duì)數(shù)據(jù)結(jié)構(gòu)這門課的理解,真正運(yùn)用了知識(shí)。將理論與現(xiàn)實(shí)
15、完美的聯(lián)系在了一起。增強(qiáng)了動(dòng)手能力,對(duì)今后的工作學(xué)習(xí)都有很大的幫助。單調(diào)的看書本沒(méi)有太大的作用,只有去編程才能理解究竟學(xué)習(xí)的作用。同時(shí),編程過(guò)程中遇到過(guò)各種各樣的問(wèn)題,與同學(xué)討論,與老師交流。鍛煉了我的協(xié)做能力與克服困難的能力。編程也極大的提高了我的學(xué)習(xí)積極性。</p><p><b> 附錄</b></p><p> #include<stdio.h>
16、;</p><p> #include<stdlib.h></p><p> #include<malloc.h></p><p> #define SIZE 2//停車場(chǎng)位置數(shù),共5個(gè)車位</p><p> typedef int Status;</p><p> /*棧,模擬停車場(chǎng)
17、*/</p><p> typedef struct Car1</p><p> { //車</p><p> int number;//汽車車號(hào)</p><p> int ar_time;//汽車到達(dá)時(shí)間</p><p><b> }CarNode;</b>&
18、lt;/p><p> typedef struct</p><p> { //停車場(chǎng)</p><p> CarNode *base;//停車場(chǎng)的堆棧底</p><p> CarNode *top;//停車場(chǎng)的堆棧頂</p><p> int stacksize;</p>
19、<p><b> }Park;</b></p><p> /*隊(duì)列,模擬便道*/</p><p> typedef struct Car2</p><p> { //車</p><p> int number;//汽車車號(hào)</p><p> in
20、t ar_time;//汽車到達(dá)時(shí)間</p><p> struct Car2 *next;</p><p><b> }*CarPtr;</b></p><p> typedef struct</p><p> { //便道</p><p> CarPtr
21、 front;//便道的隊(duì)列的對(duì)頭</p><p> CarPtr rear;//便道的隊(duì)列的隊(duì)尾</p><p> int length;</p><p> }Shortcut;</p><p> /*初始化停車場(chǎng)*/</p><p> Status InitStack(Park &P){</
22、p><p> P.base=(CarNode*)malloc(SIZE*sizeof(Car1));</p><p> if(!P.base) exit(-2);</p><p> P.top=P.base;</p><p> P.stacksize=0;</p><p><b> return 1;&
23、lt;/b></p><p><b> }</b></p><p> Status Push(Park &P,CarNode e){//車進(jìn)入停車場(chǎng)</p><p> *P.top++=e;</p><p> ++P.stacksize;</p><p><b>
24、 return 1;</b></p><p><b> }</b></p><p> Status Pop(Park &P,CarNode &e){//車離開(kāi)停車場(chǎng)</p><p> if(P.top==P.base)</p><p> printf("停車場(chǎng)為空"
25、);</p><p><b> else</b></p><p><b> {</b></p><p> e=*--P.top;</p><p> --P.stacksize;</p><p><b> }</b></p><
26、;p><b> return 1;</b></p><p><b> }</b></p><p><b> /*初始化便道*/</b></p><p> Status InitQueue(Shortcut &S){</p><p> S.front=S.
27、rear=(CarPtr)malloc(sizeof(Car2));</p><p> if(!S.front||!S.rear) exit(-2);</p><p> S.front->next=NULL;</p><p> S.length=0;</p><p><b> return 1;</b>&l
28、t;/p><p><b> }</b></p><p> Status EnQueue(Shortcut &S,int number,int ar_time){//車進(jìn)入便道</p><p><b> CarPtr p;</b></p><p> p=(CarPtr)malloc(siz
29、eof(Car2));</p><p> if(!p) exit(-2);</p><p> p->number=number;</p><p> p->ar_time=ar_time;</p><p> p->next=NULL;</p><p> S.rear->next=p;&l
30、t;/p><p><b> S.rear=p;</b></p><p> ++S.length;</p><p><b> return 1;</b></p><p><b> }</b></p><p> Status DeQueue(Short
31、cut &S,CarPtr &w){//車離開(kāi)便道</p><p> if(S.length == 0)</p><p> printf("通道為空");</p><p><b> else</b></p><p><b> {</b></p>
32、<p> w = S.front->next;</p><p> S.front->next=S.front->next->next;</p><p> --S.length;</p><p><b> }</b></p><p><b> return 1;&l
33、t;/b></p><p><b> }</b></p><p> Status Arrival(Park &P,Shortcut &S){//對(duì)進(jìn)站車輛的處理</p><p> int number,ar_time;</p><p> printf("請(qǐng)輸入車牌號(hào):")
34、;</p><p> scanf("%d",&number);</p><p> printf("進(jìn)場(chǎng)的時(shí)刻:");</p><p> scanf("%d",&ar_time);</p><p> if(P.stacksize<SIZE)</p&g
35、t;<p><b> {</b></p><p> CarNode c;</p><p> c.number=number;</p><p> c.ar_time=ar_time;</p><p> Push(P,c);</p><p> printf("請(qǐng)將車
36、停在第%d號(hào)車道。\n",P.stacksize);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> EnQueue(S,number,ar_time);</p&g
37、t;<p> printf("停車場(chǎng)已滿,請(qǐng)暫時(shí)停在便道的第%d個(gè)位置。\n",S.length);</p><p><b> }</b></p><p><b> return 1;</b></p><p><b> }</b></p><
38、;p> Status Leave(Park &P,Park &P1,Shortcut &S){//對(duì)離站車輛的處理</p><p> int number,le_time,flag=1,money,ar_time;</p><p> printf("請(qǐng)輸入車牌號(hào):");</p><p> scanf(&quo
39、t;%d",&number);</p><p> printf("出場(chǎng)的時(shí)刻:");</p><p> scanf("%d",&le_time);</p><p> CarNode e,m;</p><p><b> CarPtr w;</b>&l
40、t;/p><p> while(P.stacksize)</p><p><b> {</b></p><p><b> Pop(P,e);</b></p><p> if(e.number==number)</p><p><b> {</b>&
41、lt;/p><p><b> flag=0;</b></p><p> money=(le_time-e.ar_time)*2;</p><p> ar_time=e.ar_time;</p><p><b> break;</b></p><p><b>
42、}</b></p><p> Push(P1,e);</p><p><b> }</b></p><p> while(P1.stacksize)</p><p><b> {</b></p><p> Pop(P1,e);</p>&l
43、t;p> Push(P,e);</p><p><b> }</b></p><p> // 車從停車場(chǎng)中出</p><p> if (flag == 0)</p><p><b> {</b></p><p> if(S.length!=0)</p&
44、gt;<p><b> {</b></p><p> DeQueue(S,w);</p><p> m.ar_time=le_time;</p><p> m.number=w->number;</p><p> Push(P,m);</p><p><b>
45、; free(w);</b></p><p> printf("車牌號(hào)為%d的車已由便道進(jìn)入停車場(chǎng)\n",m.number);</p><p><b> }</b></p><p> printf("停車費(fèi)為%d, 占用車位數(shù)為%d\n",money,P.stacksize);<
46、/p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> printf("停車場(chǎng)不存在牌號(hào)為%d的車\n", number);</p><p><
47、b> }</b></p><p><b> return 1;</b></p><p><b> }</b></p><p><b> /*主函數(shù)*/</b></p><p> int main()</p><p><b
48、> {</b></p><p><b> int m=1;</b></p><p> char flag;//選項(xiàng)</p><p><b> Park P,Q;</b></p><p> Shortcut S;</p><p> InitStac
49、k(P);</p><p> InitStack(Q);</p><p> InitQueue(S);</p><p><b> while(m)</b></p><p><b> {</b></p><p> printf("\n
50、 停車場(chǎng)管理程序 \n");</p><p> printf("A 汽車進(jìn)車場(chǎng) D 汽車出車場(chǎng) E 退出程序\n");</p><p> printf("請(qǐng)選擇(A,D,E): ");</p><p> scanf("%c",&
51、;flag);</p><p> switch(flag)</p><p><b> {</b></p><p><b> case 'A':</b></p><p><b> case 'a':</b></p><p
52、> Arrival(P,S);break; //車進(jìn)入停車場(chǎng)</p><p><b> case 'D':</b></p><p><b> case 'd':</b></p><p> Leave(P,Q,S);break; //車離開(kāi)停車場(chǎng)</p><p
53、><b> case 'E':</b></p><p><b> case 'e':</b></p><p><b> m=0;</b></p><p><b> break;</b></p><p><
54、b> default:</b></p><p> printf("Input error!\n");</p><p><b> break;</b></p><p><b> }</b></p><p> while (flag != '\n&
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--停車場(chǎng)管理
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)停車場(chǎng)管理
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-停車場(chǎng)管理
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--停車場(chǎng)管理
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)停車場(chǎng)管理報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--停車場(chǎng)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---停車場(chǎng)管理系統(tǒng)
- 停車場(chǎng)管理-數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-- 停車場(chǎng)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---停車場(chǎng)管理
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--停車場(chǎng)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)《停車場(chǎng)管理系統(tǒng)》
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——停車場(chǎng)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--停車場(chǎng)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---停車場(chǎng)仿真
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--- 停車場(chǎng)問(wèn)題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---停車場(chǎng)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--模擬停車場(chǎng)管理問(wèn)題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--停車場(chǎng)管理系統(tǒng) (2)
- 停車場(chǎng)管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論