停車(chē)場(chǎng)管理系統(tǒng)畢業(yè)論文設(shè)計(jì)——利用所學(xué)C語(yǔ)言知識(shí)設(shè)計(jì)報(bào)告

上傳人:1777****777 文檔編號(hào):37213662 上傳時(shí)間:2021-11-02 格式:DOC 頁(yè)數(shù):14 大?。?24.02KB
收藏 版權(quán)申訴 舉報(bào) 下載
停車(chē)場(chǎng)管理系統(tǒng)畢業(yè)論文設(shè)計(jì)——利用所學(xué)C語(yǔ)言知識(shí)設(shè)計(jì)報(bào)告_第1頁(yè)
第1頁(yè) / 共14頁(yè)
停車(chē)場(chǎng)管理系統(tǒng)畢業(yè)論文設(shè)計(jì)——利用所學(xué)C語(yǔ)言知識(shí)設(shè)計(jì)報(bào)告_第2頁(yè)
第2頁(yè) / 共14頁(yè)
停車(chē)場(chǎng)管理系統(tǒng)畢業(yè)論文設(shè)計(jì)——利用所學(xué)C語(yǔ)言知識(shí)設(shè)計(jì)報(bào)告_第3頁(yè)
第3頁(yè) / 共14頁(yè)

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《停車(chē)場(chǎng)管理系統(tǒng)畢業(yè)論文設(shè)計(jì)——利用所學(xué)C語(yǔ)言知識(shí)設(shè)計(jì)報(bào)告》由會(huì)員分享,可在線閱讀,更多相關(guān)《停車(chē)場(chǎng)管理系統(tǒng)畢業(yè)論文設(shè)計(jì)——利用所學(xué)C語(yǔ)言知識(shí)設(shè)計(jì)報(bào)告(14頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、 2008.12.25 班級(jí):55071——28 學(xué)號(hào): 指導(dǎo)教師: 姓名: 停車(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í)間。 二、程序中所采用的數(shù)據(jù)結(jié)構(gòu)及存儲(chǔ)結(jié)構(gòu)的說(shuō)明 以棧模擬停車(chē)

2、場(chǎng),以隊(duì)列模擬車(chē)場(chǎng)外的便道,按照從終端讀入的輸入數(shù)據(jù)序列進(jìn)行模擬管理。棧以順序結(jié)構(gòu)實(shí)現(xiàn),隊(duì)列以鏈表實(shí)現(xiàn)。 程序中分別采用了“?!焙汀瓣?duì)列”作為其存儲(chǔ)結(jié)構(gòu)。 “棧”的定義可知,每一次入棧的元素都在原棧頂元素之上成為新的元素,每一次出棧的元素總是當(dāng)前棧頂元素使次棧元素成為新的棧頂元素,即最后進(jìn)棧者先出棧。程序中采用的結(jié)構(gòu)是: typedef struct NODE{ CarNode *stack[MAX+1]; int top; }SeqStackCar; /*模擬車(chē)庫(kù)*/ “隊(duì)列”是限定所有插入操作只能在表的一端進(jìn)行,而所有的刪除操作都只能在表的另一端進(jìn)行。插入端叫隊(duì)尾,夢(mèng)芭

3、莎優(yōu)惠券刪除端叫對(duì)頭。按先進(jìn)先出規(guī)則進(jìn)行。程序中采用的結(jié)構(gòu)是: typedef struct Node{ QueueNode *head; QueueNode *rear; }LinkQueueCar; /*模擬通道*/ 三、算法的設(shè)計(jì)思想 由于停車(chē)場(chǎng)是一個(gè)狹窄通道,而且只有一個(gè)大門(mén)可供汽車(chē)進(jìn)出,問(wèn)題要求汽車(chē)停車(chē)場(chǎng)內(nèi)按車(chē)輛到達(dá)時(shí)間的先后順序,依次由北向南排列。由此很容易聯(lián)想到數(shù)據(jù)結(jié)構(gòu)中的堆棧模型,因此可首先設(shè)計(jì)一個(gè)堆棧,以堆棧來(lái)模擬停車(chē)場(chǎng),又每個(gè)汽車(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í),

4、在他之后進(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)滿后,繼續(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),好樂(lè)買(mǎi)優(yōu)惠券這完全是一個(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)

