版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 設(shè)計(jì):停車場(chǎng)管理</b></p><p><b> 1 問題描述</b></p><p> 設(shè)停車場(chǎng)是一個(gè)可停放n輛汽車的狹長(zhǎng)通道,且只有一個(gè)門可供出入。汽車在停車場(chǎng)內(nèi)按車輛到達(dá)時(shí)間的先后順序,依次由北向南排列(門在最南端,最先到達(dá)的第一輛車停放在車場(chǎng)的最北端),若車場(chǎng)內(nèi)已停滿n輛汽車,則后來的汽車只能在門外的便
2、道上等候,一旦有車開走,則排在便道上的第一輛汽車即可開入;當(dāng)停車場(chǎng)內(nèi)某輛車要離開時(shí),在它之后進(jìn)入的車輛必須先退出車場(chǎng)為它讓路,待該輛車開出大門外,其他車輛再按原順序進(jìn)入車場(chǎng),每輛停放在車場(chǎng)的車在它離開停車場(chǎng)時(shí)必須按它停留的時(shí)間長(zhǎng)短交納費(fèi)用。</p><p><b> 2 需求分析</b></p><p> ?。?)根據(jù)車輛到達(dá)停車場(chǎng)到車輛離開停車場(chǎng)時(shí)所停留的時(shí)間進(jìn)行
3、計(jì)時(shí)收費(fèi)。</p><p> (2)當(dāng)有車輛從停車場(chǎng)離開時(shí),等待的車輛按順序進(jìn)入停車場(chǎng)停放。實(shí)現(xiàn)停車場(chǎng)的調(diào)度功能。</p><p> ?。?)用順序棧來表示停車場(chǎng),鏈隊(duì)表示停車場(chǎng)外的便道。</p><p> (4)顯示停車場(chǎng)信息和便道信息。</p><p> (5)程序執(zhí)行的命令為:車輛進(jìn)入停車場(chǎng) 車輛離開停車場(chǎng) 顯示停車場(chǎng)的信息。&l
4、t;/p><p><b> 3 概要設(shè)計(jì)</b></p><p> 3.1抽象數(shù)據(jù)類型定義</p><p> ?。?)棧的抽象數(shù)據(jù)類型定義</p><p> AST Stack{</p><p> 數(shù)據(jù)對(duì)象:D={ai|ai∈ElemSet,i=1,2,...,n, n≥0}</p>
5、;<p> 數(shù)據(jù)關(guān)系:R1={<ai-1,ai>|ai-1,ai∈D,i=2,...,n}</p><p> 約定an端為棧頂,a1端為棧底。</p><p><b> 基本操作:</b></p><p> InitStack(&S)</p><p> 操作結(jié)果:構(gòu)造一個(gè)空棧S
6、。</p><p> DestroyStack(&S)</p><p> 初始條件:棧S已存在。</p><p> 操作結(jié)果:棧S被銷毀。</p><p> ClearStack(&S)</p><p> 初始條件:棧S已存在。</p><p> 操作結(jié)果:將棧S清為
7、空棧。</p><p> StackEmpty(S)</p><p> 初始條件:棧S已存在。</p><p> 操作結(jié)果:若棧S為空棧,則返回TRUE,否則FALSE。</p><p> StackLength(s)</p><p> 初始條件:棧S已存在。</p><p> 操作
8、結(jié)果:返回S的元素個(gè)數(shù),既棧的長(zhǎng)度。</p><p> GetTop(S,&e)</p><p> 初始條件:棧S已存在且非空。</p><p> 操作結(jié)果:用e返回S的棧頂元素。</p><p> Push(&S,e)</p><p> 初始條件:棧S已存在。</p><
9、p> 操作結(jié)果:插入元素e為新的棧頂元素。</p><p> Pop(&S,&e)</p><p> 初始條件:棧S已存在且非空。</p><p> 操作結(jié)果:刪除S的棧頂元素,并用e返回其值。</p><p> StackTraverse(S,visit())</p><p> 初始
10、條件:棧S已存在且非空。</p><p> 操作結(jié)果:從棧底到棧頂依次對(duì)S的每個(gè)數(shù)據(jù)元素調(diào)用函數(shù)visit()。一旦visit()失敗,則操作失效。</p><p> }ADT Stack</p><p> ?。?)隊(duì)列的抽象數(shù)據(jù)類型定義</p><p> ADT Queue{</p><p> 數(shù)據(jù)對(duì)象:D=
11、{ai|ai∈ElemSet,i=1,2,...,n,n≥0}</p><p> 數(shù)據(jù)關(guān)系:R1={<ai-1,ai>|ai-1,ai∈D,i=2,...,n}</p><p> 約定其中a1端為隊(duì)列頭,an為隊(duì)列尾。</p><p><b> 基本操作:</b></p><p> InitQueue
12、(&Q)</p><p> 操作結(jié)果:構(gòu)造一個(gè)空隊(duì)列Q。</p><p> DestroyQueue(&Q)</p><p> 初始條件:隊(duì)列Q已存在。</p><p> 操作結(jié)果:隊(duì)列Q被銷毀,不再存在。</p><p> ClearQueue(&Q)</p><
13、p> 初始條件:隊(duì)列Q已存在。</p><p> 操作結(jié)果:將Q清為空隊(duì)列。</p><p> QueueEmpty(Q)</p><p> 初始條件:隊(duì)列Q已存在。</p><p> 操作結(jié)果:若Q為空隊(duì)列,則返回TRUE,否則FALSE。</p><p> QueueLength(Q)</p
14、><p> 初始條件:隊(duì)列Q已存在。</p><p> 操作結(jié)果:返回Q的元素個(gè)數(shù),即隊(duì)列的長(zhǎng)度。</p><p> GetHead(Q,&e)</p><p> 初始條件:Q為非空隊(duì)列。</p><p> 操作結(jié)果:用e返回的隊(duì)頭元素。</p><p> EnQueue(&am
15、p;Q,e)</p><p> 初始條件:隊(duì)列Q已存在。</p><p> 操作結(jié)果:插入元素e為Q的新的隊(duì)尾元素。</p><p> DeQueue(&Q,&e)</p><p> 初始條件:Q為非空隊(duì)列。</p><p> 操作結(jié)果:刪除Q的隊(duì)頭元素,并用e返回其值。</p>
16、<p> QueueTraverse(Q,visit())</p><p> 初始條件:Q已存在且非空。</p><p> 操作結(jié)果:從隊(duì)頭到隊(duì)尾,依次對(duì)Q的每個(gè)數(shù)據(jù)元素調(diào)用函數(shù)visit()。一旦visit() 失敗,則操作失敗。</p><p> }ADT Queue </p><p><b>
17、3.2模塊劃分</b></p><p> 本程序包括六個(gè)模塊:</p><p><b> (1)主程序模塊</b></p><p> void main()</p><p><b> {</b></p><p><b> 初始化停車站;<
18、/b></p><p> 初始化讓路的臨時(shí)棧;</p><p><b> 初始化通道;</b></p><p> 輸出主菜單:車輛到達(dá)、車輛離開與計(jì)費(fèi)、查看停車場(chǎng)信息;</p><p><b> }</b></p><p><b> ?。?)入場(chǎng)模塊&
19、lt;/b></p><p> int arrive(SqStack *In,LinkQueue *W)</p><p><b> {</b></p><p><b> 車輛進(jìn)入停車場(chǎng);</b></p><p><b> 計(jì)算停車費(fèi)用</b></p>
20、<p><b> }</b></p><p><b> ?。?)出場(chǎng)模塊</b></p><p> void leave(SqStack *In,SqStack *Out,LinkQueue *W)</p><p><b> {</b></p><p><
21、;b> 車輛離開停車場(chǎng);</b></p><p><b> }</b></p><p><b> ?。?)輸出模塊</b></p><p> void info(SqStack S,LinkQueue W) </p><p><b> {</b><
22、;/p><p><b> 輸出停車場(chǎng)信息; </b></p><p><b> }</b></p><p> ?。?)棧模塊——實(shí)現(xiàn)棧的抽象數(shù)據(jù)類型</p><p> ?。?)隊(duì)列模塊——實(shí)現(xiàn)隊(duì)列的抽象數(shù)據(jù)類型</p><p><b> 4 詳細(xì)設(shè)計(jì)</b&
23、gt;</p><p> 4.1數(shù)據(jù)類型的定義</p><p> int MAX; /*定義一個(gè)全局變量用來存儲(chǔ)車庫(kù)最大容量*/ </p><p> float price;/* 定義一個(gè)全局變量用來存儲(chǔ)每車每小時(shí)的費(fèi)用*/ </p><p> typedef struct time</p><p>&
24、lt;b> { </b></p><p> int hour; </p><p> int min; </p><p> }Time; /*時(shí)間結(jié)點(diǎn)*/ </p><p> typedef struct node</p><p><b> { </b&g
25、t;</p><p> char num[10]; </p><p> Time reach; </p><p> Time leave; </p><p> }Car; /*車輛信息結(jié)點(diǎn)*/ </p><p> typedef struct NODE</p><p>
26、<b> { </b></p><p> Car *stack[100]; </p><p> int top; </p><p> }SqStack; /*停車站*/ </p><p> typedef struct car</p><p><b> {
27、 </b></p><p> Car *data; </p><p> struct car *next; </p><p> }QNode; </p><p> typedef struct Node</p><p><b> { </b></p>
28、;<p> QNode *head; </p><p> QNode *rear; </p><p> }LinkQueue; /*通道*/ </p><p> 4.2主要模塊的算法描述</p><p> 本程序主要分為四部分:(1)主函數(shù)及程序框架、(2)車輛到達(dá)模塊、(3)車輛離開模塊、(4)顯示車輛信息模
29、塊,</p><p><b> ?。?)主函數(shù)</b></p><p> void main() </p><p><b> { </b></p><p> SqStack In,Out; LinkQueue Wait; </p><p> int ch;
30、 </p><p> InitStack(&In); /*初始化停車站*/ </p><p> InitStack(&Out); /*初始化讓路的臨時(shí)棧*/ </p><p> InitQueue(&Wait); /*初始化通道*/ </p><p> while(1) </p>
31、<p><b> { </b></p><p> printf("--------------------歡迎使用停車場(chǎng)管理系統(tǒng)--------------------\n");</p><p> printf("\t本系統(tǒng)由5011工作室開發(fā),作者:鄧春國(guó)、段慶龍、梁偉明、丁磊。\n\n");</p&
32、gt;<p> printf("請(qǐng)輸入停車場(chǎng)的容量:");</p><p> scanf("%d",&MAX);</p><p> printf("請(qǐng)輸入停車場(chǎng)的收費(fèi)標(biāo)準(zhǔn)(元/小時(shí)):");</p><p> scanf("%f",&price);&
33、lt;/p><p> printf("您輸入的停車場(chǎng)容量為%d位,費(fèi)用為%2.1f元/小時(shí)。\n",MAX,price);</p><p> printf("\n(1)車輛到達(dá)\n(2)車輛離開\n(3)停車場(chǎng)信息\n(4)退出系統(tǒng)\n請(qǐng)選擇\n");</p><p> while(1) </p><
34、p><b> { </b></p><p> ch=getch();</p><p> switch(ch) </p><p><b> { </b></p><p> case 49:arrive(&In,&Wait);break; /*車輛到達(dá)*/
35、 </p><p> case 50:leave(&In,&Out,&Wait);break; /*車輛離開*/ </p><p> case 51:info(In,Wait);break; /*輸出車站信息*/</p><p> case 52:{printf("謝謝使用!");exit(0);} /*退出主程
36、序*/ </p><p> default:printf("\n按鍵無效,請(qǐng)重新按鍵選擇!");</p><p> }/*49-52分別表示“1”-“4”這四個(gè)按鍵的鍵值*/</p><p> system("CLS");</p><p> printf("------------
37、--------歡迎使用停車場(chǎng)管理系統(tǒng)--------------------\n");</p><p> printf("\t本系統(tǒng)由CG工作室開發(fā),作者:鄧春國(guó)、段慶龍、梁偉明、丁磊。\n\n\n");</p><p> printf("您輸入的停車場(chǎng)容量為%d位,費(fèi)用為%2.1f元/小時(shí)。\n",MAX,price);</p
38、><p> printf("\n(1)車輛到達(dá)\n(2)車輛離開\n(3)停車場(chǎng)信息\n(4)退出系統(tǒng)\n請(qǐng)選擇\n"); </p><p><b> } </b></p><p><b> } </b></p><p><b> } </b&g
39、t;</p><p><b> ?。?)車輛離開模塊</b></p><p><b> 算法分析</b></p><p> void leave(SqStack *In,SqStack *Out,LinkQueue *W) /*車輛離開*/</p><p><b> { </
40、b></p><p><b> int room;</b></p><p> Car *p,*t;QNode *q;</p><p> /*開始定義一個(gè)整型變量room,用來記錄要離開的車輛在停車場(chǎng)的位置,定義車輛結(jié)點(diǎn)指針p和t和隊(duì)列結(jié)點(diǎn)指針q。*/</p><p> if(In->top>0)
41、 /*有車*/ </p><p><b> { </b></p><p> while(1) </p><p><b> { </b></p><p> printf("\n請(qǐng)輸入車在停車場(chǎng)的位置(1-%d):",In->top); </p&
42、gt;<p> scanf("%d",&room); </p><p> if(room>=1&&room<=In->top) break; </p><p><b> }</b></p><p> /*判斷停車場(chǎng)內(nèi)是否有車,如果有車,就輸入要離開的車輛
43、在停車場(chǎng)的位置,否則就提示停車場(chǎng)沒車。這里用了while循環(huán)語(yǔ)句,如果輸入的車輛位置超出范圍,就要重新輸入。*/</p><p> while(In->top>room) /*車輛離開*/</p><p><b> {</b></p><p> Out->top++;</p><p> Out-
44、>stack[Out->top]=In->stack[In->top];</p><p> In->stack[In->top]=NULL;In->top--;</p><p><b> }</b></p><p> /*如果棧頂位置In->top大于要離開的車位置room(即要離開的車不在
45、停車場(chǎng)的門口)的話,在要離開的車輛前面的車就要先離開,開到臨時(shí)停車場(chǎng),即臨時(shí)棧中,因此Out所表示的臨時(shí)棧的棧頂top加1,用來表示臨時(shí)停車場(chǎng)增加1輛車;接著把該車的信息拷貝到棧Out中,然后刪除棧In的棧頂(即這輛車開走)。*/</p><p> p=In->stack[In->top]; </p><p> In->stack[In->top]=NULL;I
46、n->top--;</p><p> while(Out->top>=1) </p><p><b> { </b></p><p> In->top++;In->stack[In->top]=Out->stack[Out->top]; </p><p>
47、 Out->stack[Out->top]=NULL; Out->top--; </p><p><b> }</b></p><p> /*直到要離開的車輛前面的車都開到臨時(shí)停車場(chǎng)之后,該車才離開,離開之后,該車的信息結(jié)點(diǎn)In->stack[In->top]置空,然后棧頂In->top減1。之后就判斷臨時(shí)停車場(chǎng)是否有車,
48、有車就一輛一輛的開回停車場(chǎng)里面,因此停車場(chǎng)的棧頂In->top 加1,然后就把臨時(shí)停車場(chǎng)的車結(jié)點(diǎn)的信息拷貝到停車場(chǎng)的車結(jié)點(diǎn)上,接著刪除臨時(shí)停車場(chǎng)車的結(jié)點(diǎn) (即Out->stack[Out->top]=NULL;Out->top--;)。*/</p><p> PRINT(p,room); </p><p> if((W->head!=W->re
49、ar)&&In->top<MAX)</p><p><b> { </b></p><p> q=W->head->next;t=q->data;In->top++; </p><p> printf("\n便道的%s號(hào)車進(jìn)入車場(chǎng)第%d號(hào)停車位。",t->
50、;num,In->top); </p><p> printf("\n請(qǐng)輸入現(xiàn)在的時(shí)間(格式“**:**”):"); </p><p> scanf("%d:%d",&(t->reach.hour),&(t->reach.min)); </p><p> W->head
51、->next=q->next;</p><p> if(q==W->rear) W->rear=W->head; </p><p> In->stack[In->top]=t; </p><p><b> free(q);</b></p><p><b>
52、}</b></p><p> /*判斷(W->head!=W->rear)&&In->top<MAX(即通道上是否有車及停車場(chǎng)是否已滿),如果便道有車且停車場(chǎng)未滿,通道的車便可進(jìn)入停車場(chǎng),此時(shí)指針q指向便道的頭,即隊(duì)頭,然后停車場(chǎng)的棧頂In->top 加1以便增加新的車輛,接著輸入隊(duì)頭的車輛信息,即要進(jìn)去停車場(chǎng)的車的信息,然后便道隊(duì)列的頭結(jié)點(diǎn)指向q(即剛
53、進(jìn)入停車場(chǎng)的車的結(jié)點(diǎn))的后繼結(jié)點(diǎn),即原隊(duì)列中第二輛車的結(jié)點(diǎn),接著判斷剛離開的車是否是最后一輛車,如果是,就把隊(duì)列置空,即隊(duì)頭等于隊(duì)尾;之后就把結(jié)點(diǎn)t(即要進(jìn)入停車場(chǎng)的車)的信息拷貝到停車場(chǎng)棧頂?shù)能囍?,最后釋放p的空間,即原隊(duì)頭結(jié)點(diǎn)。*/ </p><p><b> } </b></p><p> else printf("\n停車場(chǎng)里沒有車\n&q
54、uot;); /*沒車*/</p><p> printf("請(qǐng)按任意鍵返回");</p><p><b> getch();</b></p><p><b> } </b></p><p> leave函數(shù)流程圖如圖4.1所示:</p><p>
55、<b> 5 測(cè)試分析</b></p><p> 測(cè)試數(shù)據(jù)及結(jié)果如下:</p><p> 輸入2輛車的信息,如圖5.2所示:</p><p> 再輸入2輛車的信息,如圖</p><p> 最后選擇車輛離開,輸入第2輛車離開,如圖</p><p><b> 6 課程設(shè)計(jì)總結(jié)&l
56、t;/b></p><p> 通過這次課程設(shè)計(jì)使我充分的理解了用棧和隊(duì)列實(shí)現(xiàn)模擬停車場(chǎng)的基本原理,知道了棧的順序存儲(chǔ)結(jié)構(gòu)和隊(duì)列的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的定義和算法描述,同時(shí)也學(xué)會(huì)了編寫停車場(chǎng)問題的程序。雖然此次的程序不是很完備,沒有加入一些更完善的功能,但是總體還是一個(gè)比較能體現(xiàn)數(shù)據(jù)結(jié)構(gòu)知識(shí)點(diǎn)能力的程序了,當(dāng)然只是相對(duì)于我這個(gè)初學(xué)者來說。在剛開始編程的時(shí)候,我感到有點(diǎn)無從下手,但經(jīng)過對(duì)題目的詳細(xì)分析和思考之后,我就
57、知道具體應(yīng)該做什么,怎么做了。經(jīng)過幾天和同學(xué)的一起研究,我完成這個(gè)程序,我學(xué)到了很多東西,這是在課堂上無法做到的。</p><p><b> 源程序</b></p><p> #include<stdio.h></p><p> #include <stdlib.h></p><p> #
58、include<iostream.h></p><p> #include<string.h></p><p> #include<math.h></p><p> #define size 1 //停車場(chǎng)位置數(shù)</p><p> //模擬停車場(chǎng)的堆棧的性質(zhì);</p>
59、<p> typedef struct zanlind{ </p><p> int number; //汽車車號(hào)</p><p> int ar_time; //汽車到達(dá)時(shí)間</p><p> }zanInode;</p><p> typedef struct{</p><p&g
60、t; zanInode *base; //停車場(chǎng)的堆棧底</p><p> zanInode *top; //停車場(chǎng)的堆棧頂</p><p> int stacksize_curren;</p><p> }stackhead;</p><p> //堆棧的基本操作;</p><p> vo
61、id initstack(stackhead &L) //構(gòu)造一個(gè)空棧</p><p><b> {</b></p><p> L.base=(zanInode*)malloc(size*sizeof(zanlind));</p><p> if(!L.base) exit(0);</p><p>
62、L.top=L.base;</p><p> L.stacksize_curren=0;</p><p><b> }</b></p><p> void push(stackhead &L,zanInode e) //把元素e壓入s棧</p><p><b> {</b></
63、p><p> *L.top++=e;</p><p> L.stacksize_curren++;</p><p><b> }</b></p><p> void pop(stackhead &L,zanInode &e) //把元素e彈出s棧</p><p><b
64、> {</b></p><p> if(L.top==L.base) </p><p><b> {</b></p><p> cout<<"停車場(chǎng)為空 !!";</p><p><b> return;</b></p>&l
65、t;p><b> }</b></p><p> e=*--L.top;</p><p> L.stacksize_curren--;</p><p><b> }</b></p><p> //模擬便道的隊(duì)列的性質(zhì);</p><p> typedef str
66、uct duilie{ </p><p> int number; //汽車車號(hào)</p><p> int ar_time; //汽車到達(dá)時(shí)間</p><p> struct duilie *next;</p><p> }*queueptr;</p><p> typedef str
67、uct{</p><p> queueptr front; //便道的隊(duì)列的對(duì)頭</p><p> queueptr rear; //便道的隊(duì)列的隊(duì)尾</p><p> int length;</p><p> }linkqueue;</p><p> //隊(duì)列的基本操作;</p>&l
68、t;p> void initqueue(linkqueue &q) //構(gòu)造一個(gè)空隊(duì)列 </p><p><b> {</b></p><p> q.front=q.rear=(queueptr)malloc(sizeof(duilie));</p><p> if(!q.front||!q.rear)</p>
69、<p><b> exit(0);</b></p><p> q.front->next=NULL;</p><p> q.length=0;</p><p><b> }</b></p><p> void enqueue(linkqueue &q,int n
70、umber,int ar_time) //把元素的插入隊(duì)列(屬性為number,ar_time)</p><p><b> {</b></p><p> queueptr p;</p><p> p=(queueptr)malloc(sizeof(duilie));</p><p> if(!p) exit(0)
71、;</p><p> p->number=number;</p><p> p->ar_time=ar_time;</p><p> p->next=NULL;</p><p> q.rear->next=p;</p><p><b> q.rear=p;</b>
72、</p><p> q.length++;</p><p><b> }</b></p><p> void popqueue(linkqueue &q,queueptr &w) //把元素的插入隊(duì)列(屬性為number,ar_time)</p><p><b> {</b>
73、</p><p> queueptr p;</p><p> if(q.front==q.rear) </p><p><b> {</b></p><p> cout<<"停車場(chǎng)的通道為空 ! !"<<endl;</p><p><b&g
74、t; return;</b></p><p><b> }</b></p><p> p=q.front->next;</p><p><b> w=p; </b></p><p> q.front->next=p->next;</p>&
75、lt;p> q.length--;</p><p> if(q.rear==p) q.front=q.rear;</p><p><b> }</b></p><p> void jinru(stackhead &st,linkqueue &q) //對(duì)進(jìn)入停車場(chǎng)的汽車的處理;</p><p
76、><b> {</b></p><p> int number,time_a;</p><p> cout<<"車牌為:";</p><p> cin>>number;</p><p> cout<<"進(jìn)場(chǎng)的時(shí)刻:";</p
77、><p> cin>>time_a;</p><p> if(st.stacksize_curren<2)</p><p><b> {</b></p><p> zanInode e;</p><p> e.number=number;</p><p&
78、gt; e.ar_time=time_a;</p><p> push(st,e);</p><p> cout<< " 該車已進(jìn)入停車場(chǎng)在: "<<st.stacksize_curren<<" 號(hào)車道"<<endl<<endl;</p><p><b&g
79、t; }</b></p><p><b> else</b></p><p><b> {</b></p><p> enqueue(q,number,time_a);</p><p> cout<<"停車場(chǎng)已滿,該車先停在便道的第"<&l
80、t;q.length<<"個(gè)位置上"<<endl;</p><p><b> }</b></p><p><b> }</b></p><p> void likai(stackhead &st,stackhead &sl,linkqueue &q)
81、 //對(duì)離開的汽車的處理;</p><p> { //st堆棧為停車場(chǎng),sl堆棧為倒車場(chǎng)</p><p> int number,time_d,flag=1,money,arrivaltime; //q為便道隊(duì)列</p><p> cout<<"車牌為:"
82、;;</p><p> cin>>number;</p><p> cout<<"出場(chǎng)的時(shí)刻:";</p><p> cin>>time_d;</p><p> zanInode e,q_to_s;</p><p> queueptr w;</p&
83、gt;<p> while(flag) //找到要開出的車,并彈出停車場(chǎng)棧</p><p><b> {</b></p><p> pop(st,e);</p><p> push(sl,e);</p><p> if(e.number==number)</p><p>
84、;<b> {</b></p><p><b> flag=0;</b></p><p> money=(time_d-e.ar_time)*2;</p><p> arrivaltime=e.ar_time;</p><p><b> }</b></p>
85、<p><b> }</b></p><p> pop(sl,e); //把臨時(shí)堆棧的第一輛車(要離開的)去掉;</p><p> while(sl.stacksize_curren) //把倒車場(chǎng)的車倒回停車場(chǎng)</p><p><b> {</b></p><p> p
86、op(sl,e);</p><p> push(st,e);</p><p><b> }</b></p><p> if(st.stacksize_curren<2&&q.length!=0) //停車場(chǎng)有空位,便道上的車開進(jìn)入停車場(chǎng)</p><p><b> {</b&g
87、t;</p><p> popqueue(q,w);</p><p> q_to_s.ar_time=time_d;</p><p> q_to_s.number=w->number;</p><p> push(st,q_to_s);</p><p> cout<<"車牌為&qu
88、ot;<<q_to_s.number<<"的車已從通道進(jìn)入停車場(chǎng),所在的停車位為:"<<st.stacksize_curren<<endl<<endl;</p><p><b> }</b></p><p> cout<<"\n 收
89、 據(jù)"<<endl; </p><p> cout<<" ====================== 車牌號(hào): "<<number<<endl; </p><p> cout<<"===========================================
90、========"<<endl;</p><p> cout<<"|進(jìn)車場(chǎng)時(shí)刻 | 出車場(chǎng)時(shí)刻 | 停留時(shí)間 | 應(yīng)付(元)|"<<endl;</p><p> cout<<"===================================================="<
91、<endl;</p><p> cout<<"| "<<arrivaltime<<" | "<<time_d<<" | "<<time_d-arrivaltime<<" | "<<money&
92、lt;<" |"<<endl;</p><p> cout<<"-----------------------------------------------------"<<endl<<endl;</p><p><b> }</b></p><
93、p> void main()</p><p><b> {</b></p><p> int m=100;</p><p> char flag; //進(jìn)入或離開的標(biāo)識(shí);</p><p> stackhead sting,slinshi; //停車場(chǎng)和臨時(shí)倒車場(chǎng)堆棧的定義;&l
94、t;/p><p> linkqueue line; //隊(duì)列的定義;</p><p> initstack(sting); //構(gòu)造停車場(chǎng)堆棧sting</p><p> initstack(slinshi); //構(gòu)造倒車場(chǎng)堆棧slinshi</p><p> initqueue(line);
95、 //構(gòu)造便道隊(duì)列l(wèi)ine</p><p><b> while(m)</b></p><p><b> {</b></p><p> cout<<"\n ** 停車場(chǎng)管理程序 **"<<endl;</p><
96、;p> cout<<"==================================================="<<endl;</p><p> cout<<"** **"<<endl;</p><p> cout&l
97、t;<"** A --- 汽車 進(jìn) 車場(chǎng) D --- 汽車 出 車場(chǎng) **"<<endl;</p><p> cout<<"** **"<<endl;</p><p> cout<<"** E
98、 --- 退出 程序 **"<<endl;</p><p> cout<<"==================================================="<<endl;</p><p> cout<<" 請(qǐng)選擇 :(A,D,E): ";<
99、/p><p> cin>>flag;</p><p> switch(flag)</p><p><b> {</b></p><p> case 'A': jinru(sting,line);break; //汽車進(jìn)車場(chǎng)</p><p> case
100、'D': likai(sting,slinshi,line);break; //汽車出車場(chǎng)</p><p> case 'E': exit(0);</p><p><b> }</b></p><p><b> m--;</b></p><p><b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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)管理系統(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)管理系統(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)管理
- 數(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ì)報(bào)告---停車場(chǎng)管理系統(tǒng)
- 數(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)告
- 數(shù)據(jù)結(jié)構(gòu)停車場(chǎng)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)停車場(chǎng)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告停車場(chǎng)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)停車場(chǎng)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--停車場(chǎng)管理系統(tǒng)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)停車場(chǎng)管理報(bào)告
評(píng)論
0/150
提交評(píng)論