![停車場實驗報告_第1頁](http://file4.renrendoc.com/view/4c2649285fe97c6bf795be108f17f234/4c2649285fe97c6bf795be108f17f2341.gif)
![停車場實驗報告_第2頁](http://file4.renrendoc.com/view/4c2649285fe97c6bf795be108f17f234/4c2649285fe97c6bf795be108f17f2342.gif)
![停車場實驗報告_第3頁](http://file4.renrendoc.com/view/4c2649285fe97c6bf795be108f17f234/4c2649285fe97c6bf795be108f17f2343.gif)
![停車場實驗報告_第4頁](http://file4.renrendoc.com/view/4c2649285fe97c6bf795be108f17f234/4c2649285fe97c6bf795be108f17f2344.gif)
![停車場實驗報告_第5頁](http://file4.renrendoc.com/view/4c2649285fe97c6bf795be108f17f234/4c2649285fe97c6bf795be108f17f2345.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
停車場模擬管理系統(tǒng)實驗報告班級:數(shù)學(xué)三班姓名:劉國華學(xué)號:2007429086日期:2008-1需求分析:程序功能:用順序棧模擬停車位和輔助棧,用順序隊模擬便道。來車顯示停車位置,離車顯示車輛調(diào)度情況及應(yīng)交的停車費,還能查詢特定車牌號的汽車所在的位置。輸入輸出要求:C,L,F,Q分別表示來車,離車,查詢車,退出;來車時輸入車牌號,走時輸入所在停車位的位置,查詢輸入車牌號;測試數(shù)據(jù):來車:JE001到JE010查詢:JE003,JE008離車:JE001,JE007退出概要設(shè)計:本程序所用的抽象數(shù)據(jù)類型定義:順序棧,順序隊;主模塊的流程及個子模塊的主要功能:STOPPING*init_stopping()初始化停位BUFFER*init_buff()初始化輔助棧PAVEMENT*init_pavement()初始化便道voidcar_come(char*plate,char*in_time)來車函數(shù)voidcar_leave(intpos,char*out_time)離車函數(shù)voidstop_to_buff(intpos)從停車位進入輔助棧函數(shù)voidbuff_to_stop(intpos)從輔助棧進入停車位函數(shù)voidpave_to_stop()從便道進入停車位函數(shù)floatcheckout(char*in_time,char*out_time)計算停車費函數(shù)voidwelcome()歡迎函數(shù)voiddisplay()顯示停車場情況的函數(shù)voidshow_car(char*plate)查詢并顯示汽車信息的函數(shù)voidmain()主函數(shù)詳細設(shè)計:采用C語言定義停車位、輔助棧、便道:(1)STOPPING*init_stopping()/*初始化停車位*/{ STOPPING*s; s=(STOPPING*)malloc(sizeof(STOPPING)); if(!s) { printf("STOPPING空間不足!"); returnNULL; } else { s->top=-1;returns; }}(2)BUFFER*init_buff()/*初始化輔助棧*/{ BUFFER*b; b=(BUFFER*)malloc(sizeof(BUFFER)); if(!b) { printf("BUFFER空間不足!"); returnNULL; } else { b->top=-1; returnb; }}(3)PAVEMENT*init_pavement()/*初始化便道*/{ PAVEMENT*p; p=(PAVEMENT*)malloc(sizeof(PAVEMENT)); p->front=p->rear=MAX_PAVE-1; returnp;}主要功能模塊的偽碼算法:voidcar_come(char*plate,char*in_time){If(停車為未滿)來車進入停車位;Else來車進入便道等候;}voidcar_leave(intpos,char*out_time){輸入汽車所在位置;If(汽車不在最后一個車位)stop_to_buff(intpos);所選汽車離去;顯示應(yīng)繳費用;If(輔助棧不空)buff_to_stop(intpos);if(便道不空)pave_to_stop();}voidshow_car(char*plate){遍歷停車位,如找到所查汽車則停止;If(停車位無此車)遍歷便道,如找到停止;if(便道無此車)顯示信息無此車;}Welcome()Welcome()Stop_to_buff()Stop_to_buff()Display()Display()BBuff_to_stop()Main()Car_leave()Main()Car_leave()Pave_to_stop()Pave_to_stop()CCar_come()CCheckout()SShow_car()調(diào)試分析:調(diào)試中的問題及解決方法:各函數(shù)無法都作用于順序隊和順序棧,解決方法:將順序隊和順序棧定義成全局變量;無法將輸入的字符指針char*plate接收的車牌號字符串傳遞給各函數(shù),解決方法:在給plate輸入前給plate開辟空間plate=(char*)malloc(sizeof(char));無法將字符串型的時間逐個轉(zhuǎn)換成整型,解決方法:定義字符型指針,逐一指向字符串中的每個字符;使用說明及測試結(jié)果:使用說明:輸入C(L、F、Q)表示來車(離車、查詢、退出),接下來按照提示輸入;測試結(jié)果:來車:請選擇您要的操作:c請輸入您的車牌號:JE001請輸入您的入場時間:10:10請您停放在1號車位!您的入場時間為:10:10停車位的情況:1車位——JE001(2)離車:請選擇您要的操作:L請輸入您的汽車所在停車位的車位數(shù):1請輸入您的離場時間:10:40牌照為JE003的汽車暫時退出停車位!牌照為JE002的汽車暫時退出停車位!拍照為JE001的汽車從停車場開走!請交費3.0元!牌照為JE002的汽車?;赝\囄坏?車位!牌照為JE003的汽車停回停車位的2車位!停車位的情況:1車位——JE0022車位——JE003(3)請選擇您要的操作:F請輸入您要查找的車牌號:JE002您的汽車JE002位于停車位的1車位!源程序:#include"stdio.h"#include"stdlib.h"#include"string.h"#defineMAX_STOP5/*停車位*/#defineMAX_PAVE100/*便道位*/typedefstruct{ char*license_plate;/*車牌號*/ char*in_time;/*進入停車場的時間*/ char*out_time;/*離開停車場的時間*/ charstate;/*狀態(tài),S表示停車位,P表示便道,L表示離開*/}CAR;typedefstruct/*定義停車為類型*/{ CARSTOP[MAX_STOP]; inttop;}STOPPING;typedefstruct/*定義便道類型*/{ CARPAVE[MAX_PAVE]; intfront,rear;}PAVEMENT;typedefstruct/*定義輔助棧類型*/{ CARBUFF[MAX_STOP]; inttop;}BUFFER;STOPPING*init_stopping()/*初始化停車位*/{ STOPPING*s; s=(STOPPING*)malloc(sizeof(STOPPING)); if(!s) { printf("STOPPING空間不足!"); returnNULL; } else { s->top=-1;returns; }}BUFFER*init_buff()/*初始化輔助棧*/{ BUFFER*b; b=(BUFFER*)malloc(sizeof(BUFFER)); if(!b) { printf("BUFFER空間不足!"); returnNULL; } else { b->top=-1; returnb; }}PAVEMENT*init_pavement()/*初始化便道*/{ PAVEMENT*p; p=(PAVEMENT*)malloc(sizeof(PAVEMENT)); p->front=p->rear=MAX_PAVE-1; returnp;}staticSTOPPING*stopping=init_stopping();/*定義停車位*/staticBUFFER*buff=init_buff();/*定義輔助棧*/staticPAVEMENT*pavement=init_pavement();/*定義便道*/voidcar_come(char*plate,char*in_time)/*來車函數(shù)*/{ if(stopping->top!=MAX_STOP-1) { stopping->top++; stopping->STOP[stopping->top].license_plate=plate; stopping->STOP[stopping->top].in_time=in_time;stopping->STOP[stopping->top].state='S'; printf("請您停放在%d號車位!您的入場時間為:%s\n",stopping->top+1,stopping->STOP[stopping->top].in_time); } else { pavement->rear=(pavement->rear+1)%MAX_PAVE; pavement->PAVE[pavement->rear].license_plate=plate; pavement->PAVE[pavement->rear].in_time=in_time;pavement->PAVE[pavement->rear].state='P'; printf("停車位已滿!請在便道等待!您的入場時間為:%s\n",pavement->PAVE[pavement->rear].in_time); }}voidstop_to_buff(intpos)/*暫入輔助棧函數(shù)*/{buff->top++; buff->BUFF[buff->top].license_plate=stopping->STOP[pos].license_plate; buff->BUFF[buff->top].in_time=stopping->STOP[pos].in_time; stopping->top--; printf("牌照為%s的汽車暫時退出停車位!\n",stopping->STOP[pos].license_plate);}voidbuff_to_stop(intpos)/*由輔助棧返回停車位函數(shù)*/{ stopping->top++;stopping->STOP[pos].license_plate=buff->BUFF[buff->top].license_plate; stopping->STOP[pos].in_time=buff->BUFF[buff->top].in_time;stopping->STOP[pos].state='S';buff->top--; printf("牌照為%s的汽車停回停車位的%d車位!\n",stopping->STOP[pos].license_plate,pos+1);}voidpave_to_stop()/*由便道進入停車位函數(shù)*/{ stopping->top++; pavement->front=(pavement->front+1)%MAX_PAVE;stopping->STOP[stopping->top].license_plate=pavement->PAVE[pavement->front].license_plate; stopping->STOP[stopping->top].in_time=pavement->PAVE[pavement->front].in_time;stopping->STOP[stopping->top].state='S'; printf("牌照為%s的汽車從便道上進入停車位的%d車位!\n",pavement->PAVE[pavement->front].license_plate,MAX_STOP);}floatcheckout(char*in_time,char*out_time)/*記時收費函數(shù)*/{ intsum1=0,sum2=0; char*a,*b; a=in_time; b=out_time; sum1+=(*(a+4)-'0')+(*(a+3)-'0')*10; sum1+=((*(a+1)-'0')+(*a-'0')*10)*60;sum2+=(*(b+4)-'0')+(*(b+3)-'0')*10; sum2+=((*(b+1)-'0')+(*b-'0')*10)*60;return((sum2-sum1)*0.1);}voidcar_leave(intpos,char*out_time)/*離車函數(shù)*/{ inta=pos; intb=a-1; intc,d; floatmoney; money=checkout(stopping->STOP[b].in_time,out_time); if(a>MAX_STOP||a<1) { printf("車位號只能是1——5,請重新輸入!");scanf("%d",&a); car_leave(a,out_time); return; } if(b!=stopping->top) { for(c=stopping->top;c>b;c--)stop_to_buff(c); d=buff->top; }stopping->top--; printf("牌照為%s的汽車從停車場開走!請交費%f元!\n",stopping->STOP[b].license_plate,money); if(buff->top!=-1) {for(c=b;c<=b+d;c++) buff_to_stop(c); } if(pavement->front!=pavement->rear) pave_to_stop();}voidwelcome()/*歡迎界面*/{ printf("\n●歡迎使用本程序●\n\n"); printf("本程序為停車場的模擬管理程序,有車到來時請按C(或c)鍵。\n"); printf("然后根據(jù)屏幕提示進行相關(guān)操作,有車要走時請按L(或l)鍵。\n");printf("然后根據(jù)屏幕提示進行相關(guān)操作,查找汽車時請按F(或f)鍵。\n");printf("然后根據(jù)屏幕提示進行相關(guān)操作,要退出程序請按Q(或q)鍵。\n\n\n");}voiddisplay()/*顯示停車場情況函數(shù)*/{ inti=0,j; intk=1;/*表示便道位置*/ if(stopping->top==-1) printf("停車位上暫無車輛!\n\n"); else { printf("停車位的情況:\n"); while(i<=stopping->top) { printf("%d車位——%s\n",i+1,stopping->STOP[i].license_plate); i++; } if(pavement->front!=pavement->rear) { j=(pavement->front+1)%MAX_PAVE; printf("便道上的情況:\n"); while(j<=pavement->rear) { printf("%d位置——%s\n",k,pavement->PAVE[j].license_plate); j++; k++; } } printf("\n"); }}voidshow_car(char*plate)/*查找并顯示信息函數(shù)*/{ inti,j; for(i=0;i<=stopping->top;i++) if(!strcmp(stopping->STOP[i].license_plate,plate))break; if(i==stopping->top+1) { for(j=(pavement->front+1)%MAX_PAVE;j<=pavement->rear;j++) if(!strcmp(pavement->PAVE[j].license_plate,plate))break; } if(i<stopping->top+1) printf("您的汽車%s位于停車位的%d車位!\n\n",plate,i+1); else { if(j<pavement->rear+1) printf("您的汽車位于便道的%d位置!\n\n",j-(pavement->front+1)%MAX_PAVE+1); else printf("對不起,停車場中無此車!\n\n"); }}voidmain(){ charkey; char*plate,*in_time,*out_time; int
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025北京房屋租賃合同范本(經(jīng)經(jīng)紀機構(gòu)代理成交版)
- 委托中介房屋租賃合同書
- 租車牌范本合同
- 2025公司向銀行借款合同范本
- 2025正規(guī)裝修購銷合同范文
- 2025年金屬基超硬材料項目規(guī)劃申請報告模范
- 2025年計算器及貨幣專用設(shè)備項目提案報告模板
- 2025年驗孕棒項目提案報告模范
- 2025年奧運會直播項目申請報告
- 2025年非金屬廢料和碎屑項目申請報告
- 二零二五版電力設(shè)施維修保養(yǎng)合同協(xié)議3篇
- 最經(jīng)典凈水廠施工組織設(shè)計
- VDA6.3過程審核報告
- 2024-2030年中國并購基金行業(yè)發(fā)展前景預(yù)測及投資策略研究報告
- 2024年湖南商務(wù)職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫帶答案
- 骨科手術(shù)中常被忽略的操作課件
- 《湖南師范大學(xué)》課件
- 2024年全國各地中考試題分類匯編:作文題目
- 2024年高壓電工操作證考試復(fù)習(xí)題庫及答案(共三套)
- 《糖拌西紅柿 》 教案()
- 工程設(shè)計費取費標準
評論
0/150
提交評論