5、時(shí)的時(shí)間不需要記錄,當(dāng)從終端輸入時(shí)可直接使用。由于時(shí)間不象汽車(chē)一樣需要讓道,我設(shè)計(jì)了一個(gè)順序表來(lái)存放時(shí)間。又用順序表用派生法設(shè)計(jì)了一個(gè)堆棧,恰好滿足上面模擬停車(chē)場(chǎng)的需要。 四.設(shè)計(jì)原理、框圖 車(chē)輛到達(dá) 以堆棧來(lái)模擬停車(chē)場(chǎng)和以堆棧里的數(shù)據(jù)元素我設(shè)計(jì)成汽車(chē)的車(chē)牌號(hào) 初始化車(chē)站, 初始化讓路的臨時(shí)棧, 初始化通道 車(chē)場(chǎng)未滿,車(chē)進(jìn)車(chē)場(chǎng) 車(chē)場(chǎng)已滿,車(chē)進(jìn)便道 判斷車(chē)場(chǎng)是否已滿 車(chē) 輸入車(chē)子到達(dá)時(shí)間,車(chē)牌號(hào) 未滿 車(chē)進(jìn)入車(chē)場(chǎng) 判斷車(chē)場(chǎng)內(nèi)是否有車(chē) 不做任何計(jì)算 無(wú)點(diǎn)x 有 輸入離開(kāi)車(chē)輛的離開(kāi)時(shí)間,進(jìn)行停車(chē)費(fèi)用的計(jì)算

6、 此車(chē)后面的車(chē)輛退出并進(jìn)入臨時(shí)棧 車(chē)子離開(kāi) 五.運(yùn)行結(jié)果 車(chē)輛進(jìn)入車(chē)場(chǎng): 車(chē)場(chǎng)已滿: 車(chē)輛離開(kāi),并收費(fèi): 列出車(chē)場(chǎng)信息: 列出車(chē)道信息 六.程序 #include #include #include /*------------------------------------------------------------------------------*/ #define MAX 3 /*車(chē)庫(kù)容量*/ #define price 0

7、.5 /*每車(chē)每分鐘費(fèi)用*/ typedef struct time{ int hour; int min; }Time; /*時(shí)間結(jié)點(diǎn)*/ typedef struct node{ char num[10]; Time reach; Time leave; }CarNode;/*車(chē)輛信息結(jié)點(diǎn)*/ typedef struct NODE{ CarNode *stack[]; int top; }SeqStackCar; typedef struct car{ CarNode *data; struct car *next; }Q

8、ueueNode; typedef struct Node{ QueueNode *head; QueueNode *rear; }LinkQueueCar; /*模擬通道*/ /*------------------------------------------------------------------------------*/ void InitStack(SeqStackCar *); /*初始化棧*/ int InitQueue(LinkQueueCar *); /*初始化便道*/ int Arrival( r *,LinkQueueCar *)

