數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

課程設(shè)計(jì)匯報(bào)課程名稱數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)設(shè)計(jì)題目停車場(chǎng)管理專業(yè)、班級(jí)學(xué)號(hào)姓名指導(dǎo)教師設(shè)計(jì)時(shí)間年月日引言(一)設(shè)計(jì)目標(biāo)和意義對(duì)于《數(shù)據(jù)結(jié)構(gòu)》課程本身有深入了解與提升;提升程序開發(fā)能力,深入系統(tǒng)掌握系統(tǒng)研發(fā)全過程;培養(yǎng)提升綜合利用所學(xué)理論知識(shí)和方法獨(dú)立分析和處理實(shí)際問題能力;深入提升C語言應(yīng)用能力;

針對(duì)結(jié)構(gòu)化設(shè)計(jì)思想進(jìn)行全方面充分了解,初步具備依照應(yīng)用需求對(duì)系統(tǒng)功效選擇適當(dāng)數(shù)據(jù)結(jié)構(gòu)并進(jìn)行算法設(shè)計(jì)能力初步掌握軟件開發(fā)過程問題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能;訓(xùn)練用系統(tǒng)觀點(diǎn)和軟件開發(fā)通常規(guī)范進(jìn)行軟件開發(fā),培養(yǎng)軟件工作者所應(yīng)具備科學(xué)工作方法和作風(fēng);(二)設(shè)計(jì)內(nèi)容問題描述:設(shè)有一個(gè)能夠停放n輛汽車狹長(zhǎng)停車場(chǎng),它只有一個(gè)大門能夠供車輛進(jìn)出。車輛按抵達(dá)停車場(chǎng)時(shí)間早晚依次從停車場(chǎng)最里面向大門口處停放(最先抵達(dá)第一輛車放在停車場(chǎng)最里面)。假如停車場(chǎng)已放滿n輛車,則日后車輛只能在停車場(chǎng)大門外便道上等候,一旦停車場(chǎng)內(nèi)有車開走,則排方便道上第一輛車就進(jìn)入停車場(chǎng)。停車場(chǎng)內(nèi)如有某輛車要開走,在它之后進(jìn)入停車場(chǎng)車都必須先退出停車場(chǎng)為它讓路,待其開出停車場(chǎng)后,這些輛再依原來次序進(jìn)場(chǎng)。每輛車在離開停車場(chǎng)時(shí),都應(yīng)依照它在停車場(chǎng)內(nèi)停留時(shí)間長(zhǎng)短交費(fèi)。假如停留在便道上車未進(jìn)停車場(chǎng)時(shí),允許其離去,不收停車費(fèi),而且依然保持在便道上等候車輛次序。編制一程序模擬該停車場(chǎng)管理。實(shí)現(xiàn)提醒:汽車模擬輸入信息格式能夠是:(抵達(dá)/離去,汽車牌照號(hào)碼,抵達(dá)/離去時(shí)刻)。比如,(‘A’,1,5)表示1號(hào)牌照車在5這個(gè)時(shí)刻抵達(dá),而(‘D’,5,20)表示5號(hào)牌照車在20這個(gè)時(shí)刻離去。整個(gè)程序能夠在輸入信息為(‘E’,0,0)時(shí)結(jié)束。本題可用棧和隊(duì)列來實(shí)現(xiàn)?;疽螅阂蟪绦蜉敵雒枯v車抵達(dá)后停車位置(停車場(chǎng)或便道上),以及某輛車離開停車場(chǎng)應(yīng)交納費(fèi)用和它在停車場(chǎng)內(nèi)停留時(shí)間。(三)主要任務(wù)全方面了解程序設(shè)計(jì)全過程,掌握基本算法設(shè)計(jì)思想;掌握完整程序研究開發(fā)全過程;程序設(shè)計(jì)主題思想明確,原創(chuàng)作品。正文(一)設(shè)計(jì)思想此停車場(chǎng)管理系統(tǒng)是在一個(gè)狹長(zhǎng)通道上,而且只有一個(gè)大門能夠供車輛進(jìn)出,而且要實(shí)現(xiàn)停車場(chǎng)內(nèi)某輛車要離開時(shí),在它之后進(jìn)入停車場(chǎng)車都必須先退出停車場(chǎng)為它讓路,待其開出停車場(chǎng)后,這些車輛再依原來次序進(jìn)場(chǎng)功效,就能夠設(shè)計(jì)兩個(gè)堆棧,其中一個(gè)堆棧用來模擬停車場(chǎng),另一個(gè)堆棧用來模擬暫時(shí)停車場(chǎng),該暫時(shí)停車場(chǎng)用來存放當(dāng)有車輛離開時(shí),原來停車場(chǎng)內(nèi)為其讓路車輛。至于當(dāng)停車場(chǎng)已滿時(shí),需要停放車輛通道能夠用一個(gè)鏈隊(duì)列來實(shí)現(xiàn)。當(dāng)停車場(chǎng)內(nèi)開走一輛車時(shí),通道上便有一輛車進(jìn)入停車場(chǎng),此時(shí)只需要改變通道上車輛結(jié)點(diǎn)連接方式就能夠了,使通道上第一輛車進(jìn)入停車場(chǎng)這個(gè)堆棧,而且使通道上原來第二輛車成為通道上第一輛車,此時(shí)只需將模擬通道鏈隊(duì)列頭結(jié)點(diǎn)連到原來第二輛車上就能夠了。(二)實(shí)現(xiàn)方法對(duì)于此停車場(chǎng)管理系統(tǒng)實(shí)現(xiàn),就是用兩個(gè)堆棧來分別模擬停車場(chǎng)以及停車場(chǎng)內(nèi)車輛為其它車輛讓路時(shí)退出停車暫時(shí)停放地點(diǎn)。至于通道上車輛停放則用一個(gè)鏈隊(duì)列來實(shí)現(xiàn),此時(shí),通道上車輛離開或者進(jìn)入停車場(chǎng)只需改變此鏈隊(duì)列上結(jié)點(diǎn)而已。對(duì)于要對(duì)停車場(chǎng)內(nèi)車輛依照其停放時(shí)間收取對(duì)應(yīng)停車費(fèi)用,能夠統(tǒng)計(jì)下車輛進(jìn)入以及離開停車場(chǎng)時(shí)間,再用時(shí)間差乘以對(duì)應(yīng)單價(jià)而且打印出最終費(fèi)用就能夠?qū)崿F(xiàn)了。(三)主要模塊首先定義用來模擬停車場(chǎng)堆棧以及用來模擬通道鏈隊(duì)列為全局變量,然后編寫主函數(shù),在此主函數(shù)中實(shí)現(xiàn)對(duì)其它各個(gè)模塊調(diào)用。在主函數(shù)中首先調(diào)用option()函數(shù),出現(xiàn)歡迎用戶使用主界面,然后提醒用戶進(jìn)入此停車場(chǎng)管理系統(tǒng)后,再出現(xiàn)一個(gè)供用戶選擇界面,在用戶選擇過程中,程序又分別調(diào)用車輛抵達(dá)、車輛離開、停車場(chǎng)內(nèi)停放車輛信息以及退出程序這四個(gè)函數(shù)模塊。其中,在車輛離開那個(gè)模塊函數(shù)中又調(diào)用了打印離開車輛信息函數(shù),在停車場(chǎng)內(nèi)停放車輛信息那個(gè)模塊函數(shù)中,又分別調(diào)用了顯示停車場(chǎng)上車輛信息函數(shù)以及顯示便道上車輛信息函數(shù)。最終,從調(diào)用這四個(gè)函數(shù)中回到主函數(shù)結(jié)束整個(gè)程序運(yùn)行。附(各模塊函數(shù)名):voidInitStack(SeqStackCar*s);intInitQueue(LinkQueueCar*Q);option();intArrival(SeqStackCar*Enter,LinkQueueCar*W);voidLeave(SeqStackCar*Enter,SeqStackCar*Temp,LinkQueueCar*W);voidPRINT(CarNode*p);voidList(SeqStackCarS,LinkQueueCarW);voidList1(SeqStackCar*S);voidList2(LinkQueueCar*W);(四)模塊關(guān)系圖(五)調(diào)試分析調(diào)試過程中主要問題因?yàn)榇送\噲?chǎng)管理系統(tǒng)是分模塊設(shè)計(jì),而且在程序?qū)崿F(xiàn)過程中又使用了清屏函數(shù),所以,運(yùn)行時(shí)用戶選擇任務(wù)而且執(zhí)行完任務(wù)后,又會(huì)回到供用戶選擇功效主界面,所以整個(gè)程序從整體上來講結(jié)構(gòu)清楚,使用方便。本程序調(diào)試運(yùn)行,總體上情況良好,但也存在一些小問題。測(cè)試運(yùn)行結(jié)果歡迎界面主菜單車輛抵達(dá)車輛離開停車場(chǎng)車輛信息便到車輛信息(六)用戶手冊(cè)這個(gè)程序用來實(shí)現(xiàn)對(duì)停車場(chǎng)內(nèi)車輛管理,整個(gè)操作界面為漢字,愈加符合人性化標(biāo)準(zhǔn),使得用戶使用方便,而且每一個(gè)操作都有提醒,使得首次接觸該程序用戶也能很快上手操作。這個(gè)程序操作簡(jiǎn)單,對(duì)于車牌號(hào),只需輸入車牌號(hào)上數(shù)字就行,而且對(duì)于進(jìn)出停車場(chǎng)時(shí)間,也簡(jiǎn)化了操作,只需輸入當(dāng)初時(shí)刻就行,沒有詳細(xì)到小時(shí)和分鐘,但可能這也是該程序不足之處所在。而且該程序也給用戶提供了選擇機(jī)會(huì),當(dāng)點(diǎn)擊運(yùn)行該程序后,假如想退出程序,能夠輸入n或N退出該運(yùn)行程序。至于使用過程中更詳細(xì)問題,能夠參考該匯報(bào)書中調(diào)試分析那一項(xiàng)屏幕截圖,整個(gè)程序運(yùn)行界面大致就如上述屏幕截圖內(nèi)容。(七)程序源代碼#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX2//停車位數(shù)量#defineprice2//停車費(fèi)用(單價(jià))typedefstructnode{ charnum; intreachtime; intleavetime;}CarNode;//車輛信息typedefstructNODE{ CarNode*stack[MAX+1]; inttop;}SeqStackCar;//停車位typedefstructcar{ CarNode*data; structcar*next;}QueueNode;typedefstructNode{ QueueNode*head; QueueNode*rear;}LinkQueueCar;//便道voidInitStack(SeqStackCar*);//初始化停車位intInitQueue(LinkQueueCar*);//初始化便道voidoption();//歡迎頁面intArrival(SeqStackCar*,LinkQueueCar*);//車輛抵達(dá)voidLeave(SeqStackCar*,SeqStackCar*,LinkQueueCar*);//車輛離開voidList(SeqStackCar,LinkQueueCar);//顯示車輛信息voidPRINT(CarNode*p);//打印出棧車輛信息voidmain()//主函數(shù){ SeqStackCarEnter,Temp; LinkQueueCarWait; intch; system("color3F"); option();//顯示歡迎頁 InitStack(&Enter);//初始化停車場(chǎng) InitStack(&Temp);//初始化暫時(shí)棧 InitQueue(&Wait);//初始化通道 while(1) { printf("\n\n⒈車輛抵達(dá)\n"); printf("\n⒉車輛離開\n"); printf("\n⒊車輛信息\n"); printf("\n⒋退出程序\n"); printf("\n請(qǐng)選擇:"); while(1)//判斷輸入 { scanf("%d",&ch); printf("\n"); if(ch>=1&&ch<=4) break; else printf("\n※錯(cuò)誤!請(qǐng)重新選擇!※\n"); } switch(ch) { case1:Arrival(&Enter,&Wait);break;//車輛抵達(dá) case2:Leave(&Enter,&Temp,&Wait);break;//車輛離開 case3:List(Enter,Wait);break;//打印信息 case4:exit(0);//退出主程序 default:break; } printf("****************************************************"); }}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); } else return(-1);}voidoption()//歡迎頁{ inti; charchoice; printf("\n\n\n\n\n════════════停車場(chǎng)管理════════════\n\n\n"); printf("\n\n\n回車進(jìn)入系統(tǒng),N退出\n"); choice=getchar(); system("cls"); if(choice=='N'||choice=='n') exit(0);}voidPRINT(CarNode*p)//打印出棧車輛信息{ inta,b; printf("\n請(qǐng)輸入離開時(shí)間:"); scanf("%d",&(p->leavetime)); printf("****************************************************"); printf("\n車牌號(hào):%d",p->num); printf("\n車輛抵達(dá)時(shí)間:%d",p->reachtime); printf("\n車輛離開時(shí)間:%d",p->leavetime); a=p->reachtime; b=p->leavetime; printf("\n停車時(shí)間:%d",b-a); printf("\n停車費(fèi)用(單價(jià)):¥2元"); printf("\n總停車費(fèi)用:¥%d元",(b-a)*price); printf("\n"); printf("****************************************************"); free(p);}intArrival(SeqStackCar*Enter,LinkQueueCar*W)//車輛抵達(dá){ CarNode*p; QueueNode*t; p=(CarNode*)malloc(sizeof(CarNode)); flushall(); printf("\n請(qǐng)輸入抵達(dá)車輛車牌號(hào):"); scanf("%d",&(p->num)); if(Enter->top<MAX)//停車場(chǎng)未滿,進(jìn)入停車場(chǎng) { Enter->top++; printf("\n請(qǐng)輸入該車輛抵達(dá)時(shí)間:"); scanf("%d",&(p->reachtime)); printf("\n**************************************************"); printf("\n車牌號(hào)%d車停放在%d車位\n",p->num,Enter->top); Enter->stack[Enter->top]=p; return(1); } else//停車場(chǎng)已滿,車輛進(jìn)入便道 { printf("\n※停車場(chǎng)已滿,該車輛需在便道上等候!※\n"); getch(); 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)//車輛離開{ inti,room; CarNode*p,*t; QueueNode*q; //判斷車場(chǎng)內(nèi)是否有車 if(Enter->top>0)//有車 { while(1)//輸入離開車輛信息 { printf("\n停車場(chǎng)里停放車輛總數(shù):%d\n",Enter->top); printf("\n請(qǐng)輸入要離開車輛車位號(hào):"); scanf("%d",&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); //判斷通道上是否有車及車站是否已滿 if((W->head!=W->rear)&&Enter->top<MAX)//便道車輛進(jìn)入車場(chǎng) { q=W->head->next; t=q->data; Enter->top++; printf("\n車牌號(hào)%d車進(jìn)入%d車位\n",t->num,Enter->top); printf("\n請(qǐng)輸入現(xiàn)在時(shí)間:"); scanf("%d",&(t->reachtime)); W->head->next=q->next; if(q==W->rear) W->rear=W->head; Enter->stack[Enter->top]=t; free(q); } else printf("\n※便道里沒有車※\n"); } else printf("\n※車場(chǎng)里沒有車※\n");}voidList1(SeqStackCar*S)//顯示停車場(chǎng)信息{ inti; if(S->top>0)//判斷停車場(chǎng)內(nèi)是否有車 { printf("****************************************************"); printf("\n停車場(chǎng)信息\n"); for(i=1;i<=S->top;i++) { printf("\n車位號(hào):%d",i); printf("\n車牌號(hào):%d",S->stack[i]->num); printf("\n車輛抵達(dá)時(shí)間:%d",S->stack[i]->reachtime); printf("\n════════════════════"); } } else printf("\n※停車場(chǎng)內(nèi)沒有存放車輛※\n");}voidList2(LinkQueueCar*W)//列表顯示便道信息{ QueueNode*p; p=W->head->next; if(W->head!=W->rear)//判斷通道上是否有車 { printf("****************************************************"); while(p!=NULL) { printf("\n等候車輛車牌號(hào)為:"); printf("%d",p->data->num); printf("\n════════════════════"); p=p->next; } } else printf("\n※便道里沒有車※\n");}voidList(SeqStackCarS,LinkQueueCarW){ intflag,tag; flag=1; while(flag) { printf("\n**************************************************"); printf("\n⒈停車場(chǎng)\n"); printf("\n⒉便道\n"); printf("\n請(qǐng)選擇:"); printf("\n⒊返回\n"); while(1) { scanf("%d",&tag); printf("\n"); if(tag>=1&&tag<=3) break; else pri

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論