![停車場(chǎng)管理系統(tǒng)_第1頁(yè)](http://file4.renrendoc.com/view/cd4ca751b5fb4dca71cd88af58d076f0/cd4ca751b5fb4dca71cd88af58d076f01.gif)
![停車場(chǎng)管理系統(tǒng)_第2頁(yè)](http://file4.renrendoc.com/view/cd4ca751b5fb4dca71cd88af58d076f0/cd4ca751b5fb4dca71cd88af58d076f02.gif)
![停車場(chǎng)管理系統(tǒng)_第3頁(yè)](http://file4.renrendoc.com/view/cd4ca751b5fb4dca71cd88af58d076f0/cd4ca751b5fb4dca71cd88af58d076f03.gif)
![停車場(chǎng)管理系統(tǒng)_第4頁(yè)](http://file4.renrendoc.com/view/cd4ca751b5fb4dca71cd88af58d076f0/cd4ca751b5fb4dca71cd88af58d076f04.gif)
![停車場(chǎng)管理系統(tǒng)_第5頁(yè)](http://file4.renrendoc.com/view/cd4ca751b5fb4dca71cd88af58d076f0/cd4ca751b5fb4dca71cd88af58d076f05.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
word文檔可自由復(fù)制編輯課程設(shè)計(jì)課程設(shè)計(jì)名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)專業(yè)班級(jí):計(jì)算機(jī)類學(xué)生姓名:學(xué)號(hào):指導(dǎo)教師:課程設(shè)計(jì)時(shí)間:計(jì)算機(jī)應(yīng)用技術(shù)專業(yè)課程設(shè)計(jì)任務(wù)書學(xué)生姓名專業(yè)班級(jí)學(xué)號(hào)題目停車場(chǎng)管理系統(tǒng)課題性質(zhì)課題來源D指導(dǎo)教師同組姓名無主要內(nèi)容學(xué)習(xí)掌握并熟練運(yùn)用C語(yǔ)言進(jìn)行程序設(shè)計(jì);針對(duì)具體應(yīng)用問題,選擇、設(shè)計(jì)和實(shí)現(xiàn)合適的抽象數(shù)據(jù)類型;進(jìn)行簡(jiǎn)單的需求分析,給出設(shè)計(jì)方案。任務(wù)要求綜合運(yùn)用和融化所學(xué)理論知識(shí),提高分析和解決實(shí)際問題的能力,達(dá)到培養(yǎng)良好程序設(shè)計(jì)能力和習(xí)慣的目的,為開發(fā)滿足問題要求的小型應(yīng)用軟件奠定基礎(chǔ),達(dá)到軟件工程的綜合性基礎(chǔ)訓(xùn)練的目的。完成需求分析報(bào)告,報(bào)告中對(duì)關(guān)鍵部分給出圖表說明。要求格式規(guī)范,工作量飽滿。參考文獻(xiàn)《數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)》嚴(yán)蔚敏清華大學(xué)出版社《C語(yǔ)言程序設(shè)計(jì)》(第三版)譚浩強(qiáng)清華大學(xué)出版社審查意見指導(dǎo)教師簽字:教研室主任簽字:2014年6月15日1需求分析設(shè)計(jì)一個(gè)堆棧,以堆棧來模擬停車場(chǎng),堆棧里的數(shù)據(jù)元素設(shè)計(jì)成汽車的車牌號(hào)。設(shè)計(jì)一個(gè)隊(duì)列來模擬便道,隊(duì)列中的數(shù)據(jù)元素仍然設(shè)計(jì)成汽車的車牌號(hào)。車輛進(jìn)入停車場(chǎng)車輛離開停車場(chǎng)車輛進(jìn)入便道車輛由便道進(jìn)入車庫(kù)輸入進(jìn)入或離開時(shí)間查詢車場(chǎng)內(nèi)信息退出系統(tǒng)2概要設(shè)計(jì)(1)程序總體框架如圖所示:車輛到達(dá)以堆棧來模擬停車場(chǎng)和以堆棧里的數(shù)據(jù)元素我設(shè)計(jì)成汽車的車牌號(hào)初始化車站,初始化讓路的臨時(shí)棧,初始化通道車輛到達(dá)以堆棧來模擬停車場(chǎng)和以堆棧里的數(shù)據(jù)元素我設(shè)計(jì)成汽車的車牌號(hào)初始化車站,初始化讓路的臨時(shí)棧,初始化通道車場(chǎng)未滿,車進(jìn)車場(chǎng)車場(chǎng)已滿,車進(jìn)便道判斷車場(chǎng)是否已滿車輸入車子到達(dá)時(shí)間,車牌號(hào)未滿車進(jìn)入車場(chǎng)車進(jìn)入車場(chǎng)輸入離開車輛的離開時(shí)間,進(jìn)行停車費(fèi)用的計(jì)算輸入離開車輛的離開時(shí)間,進(jìn)行停車費(fèi)用的計(jì)算無點(diǎn)x不做任何計(jì)算判斷車場(chǎng)內(nèi)是否有車無點(diǎn)x不做任何計(jì)算判斷車場(chǎng)內(nèi)是否有車有有此車后面的車輛退出并進(jìn)入臨時(shí)棧此車后面的車輛退出并進(jìn)入臨時(shí)棧車子離開車子離開程序中各函數(shù)簡(jiǎn)單說明見如表1函數(shù)說明所示:返回值函數(shù)名參數(shù)表函數(shù)說明提供客戶Intmainvoid主函數(shù)是VoidPushStack*sCar*r便道車入庫(kù)否IntGetTopStack*sCar*r離開車庫(kù)是VoidLnitQueueLnitQueue*Q便道初始化否VoidPrint1Stack*s輸出車場(chǎng)內(nèi)情況是VoidPrint2LinkQueue*Q顯示過道上情況是VoidTamCar*r,inth,intm收費(fèi)函數(shù)否VoidOutStack*S,Stack*S0,Car*r,LinkQueue*Q收索車場(chǎng)內(nèi)信息是Voidwelcom歡迎頁(yè)面是VoidPrint菜單是表1函數(shù)說明
對(duì)程序中的各個(gè)函數(shù)功能的描述主函數(shù)main:系統(tǒng)開始、結(jié)束界面的顯示、各個(gè)功能函數(shù)的調(diào)用、轉(zhuǎn)換以及參數(shù)的傳遞、定義頭結(jié)點(diǎn)并傳遞給各個(gè)功能函數(shù)便道初始化函數(shù)voidLnitQueue:初始化函數(shù)的頭結(jié)點(diǎn),采用隊(duì)列,有頭、尾指針,可進(jìn)行增減操作。離開函數(shù)構(gòu)造堆棧,可進(jìn)行加入與除去操作,也可從中間位置操作。輸出函數(shù)輸出車庫(kù)以及便道上的車輛信息。收費(fèi)函數(shù)通過制定的收費(fèi)標(biāo)準(zhǔn),對(duì)車庫(kù)內(nèi)車輛按時(shí)間收費(fèi),便道上車輛不予收取費(fèi)用。菜單函數(shù)顯示系統(tǒng)操作菜單供工作人員使用。3運(yùn)行環(huán)境軟件環(huán)境操作系統(tǒng):Windows7硬件環(huán)境處理器:IntelPentium166MX或更高內(nèi)存:32MB以上硬盤空間:1GB以上顯卡:SVGA顯示適配4開發(fā)工具和編程語(yǔ)言Dev-C++5.0beta9.2(4.9.2)C語(yǔ)言、ANSIC89
5詳細(xì)設(shè)計(jì)#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<string.h>#defineSIZE3#defineNULL0typedefstruct//時(shí)間{ inthour; intmin;}time;typedefstruct//停車信息{ intnum; intposition; timet; doublemoney;}Car;typedefstruct{ Carelem[SIZE+1]; inttop;}Stack;//棧typedefstructNode//節(jié)點(diǎn){ Cardata; structNode*next;}CQueueNode;typedefstruct//建立過道的程序{ CQueueNode*front; CQueueNode*rear;}LinkQueue;//對(duì)列voidInitStack(Stack*S)//確保堆棧為空{(diào) S->top=0;}voidPush(Stack*S,Car*r)//便道中的車入庫(kù){ S->top++; S->elem[S->top].num=r->num; r->position=S->elem[S->top].position=S->top; S->elem[S->top].t.hour=r->t.hour; S->elem[S->top].t.min=r->t.min;}intIsEmpty(Stack*S)//判斷車庫(kù)是否為空{(diào) return(S->top==0?1:0);}intIsFull(Stack*S)//判斷車庫(kù)是否為滿{ return(S->top==SIZE?1:0);}intGetTop(Stack*S,Car*n)//車離開車庫(kù){ n->num=S->elem[S->top].num; n->position=S->elem[S->top].position; n->t.hour=S->elem[S->top].t.hour; n->t.min=S->elem[S->top].t.min; return1;}voidInitQueue(LinkQueue*Q)//便道初始化程序{ Q->front=(CQueueNode*)malloc(sizeof(CQueueNode));//使mallo返回的指針轉(zhuǎn)換為指向CQueueNode類型數(shù)據(jù)的指針 if(Q->front!=NULL) { Q->rear=Q->front; Q->front->next=NULL; }}intEnterQueue(LinkQueue*Q,Car*t){ CQueueNode*NewNode; NewNode=(CQueueNode*)malloc(sizeof(CQueueNode));//給便道申請(qǐng)空間 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->next=NewNode; Q->rear=NewNode; return1; } elsereturn0;}intDeleteQueue(LinkQueue*Q,Car*x){ CQueueNode*p; if(Q->front==Q->rear)//判斷便道為空 return0; p=Q->front->next;//將便道中的車放入車庫(kù) Q->front->next=p->next; if(Q->rear==p) Q->rear=Q->front; x->num=p->data.num; x->t.hour=p->data.t.hour; x->t.min=p->data.t.min; free(p);//釋放臨時(shí)指針 return1;}voidprint1(Stack*S)//輸出停車場(chǎng)內(nèi)情況{ inttag; Carx; printf("停車場(chǎng)停車情況:\n"); if(IsEmpty(S)) printf("無車!"); for(tag=S->top;S->top>0;S->top--) if(GetTop(S,&x)) printf("車牌號(hào)%d\t所在位置%d\t到達(dá)時(shí)間%d:%d\n",x.num,x.position,x.t.hour,x.t.min); S->top=tag;}voidprint2(LinkQueue*Q)//顯示過道上車的信息及到達(dá)時(shí)間{ CQueueNode*p; p=Q->front->next; for(;p!=NULL;p=p->next) printf("等待車牌號(hào)%d\t到達(dá)時(shí)間%d:%d",p->data.num,p->data.t.hour,p->data.t.min);}voidTaM(Car*r,inth,intm)//收費(fèi)函數(shù){ if(m>r->t.min) { r->t.min+=60;r->t.hour-=1; } h=r->t.hour-h; m=r->t.min-m; printf("\n停車%d小時(shí)%d分鐘\n",h,m); printf("每小時(shí)收費(fèi)30元\n"); h=h*60;m=h+m; r->money=0.5*m; printf("請(qǐng)支付金額%.2f元\n",r->money);}voidIn(Stack*S,LinkQueue*Q,Car*r){ if(IsFull(S)) { printf("車庫(kù)已滿,請(qǐng)等待!"); EnterQueue(Q,r);//車進(jìn)入便道 } else { Push(S,r); printf("\n您現(xiàn)在所在位置:%d號(hào)位置\n\n",r->position); }}voidOut(Stack*S,Stack*S0,Car*r,LinkQueue*Q)//收索函數(shù){ inttag=S->top; Carx; if(IsEmpty(S))printf("抱歉!停車場(chǎng)內(nèi)沒有此車!"); else { for(;r->num!=S->elem[tag].num&&tag>0;tag--) { Push(S0,&S->elem[tag]); S->top--; } if(r->num==S->elem[tag].num) { TaM(r,S->elem[tag].t.hour,S->elem[tag].t.min); S->top--; for(;S0->top>0;S0->top--) Push(S,&S0->elem[S0->top]); if(S->top<SIZE&&Q->front!=Q->rear)//判斷車庫(kù)是否有此車,有就找到此車,然后退出 { DeleteQueue(Q,&x); Push(S,&x); } } elseif(tag==0)//過道中的車無需收車費(fèi) { printf("未進(jìn)入停車場(chǎng)!"); for(;S0->top>0;S0->top--) Push(S,&S0->elem[S0->top]); } }}voidwelcome(){ intl,k; system("color7C"); printf("\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("\t※★★※\n"); printf("\t※★★※\n"); printf("\t※★★※\n"); printf("\t※★★※\n"); printf("\t※★★※\n"); printf("\t※★★※\n"); printf("\t※★★※\n"); printf("\t※★★※\n"); printf("\t※★歡迎使用停車場(chǎng)管理系統(tǒng)★※\n"); printf("\t※★★※\n"); printf("\t※★★※\n"); printf("\t※★★※\n"); printf("\t※★★※\n"); printf("\t※★★※\n"); printf("\t※★★※\n"); printf("\t※★★※\n"); printf("\t※★★※\n"); printf("\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("\n"); printf("\n"); printf("\t\t\t請(qǐng)稍后,正在檢測(cè)運(yùn)行環(huán)境...\n"); for(l=0;l<40;l++) { for(k=0;k<10000000;k++) { if(k<10000000) { } } printf("●"); } printf("\t\t\t檢測(cè)完成按回車鍵進(jìn)入系統(tǒng)"); getchar(); system("cls");}intprint(){ intc; { system("color1F"); printf("\n★★★★★★★★★★★★★★★★★歡迎光臨★★★★★★★★★★★★★★★★★\n"); printf("\n"); printf("\n"); printf("\t\t※※※※※主※※※※※菜※※※※※單※※※※※\n"); printf("\t\t※※\n"); printf("\t\t※1、進(jìn)入停車場(chǎng)※\n"); printf("\t\t※※\n"); printf("\t\t※2、離開停車場(chǎng)※\n"); printf("\t\t※※\n"); printf("\t\t※3、查詢停車場(chǎng)內(nèi)信息※\n"); printf("\t\t※※\n"); printf("\t\t※4、退出系統(tǒng)※\n"); printf("\t\t※※\n"); printf("\t\t※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("\n\t\t\t請(qǐng)輸入指令1、2、3或4.\n"); scanf("%d",&c); getchar(); } returnc;}intmain(void){ intn,i=1,j,flag=0; Carc[10]; StackS,S0;//設(shè)定堆棧s,so LinkQueueQ;//便道 InitStack(&S);//堆棧S InitStack(&S0);//臨時(shí)堆棧so InitQueue(&Q); welcome(); while(1) { switch(print()) { case1:system("cls"); printf("\n請(qǐng)輸入車牌號(hào):"); scanf("%d",&c[i].num); system("cls"); printf("\n請(qǐng)輸入到達(dá)時(shí)間:"); scanf("%d:%d",&c[i].t.hour,&c[i].t.min);//車輛的情況 In(&S,&Q,&c[i]); i++; break; case2:system("cls"); printf("\n請(qǐng)輸入車牌號(hào):"); scanf("%d",&n); for(j=0;j<10;j++) if(n==c[j].num) break; system("cls"); printf("\n請(qǐng)輸入離開時(shí)間:"); scanf("%d:%d",&c[j].t.hour,&c[j].t.min); Out(&S,&S0,&c[j],&Q);//車輛的情況 break; case3:system("cls"); print1(&S);//輸出車庫(kù)中車的信息 print2(&Q);//輸出過道上車的信息 break;//終止 case4:system("cls"); flag=1; printf("\t\t\t感謝你的使用\n"); break; default: system("cls"); printf("\n\t\t\t輸入錯(cuò)誤,請(qǐng)輸入阿拉伯?dāng)?shù)字\n"); } if(flag) break; } return0;}
6調(diào)試分析測(cè)試中的問題舉例:加入控制顏色函數(shù)后無法運(yùn)行,調(diào)試發(fā)現(xiàn)主函數(shù)中未定義。運(yùn)行程序后無法輸出,調(diào)試后發(fā)現(xiàn)輸出格式錯(cuò)誤。算法改進(jìn)設(shè)想舉例:本程序只考慮到數(shù)字操作,字母、字符無法執(zhí)行。以及對(duì)于堆棧知識(shí)的不熟悉導(dǎo)致程序有本質(zhì)上的繁雜,應(yīng)徹底完善。7測(cè)試結(jié)果1.歡迎頁(yè)面2.主菜單根據(jù)頁(yè)面提示,輸入相應(yīng)數(shù)字。3.車輛到達(dá):車輛到達(dá)停車場(chǎng),輸入數(shù)字1,根據(jù)頁(yè)面提示輸入車牌號(hào)和到達(dá)時(shí)間。頁(yè)面將顯示車輛目前所處位置車場(chǎng)已滿進(jìn)入過道
5.停車場(chǎng)情況查詢:該程序可提供隨時(shí)查詢,輸入數(shù)字3,可獲知停車場(chǎng)現(xiàn)在停車情況。6.車輛離開車輛離開,輸入數(shù)字2,頁(yè)面顯示該車停放具體情況,包括總計(jì)停放時(shí)間以及相應(yīng)金額。參考文獻(xiàn)[1]嚴(yán)蔚敏,《數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)》清華大學(xué)出版社[2]譚浩強(qiáng).《C語(yǔ)言程序設(shè)計(jì)》(第三版)清華大學(xué)出版社[3]PeterVanDerLinden,C專家編程,人民郵電出版社[4]KennethA.ReekC和指針,人民郵電出版社
心得體會(huì)通過此次的課程設(shè)計(jì)練習(xí),我對(duì)數(shù)據(jù)結(jié)構(gòu)和編程有了更加深刻的認(rèn)識(shí)。感到了編程的魅力,數(shù)據(jù)結(jié)構(gòu)在編程中無法替代的作用。一個(gè)好的編程者需要有良好的算法認(rèn)識(shí)。通過這次的課程設(shè)計(jì),我發(fā)現(xiàn)了自己編程知識(shí)的嚴(yán)重不主,缺乏算法思想。對(duì)一個(gè)程
溫馨提示
- 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ù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 印刷設(shè)計(jì)服務(wù)合同范本
- 合伙做發(fā)廊合同范例
- 售后返租合同范本
- 公司保潔及廚師合同范本
- 司機(jī)帶貨合同范本
- 合作購(gòu)車股合同范本
- 區(qū)域銷售協(xié)議合同范例醫(yī)藥
- 出資出力合伙協(xié)議合同范本
- 農(nóng)村農(nóng)田用電合同范本
- 醫(yī)療美容中介合同范本
- SB-T 11238-2023 報(bào)廢電動(dòng)汽車回收拆解技術(shù)要求
- 供熱管道施工方案
- 旅游公司發(fā)展規(guī)劃
- 新舊施工現(xiàn)場(chǎng)臨時(shí)用電安全技術(shù)規(guī)范對(duì)照表
- 空氣能熱泵系統(tǒng)設(shè)計(jì)與安裝展示
- 03軸流式壓氣機(jī)b特性
- 五星級(jí)酒店收入測(cè)算f
- 扁桃體伴腺樣體肥大
- 《探尋中國(guó)環(huán)保旅行之道》– 中國(guó)旅游業(yè)可持續(xù)發(fā)展聯(lián)合研究報(bào)告 -mckinsey
- 2023年04月中央軍委后勤保障部公開招考專業(yè)技能崗位文職人員筆試歷年高頻試題摘選含答案解析
- 公務(wù)員錄用體檢操作手冊(cè)
評(píng)論
0/150
提交評(píng)論