




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
實驗二停車場管理班級:A0712學(xué)號:12姓名:冷清淼成績:__________指引教師簽名:__________一、問題描述設(shè)停車場是一種可停放n輛車狹長通道,且只有一種大門可供汽車進(jìn)出。在停車場內(nèi),汽車按到達(dá)先后順序,由北向南依次排列(假設(shè)大門在最南端)。若停車場內(nèi)已停滿n輛車,則日后汽車需在門外便道上等待,當(dāng)有車開走時,便道上第一輛車即可開入。當(dāng)停車場內(nèi)某輛車要離開時,在它之后進(jìn)入車輛必要先退出停車場為它讓路,待該輛車開出大門后,其她車輛再按原順序返回車場。每輛車離開停車場時,應(yīng)按其停留時間長短交費(在便道上停留時間不收費)。設(shè)計規(guī)定:1.模仿上述管理過程。規(guī)定以順序棧模仿停車場,以鏈隊列模仿便道。2.從終端讀入汽車到達(dá)或拜別數(shù)據(jù),每組數(shù)據(jù)涉及三項:(1)是“到達(dá)”還是“離開”;(2)汽車牌照號碼;(3)“到達(dá)”或“離開”時刻。3.與每組輸入信息相應(yīng)輸出信息為:如果是到達(dá)車輛,則輸出其在停車場中或便道上位置;如果是拜別車輛,則輸出其在停車場中停留時間和應(yīng)交費用。二、算法闡明1.?dāng)?shù)據(jù)構(gòu)造闡明(1)用到兩個堆棧:一種為車場棧;另一種為暫時棧temptypedefstructNODE{CarNode*stack[MAX+1];inttop;}SeqStackCar;/*模仿車場*/一種隊列構(gòu)造,存儲便道車輛信息:typedefstructNode{QueueNode*head;QueueNode*rear;}LinkQueueCar;/*模仿便道*/2.算法闡明(1)功能模塊闡明:停車場管理系統(tǒng)具有三個模塊,即:車輛到達(dá)、離開、列表顯示圖1(2)以模塊為單位分析算法1、“到達(dá)”模塊:到達(dá)時有兩種狀況,即車場與否滿,未滿則直接進(jìn)入停車場;滿時,到便道等待。如圖2。圖2
2.“離開”模塊:離開時,當(dāng)車庫為空時,提示沒有車,結(jié)束;否則車輛離開。如圖3。圖33.“顯示”模塊:顯示模塊有兩個顯示選項,即:車場與便道。如圖4。圖4
三、測試成果 (一)測試用例(闡明:測試用例要合理并且足夠,既要有對的用例,也要有錯誤用例,同步檢查程序?qū)Φ男院蛷?qiáng)健性)1.第一組測試用例(1)測試輸入:停車場車輛離開,如下表:服務(wù)選取車牌號/車位到達(dá)/離開時間1QH05815:251AB12318:451EA64223:15220:30210:65(錯誤)(2)測試目:測試離開辦法時間格式控制以及費用計算與否對的。(3)對的輸出:第一次離開是AB123,應(yīng)交費3.45元。第二次時,當(dāng)在輸入65時,應(yīng)當(dāng)提示輸入錯誤,重輸。(4)實際輸出:(5)錯誤因素:第一種錯誤是在計算時,一種數(shù)字錯了;第二個是沒有對時間格式控制。(6)當(dāng)前狀態(tài):已改正2.第二組測試用例(1)測試輸入:持續(xù)6輛車到達(dá),如下表:服務(wù)選取車牌號到達(dá)時間1A88287:561S22968:251WW6668:451HK45615:501GH99912:301DD55513:40測試目:測試到達(dá)辦法與列表顯示辦法能否對的完畢。(3)對的輸出:先到達(dá)五輛車先進(jìn)入停車場,最后到達(dá)一輛在便道等待。(4)實際輸出:(5)錯誤因素:沒有作出時間先后判斷,而是先輸入先進(jìn)入。(6)當(dāng)前狀態(tài):待修改3.第三組測試用例(1)測試輸入:接上一步輸入離開信息,下表:服務(wù)選取離開車位離開時間便道車進(jìn)入時間2313:3013:40(2)測試目:測試離開辦法功能與否成功以及便道進(jìn)入車場與否對的。(3)對的輸出:輸出3號車位車輛離開信息清單,便道1號車進(jìn)入停車場。(4)實際輸出:錯誤因素:沒有錯誤。(6)當(dāng)前狀態(tài):通過(二)測試成果分析此停車管理系統(tǒng)基本也許實現(xiàn)一種小停車場管理,其“到達(dá)”與“離開”辦法都相對比較完整,以及結(jié)算清單明了。盡管在時間先后上有浮現(xiàn)混亂,但當(dāng)其用到實際應(yīng)用時,那個時間先后就可以避免了。但在輸入數(shù)據(jù)時,要按照嚴(yán)格格式輸入,否則有也許浮現(xiàn)死去或崩潰。若本系統(tǒng)能加上保存功能就更好了,由于一種系統(tǒng)在使用過程中總會關(guān)機(jī)等,而此系統(tǒng)缺陷卻是沒有保存功能,關(guān)閉之后就要重新建立了。會慢慢完善。
附錄:源代碼///系統(tǒng)闡明:本系統(tǒng)適應(yīng)于小型停車場,且停車時間在一天之內(nèi)短期停放停車場。//在此系統(tǒng)中,車庫容量設(shè)立為5,便于測試。在實際使用中可以對容量大小按實際狀況設(shè)立。#include<iostream.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX5/*車庫容量,可以依照實際狀況變化*/#defineprice0.01/*一輛車每分鐘費用,可變*/typedefstructtime{ inthour;intmin;}Time;/*時間結(jié)點*/typedefstructnode{charnum[10];Timereach;Timeleave;}CarNode;/*車輛信息結(jié)點*/typedefstructNODE{CarNode*stack[MAX+1];inttop;}SeqStackCar;/*模仿停車場*/typedefstructcar{CarNode*data;structcar*next;}QueueNode;typedefstructNode{QueueNode*head;QueueNode*rear;}LinkQueueCar;/*模仿便道*//*辦法聲明*/voidInitStack(SeqStackCar*);/*初始化棧*/intInitQueue(LinkQueueCar*);/*初始化便道*/intArrival(SeqStackCar*,LinkQueueCar*);/*車輛到達(dá)*/voidLeave(SeqStackCar*,SeqStackCar*,LinkQueueCar*);/*車輛離開*/voidList(SeqStackCar,LinkQueueCar);/*顯示信息*/voidPRINT(CarNode*p,introom);/*輸出離開車輛信息清單*/voidmain(){ system("colorF2");/*設(shè)立系統(tǒng)顏色,本系統(tǒng)為白底綠字f2*/ SeqStackCarEnter,Temp;LinkQueueCarWait;intch;InitStack(&Enter);/*初始化車站*/InitStack(&Temp);/*初始化讓路暫時棧*/InitQueue(&Wait);/*初始化通道*/while(1) { cout<<"※※※※@歡迎使用本停車管理系統(tǒng)@※※※※"<<endl; cout<<"********************************************************"<<endl; cout<<"※--※1.車輛到達(dá)※--※"<<endl;cout<<"※--※2.車輛離開※--※"<<endl;cout<<"※--※3.列表顯示※--※"<<endl;cout<<"※--※4.退出系統(tǒng)※--※"<<endl; cout<<"********************************************************"<<endl; cout<<"!闡明:請注意對的輸入時間,在輸入“時”后,按“ENTER”或者“空格”,再輸入“分”。不要為非數(shù)字!"<<endl; cout<<"請選取所需要服務(wù)!(1-4)."<<endl; while(1) { cin>>ch;if(ch>=1&&ch<=4)break;elsecout<<"輸入錯誤!請選?。?1-4)."<<endl; }switch(ch) { case1:Arrival(&Enter,&Wait);break;/*車輛到達(dá)*/case2:Leave(&Enter,&Temp,&Wait);break;/*車輛離開*/case3:List(Enter,Wait);break;/*列表顯示信息*/case4:exit(0);/*退出主程序*/default:break; } }}voidInitStack(SeqStackCar*s)/*初始化棧*/{ inti;s->top=0;for(i=0;i<=MAX;i++)s->stack[s->top]=NULL;}intInitQueue(LinkQueueCar*Q)/*初始化便道*/{ Q->head=(QueueNode*)malloc(sizeof(QueueNode));if(Q->head!=NULL) { Q->head->next=NULL;Q->rear=Q->head;return(1); }elsereturn(-1);}intArrival(SeqStackCar*Enter,LinkQueueCar*W)/*車輛到達(dá)*/{ CarNode*p;QueueNode*t;p=(CarNode*)malloc(sizeof(CarNode));flushall();cout<<"請輸入車牌號(例:A1234):"<<endl;gets(p->num);if(Enter->top<MAX)/*車場未滿,車進(jìn)車場*/ { Enter->top++;cout<<"車輛在車場第"<<Enter->top<<"位置!"<<endl;cout<<"請輸入到達(dá)時間:(小時:分鐘)"<<endl;cin>>p->reach.hour; while(p->reach.hour<0||p->reach.hour>23)//控制時間格式對的 { cout<<"輸入錯誤!"<<endl;cout<<"請重輸入到達(dá)時間時(0-23)!"<<endl;cin>>p->reach.hour; } cin>>p->reach.min;while(p->reach.min<0||p->reach.min>59)//控制分鐘輸入對的 { cout<<"輸入錯誤!"<<endl;cout<<"請重輸入到達(dá)時間分(0-59)!"<<endl;cin>>p->reach.min; }Enter->stack[Enter->top]=p;return(1); }else/*車場已滿,車進(jìn)便道*/ { cout<<"車場已滿,請在便道等待!"<<endl;t=(QueueNode*)malloc(sizeof(QueueNode));t->data=p;t->next=NULL;W->rear->next=t;W->rear=t;return(1); }}voidLeave(SeqStackCar*Enter,SeqStackCar*Temp,LinkQueueCar*W)/*車輛離開*/{introom;CarNode*p;QueueNode*q;/*判斷車場內(nèi)與否有車*/if(Enter->top>0)/*有車*/ { while(1)/*輸入離開車輛信息*/ { cout<<"請輸入車在車場位置1--"<<Enter->top<<":"; cin>>room;if(room>=1&&room<=Enter->top)break; }while(Enter->top>room)/*車輛離開*/ { Temp->top++;/*暫時通道棧頂指針*/Temp->stack[Temp->top]=Enter->stack[Enter->top];Enter->stack[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);if((W->head!=W->rear)&&Enter->top<MAX)/*車站是未滿*/ {/*便道車輛進(jìn)入車場*/ q=W->head->next;p=q->data;/*p指向鏈隊頭*/Enter->top++;cout<<"便道"<<p->num<<"號車進(jìn)入車場第"<<Enter->top<<"位置!"<<endl;cout<<"請輸入當(dāng)前時間如(小時:分鐘):"<<endl; cin>>p->reach.hour;if(p->reach.hour<0||p->reach.hour>23) { cout<<"輸入錯誤!"<<endl;cout<<"請重輸入到達(dá)時間時(0-23)!"<<endl;cin>>p->reach.hour; } cin>>p->reach.min;if(p->reach.min<0||p->reach.min>59) { cout<<"輸入錯誤!"<<endl;cout<<"請重輸入到達(dá)時間分(0-59)!"<<endl;cin>>p->reach.min; } Enter->stack[Enter->top]=p;W->head->next=q->next;if(q==W->rear)W->rear=W->head;free(q);/*釋放q地址*/ }elsecout<<"便道里沒有車!"<<endl;/*便道沒車*/ }elsecout<<"車場里沒有車!"<<endl;/*車場沒車*/}voidPRINT(CarNode*p,introom)/*輸出離開車輛信息清單*/{ intA1,A2,B1,B2;cout<<"請輸入離開時間:(小時:分鐘)"<<endl;cin>>p->leave.hour;while(p->leave.hour<0||p->leave.hour>23) { cout<<"輸入錯誤!"<<endl;cout<<"請重輸入離開時間時(0-23)"<<endl;cin>>p->leave.hour; B1=p->leave.hour; } cin>>p->leave.min; if(p->leave.min<0||p->leave.min>59) { cout<<"輸入錯誤!"<<endl;cout<<"請重輸入到達(dá)時間分(0-59)!"<<endl;cin>>p->leave.min; }cout<<endl<<"離開車輛車牌號為:"<<endl;puts(p->num);cout<<"其到達(dá)時間為:"<<p->reach.hour<<":"<<p->reach.min<<endl;cout<<"離開時間為:"<<p->leave.hour<<":"<<p->leave.min<<endl;A1=p->reach.hour;A2=p->reach.min;B1=p->leave.hour;B2=p->leave.min; cout<<"應(yīng)交費用為:"<<(((B1-A1)*60+(B2-A2))+1440)%1440*price<<"元!"<<endl;free(p);}voidList1(SeqStackCar*S)/*列表顯示車場信息*/{ cout<<"您選取是車場停車狀況!"<<endl; inti;if(S->top>0)/*判斷車站內(nèi)與否有車*/ {cout<<"位置到達(dá)時間車牌號"<<endl;for(i=1;i<=S->top;i++) { cout<<""<<i<<""<<S->stack[i]->reach.hour<<":"<<S->stack[i]->reach.min<<""<<S->stack[i]->num<<endl; } }else
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 租客合同終止租房協(xié)議
- 技術(shù)開發(fā)與轉(zhuǎn)讓合同保密范本
- 智能化系統(tǒng)供貨安裝合同樣本
- 礦山企業(yè)輪換工勞動合同模板及示例
- 農(nóng)村土地出租權(quán)屬合同樣本
- 標(biāo)準(zhǔn)貨物銷售合同簡版
- 城市配送服務(wù)合同一覽
- 小學(xué)生種花演講課件
- 影視設(shè)備行業(yè)交流服務(wù)批發(fā)考核試卷
- 廣播電視節(jié)目的心理影響與教育意義考核試卷
- 廉潔知識培訓(xùn)課件
- 分布式光伏發(fā)電開發(fā)建設(shè)管理辦法2025
- 《科幻小說賞析與寫作》 課件 -第六章 “外星文明”的善意與惡行-《安德的游戲》
- 《我國的文化安全》課件
- 2025蛇年一上英語寒假作業(yè)
- 建筑行業(yè)新員工試用期考核制度
- 二年級經(jīng)典誦讀社團(tuán)計劃
- 潔凈室施工組織設(shè)計方案
- 2025年太倉市文化旅游發(fā)展集團(tuán)限公司及子公司公開招聘12名高頻重點提升(共500題)附帶答案詳解
- 機(jī)械制圖題庫及答案
- 安裝承包合同(2025年)
評論
0/150
提交評論