




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、風從水上走過,留下粼粼波紋;駱駝從沙漠上走過,留下深深的腳印 ;哨鴿從天空飛過,留下串串歡韻;歲月從樹林穿過,留下圈圈年輪。啊,朋友,我們從時代的舞臺走過,將給社會留下些什么?花從春走過,留下縷縷花香;葉從夏走過,留下片片蔭涼;風從秋走過,留下陣陣金浪;雪從冬走過,留下種種希望。啊,朋友,我們從人生的四季走過,將給人生留下些什么班級:物聯網姓名:XXX學號:XXXXXXX日期:4月9日一、需求分析1、程序的功能描述按照從終端輸入的數據序列進行模擬管理。1 )狹道停車用棧來實現,并且用的順序棧,等車位的便道用隊列來實現,并用鏈式存儲。2 )每一組輸入信息包含三個數據項,汽車的“到達”和“離去”的
2、信息,汽車牌照號碼,汽車“到達”或“離去”的時刻。3 )對每一組輸入數據進行操作后的輸出信息為:若是車輛到達,則輸出車輛在停車場內或便道上的停車位置;若是車子離去,則輸出車輛在停車場內停留的時間和繳納的費用。(假設在便道等車的時間不收費)4 )選作內容:(1)便道也是要收費的,僅僅比狹道收費便宜點。(2)狹道上的車可以直接開走。2、輸入/輸出的要求首先選擇操作的模塊,根據提示輸入車牌和到達時間,程序會告知是否停滿或者停車車位。車牌為10個字符以內的字符串,時間的輸入中間有冒號把時分隔開。3、測試數據1蘇D5431:101蘇Q1231:201蘇D1451:30二、概要設計1、本程序所用的抽象數據
3、類型的定義typedefstructNODECarNode*stackMAX+1;inttop;SeqStackCar;/狹道的堆棧順序存儲typedefstructcarCarNode*data;structcar*next;QueueNode;/隊列的鏈式存儲typedefstructNodeQueueNode*head;QueueNode*rear;LinkQueueCar;/便道上等候的隊列定義2、主模塊的流程及各子模塊的主要功能車輛到達:intArrival(SeqStackCar*Enter,LinkQueueCar*W)首先定義一個棧和隊列的結構體指針為:*p,*t。然后申請一個
4、車輛信息的內存空間,并把它賦給棧指針。車輛到達時就輸入車牌號,并通過if(Enter->top<MAX)來判斷該車是進車場內還是進便道上,如果是進車場內就把top加1,顯示在車場內的位置,還要輸入進車場的時間,然后把該節點進棧。如果是else就顯示該車要停在便道上,并進行進隊列的操作。車輛離開:voidLeave(SeqStackCar*Enter,SeqStackCar*Temp,LinkQueueCar*W)定義一個整型變量room記錄要離開車輛的位置,定義兩個棧指針和一個隊列指針,用個if(Enter->top>0)確保棧不空,然后用個while(1)確保輸入的車
5、輛離開位置的合法性。如果不和法,顯示輸入有誤,要重新輸入。通過while(Enter->top>room)判斷離開車輛的位置,如果是中間位置,就要再用一個棧前面臨時開出來的車,等要開出的車開出后,再把臨時棧的車看進車場內,并要調用PRINT(p,room);這個函數計算顯示費用。然后還要用if(W->head!=W->rear)&&Enter->top<MAX)語句判斷便道上有沒有車,如果有車就要顯示進車場的車的車牌號,并登記進入時間。沒有落日般的瑰麗,沒有流云般的飄逸,但可以有水晶般的清純與透明。沒有大山般的巍峨,沒有湖水般的輕柔,但可以有
6、巖石般的堅毅與穩重。沒有大海般的浩瀚,沒有瀑布般的飛瀉,但可以有泥土般的樸素與隨和。風從水上走過,留下粼粼波紋;駱駝從沙漠上走過,留下深深的腳印 ;哨鴿從天空飛過,留下串串歡韻;歲月從樹林穿過,留下圈圈年輪。啊,朋友,我們從時代的舞臺走過,將給社會留下些什么?花從春走過,留下縷縷花香;葉從夏走過,留下片片蔭涼;風從秋走過,留下陣陣金浪;雪從冬走過,留下種種希望。啊,朋友,我們從人生的四季走過,將給人生留下些什么3、模塊之間的層次關系主函數中包含著各個函數模塊,各模塊也在互相調用。比如,離開函數中要計算停車費,故要調取價格函數。價格函數計算要用到離開和進入的時間,又要調用進入和離開函數。三、詳細
7、設計1、采用C語言定義相關的數據類型#defineMAX3/停車場最大容量為3輛,便于觀察#defineprice0.05typedefstructtime/定義時間結構體inthour;intmin;Time;typedefstructnode/定義車輛信息結構體charnum10;Timereach;Timeleave;CarNode;2、寫出各模塊的偽碼算法voidPRINT(CarNode*p,introom)/車輛收費intA1,A2,B1,B2;printf("n車輛離開的時間:");scanf("%d:%d",&(p->lea
8、ve.hour),&(p->leave.min);printf("n離開車輛的車牌號為:");puts(p->num);printf("n其到達停車位時間);printf("n離開停車位時間為:);A1=p->reach.hour;A2=p->reach.min;B1=p->leave.hour;B2=p->leave.min;printf("n應交費用為:%2.1f元”,(B1-A1)*60+(B2-A2)*price+PRINTE(p,room);沒有落日般的瑰麗,沒有流云般的飄逸,但可以有水晶般
9、的清純與透明。沒有大山般的巍峨,沒有湖水般的輕柔,但可以有巖石般的堅毅與穩重。沒有大海般的浩瀚,沒有瀑布般的飛瀉,但可以有泥土般的樸素與隨和。風從水上走過,留下粼粼波紋;駱駝從沙漠上走過,留下深深的腳印 ;哨鴿從天空飛過,留下串串歡韻;歲月從樹林穿過,留下圈圈年輪。啊,朋友,我們從時代的舞臺走過,將給社會留下些什么?花從春走過,留下縷縷花香;葉從夏走過,留下片片蔭涼;風從秋走過,留下陣陣金浪;雪從冬走過,留下種種希望。啊,朋友,我們從人生的四季走過,將給人生留下些什么free(p);intArrival(SeqStackCar*Enter,LinkQueueCar*W)進入便道或者狹道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車輛到達時間:");scanf("%d:%d",&(p->reach.hour),&(p->reach.mi
11、n);Enter->stacktop=p;return(1);elseprintf("n該車須在便道等待!有車位時進入車場");t=(QueueNode*)malloc(sizeof(QueueNode);進入隊列,調整指針;printf("請輸入進入便道的時間");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)/把要刪除的車輛的前面的車開出來,進臨時棧。Te
13、mp->top+;Temp->stackTemp->top=Enter->stackEnter->top;Enter->stackEnter->top=NULL;Enter->top-;p=Enter->stackEnter->top;/把要刪除的車輛節點賦給p。Enter->stackEnter->top=NULL;Enter->top-;while(Temp->top>=1)/再把臨時棧里德車輛進停車場Enter->top+;Enter->stackEnter->top=Temp-&
14、gt;stackTemp->top;Temp->stackTemp->top=NULL;Temp->top-;PRINT(p,room);/調用計費函數計費。if(W->head!=W->rear)&&Enter->top<MAX)/如果便道上有車,則再開進停車場。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、畫出函數的調用關系圖|>到達函數|>離開函數>停車費用主函數>顯示車場里的情況|>
16、;顯示便道里的情況四、調試分析1、調試中遇到的問題及對問題的解決方法因為時間結構體里的小時,分鐘都是用的是整型,所以如果出現1:01這個時間的話,會導致顯示列表是1:1;這樣的話會造成人的誤解,同時會導致程序對停車繳納的費用計算錯誤。解決方法1,可以用數組和或者字符串來表示時間,但是問題來了,要是用字符串的話,算停車費有點問題,要廢上一段時間的,會提高復雜度。解決方案2:將輸出用右對齊方式,缺位的用0補齊,這樣最快捷啦!2、算法的時間復雜度和空間復雜度由于沒有進行循環嵌套之類的運算,只有簡單的循環語句,所以時間復雜度T(O)=O(n),在數據的存儲方面,除了車牌號用的是數組以外,便道用的是順序
17、棧,這些是提前要申請一定的存儲空間的,這樣非動態分配的存儲空間,在某些時候是會導致空間的浪費,增加其空間復雜度。其余的都是結構體和鏈式存儲的隊列屬于動態存儲。當停車場的規模較小時,空間復雜度較小,隨著規模的增加,動態存儲的擴充,空間復雜度也隨之增加。五、使用說明及測試結果(給出程序的使用說明、注意事項及不同情況的測試結果)時間以24進制計算,停車時間不能跨越24進制。車牌號是10個字符串以內,不可溢出。"G:新建文件夾沖停2mbugZexe”ttttttttttttttiiatttttttttttttt3.車輛列表顯示,ttttttttttttttntttttttttttttt04.
18、退出系統.tttttttttttttttttttltttttttttttt請選擇:2請輸入車在車場的位置"一3,:T車輛離開的時間式二加離開車輛的車牌號為:蘇DS3沒有落日般的瑰麗,沒有流云般的飄逸,但可以有水晶般的清純與透明。沒有大山般的巍峨,沒有湖水般的輕柔,但可以有巖石般的堅毅與穩重。沒有大海般的浩瀚,沒有瀑布般的飛瀉,但可以有泥土般的樸素與隨和。開車輛的車牌號為:蘇D543置一位01 -1 1機1:元元.進進間為吼號號小!_ : -"2323道時為為HIW1便道用父道蛤第一個應繳費用是在便道中的費用,第二個費用是總費用。六、源程序(要求程序簡潔、清晰、主要語句帶注釋
19、)代碼非本人寫,對其進行改進而已#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX3/停車場最大容量為3輛,便于觀察#defineprice0.05#definepricee0.02typedefstructtime/定義時間結構體inthour;intmin;Time;typedefstructnode/定義車輛信息結構體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§派§派§派§§派§歡迎使用停車場系統.§X§X§X§X § X § tnn");printf("n'
22、;t# 1.printf("n't# 2.printf("nt# 3.printf("nt# 4.while(1)printf("請選擇:");車輛到達登記.#t'n"); 車輛離開登記.#tn"); 車輛歹”表顯示.#tn"); 退出系統.#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;/自定義函數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)/車輛收費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",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應交費用為:%2.1f元”,(B1-A1)*60+(B2-A2)*pricee);return(B1
26、-A1)*60+(B2-A2)*pricee);free(p);voidPRINT(CarNode*p,introom)/車輛收費intA1,A2,B1,B2;printf("n車輛離開的時間:");scanf("%d:%d",&(p->leave.hour),&(p->leave.min);printf("n離開車輛的車牌號為:");puts(p->num);printf("n其到達停車位時間為: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應交費用為:2.1f元”,(B1-A1)*60+(B2-A2)*price+PRINTE(p,room);free(p);/車輛的到達登記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車輛到達時間:");scanf("%d:%d",&(p->reach.hour),&(p->reach.min);Enter->stackEnter-&
29、gt;top=p;return(1);elseprintf("n該車須在便道等待!有車位時進入車場");t=(QueueNode*)malloc(sizeof(QueueNode);t->data=p;t->next=NULL;W->rear->next=t;W->rear=t;printf("請輸入進入便道的時間");scanf("%d:%d",&(p->reach.hour),&(p->reach.min);return(1);voidLeave(SeqStackCar*E
30、nter,SeqStackCar*Temp,LinkQueueCar*W)風從水上走過,留下粼粼波紋;駱駝從沙漠上走過,留下深深的腳印 ;哨鴿從天空飛過,留下串串歡韻;歲月從樹林穿過,留下圈圈年輪。啊,朋友,我們從時代的舞臺走過,將給社會留下些什么?花從春走過,留下縷縷花香;葉從夏走過,留下片片蔭涼;風從秋走過,留下陣陣金浪;雪從冬走過,留下種種希望。啊,朋友,我們從人生的四季走過,將給人生留下些什么/車輛的離開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)/把要刪除的車輛的前面的車開出來,進臨時棧。Temp->top+;Temp->stackTemp->top=Enter->stackEnter->top;Enter->stackEnter->top
32、=NULL;Enter->top-;p=Enter->stackEnter->top;/把要刪除的車輛節點賦給p。Enter->stackEnter->top=NULL;Enter->top-;while(Temp->top>=1)/再把臨時棧里德車輛進停車場Enter->top+;Enter->stackEnter->top=Temp->stackTemp->top;Temp->stackTemp->top=NULL;Temp->top-;PRINT(p,room);/調用計費函數計費。if(W-
33、>head!=W->rear)&&Enter->top<MAX)/如果便道上有車,則再開進停車場。q=W->head->next;t=q->data;Enter->top+;printf("n便道的$號車進入車場第d位置.",t->num,Enter->top);printf("n請輸入s號車進入車場的時間:",t->num);scanf("%d:%d",&(t->reach.hour),&(t->reach.min);沒有落
34、日般的瑰麗,沒有流云般的飄逸,但可以有水晶般的清純與透明。沒有大山般的巍峨,沒有湖水般的輕柔,但可以有巖石般的堅毅與穩重。沒有大海般的浩瀚,沒有瀑布般的飛瀉,但可以有泥土般的樸素與隨和。風從水上走過,留下粼粼波紋;駱駝從沙漠上走過,留下深深的腳印 ;哨鴿從天空飛過,留下串串歡韻;歲月從樹林穿過,留下圈圈年輪。啊,朋友,我們從時代的舞臺走過,將給社會留下些什么?花從春走過,留下縷縷花香;葉從夏走過,留下片片蔭涼;風從秋走過,留下陣陣金浪;雪從冬走過,留下種種希望。啊,朋友,我們從人生的四季走過,將給人生留下些什么/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位置到達時間車牌號n");for(i=1;i<=S->top;i+)printf("%d",i);pr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 疑難鈣化根管護理
- 倉儲物流水電裝修合同
- 蓮藕寫生線描課件
- 影院裝修抵租協議模板
- 水上救援服務合同樣本
- 葡萄幼兒美術課件
- 船舶建造與造船技術的發展
- 專業汽車租賃合同樣本
- 李明與張娟的離婚合同書
- 海洋運輸合同樣本
- 照明燈具技術規格書
- 基于arduino交通燈課程設計
- 2023年證券公司高級管理人員資質考試真題(附帶答案)
- 記敘文、議論文答題模板(簡化版)
- 英語KET詞匯中譯英列表
- 智慧工地平臺建設項目可行性研究報告
- GB/T 18457-2024制造醫療器械用不銹鋼針管要求和試驗方法
- 2024智聯招聘行測題庫
- 國家安全知識宣傳競答試題及答案
- 三級人工智能訓練師(高級)職業技能等級認定考試題庫-上(單選題部分)
- 部編版七年級歷史下冊第一單元 隋唐時期:繁榮與開放的時代 作業設計
評論
0/150
提交評論