C語(yǔ)言課設(shè)之停車(chē)場(chǎng)管理系統(tǒng)方案_第1頁(yè)
C語(yǔ)言課設(shè)之停車(chē)場(chǎng)管理系統(tǒng)方案_第2頁(yè)
C語(yǔ)言課設(shè)之停車(chē)場(chǎng)管理系統(tǒng)方案_第3頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C語(yǔ)言課程設(shè)計(jì)實(shí)習(xí)報(bào)告目 錄題目要求需求分析總體設(shè)計(jì)四. 具體程序五. 上機(jī)操作及使用說(shuō)明六. 存在問(wèn)題與不足七學(xué)習(xí)心得停車(chē)場(chǎng)管理一.題目要求1. 設(shè)計(jì)一個(gè)停車(chē)場(chǎng)用長(zhǎng)度為 N的堆棧來(lái)模擬。由于停車(chē)場(chǎng)內(nèi)如有某輛車(chē)要開(kāi)走,在它之后進(jìn)來(lái)的車(chē)都必須先退出為它讓道,待其開(kāi)出停車(chē)場(chǎng)后,這些車(chē)再依原來(lái)的順序進(jìn)入。2. 程序輸出每輛車(chē)到達(dá)后的停車(chē)位置,以及某輛車(chē)離開(kāi)停車(chē)場(chǎng)時(shí)應(yīng)交納的費(fèi)用和它在停車(chē)場(chǎng)內(nèi)停留的時(shí)間。需求分析根據(jù)題目要求首先設(shè)計(jì)一個(gè)堆棧,以堆棧來(lái)模擬停車(chē)場(chǎng),又每輛汽車(chē)的車(chē)牌號(hào)都不一樣, 這樣一來(lái)可以根據(jù)車(chē)牌號(hào)準(zhǔn)確找到汽車(chē)位置,所以堆棧里的數(shù)據(jù)元素設(shè)計(jì)成汽車(chē)的車(chē)牌號(hào)。當(dāng)停車(chē)場(chǎng)內(nèi)某輛車(chē)要離開(kāi)時(shí),在它之后

2、進(jìn)入的車(chē)輛必須先退出車(chē)場(chǎng)為它讓路,待該輛車(chē)開(kāi)出大門(mén)外,其他車(chē)輛再按原次序進(jìn)入停車(chē)場(chǎng)。這是個(gè)一退一進(jìn)的過(guò)程,而且讓道的汽車(chē)必須保持原有的先后順序,因此可再設(shè)計(jì)一個(gè)堆棧,以之來(lái)暫時(shí)存放為出站汽車(chē)暫時(shí)讓道的汽車(chē)車(chē)牌號(hào)。當(dāng)停車(chē)場(chǎng)滿(mǎn)后,繼續(xù)進(jìn)來(lái)的汽車(chē)需要停放在停車(chē)場(chǎng)旁邊的便道上等候,若停車(chē)場(chǎng)有汽車(chē)開(kāi)走,則按排隊(duì)的先后順序依次進(jìn)站,最先進(jìn)入便道的汽車(chē)將會(huì)最先進(jìn)入停車(chē)場(chǎng),這完全是一個(gè)先進(jìn)先出模型, 因此可設(shè)計(jì)一個(gè)隊(duì)列來(lái)模擬便道,隊(duì)列中的數(shù)據(jù)元素仍然設(shè)計(jì)成汽車(chē)的車(chē)牌號(hào)。另外,停車(chē)場(chǎng)根據(jù)汽車(chē)在停車(chē)場(chǎng)內(nèi)停放的總時(shí)長(zhǎng)來(lái)收費(fèi)的,在便道上的時(shí)間不計(jì)費(fèi),因此必須記錄車(chē)輛進(jìn)入停車(chē)場(chǎng)時(shí)的時(shí)間,車(chē)輛離開(kāi)停車(chē)場(chǎng)時(shí)的時(shí)間不需要記錄

3、,當(dāng)從終端輸入時(shí)可直接使用。由于時(shí)間不像汽車(chē)一樣需要讓道,可設(shè)計(jì)了一個(gè)順序表來(lái)存放時(shí)間。又用順序表用派生法設(shè)計(jì)了一個(gè)堆棧,恰好滿(mǎn)足上面模擬停車(chē)場(chǎng)的需要。三總體設(shè)計(jì)四.具體程序#i nclude <stdio.h>#i nclude <malloc.h>#defi ne SIZE 3#defi ne NULL 0typedef struct int hour;int min; time;typedef struct int num;int positi on;time t;float mon ey; Car;typedef struct Car elemSIZE+1;in

