版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、風(fēng)從水上走過,留下粼粼波紋;駱駝從沙漠上走過,留下深深的腳印 ;哨鴿從天空飛過,留下串串歡韻;歲月從樹林穿過,留下圈圈年輪。啊,朋友,我們從時代的舞臺走過,將給社會留下些什么?花從春走過,留下縷縷花香;葉從夏走過,留下片片蔭涼;風(fēng)從秋走過,留下陣陣金浪;雪從冬走過,留下種種希望。啊,朋友,我們從人生的四季走過,將給人生留下些什么班級:物聯(lián)網(wǎng)姓名:XXX學(xué)號:XXXXXXX日期:4月9日一、需求分析1、程序的功能描述按照從終端輸入的數(shù)據(jù)序列進(jìn)行模擬管理。1 )狹道停車用棧來實現(xiàn),并且用的順序棧,等車位的便道用隊列來實現(xiàn),并用鏈?zhǔn)酱鎯Α? )每一組輸入信息包含三個數(shù)據(jù)項,汽車的“到達(dá)”和“離去”的
2、信息,汽車牌照號碼,汽車“到達(dá)”或“離去”的時刻。3 )對每一組輸入數(shù)據(jù)進(jìn)行操作后的輸出信息為:若是車輛到達(dá),則輸出車輛在停車場內(nèi)或便道上的停車位置;若是車子離去,則輸出車輛在停車場內(nèi)停留的時間和繳納的費(fèi)用。(假設(shè)在便道等車的時間不收費(fèi))4 )選作內(nèi)容:(1)便道也是要收費(fèi)的,僅僅比狹道收費(fèi)便宜點(diǎn)。(2)狹道上的車可以直接開走。2、輸入/輸出的要求首先選擇操作的模塊,根據(jù)提示輸入車牌和到達(dá)時間,程序會告知是否停滿或者停車車位。車牌為10個字符以內(nèi)的字符串,時間的輸入中間有冒號把時分隔開。3、測試數(shù)據(jù)1蘇D5431:101蘇Q1231:201蘇D1451:30二、概要設(shè)計1、本程序所用的抽象數(shù)據(jù)
3、類型的定義typedefstructNODECarNode*stackMAX+1;inttop;SeqStackCar;/狹道的堆棧順序存儲typedefstructcarCarNode*data;structcar*next;QueueNode;/隊列的鏈?zhǔn)酱鎯ypedefstructNodeQueueNode*head;QueueNode*rear;LinkQueueCar;/便道上等候的隊列定義2、主模塊的流程及各子模塊的主要功能車輛到達(dá):intArrival(SeqStackCar*Enter,LinkQueueCar*W)首先定義一個棧和隊列的結(jié)構(gòu)體指針為:*p,*t。然后申請一個
4、車輛信息的內(nèi)存空間,并把它賦給棧指針。車輛到達(dá)時就輸入車牌號,并通過if(Enter->top<MAX)來判斷該車是進(jìn)車場內(nèi)還是進(jìn)便道上,如果是進(jìn)車場內(nèi)就把top加1,顯示在車場內(nèi)的位置,還要輸入進(jìn)車場的時間,然后把該節(jié)點(diǎn)進(jìn)棧。如果是else就顯示該車要停在便道上,并進(jìn)行進(jìn)隊列的操作。車輛離開:voidLeave(SeqStackCar*Enter,SeqStackCar*Temp,LinkQueueCar*W)定義一個整型變量room記錄要離開車輛的位置,定義兩個棧指針和一個隊列指針,用個if(Enter->top>0)確保棧不空,然后用個while(1)確保輸入的車
5、輛離開位置的合法性。如果不和法,顯示輸入有誤,要重新輸入。通過while(Enter->top>room)判斷離開車輛的位置,如果是中間位置,就要再用一個棧前面臨時開出來的車,等要開出的車開出后,再把臨時棧的車看進(jìn)車場內(nèi),并要調(diào)用PRINT(p,room);這個函數(shù)計算顯示費(fèi)用。然后還要用if(W->head!=W->rear)&&Enter->top<MAX)語句判斷便道上有沒有車,如果有車就要顯示進(jìn)車場的車的車牌號,并登記進(jìn)入時間。沒有落日般的瑰麗,沒有流云般的飄逸,但可以有水晶般的清純與透明。沒有大山般的巍峨,沒有湖水般的輕柔,但可以有
6、巖石般的堅毅與穩(wěn)重。沒有大海般的浩瀚,沒有瀑布般的飛瀉,但可以有泥土般的樸素與隨和。風(fēng)從水上走過,留下粼粼波紋;駱駝從沙漠上走過,留下深深的腳印 ;哨鴿從天空飛過,留下串串歡韻;歲月從樹林穿過,留下圈圈年輪。啊,朋友,我們從時代的舞臺走過,將給社會留下些什么?花從春走過,留下縷縷花香;葉從夏走過,留下片片蔭涼;風(fēng)從秋走過,留下陣陣金浪;雪從冬走過,留下種種希望。啊,朋友,我們從人生的四季走過,將給人生留下些什么3、模塊之間的層次關(guān)系主函數(shù)中包含著各個函數(shù)模塊,各模塊也在互相調(diào)用。比如,離開函數(shù)中要計算停車費(fèi),故要調(diào)取價格函數(shù)。價格函數(shù)計算要用到離開和進(jìn)入的時間,又要調(diào)用進(jìn)入和離開函數(shù)。三、詳細(xì)
7、設(shè)計1、采用C語言定義相關(guān)的數(shù)據(jù)類型#defineMAX3/停車場最大容量為3輛,便于觀察#defineprice0.05typedefstructtime/定義時間結(jié)構(gòu)體inthour;intmin;Time;typedefstructnode/定義車輛信息結(jié)構(gòu)體charnum10;Timereach;Timeleave;CarNode;2、寫出各模塊的偽碼算法voidPRINT(CarNode*p,introom)/車輛收費(fèi)intA1,A2,B1,B2;printf("n車輛離開的時間:");scanf("%d:%d",&(p->lea
8、ve.hour),&(p->leave.min);printf("n離開車輛的車牌號為:");puts(p->num);printf("n其到達(dá)停車位時間);printf("n離開停車位時間為:);A1=p->reach.hour;A2=p->reach.min;B1=p->leave.hour;B2=p->leave.min;printf("n應(yīng)交費(fèi)用為:%2.1f元”,(B1-A1)*60+(B2-A2)*price+PRINTE(p,room);沒有落日般的瑰麗,沒有流云般的飄逸,但可以有水晶般
9、的清純與透明。沒有大山般的巍峨,沒有湖水般的輕柔,但可以有巖石般的堅毅與穩(wěn)重。沒有大海般的浩瀚,沒有瀑布般的飛瀉,但可以有泥土般的樸素與隨和。風(fēng)從水上走過,留下粼粼波紋;駱駝從沙漠上走過,留下深深的腳印 ;哨鴿從天空飛過,留下串串歡韻;歲月從樹林穿過,留下圈圈年輪。啊,朋友,我們從時代的舞臺走過,將給社會留下些什么?花從春走過,留下縷縷花香;葉從夏走過,留下片片蔭涼;風(fēng)從秋走過,留下陣陣金浪;雪從冬走過,留下種種希望。啊,朋友,我們從人生的四季走過,將給人生留下些什么free(p);intArrival(SeqStackCar*Enter,LinkQueueCar*W)進(jìn)入便道或者狹道CarN
10、ode*p;QueueNode*t;p=(CarNode*)malloc(sizeof(CarNode);flushall();printf("n請輸入車牌號(例:豫B1234):");gets(p->num);if(Enter->top<MAX)Enter->top+;printf("n車輛在車場第明置.",Enter->top);printf("n車輛到達(dá)時間:");scanf("%d:%d",&(p->reach.hour),&(p->reach.mi
11、n);Enter->stacktop=p;return(1);elseprintf("n該車須在便道等待!有車位時進(jìn)入車場");t=(QueueNode*)malloc(sizeof(QueueNode);進(jìn)入隊列,調(diào)整指針;printf("請輸入進(jìn)入便道的時間");scanf("%d:%d",&(p->reach.hour),&(p->reach.min);return(1);voidLeave(SeqStackCar*Enter,SeqStackCar*Temp,LinkQueueCar*W)/車
12、輛的離開introom;CarNode*p,*t;QueueNode*q;if(Enter->top>0)/判斷車場是否為空while(1)printf("n請輸入車在車場的位置/1-%d/:",Enter->top);scanf("%d",&room);if(room>=1&&room<=Enter->top)break;elseprintf("n輸入有誤,請重輸:");while(Enter->top>room)/把要刪除的車輛的前面的車開出來,進(jìn)臨時棧。Te
13、mp->top+;Temp->stackTemp->top=Enter->stackEnter->top;Enter->stackEnter->top=NULL;Enter->top-;p=Enter->stackEnter->top;/把要刪除的車輛節(jié)點(diǎn)賦給p。Enter->stackEnter->top=NULL;Enter->top-;while(Temp->top>=1)/再把臨時棧里德車輛進(jìn)停車場Enter->top+;Enter->stackEnter->top=Temp-&
14、gt;stackTemp->top;Temp->stackTemp->top=NULL;Temp->top-;PRINT(p,room);/調(diào)用計費(fèi)函數(shù)計費(fèi)。if(W->head!=W->rear)&&Enter->top<MAX)/如果便道上有車,則再開進(jìn)停車場。q=W->head->next;t=q->data;Enter->top+;scanf("%d:%d",&(t->reach.hour),&(t->reach.min);/t->leave.h
15、our=t->reach.hour;t->leave.min=t->reach.min;W->head->next=q->next;if(q=W->rear)W->rear=W->head;Enter->stackEnter->top=t;PRINTE(t,room);free(q);elseprintf("n便道里沒有車.n");elseprintf("n車場里沒有車.");3、畫出函數(shù)的調(diào)用關(guān)系圖|>到達(dá)函數(shù)|>離開函數(shù)>停車費(fèi)用主函數(shù)>顯示車場里的情況|>
16、;顯示便道里的情況四、調(diào)試分析1、調(diào)試中遇到的問題及對問題的解決方法因為時間結(jié)構(gòu)體里的小時,分鐘都是用的是整型,所以如果出現(xiàn)1:01這個時間的話,會導(dǎo)致顯示列表是1:1;這樣的話會造成人的誤解,同時會導(dǎo)致程序?qū)ν\嚴(yán)U納的費(fèi)用計算錯誤。解決方法1,可以用數(shù)組和或者字符串來表示時間,但是問題來了,要是用字符串的話,算停車費(fèi)有點(diǎn)問題,要廢上一段時間的,會提高復(fù)雜度。解決方案2:將輸出用右對齊方式,缺位的用0補(bǔ)齊,這樣最快捷啦!2、算法的時間復(fù)雜度和空間復(fù)雜度由于沒有進(jìn)行循環(huán)嵌套之類的運(yùn)算,只有簡單的循環(huán)語句,所以時間復(fù)雜度T(O)=O(n),在數(shù)據(jù)的存儲方面,除了車牌號用的是數(shù)組以外,便道用的是順序
17、棧,這些是提前要申請一定的存儲空間的,這樣非動態(tài)分配的存儲空間,在某些時候是會導(dǎo)致空間的浪費(fèi),增加其空間復(fù)雜度。其余的都是結(jié)構(gòu)體和鏈?zhǔn)酱鎯Φ年犃袑儆趧討B(tài)存儲。當(dāng)停車場的規(guī)模較小時,空間復(fù)雜度較小,隨著規(guī)模的增加,動態(tài)存儲的擴(kuò)充,空間復(fù)雜度也隨之增加。五、使用說明及測試結(jié)果(給出程序的使用說明、注意事項及不同情況的測試結(jié)果)時間以24進(jìn)制計算,停車時間不能跨越24進(jìn)制。車牌號是10個字符串以內(nèi),不可溢出。"G:新建文件夾沖停2mbugZexe”ttttttttttttttiiatttttttttttttt3.車輛列表顯示,ttttttttttttttntttttttttttttt04.
18、退出系統(tǒng).tttttttttttttttttttltttttttttttt請選擇:2請輸入車在車場的位置"一3,:T車輛離開的時間式二加離開車輛的車牌號為:蘇DS3沒有落日般的瑰麗,沒有流云般的飄逸,但可以有水晶般的清純與透明。沒有大山般的巍峨,沒有湖水般的輕柔,但可以有巖石般的堅毅與穩(wěn)重。沒有大海般的浩瀚,沒有瀑布般的飛瀉,但可以有泥土般的樸素與隨和。開車輛的車牌號為:蘇D543置一位01 -1 1機(jī)1:元元.進(jìn)進(jìn)間為吼號號小!_ : -"2323道時為為HIW1便道用父道蛤第一個應(yīng)繳費(fèi)用是在便道中的費(fèi)用,第二個費(fèi)用是總費(fèi)用。六、源程序(要求程序簡潔、清晰、主要語句帶注釋
19、)代碼非本人寫,對其進(jìn)行改進(jìn)而已#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX3/停車場最大容量為3輛,便于觀察#defineprice0.05#definepricee0.02typedefstructtime/定義時間結(jié)構(gòu)體inthour;intmin;Time;typedefstructnode/定義車輛信息結(jié)構(gòu)體charnum10;Timereach;Timeleave;CarNode;typedefstructNODECarNode*stackMAX+1;inttop;
20、SeqStackCar;typedefstructcarCarNode*data;structcar*next;QueueNode;typedefstructNodeQueueNode*head;QueueNode*rear;LinkQueueCar;voidInitStack(SeqStackCar*);intInitQueue(LinkQueueCar*);intArrival(SeqStackCar*,LinkQueueCar*);voidLeave(SeqStackCar*,SeqStackCar*,LinkQueueCar*);voidList(SeqStackCar,LinkQue
21、ueCar);voidmain()SeqStackCarEnter,Temp;LinkQueueCarWait;intch;system("color4A");InitStack(&Enter);InitStack(&Temp);InitQueue(&Wait);while(1)printf("n§派§派§派§§派§歡迎使用停車場系統(tǒng).§X§X§X§X § X § tnn");printf("n'
22、;t# 1.printf("n't# 2.printf("nt# 3.printf("nt# 4.while(1)printf("請選擇:");車輛到達(dá)登記.#t'n"); 車輛離開登記.#tn"); 車輛歹”表顯示.#tn"); 退出系統(tǒng).#tnn");scanf("%d",&ch);if(ch>=1&&ch<=4)break;elseprintf("n輸入有誤,請重新選擇:14:");switch(ch)cas
23、e1:Arrival(&Enter,&Wait);break;case2:Leave(&Enter,&Temp,&Wait);break;case3:List(Enter,Wait);break;case4:exit(0);default:break;/自定義函數(shù)voidInitStack(SeqStackCar*s)/棧的初始化inti;s->top=0;for(i=0;i<=MAX;i+)s->stacks->top=NULL;intInitQueue(LinkQueueCar*Q)/隊列的初始化Q->head=(Que
24、ueNode*)malloc(sizeof(QueueNode);if(Q->head!=NULL)Q->head->next=NULL;Q->rear=Q->head;return;elsereturn(-1);floatPRINTE(CarNode*p,introom)/車輛收費(fèi)intA1,A2,B1,B2;printf("n車輛離開便道的時間:");scanf("%d:%d",&(p->leave.hour),&(p->leave.min);printf("n離開車輛的車牌號為:&
25、quot;);puts(p->num);printf("n其到達(dá)便道時間為:d:%d",p->reach.hour,p->reach.min);printf("n離開便道時間為:d:%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.1f元”,(B1-A1)*60+(B2-A2)*pricee);return(B1
26、-A1)*60+(B2-A2)*pricee);free(p);voidPRINT(CarNode*p,introom)/車輛收費(fèi)intA1,A2,B1,B2;printf("n車輛離開的時間:");scanf("%d:%d",&(p->leave.hour),&(p->leave.min);printf("n離開車輛的車牌號為:");puts(p->num);printf("n其到達(dá)停車位時間為:d:%d",p->reach.hour,p->reach.min);pr
27、intf("n離開停車位時間為:d:%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.1f元”,(B1-A1)*60+(B2-A2)*price+PRINTE(p,room);free(p);/車輛的到達(dá)登記intArrival(SeqStackCar*Enter,LinkQueueCar*W)CarNode*p;QueueNode*t;p=(CarN
28、ode*)malloc(sizeof(CarNode);flushall();printf("n請輸入車牌號(例:豫B1234):");gets(p->num);if(Enter->top<MAX)Enter->top+;printf("n車輛在車場第明置.",Enter->top);printf("n車輛到達(dá)時間:");scanf("%d:%d",&(p->reach.hour),&(p->reach.min);Enter->stackEnter-&
29、gt;top=p;return(1);elseprintf("n該車須在便道等待!有車位時進(jìn)入車場");t=(QueueNode*)malloc(sizeof(QueueNode);t->data=p;t->next=NULL;W->rear->next=t;W->rear=t;printf("請輸入進(jìn)入便道的時間");scanf("%d:%d",&(p->reach.hour),&(p->reach.min);return(1);voidLeave(SeqStackCar*E
30、nter,SeqStackCar*Temp,LinkQueueCar*W)風(fēng)從水上走過,留下粼粼波紋;駱駝從沙漠上走過,留下深深的腳印 ;哨鴿從天空飛過,留下串串歡韻;歲月從樹林穿過,留下圈圈年輪。啊,朋友,我們從時代的舞臺走過,將給社會留下些什么?花從春走過,留下縷縷花香;葉從夏走過,留下片片蔭涼;風(fēng)從秋走過,留下陣陣金浪;雪從冬走過,留下種種希望。啊,朋友,我們從人生的四季走過,將給人生留下些什么/車輛的離開introom;CarNode*p,*t;QueueNode*q;if(Enter->top>0)/判斷車場是否為空while(1)printf("n請輸入車在車
31、場的位置/1-%d/:",Enter->top);scanf("%d",&room);if(room>=1&&room<=Enter->top)break;elseprintf("n輸入有誤,請重輸:");while(Enter->top>room)/把要刪除的車輛的前面的車開出來,進(jìn)臨時棧。Temp->top+;Temp->stackTemp->top=Enter->stackEnter->top;Enter->stackEnter->top
32、=NULL;Enter->top-;p=Enter->stackEnter->top;/把要刪除的車輛節(jié)點(diǎn)賦給p。Enter->stackEnter->top=NULL;Enter->top-;while(Temp->top>=1)/再把臨時棧里德車輛進(jìn)停車場Enter->top+;Enter->stackEnter->top=Temp->stackTemp->top;Temp->stackTemp->top=NULL;Temp->top-;PRINT(p,room);/調(diào)用計費(fèi)函數(shù)計費(fèi)。if(W-
33、>head!=W->rear)&&Enter->top<MAX)/如果便道上有車,則再開進(jìn)停車場。q=W->head->next;t=q->data;Enter->top+;printf("n便道的$號車進(jìn)入車場第d位置.",t->num,Enter->top);printf("n請輸入s號車進(jìn)入車場的時間:",t->num);scanf("%d:%d",&(t->reach.hour),&(t->reach.min);沒有落
34、日般的瑰麗,沒有流云般的飄逸,但可以有水晶般的清純與透明。沒有大山般的巍峨,沒有湖水般的輕柔,但可以有巖石般的堅毅與穩(wěn)重。沒有大海般的浩瀚,沒有瀑布般的飛瀉,但可以有泥土般的樸素與隨和。風(fēng)從水上走過,留下粼粼波紋;駱駝從沙漠上走過,留下深深的腳印 ;哨鴿從天空飛過,留下串串歡韻;歲月從樹林穿過,留下圈圈年輪。啊,朋友,我們從時代的舞臺走過,將給社會留下些什么?花從春走過,留下縷縷花香;葉從夏走過,留下片片蔭涼;風(fēng)從秋走過,留下陣陣金浪;雪從冬走過,留下種種希望。啊,朋友,我們從人生的四季走過,將給人生留下些什么/t->leave.hour=t->reach.hour;t->l
35、eave.min=t->reach.min;W->head->next=q->next;if(q=W->rear)W->rear=W->head;Enter->stackEnter->top=t;PRINTE(t,room);free(q);elseprintf("n便道里沒有車.n");elseprintf("n車場里沒有車.");voidList1(SeqStackCar*S)/顯示車場里的車輛情況inti;if(S->top>0)printf("n車場:");printf("n位置到達(dá)時間車牌號n");for(i=1;i<=S->top;i+)printf("%d",i);pr
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 稅務(wù)局2025年度環(huán)境保護(hù)與治理合同
- 2025年度出口退稅證明開具與跨境電商平臺服務(wù)合同3篇
- 2024良鄉(xiāng)校區(qū)物業(yè)管理服務(wù)合同
- 2025年度裝載機(jī)租賃與施工技術(shù)指導(dǎo)合同3篇
- 二零二四年圍欄產(chǎn)品研發(fā)與創(chuàng)新設(shè)計合同3篇
- 二零二五年度綠色通道不過戶二手房買賣合同2篇
- 2025年度新能源發(fā)電項目變壓器采購合同標(biāo)準(zhǔn)范本3篇
- 2024版跨國企業(yè)社會責(zé)任合規(guī)合同
- 二零二五版?zhèn)€人購房貸款擔(dān)保與房屋維修基金代繳代理合同3篇
- 二零二五版股權(quán)代持實務(wù)解析與合規(guī)操作合同
- 割接方案的要點(diǎn)、難點(diǎn)及采取的相應(yīng)措施
- 2025年副護(hù)士長競聘演講稿(3篇)
- 2025至2031年中國臺式燃?xì)庠钚袠I(yè)投資前景及策略咨詢研究報告
- 原發(fā)性腎病綜合征護(hù)理
- (一模)株洲市2025屆高三教學(xué)質(zhì)量統(tǒng)一檢測 英語試卷
- 第三章第一節(jié)《多變的天氣》說課稿2023-2024學(xué)年人教版地理七年級上冊
- 2025年中國電科集團(tuán)春季招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年度建筑施工現(xiàn)場安全管理合同2篇
- 建筑垃圾回收利用標(biāo)準(zhǔn)方案
- 2024年考研英語一閱讀理解80篇解析
- 樣板間合作協(xié)議
評論
0/150
提交評論