版權(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ì)報(bào)告</b></p><p><b> 一、需求分析</b></p><p> 1、以棧模擬停車場(chǎng),以隊(duì)列模擬車場(chǎng)外的便道,按照從終端讀入的輸入數(shù)據(jù)序列進(jìn)行模擬管理。每一組輸入數(shù)據(jù)包括三個(gè)數(shù)據(jù)項(xiàng):汽車“到達(dá)”或“離去”信息、汽車牌照號(hào)碼以及到達(dá)或離去的時(shí)刻。</p><p> 2
2、、用戶輸入汽車信息后,程序?qū)γ恳唤M輸入數(shù)據(jù)進(jìn)行操作后的輸出信息為:若是車輛到達(dá),則輸出汽車在停車場(chǎng)內(nèi)或便到上的停車位置;若是車輛離去,則輸出汽車在停車場(chǎng)內(nèi)停留的時(shí)間和應(yīng)繳納的費(fèi)用(在便道上停留的時(shí)間不收費(fèi))。</p><p> 3、本程序要求棧以順序結(jié)構(gòu)實(shí)現(xiàn),隊(duì)列以鏈表結(jié)構(gòu)實(shí)現(xiàn)。</p><p><b> 4、測(cè)試數(shù)據(jù):</b></p><p&
3、gt; 設(shè)n=2,輸入數(shù)據(jù)為:(“A”,1,5),(“A”,2,10),(“D”,1,15),(“A”3,20),</p><p> (“A”,4,25),(“A”,5,30),(“D”,2,35),(“D”,4,40),(“E”,0,0)。</p><p> 其中:“A”表示到達(dá)(Aiiival);“D”表示離去(Departure);“E”表示輸入結(jié)束(End)。</p&g
4、t;<p> 5、程序執(zhí)行的命令為:</p><p> 1)創(chuàng)建停車場(chǎng);2)創(chuàng)建便到;3)執(zhí)行對(duì)車輛的運(yùn)算;4)輸出所需的數(shù)據(jù)。</p><p><b> 二、概要設(shè)計(jì)</b></p><p> 1、設(shè)定棧的抽象數(shù)據(jù)類型定義:</p><p> ADT Stack{</p><
5、;p> 數(shù)據(jù)對(duì)象:D={ai|ai∈CharSet,i=1,2,…,n,n≥0}</p><p> 數(shù)據(jù)關(guān)系:R1={<a(i-1),ai>|a(i-1),ai∈D,i=2,…,n}</p><p><b> 基本操作:</b></p><p> InitStack(&S)</p><p&g
6、t; 操作結(jié)果:構(gòu)造一個(gè)空棧S。</p><p> StackEmpty(S)</p><p> 初始條件:棧S已存在。</p><p> 操作結(jié)果:若棧S為空棧,則返回TURE,否則FALSE。</p><p> StackLength(S)</p><p> 初始條件:棧S已存在。</p>
7、<p> 操作結(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已存在。&l
8、t;/p><p> 操作結(jié)果:插入元素e為新的棧頂元素。</p><p> Pop(&S,&e) </p><p> 初始條件:棧S已存在且非空。</p><p> 操作結(jié)果:刪除S的棧頂元素,并用e返回其值。</p><p> StackTraverse(S,visit
9、())</p><p> 初始條件:棧S已存在且非空。</p><p> 操作結(jié)果:從棧底到棧頂依次對(duì)S的每個(gè)數(shù)據(jù)元素調(diào)用函數(shù)visit()。一旦visit()失敗,則操作失敗。</p><p> }ADT Stack</p><p> 2、設(shè)定隊(duì)列的抽象數(shù)據(jù)類型定義:</p><p> ADT Queue{
10、</p><p> 數(shù)據(jù)對(duì)象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0}</p><p> 數(shù)據(jù)關(guān)系:R1={<a(i-1),ai>|a(i-1),ai∈D,i=2,…,n}</p><p> 約定其中a1端為隊(duì)列頭,an端為隊(duì)列尾</p><p><b> 基本操作:</b>&l
11、t;/p><p> InitQueue(&Q)</p><p> 操作結(jié)果:構(gòu)造一個(gè)空隊(duì)列Q。</p><p> QueueEmpty(Q)</p><p> 初始條件:隊(duì)列Q已存在。</p><p> 操作結(jié)果:若Q為空隊(duì)列,則返回TURE,否則FALSE。</p><p>
12、QueueLength(Q)</p><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返回Q的對(duì)頭元素。</p>&
13、lt;p> EnQueue(&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ì)頭元
14、素,并用e返回其值。</p><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&
15、gt; 3、設(shè)定停車場(chǎng)的抽象數(shù)據(jù)類型為:</p><p> ADT Park{</p><p> 數(shù)據(jù)對(duì)象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0}</p><p> 數(shù)據(jù)關(guān)系:R1={<a(i-1),ai>|a(i-1),ai∈D,i=2,…,n}</p><p><b> 基本操作:
16、</b></p><p> Arrival(Park &P,Shortcut &S,int n)</p><p> 初始條件:棧S存在。</p><p> 操作結(jié)果:在輸入車牌號(hào)和進(jìn)場(chǎng)時(shí)間后,輸出停車的車道。</p><p> Leave(Park &P,Park &P1,Shortcut
17、&S,int cost)</p><p> 初始條件:棧S存在且非空。</p><p> 操作結(jié)果:在輸入車牌號(hào)和離場(chǎng)時(shí)間后,輸出車停留時(shí)間以及費(fèi)用。</p><p> } ADT Park</p><p> 4、設(shè)定便到的抽象數(shù)據(jù)類型為:</p><p> ADT CarPtr{</p&g
18、t;<p> 數(shù)據(jù)對(duì)象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0}</p><p> 數(shù)據(jù)關(guān)系:R1={<a(i-1),ai>|a(i-1),ai∈D,i=2,…,n}</p><p><b> 基本操作:</b></p><p> EnQueue(S,number,ar_time)<
19、/p><p> 初始條件:停車場(chǎng)已滿,隊(duì)列存在。</p><p> 操作結(jié)果:在輸入車牌號(hào)和進(jìn)場(chǎng)時(shí)間后,輸出車停留在便道上的位置。</p><p> DeQueue(S,w)</p><p> 初始條件:停車場(chǎng)有車輛離開。</p><p> 操作結(jié)果:輸出由便到進(jìn)入停車場(chǎng)的汽車車牌號(hào)</p><
20、;p> DeQueue(S,q)</p><p> 初始條件:便道上有車離開。</p><p> 操作結(jié)果:輸出離開車輛車牌以及停留時(shí)間。</p><p> } ADT CarPtr</p><p> 5、本程序包含五個(gè)模塊</p><p><b> 1)主程序模塊:</b>&
21、lt;/p><p> Void main(){</p><p><b> 初始化;</b></p><p><b> Do{</b></p><p><b> 接受命令;</b></p><p><b> 處理命令;</b>&
22、lt;/p><p> } while (“命令”=”退出”);</p><p><b> }</b></p><p> 2)棧模塊——實(shí)現(xiàn)棧抽象數(shù)據(jù)類型</p><p> 3)隊(duì)列模塊——實(shí)現(xiàn)隊(duì)列抽象數(shù)據(jù)類型</p><p> 4)停車場(chǎng)模塊——實(shí)現(xiàn)停車場(chǎng)抽象數(shù)據(jù)類型</p>
23、<p> 5)便道模塊——實(shí)現(xiàn)便到抽象數(shù)據(jù)類型</p><p> 各模塊之間的調(diào)用關(guān)系如下:</p><p><b> 主程序模塊</b></p><p><b> ↓ </b></p><p><b> 棧模塊</b></p><p&g
24、t;<b> ↓</b></p><p><b> 隊(duì)列模塊</b></p><p><b> ↓</b></p><p><b> 停車場(chǎng)模塊</b></p><p><b> ↓</b></p><p
25、><b> 便道模塊</b></p><p><b> 三、詳細(xì)設(shè)計(jì)</b></p><p><b> 1、車輛類型</b></p><p> typedef struct Car1{//車</p><p> int number;//汽車車號(hào)</p>
26、;<p> int ar_time;//汽車到達(dá)時(shí)間</p><p><b> }CarNode;</b></p><p><b> 2、棧類型</b></p><p> typedef struct{//停車場(chǎng)</p><p> CarNode *base;//停車場(chǎng)的堆棧
27、底</p><p> CarNode *top;//停車場(chǎng)的堆棧頂</p><p> int stacksize;</p><p><b> }Park; </b></p><p> 棧的基本操作設(shè)置如下:</p><p> Void InitStack(Stack &S)<
28、;/p><p> //初始化,設(shè)S為空棧</p><p> Int StackLength(Stack S)</p><p> //返回棧S的長(zhǎng)度S.size</p><p> Status GetTop(Stack S)</p><p> //若S為空棧,則返回TURE;否則返回FALSE</p>
29、<p> Status GetTop(Stack S,ElemType e)</p><p> //若棧S不空,則以e帶回棧頂元素并返回TURE,否則返回FALSE</p><p> Status Push(Stack &S,ElemType e)</p><p> //若分配空間成功,則在S的棧頂插入新的棧頂元素e,并返回TURE<
30、;/p><p> //否則棧不變,并返回FALSE</p><p> Status Pop(Stack &S,ElemType &e)</p><p> //若棧不空,則刪除S的棧頂元素并以e帶回其值,且返回TURE</p><p> //否則返回FALSE</p><p> Void Stack
31、Traverse(Stack S,Status(*visit)(ElemType e))</p><p> //從棧底到棧頂依次對(duì)S中的每個(gè)結(jié)點(diǎn)調(diào)用函數(shù)visit</p><p> 其中部分操作的算法:</p><p> void InitStack(Park &P,int n)</p><p><b> {//初始
32、化停車場(chǎng)</b></p><p> P.top=P.base=(CarNode*)malloc(n*sizeof(Car1));</p><p> P.stacksize=0;</p><p><b> }</b></p><p> void Push(Park &P,CarNode e)&l
33、t;/p><p><b> {//車進(jìn)入停車場(chǎng)</b></p><p><b> *P.top=e;</b></p><p><b> P.top++;</b></p><p> ++P.stacksize;</p><p><b> }
34、</b></p><p> void Pop(Park &P,CarNode &e)</p><p><b> {//車離開停車場(chǎng)</b></p><p><b> --P.top;</b></p><p><b> e=*P.top;</b>
35、;</p><p> --P.stacksize;</p><p><b> }</b></p><p><b> 3、隊(duì)列類型</b></p><p> typedef struct Car2</p><p><b> {//車</b><
36、;/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> typedef struct</p>
37、<p><b> {//便道</b></p><p> CarPtr front;//便道的隊(duì)列的對(duì)頭</p><p> CarPtr rear;//便道的隊(duì)列的隊(duì)尾</p><p> int length;</p><p> }Shortcut;</p><p> 隊(duì)列的
38、基本操作設(shè)置如下:</p><p> Status TnitQueue(LinkQueue &Q)</p><p><b> //構(gòu)造一個(gè)空列Q</b></p><p> Status QueueEmpty(LinkQueue Q)</p><p> //若隊(duì)列Q為空隊(duì)列,則返回TURE,否則返回FALS
39、E</p><p> Status QueueLength(LinkQueue Q)</p><p> //返回Q的元素個(gè)數(shù),即為隊(duì)列的長(zhǎng)度</p><p> Status GetHead(LinkQueue Q,QElemType &e)</p><p> //若隊(duì)列不空,則用e返回Q的隊(duì)頭元素,并返回OK;否則返回ERRO
40、R</p><p> Status EnQueue(LinkQueue &Q, QElemType e)</p><p> //插入元素e為Q的新的隊(duì)尾元素 </p><p> Status DeQueue(LinkQueue Q,QElemType &e)</p><p> //若隊(duì)列不空,則刪除Q的隊(duì)頭元素,用e返
41、回其值,并返回OK;</p><p> //否則返回ERROR</p><p> Status QueueTraverse(LinkQueue Q,visit())</p><p> //從隊(duì)頭到隊(duì)尾依次對(duì)隊(duì)列Q中每個(gè)元素調(diào)用函數(shù)visit(),一旦visit失敗,則操作失敗。</p><p> 其中部分操作的算法:</p>
42、;<p> void InitQueue(Shortcut &S)</p><p><b> {//初始化便道</b></p><p> S.front=S.rear=(CarPtr)malloc(sizeof(Car2));</p><p> S.front->next=NULL;</p>&
43、lt;p> S.length=0;</p><p><b> }</b></p><p> void EnQueue(Shortcut &S,int number,int ar_time)</p><p><b> {//車進(jìn)入便道</b></p><p><b>
44、 CarPtr p;</b></p><p> p=(CarPtr)malloc(sizeof(Car2));</p><p> p->number=number;</p><p> p->ar_time=ar_time;</p><p> p->next=NULL;</p><p&g
45、t; S.rear->next=p; //相連</p><p><b> S.rear=p;</b></p><p> ++S.length;</p><p><b> }</b></p><p> void DeQueue(Shortcut &S,CarPtr &w
46、)</p><p><b> {//車離開便道</b></p><p> if(S.length!=0)</p><p><b> {</b></p><p> w = S.front->next;</p><p> S.front->next=S.fr
47、ont->next->next;</p><p> --S.length;</p><p><b> }</b></p><p><b> }</b></p><p> 4、停車場(chǎng)、便道的類型</p><p> 其中部分操作的算法:</p>
48、<p> void Arrival(Park &P,Shortcut &S,int n)</p><p> {//對(duì)進(jìn)站車輛的處理</p><p> int number,ar_time;</p><p> printf("請(qǐng)輸入車牌號(hào):");</p><p> scanf("
49、;%d",&number);</p><p> printf("進(jìn)場(chǎng)的時(shí)刻:");</p><p> scanf("%d",&ar_time);</p><p> if(P.stacksize<n)</p><p><b> {</b><
50、;/p><p> CarNode c;</p><p> c.number=number;</p><p> c.ar_time=ar_time;</p><p> Push(P,c);</p><p> printf("該車應(yīng)停在第%d號(hào)車道。\n",P.stacksize);</p&
51、gt;<p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> EnQueue(S,number,ar_time);</p><p> printf("停車場(chǎng)已滿,請(qǐng)暫時(shí)停
52、在便道的第%d個(gè)位置。\n",S.length);</p><p><b> }</b></p><p><b> }</b></p><p> void Leave(Park &P,Park &P1,Shortcut &S,int cost)</p><p>
53、; {//對(duì)離站車輛的處理</p><p> int number,le_time,flag,money;</p><p> CarPtr c,q;</p><p> int times;</p><p> printf("請(qǐng)輸入車牌號(hào):");</p><p> scanf("
54、%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><
55、/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><
56、;/p><p><b> flag=0;</b></p><p> money=(le_time-e.ar_time)*cost;</p><p> times = le_time-e.ar_time;</p><p><b> break;</b></p><p>&l
57、t;b> }</b></p><p> Push(P1,e);</p><p><b> }</b></p><p> while(P1.stacksize)</p><p><b> {</b></p><p> Pop(P1,e);</
58、p><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!=
59、0)</p><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>
60、;<b> 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,times);&l
61、t;/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
62、> c = S.front;</p><p> if(S.length!=0)</p><p><b> {</b></p><p> while(c->next!= NULL)</p><p><b> {</b></p><p> if(c->
63、;next->number == number)</p><p><b> {</b></p><p> printf("%d車 從便道上離開,停留時(shí)間 %d\n",c->next->number,le_time -c->next->ar_time);</p><p> c->ne
64、xt = c->next->next;</p><p> --S.length;</p><p><b> break;</b></p><p><b> }</b></p><p> c = c->next;</p><p> DeQueue(S
65、,q) ;</p><p> S.rear->next=q;</p><p><b> S.rear=q;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }<
66、/b></p><p><b> }</b></p><p><b> 五、主函數(shù)的算法:</b></p><p> void main()</p><p><b> {</b></p><p> int n,cost;</p>
67、;<p> char flag;//選項(xiàng)</p><p><b> Park P,Q;</b></p><p> printf("輸入停車場(chǎng)的規(guī)模:");</p><p> scanf("%d",&n);</p><p> printf("
68、每小時(shí)收費(fèi):");</p><p> scanf("%d",&cost);</p><p> Shortcut S;</p><p> InitStack(P,n); //初始化</p><p> InitStack(Q,n);</p><p> InitQueue(S)
69、;</p><p><b> while(1)</b></p><p><b> {</b></p><p> cout<<"請(qǐng)選擇(A,D,E):\n";</p><p> cin>>flag;</p><p> swi
70、tch(flag)</p><p><b> {</b></p><p><b> case 'A':</b></p><p><b> case 'a':</b></p><p> Arrival(P,S,n);break; //車進(jìn)入
71、停車場(chǎng)</p><p><b> case 'D':</b></p><p><b> case 'd':</b></p><p> Leave(P,Q,S,cost);break; //車離開停車場(chǎng)</p><p><b> case 'E
72、':</b></p><p><b> case 'e':</b></p><p><b> return 0;</b></p><p><b> break;</b></p><p><b> default:</b
73、></p><p> printf("Input error!\n");</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><
74、;b> }</b></p><p> 六、函數(shù)的調(diào)用關(guān)系圖反映了演示程序的層次結(jié)構(gòu):</p><p><b> 四、調(diào)試分析</b></p><p> 1、由于剛開始對(duì)隊(duì)列元素刪除的不了解,使得程序的操作直接對(duì)隊(duì)列中的元素刪除,而不是刪除對(duì)頭元素,這違背了題目要求。經(jīng)過(guò)修改后,這一問(wèn)題得到解決。</p>
75、<p> 2、棧的元素中step域沒(méi)有太多用處,可以省略。</p><p> 3、Stack Travers在調(diào)試過(guò)程中很有用,它可以插入在算法中多處,以察看停車場(chǎng)管理中車輛走動(dòng)的次序是否正確,但對(duì)最后的執(zhí)行版本么有用。</p><p><b> 五、用戶手冊(cè)</b></p><p> 1、本程序的運(yùn)行環(huán)境為Windows,執(zhí)
76、行文件為:停車場(chǎng)管理.exe</p><p> 2、進(jìn)入演示程序后,即顯示文本方式的用戶界面:</p><p> 3、進(jìn)入車輛輸入信息的命令后,程序開始運(yùn)行。</p><p> 4、按回車后程序輸出相應(yīng)的結(jié)果。</p><p><b> 六、測(cè)試結(jié)果</b></p><p><b&g
77、t; 七、附錄</b></p><p> #include<stdio.h></p><p> #include<malloc.h></p><p> #include<iostream.h></p><p><b> //棧,模擬停車場(chǎng)</b></p>
78、;<p> typedef struct Car1{//車</p><p> int number;//汽車車號(hào)</p><p> int ar_time;//汽車到達(dá)時(shí)間</p><p><b> }CarNode;</b></p><p> typedef struct{//停車場(chǎng)</p
79、><p> CarNode *base;//停車場(chǎng)的堆棧底</p><p> CarNode *top;//停車場(chǎng)的堆棧頂</p><p> int stacksize;</p><p><b> }Park;</b></p><p><b> //隊(duì)列,模擬便道</b>
80、;</p><p> typedef struct Car2</p><p><b> {//車</b></p><p> int number;//汽車車號(hào)</p><p> int ar_time;//汽車到達(dá)時(shí)間</p><p> struct Car2 *next;</p&
81、gt;<p><b> }*CarPtr;</b></p><p> typedef struct</p><p><b> {//便道</b></p><p> CarPtr front;//便道的隊(duì)列的對(duì)頭</p><p> CarPtr rear;//便道的隊(duì)列的隊(duì)尾&
82、lt;/p><p> int length;</p><p> }Shortcut;</p><p> void InitStack(Park &P,int n)</p><p><b> {//初始化停車場(chǎng)</b></p><p> P.top=P.base=(CarNode*)m
83、alloc(n*sizeof(Car1));</p><p> P.stacksize=0;</p><p><b> }</b></p><p> void Push(Park &P,CarNode e)</p><p><b> {//車進(jìn)入停車場(chǎng)</b></p>
84、<p><b> *P.top=e;</b></p><p><b> P.top++;</b></p><p> ++P.stacksize;</p><p><b> }</b></p><p> void Pop(Park &P,CarNode
85、 &e)</p><p><b> {//車離開停車場(chǎng)</b></p><p><b> --P.top;</b></p><p><b> e=*P.top;</b></p><p> --P.stacksize;</p><p>&l
86、t;b> }</b></p><p> void InitQueue(Shortcut &S)</p><p><b> {//初始化便道</b></p><p> S.front=S.rear=(CarPtr)malloc(sizeof(Car2));</p><p> S.fron
87、t->next=NULL;</p><p> S.length=0;</p><p><b> }</b></p><p> void EnQueue(Shortcut &S,int number,int ar_time)</p><p><b> {//車進(jìn)入便道</b>&l
88、t;/p><p><b> CarPtr p;</b></p><p> p=(CarPtr)malloc(sizeof(Car2));</p><p> p->number=number;</p><p> p->ar_time=ar_time;</p><p> p->
89、next=NULL;</p><p> S.rear->next=p; //相連</p><p><b> S.rear=p;</b></p><p> ++S.length;</p><p><b> }</b></p><p> void DeQueue(
90、Shortcut &S,CarPtr &w)</p><p><b> {//車離開便道</b></p><p> if(S.length!=0)</p><p><b> {</b></p><p> w = S.front->next;</p><
91、;p> S.front->next=S.front->next->next;</p><p> --S.length;</p><p><b> }</b></p><p><b> }</b></p><p> void Arrival(Park &P,S
92、hortcut &S,int n)</p><p> {//對(duì)進(jìn)站車輛的處理</p><p> int number,ar_time;</p><p> printf("請(qǐng)輸入車牌號(hào):");</p><p> scanf("%d",&number);</p><
93、;p> printf("進(jìn)場(chǎng)的時(shí)刻:");</p><p> scanf("%d",&ar_time);</p><p> if(P.stacksize<n)</p><p><b> {</b></p><p> CarNode c;</p&g
94、t;<p> c.number=number;</p><p> c.ar_time=ar_time;</p><p> Push(P,c);</p><p> printf("該車應(yīng)停在第%d號(hào)車道。\n",P.stacksize);</p><p><b> }</b>&l
95、t;/p><p><b> else</b></p><p><b> {</b></p><p> EnQueue(S,number,ar_time);</p><p> printf("停車場(chǎng)已滿,請(qǐng)暫時(shí)停在便道的第%d個(gè)位置。\n",S.length);</p&g
96、t;<p><b> }</b></p><p><b> }</b></p><p> void Leave(Park &P,Park &P1,Shortcut &S,int cost)</p><p> {//對(duì)離站車輛的處理</p><p> i
97、nt number,le_time,flag,money;</p><p> CarPtr c,q;</p><p> int times;</p><p> printf("請(qǐng)輸入車牌號(hào):");</p><p> scanf("%d",&number);</p><
98、p> printf("出場(chǎng)的時(shí)刻:");</p><p> scanf("%d",&le_time);</p><p> CarNode e,m;</p><p><b> CarPtr w;</b></p><p> while(P.stacksize)&
99、lt;/p><p><b> {</b></p><p><b> Pop(P,e);</b></p><p> if(e.number==number)</p><p><b> {</b></p><p><b> flag=0;&l
100、t;/b></p><p> money=(le_time-e.ar_time)*cost;</p><p> times = le_time-e.ar_time;</p><p><b> break;</b></p><p><b> }</b></p><p&
101、gt; Push(P1,e);</p><p><b> }</b></p><p> while(P1.stacksize)</p><p><b> {</b></p><p> Pop(P1,e);</p><p> Push(P,e);</p>
102、<p><b> }</b></p><p> printf("停車費(fèi)為%d, 停車時(shí)間為%d\n",money,times);</p><p> // 車從停車場(chǎng)中出</p><p> While(S.stacksize)</p><p><b> {</b&
103、gt;</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> free(w);</b></p>
104、<p> printf("車牌號(hào)為%d的車已由便道進(jìn)入停車場(chǎng)\n",m.number);</p><p><b> }</b></p><p><b> else</b></p><p> printf("停車場(chǎng)不存在牌號(hào)為%d的車,在便道上找\n", number
105、);</p><p><b> {</b></p><p> c = S.front;</p><p> if(S.length!=0)</p><p><b> {</b></p><p> while(c->next!= NULL)</p>
106、<p><b> {</b></p><p> if(c->next->number == number)</p><p><b> {</b></p><p> printf("%d車 從便道上離開,停留時(shí)間 %d\n",c->next->number,le
107、_time -c->next->ar_time);</p><p> c->next = c->next->next;</p><p> --S.length;</p><p> c = c->next;</p><p><b> break;</b></p>&
108、lt;p><b> }</b></p><p><b> else</b></p><p> DeQueue(S,c) ;</p><p><b> }</b></p><p><b> }</b></p><p>
109、<b> }</b></p><p><b> }</b></p><p><b> //主函數(shù)</b></p><p> void main()</p><p><b> {</b></p><p> int n,co
110、st;</p><p> char flag;//選項(xiàng)</p><p><b> Park P,Q;</b></p><p> printf("輸入停車場(chǎng)的規(guī)模:");</p><p> scanf("%d",&n);</p><p> p
111、rintf("每小時(shí)收費(fèi):");</p><p> scanf("%d",&cost);</p><p> Shortcut S;</p><p> InitStack(P,n); //初始化</p><p> InitStack(Q,n);</p><p>
112、InitQueue(S);</p><p><b> while(1)</b></p><p><b> {</b></p><p> cout<<"請(qǐng)選擇(A,D,E):\n";</p><p> cin>>flag;</p>&l
113、t;p> switch(flag)</p><p><b> {</b></p><p><b> case 'A':</b></p><p><b> case 'a':</b></p><p> Arrival(P,S,n);
114、break; //車進(jìn)入停車場(chǎng)</p><p><b> case 'D':</b></p><p><b> case 'd':</b></p><p> Leave(P,Q,S,cost);break; //車離開停車場(chǎng)</p><p><b>
115、 case 'E':</b></p><p><b> case 'e':</b></p><p><b> return 0;</b></p><p><b> break;</b></p><p><b> de
116、fault:</b></p><p> printf("Input error!\n");</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)停車場(chǎng)管理報(bào)告
- 停車場(chǎng)管理-數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---停車場(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ì)--停車場(chǎng)管理
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---停車場(chǎng)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告停車場(chǎng)管理系統(tǒng)
- 停車場(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)停車場(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)管理系統(tǒng)設(shè)計(jì)報(bào)告
- 數(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)
評(píng)論
0/150
提交評(píng)論