9、; /*車(chē)輛到達(dá)*/ void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *); /*車(chē)輛離開(kāi)*/ void List(SeqStackCar,LinkQueueCar); /*顯示存車(chē)信息*/ /*------------------------------------------------------------------------------*/ void main() { SeqStackCar Enter,Temp; LinkQueueCar Wait; int ch; InitStack(&En

10、ter); /*初始化車(chē)站*/ InitStack(&Temp); /*初始化讓路的臨時(shí)棧*/ InitQueue(&Wait); /*初始化通道*/ printf("歡迎光臨"); printf("\n"); while(1) { printf("\n1.車(chē)輛到達(dá)"); printf(" 2.車(chē)輛離開(kāi)"); printf(" 3.列表顯示 "); printf(" 4.退出系統(tǒng)"); while(1) { scanf("%d",&ch); if(ch>=1&&ch<=4)break; else printf("\nplease choose:

11、1|2|3|4."); } switch(ch) { case 1:Arrival(&Enter,&Wait);break; /*車(chē)輛到達(dá)*/ case 2:Leave(&Enter,& ,&Wait);break; /*車(chē)輛離開(kāi)*/ case 3:List(Enter,Wait);break; /*打印列表信息*/ case 4:exit(0); /*退出主程序*/ default: break; } } } /*--------------------------------------------------------------------

12、----------*/ void InitStack(SeqStackCar *s) /*初始化棧*/ { int i; s->top=0; for(i=0;i<=MAX;i++) s->stack[s->top]=NULL; } int InitQueue(LinkQueueCar *Q) /*初始化便道*/ { Q->head=(QueueNode *)malloc(sizeof(QueueNode)); if(Q->head!=NULL) { Q->head->next=NULL; Q->rear=Q->head; return(

13、1); } else return(-1); } void PRINT(CarNode *p,int room) /*打印出場(chǎng)車(chē)的信息*/ { int A1,A2,B1,B2; printf("\n請(qǐng)輸入離開(kāi)的時(shí)間:/**:**/"); scanf("%d:%d",&(p->leave.hour),&(p->leave.min)); printf("\n離開(kāi)車(chē)輛的車(chē)牌號(hào)為:"); puts(p->num); printf("\n其到達(dá)時(shí)間為: %d:%d",p->reach.hour,p->reach.min); printf("離開(kāi)時(shí)間為: %d

14、:%d",p->leave.hour,p->leave.min); A1=p->reach.hour; A2=p->reach.min; B1=p->leave.hour; B2=p->leave.min; printf("\n應(yīng)交費(fèi)用為:%2.1 元",((B1-A1)*60+(B2-A2))*price); free(p); } int Arrival(SeqStackCar *Enter,LinkQueueCar *W) /*車(chē)輛到達(dá)*/ { CarNode *p; QueueNode *t; p=(CarNode *)malloc(siz

15、eof(CarNode)); flushall(); printf("\n請(qǐng)輸入車(chē)牌號(hào)(例如:鄂A1902):"); gets(p->num); if(Enter->toptop++; printf("\n車(chē)輛在車(chē)場(chǎng)第%d位置.",Enter->top); printf("\n請(qǐng)輸入到達(dá)時(shí)間:/**:**/"); scanf("%d:%d",&(p->reach.hour),&(p->reach.min)); Enter->stack[Enter->top]=p; return(1); }

16、 else /*車(chē)場(chǎng)已滿,車(chē)進(jìn)便道*/ { printf("\n該車(chē)須在便道等待!"); t=(QueueNode *)malloc(sizeof(QueueNode)); t->data=p; t->next=NULL; W->rear->next=t; W->rear=t; return(1); } } void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W) { /*車(chē)輛離開(kāi)*/ int i, room; CarNode *p,*t; QueueNode *q

17、; /*判斷車(chē)場(chǎng)內(nèi)是否有車(chē)*/ if(Enter->top>0) /*有車(chē)*/ { while(1) /*輸入車(chē)輛離開(kāi)的信息*/ { printf("\n請(qǐng)輸入車(chē)在車(chē)場(chǎng)的位置/1--%d/:",Enter->top); scanf("%d",&room); if(room>=1&&room <=Enter->top) break; } while(Enter->top>room) /*聚尚網(wǎng)優(yōu)惠券*/ { Temp->top++; Temp->stack[Temp->top]=Enter->stack[Enter->top]; Enter->s

18、tack[Enter->top]=NULL; Enter->top--; } p=Enter->stack[Enter->top]; Enter->stack[Enter->top]=NULL; Enter->top--; while(Temp->top>=1) { Enter->top++; Enter->stack[Enter->top]=Temp->stack[Temp->top]; Temp->stack[Temp->top]=NULL; Temp->top--; } PRINT(p,room); /*判斷通道上是否有車(chē)及車(chē)站是否已滿

19、*/ if((W->head!=W->rear)&&Enter->tophead->next; t=q->data; Enter->top++; printf("\n便道的%s號(hào)車(chē)進(jìn)入車(chē)場(chǎng)第%d位置.",t->num,Enter->top); printf("\n請(qǐng)輸入現(xiàn)在的時(shí)間/**:**/:"); scanf("%d:%d",&(t->reach.hour),&(t->reach.min)); W->head->next=q->next; if(q==W->rear) W->rear=W->head;

20、 Enter->stack[Enter->top]=t; free(q); } else printf("\n便道里沒(méi)有車(chē).\n"); } else printf("\n車(chē)場(chǎng)里沒(méi)有車(chē)."); /*沒(méi)車(chē)*/ } void List1(SeqStackCar *S) /*列表顯示車(chē)場(chǎng)信息*/ { int i; if(S->top>0) /*判斷車(chē)站內(nèi)是否有車(chē)*/ { printf("\n車(chē)場(chǎng):"); printf("\n 位置 到達(dá)時(shí)間 車(chē)牌號(hào)\n"); for(i=1;i<=S->top;i++) { printf(" %d ",i)

21、; printf("%d:%d ",S->stack[i]->reach.hour,S->stack[i]->reach.min); puts(S->stack[i]->num); } } else printf("\n車(chē)場(chǎng)里沒(méi)有車(chē)"); } void List2(LinkQueueCar *W) /*列表顯示便道信息*/ { QueueNode *p; p=W->head->next; if(W->head!=W->rear) /*判斷通道上是否有車(chē)*/ { printf("\n等待車(chē)輛的號(hào)碼為:"); while(p!=NULL) {

22、 puts(p->data->num); p=p->next; } } else printf("\n便道里沒(méi)有車(chē)."); } void List(SeqStackCar S,LinkQueueCar W) { int flag,tag; flag=1; while(flag) { printf("\n請(qǐng)選擇 1|2|3:"); printf("\n1.車(chē)場(chǎng)\n2.便道\n3.返回\n"); while(1) { scanf("%d",&tag); if(tag>=1||tag<=3) break; else printf("\n請(qǐng)選擇 1|2|3:"); } switch(tag) { case 1:List1(&S);break;/*列表顯示車(chē)場(chǎng)信息*/ case 2:List2(&W);break; /*列表顯示便到信息*/ case 3:flag=0;break; default: break; } } } 七 結(jié)果

展開(kāi)閱讀全文
溫馨提示:
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. 裝配圖網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!