數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告軟件系統(tǒng)測試報告下載sgs報告如何下載關(guān)于路面塌陷情況報告535n,sgs報告怎么下載竣工報告下載學(xué)校:中南大學(xué)學(xué)院:信息科學(xué)與工程學(xué)院班級:計算機科學(xué)與技術(shù)1101班:杜茂鵬課題:停車場管理系統(tǒng)時間:2013年7月3日1.設(shè)計目的問題描述設(shè)計要求設(shè)計構(gòu)思算法說明復(fù)雜度說明測試結(jié)果1設(shè)計目的1)了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計方法,具備初步的獨立分析和設(shè)計能力;2)初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能;3)提高綜合運用所學(xué)的理論知識和方法獨立分析和解決問題的能力;4)進行全面綜合的訓(xùn)練,對課堂教學(xué)、實驗等環(huán)節(jié)的有益補充。5)提高解決實際問題和培養(yǎng)軟件工作所需的動手能力。6)深化理解和靈活掌握教學(xué)容7)進行軟件工程的綜合訓(xùn)練。訓(xùn)練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)進行軟件開發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng)。2問題描述設(shè)有一個可以停放n輛汽車的狹長停車場,它只有一個大門可以供車輛進出。車輛按到達停車場時間的早晚依次從停車場最里面向大門口處停放(最先到達的第一輛車放在停車場的最里面)。如果停車場已放滿n輛車,則后來的車輛只能在停車場大門外的便道上等待,一旦停車場有車開走,則排在便道上的第一輛車就進入停車場。
停車場如有某輛車要開走,在它之后進入停車場的車都必須先退出停車場為它讓路,待其開出停車場后,這些車輛再依原來的次序進場。每輛車在離開停車場時,都應(yīng)根據(jù)它在停車場停留的時間長短交費。如果停留在便道上的車未進停車場就要離去,允許其離去,不收停車費,并且仍然保持在便道上等待的車輛的次序。編制一程序模擬該停車場的管理。3設(shè)計要求要求程序輸出每輛車到達后的停車位置(停車場或便道上)停車場管理數(shù)據(jù)結(jié)構(gòu)算法,以與某輛車離開停車場時應(yīng)交納的費用和它在停車場停留的時間。4設(shè)計構(gòu)思根據(jù)題目要求,停車場只有一個大門,因此可用一個棧來模擬:當棧滿后,繼續(xù)來的車只能停在便道上,根據(jù)便道停車的特點,可知這可以用一個隊列來實現(xiàn),先排隊的車先離開便道進入停車場。由于排在停車場的車可以離開并要求后面的車輛都離開停車場,讓此車離去。再讓后面的車輛依原來的次序進入停車場,因此在一個棧和一個隊列的基礎(chǔ)上還需要有一個地方(車輛規(guī)避所)保存為了讓路離開的車輛,很顯然著也應(yīng)該用一個棧來模擬。因此,本題中用到倆個棧和一個隊列。對于停車場和車輛規(guī)避所停車場管理數(shù)據(jù)結(jié)構(gòu)算法,有車輛進入和車輛離開倆個過程,這就是是進棧出棧操作,只是還允許排在中間的車輛離開,因此在棧中需要查找。對于便道,也有如隊列和出隊列操作,同樣允許排在中間的車輛先離開隊列。
這樣基本動作只需利用棧和隊列的基本操作即可。整個操作過程是:當輸入數(shù)據(jù)表示有車輛到達時,則判斷棧是否滿,若未滿則新數(shù)據(jù)進棧,數(shù)據(jù)包括時間和車牌號;否則,將數(shù)據(jù)放在隊尾,表示車輛在道上等待。當輸入數(shù)據(jù)表示有車輛離開時,就在棧中尋找是不是有此車牌號的車輛,若有就讓其離開,并根據(jù)時間計費;若沒有,就在便道上找,否則反映出錯信息。當離開停車場的車輛位于棧的中間時,必須先將此位置到棧頂之間的所有數(shù)據(jù)轉(zhuǎn)到車輛規(guī)避所中,然后安排車輛出棧,最后將一個棧中的數(shù)據(jù)倒回倒停車場棧中。在模擬停車場管理時還要注意,如果停車長棧中沒有車輛停放時數(shù)據(jù)輸入仍然要求車輛退出,則顯示出錯信息,程序中停車場的停車數(shù)為N,便道不做要求。且每經(jīng)過一次操作都要顯示當前停車場的狀況。5算法說明算法說明功能模塊說明:停車場管理系統(tǒng)含有三個模塊,即:車輛到達、離開、列表顯示以模塊為單位分析算法1、“到達”模塊:到達時有兩種情況,即車場是否滿,未滿則直接進入停車場;滿時,到便道等待。車輛到達結(jié)束進入停車場■否進入便道2.提示沒有車車輛離開“離開”模塊:離開時,當車庫為空時,提示沒有車,結(jié)束;否則車輛離開。如圖3。3.“顯示"模塊:顯示模塊有兩個顯示選項,即:車場與便道。
6復(fù)雜度說明說明:對時間復(fù)雜度的分析,均指在最壞情況下的時間復(fù)雜度。在棧結(jié)構(gòu)中:初始化棧(即車庫),使車庫為空的,此時,時間復(fù)雜度=O(max)。停車最壞的情況是要車位已經(jīng)滿,此時,時時間復(fù)雜度=0(1)。關(guān)于車輛離開的時間復(fù)雜度=0(max)。車場信息的顯示的時間復(fù)雜度=0(1)。在隊列結(jié)構(gòu)中:出場車的信息的時間復(fù)雜度=0(1)。判斷通道上是否有車與車站是否已滿,此時,時間復(fù)雜度0=(max)。車輛停車費用的時間復(fù)雜度0=(1)。7測試結(jié)果1)車輛到達「耳柄到詁2.耳輛底開3.珂表屈示請輸入盡牌號口干筍任手場策』位萱.請軸人爭煲時怛、4-點出與細E.軍柄貧訖2.軍柄離開3.削表目r諳輸人車牌號!CI車輛軌於N?車輛裹開3.列表顯亍*輸入車牌號5蚤圭爭在俾畝等郴_4軍柄宣也2.軍商寐開3.列表顯云謂輸入王牌號:Ek.車麻^計2.至際展開3.列表顯示4?遺出系統(tǒng)2)車輛離開■^DMP\:sS.tFrc誑】句mp'vS麻電Laj-io'13)列表查看七私Jeets^L)F/IP"^t--卜ree\Ierrp'罪F名I.gxe*到達叫間豐粗弓?:MCS湖1>5:15510&9???E晴重隹t!2:3:|]-呈后Jit"清選擇nai3>[岸壇L伸話惹畫8總結(jié)反思通過本次課程設(shè)計,我對數(shù)據(jù)結(jié)構(gòu)的理解進一步加深,我理解和掌握了每一段程序代碼的功能與含義,并且能夠?qū)崿F(xiàn)模擬停車場管理的主要功能:利用棧實現(xiàn)車的入庫問題,利用隊列完成車在便道上停放的問題,主要是通過棧和隊列的初始化,調(diào)用等函數(shù)來模擬停車問題。
學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),我學(xué)會如何將所學(xué)的知識運用到實際中,解決一些實際的問題,這才是學(xué)習(xí)的根本。當然在實驗中我也遇到了不少實際性的問題,比如車輛停車的時間hour限制在24小時,min限制在60分鐘之,如果加入日期計算就更好了;在便道上等待的車輛,車主不可能無限制的等待,應(yīng)該編寫一個便道上車輛離開的函數(shù)更合理些。編寫的程度要與實際有聯(lián)系,這就不能只依賴于課本,還要聯(lián)系實際多多思考,重復(fù)調(diào)試,不斷改進,才能編出一個符合實際的有價值的系統(tǒng)。9源程序###/*----*/#/*車庫容量*/#.05/*每車每分鐘費用*/{;;}Time;/*時間結(jié)點*/{[10];;;};/*車輛信息結(jié)點*/(*stack[MAX+1];;};/*模擬車場*/(*data;*next;};(*head;*rear;};/*模擬通道*//*----*/(*);/*初始化棧*/(*);/*初始化便道*/(*,*);/*車輛到達*/(*,*,*);/*車輛離開*/(,);/*顯示存車信息*//*----*/()(,Temp;;intch;(&Enter);/*初始化車站*/(&Temp);/*初始化讓路的臨時棧*/(&Wait);
/*初始化通道*/while(1)(("\n1。車輛到達");("2。車輛離開");("3。列表顯示");("4。退出系統(tǒng)");while(1)(scanf("%d”,&ch);if(ch>=1&&。hour),&(p->leave。min));("\n離開車輛的車牌號為:");puts(p->num);("\n其到達時間為:%d:%d",p->reach。hour,p->reach。min);("離開時間為:%d:%d",p->leave。hour,p->leave。min);A1=p->reach。hour;A2=p->reach。min;B1=p->leave。hour;B2=p->leave。min;("\n應(yīng)交費用為:%2。1f元”,((B1-A1)*60+(B2-A2))*price);free(p);}(*Enter,*W)/*車輛到達*/*p;*t;p=(*)(());();("\n請輸入車牌號:");gets(p->num);if(Enter->++;("\n車輛在車場第%d位置。
”,Enter->top);("\n請輸入到達時間:/**:**/");scanf("%d:%d”,&(p->reach。hour),&(p->reach。min));Enter->stack[Enter->top]=p;(1);}else/*車場已滿,車進便道*/{("\n該車須在便道等待!”);t=(*)(());t->data=p;t->next=NULL;W->rear->next=t;W->rear=t;(1);}}(*Enter,*Temp,*W){/*車輛離開*/inti,room;*p,*t;*q;/*判斷車場是否有車*/if(Enter->top>0)/*有車*/(while(1)/*輸入離開車輛的信息*/(("\n請輸入車在車場的位置/1--%d/:",Enter->top);scanf("%d”,&room);if(room>=1&&)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->->next;t=q->data;Enter->top++;("\n便道的%s號車進入車場第%d位置。
”,t->num,Enter->top);("\n請輸入現(xiàn)在的時間/**:**/:");scanf("%d:%d”,&(t->reach。hour),&(t->reach。min));W->head->next=q->next;if(q==W->rear)W->rear=W->head;Enter->stack[Enter->top]=t;free(q);}("\n便道里沒有車。\n");}("\n車場里沒有車。");/*沒車*/}(*S)/*列表顯示車場信息*/(inti;if(S->top>0)/*判斷車站是否有車*/(("\n車場:");("\n位置到達時間車牌號\n");for(i=1;itop;i++)(("%d",i);("%d:%d”,S->stack[i]->reach。hour,S->stack[i]->reach。min);puts(S->stack[i]->num);}("\n}(*W)/*列表顯示便道信息*/(*p;p=W->head->next;if(W->head!=W->rear)/*判斷通道上是否有車*/(("\n等待車輛的為:");while(p!=NULL)(puts(p->data->num);p=p->next;}}("\n便道里沒有車。");}(,)(,tag;flag=1;while(flag)(("\n請選擇1|2|3:");("\n1。車場\n2。便道\n3。返回\n");while(1)(scanf("%d”,&tag);if(tag>=1||tag