4、t top; Stack;typedef struct Node Car data;struct Node *n ext;CQueueNode;typedef struct CQueueNode *front;CQueueNode *rear;Lin kQueue;void In itStack(Stack *S) S->top=0; void Push(Stack *S,Car *r) S->top+;S->elemS->top. num=r->num;r->positi on=S->elemS->top.positi on=S->top

5、;S->elemS->top.t.hour=r->t.hour;S->elemS->top.t.mi n=r->t.mi n;int IsEmpty(Stack* S) return(S->top=0?1:0); int lsFull(Stack *S) return(S->top=SIZE?1:0); int GetTop(Stack *S,Car *n) n->num=S->elemS->top. num;n->positio n=S->elemS->top.positio n; n->t.hour=

6、S->elemS->top.t.hour; n->t.mi n=S->elemS->top.t.mi n;return 1;void In itQueue(L in kQueue *Q) Q->fro nt=(CQueueNode*)malloc(sizeof(CQueueNode); if(Q->fro nt!=NULL) Q->rear=Q->fr ont;Q->fro nt-> next=NULL; int En terQueue(Li nkQueue *Q,Car *t) CQueueNode *NewNode;NewN

7、ode=(CQueueNode*)malloc(sizeof(CQueueNode); if(NewNode!=NULL)NewNode->data .num=t- >num;NewNode->data.t.hour=t->t.hour;NewNode->data.t. min=t->t. min;NewNode-> next=NULL;Q->rear- >n ext=NewNode;Q->rear=NewNode;return 1;else return 0;int DeleteQueue(L in kQueue *Q,Car *x

8、) CQueueNode *p;if(Q->fr on t=Q->rear)return 0;p=Q->fr ont->n ext;Q->front->n ext=p->n ext;if(Q->rear=p)Q->rear=Q->fr ont;x->num=p->data. num;x->t.hour=p->data.t.hour;x->t.mi n=p->data.t.mi n;free(p);return 1;void prin t1(Stack *S)int tag;Car x;printf(

9、"停車(chē)場(chǎng)停車(chē)情況:n");if(lsEmpty(S)printf("無(wú)車(chē)!");for(tag=S->top;S->top>0;S->top-)if(GetTop(S, &x)printf("車(chē)牌號(hào) d,所在位置 d,至U達(dá)/離開(kāi)時(shí)間 d:%dn ",x .nu m,x.positi on, x.t.hour,x.t. min);S->top=tag;void prin t2(Li nkQueue *Q) CQueueNode *p;p=Q->fr ont->n ext;for(;p!

10、=NULL;p=p->n ext)prin tf("等待車(chē)牌號(hào)%d, 到達(dá) / 離開(kāi)時(shí)間 %d:%d",p->data .nu m,p->data.t.hour,p->data.t. min);void TaM(Car *r,int h,i nt m) if(m>r->t.mi n)r->t.m in+=60;r->t.hour-=1;h=r->t.hour-h;m=r->t.mi n-m;prin tf("n停車(chē) %d 小時(shí) %d 分鐘 n",h,m);printf("每小時(shí)收費(fèi)30

11、元n");h=h*60;m=h+m;r->mon ey=0.5*m;printf("請(qǐng)支付金額 %.2f 元n",r->money);void In (Stack *S,L in kQueue *Q,Car*r)if(lsFull(S) printf("車(chē)庫(kù)已滿(mǎn),請(qǐng)等待!");En terQueue(Q,r);elsePush(S,r);printf("n您現(xiàn)在所在位置 %d",r->position);void Out(Stack *S,Stack *S0,Car *r,Li nkQueue *Q) in

12、t tag=S->top;Car x;if(IsEmpty(S) pri ntf("沒(méi)有此車(chē)!");else for(;r->num!=S->elemtag.num&&tag>0;tag-) Push(S0,&S->elemtag);S->top-;if(r->num=S->elemtag. num) TaM(r,S->elemtag.t.hour,S->elemtag.t.mi n); S->top-;for(;S0->top>0;S0->top-)Push(S,&

13、amp;S0->elemS0->top);if(S->top<SIZE && Q->front!=Q->rear) DeleteQueue(Q, &x);Push(S, &x);else if(tag=0) printf("未進(jìn)入停車(chē)場(chǎng)應(yīng)支付金額0元!");for(;S0->top>0;S0->top-)Push(S,&S0->elemS0->top);void prin t()prin tf("n*n");*printf("n請(qǐng)選擇:n&

14、quot;);prin tf("n 1:到達(dá)");prin tf("n 2:離開(kāi)");prin tf("n 3:搜索");prin tf("n 4:退出 n");prin tf("n");int main() int n, m,i=1,j,flag=0;Car c10;Car x;Stack S,S0;Lin kQueue Q;In itStack(&S);In itStack(&S0);Ini tQueue(&Q);while(1) pri nt();scan f(&q

15、uot;%d",&m);switch(m)case 1:printf("n請(qǐng)輸入車(chē)牌號(hào):");scan f("%d",&ci. nu m);printf("n請(qǐng)輸入到達(dá)/離開(kāi)時(shí)間:"); scan f("%d:%d",&ci.t.hour,&ci.t.mi n);ln(&S,&Q,&ci);i+;break;case 2:printf("n請(qǐng)輸入車(chē)牌號(hào):");scan f("%d",&n);for(j=

16、0;j<10;j+)if(n=cj. num) break;printf("n請(qǐng)輸入到達(dá)/離開(kāi)時(shí)間:");scan f("%d:%d",&cj.t.hour,&cj.t.mi n);Out(&S,&S0,&cj,&Q); break;case 3: prin t1(&S);pri nt2(&Q);break;case 4: flag=1; break;default:printf("n輸入錯(cuò)誤,請(qǐng)輸入 1,2,3 或 4"); if(flag)break; retu

17、rn 0;五.上機(jī)操作及使用說(shuō)明運(yùn)行Microsoft Visual C+,進(jìn)入運(yùn)行狀態(tài):1.主菜單:根據(jù)頁(yè)面提示,輸入相應(yīng)數(shù)字。2.車(chē)輛到達(dá):車(chē)輛到達(dá)停車(chē)場(chǎng),輸入數(shù)字1,根據(jù)頁(yè)面提示輸入車(chē)牌號(hào)和到 達(dá)時(shí)間。頁(yè)面將顯示車(chē)輛目前所處位置歡迎光臨I輸入車(chē)牌號(hào)曲輸人到達(dá)丿裔開(kāi)時(shí)間:呵:an潮I在所在位置1_ ,到¥話(huà)輸入車(chē)牌耳迄請(qǐng)輸入到達(dá)/離幵時(shí)間曲恥達(dá)幵畫(huà)岀»- 二1|溝輸入年牌號(hào)2 詢(xún)輛入到達(dá)嚴(yán)禹開(kāi) 您現(xiàn)在所在位置3戲迎無(wú)臨*:鬻請(qǐng)輸入車(chē)牖旨“4停車(chē)場(chǎng)情況查詢(xún): 該程序可提供隨時(shí)查詢(xún),輸入數(shù)字 3,可獲知停車(chē)場(chǎng)現(xiàn)在停車(chē)情況。停車(chē)場(chǎng)無(wú)車(chē):xl嚴(yán) HC:Documeiiit5 a

18、nd SettinigsVIuo件笑:D亡buq;0L亡xe"當(dāng)停車(chē)服請(qǐng)?jiān)枔?卄7»"*«*«»*歡迎光 I 質(zhì)達(dá)開(kāi)至嗔魔:1停車(chē)場(chǎng)有車(chē):Dl刻2:青迪洋:斗iiRc:! Slr:DnnimpnK and SettingsMuol H$JE.S9iS jtfMDeb<iakOuewe"離“藥m、車(chē)*E1! YJ-在在4, r2丄膽3 一一 開(kāi)開(kāi)開(kāi)0 " 離離®一 XZX寸二 達(dá)達(dá)達(dá)口 一 - ,1 - r lbL bL faL '0 0 “2 10 IT -H s s 衣0 0 0牌餐 停車(chē)車(chē)宰 5.車(chē)輛離開(kāi)車(chē)輛離開(kāi),輸入數(shù)字2,頁(yè)面顯示該車(chē)停放具體情況,包括總計(jì)停放時(shí)間以JCMLKJLXJlJCJt JOCJCJOCirjj;卬11 干 X J<JIJ<JIJ< 買(mǎi)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論