版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
目錄TOC\o"1-5"\h\z\o"CurrentDocument"一、實訓(xùn)目的 -2-\o"CurrentDocument"二、實訓(xùn)內(nèi)容 -2-1.實驗題目:停車場管理 -2-2.具體內(nèi)容 -2-3.功能 -2-\o"CurrentDocument"三、算法分析 -2-1.主模塊圖 -2-\o"CurrentDocument"2.程序要點(diǎn)與說明 -3-\o"CurrentDocument"四、程序代碼設(shè)計 -3-\o"CurrentDocument"五、程序運(yùn)行結(jié)果 -7-六、本次實訓(xùn)的總結(jié)與心得 -11-一、實訓(xùn)目的了解順序棧的結(jié)構(gòu)特點(diǎn)及有關(guān)概念,掌握順序棧的建立、入棧及出棧的基本操作算法二、實訓(xùn)內(nèi)容1.實驗題目:停車場管理2.具體內(nèi)容設(shè)停車場是一個可停放M輛汽車的狹長通道,且只有一個大門可供汽車進(jìn)出。汽車在停車場內(nèi)按車輛到達(dá)時間的先后順序,依次由北向南排列t大門在最南端,最先到達(dá)的第一輛車停放在車場的最北端),若車場內(nèi)已停滿n輛汽車,則顯示停車場已滿;當(dāng)停車場內(nèi)某輛車要離開時,在它之后進(jìn)入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其他車輛再按原次序進(jìn)入車場,每輛停放在車場的車在它離開停車場時必須按它停留的時間長短交納費(fèi)用。3.功能(1)汽車在停車場內(nèi)按車輛到達(dá)時間的先后順序,依次停入停車場,輸入車輛的車牌號及駛?cè)霑r間;(2) 若車場內(nèi)已停滿M輛汽車,則顯示停車場已滿;(3) 若車牌號重復(fù),則重新輸入車牌號;(4) 車輛離開,輸入離開車輛的車牌號,在它之后進(jìn)入的車輛退出車場進(jìn)入臨時棧為它讓路,待該輛車開出后,其他車輛再按原次序進(jìn)入車場;(5)如果無此車牌號,說明庫中無此車輛,選擇其它指令;(6) 車輛離開,輸入車輛離開時間,并按它停留的時間長短交納費(fèi)用;(7) 顯示停車場內(nèi)所有車輛的信息。三、算法分析1.主模塊圖圖中方框表示函數(shù),方框中指出函數(shù),箭頭方向表示函數(shù)間的調(diào)用關(guān)系。
2.程序要點(diǎn)與說明(1)結(jié)構(gòu)體:本程序共有兩個結(jié)構(gòu)體。Carinfo存儲車輛信息,StackSq存儲停車場信息,二者定義如下。typedefstruct //車輛信息{intCarNo; //車牌號intinTime; //進(jìn)場時間}Carinfo;structStackSq{Carinfostack[M];inttop;};structStackSq{Carinfostack[M];inttop;};//存儲信息//指向棧頂位置的整型變量(2)函數(shù)設(shè)計:本程序共有六個函數(shù)及一個主函數(shù),具體定義和作用如下voidInitStack(structStackSq*S)初始化停車場voidPush(structStackSq*s,CarInfox)往存儲停車場的棧內(nèi)插入車輛信息x,被函數(shù)Reach引用CarInfoPop(struetStackSq*s)刪除棧頂元素,被函數(shù)Leave引用voidDisplay(structStackSq*s)顯示所有車輛信息voidReach(structStackSq*s)車輛到達(dá)voidLeave(structStackSq*s)車輛離開voidmain()(3)其它設(shè)計:定義M=3,規(guī)定停車場內(nèi)最多的停車數(shù);Price=2,規(guī)定每小時停車的價格為2元/小時。其具體應(yīng)用如下:if(s->top==M-1) //停車場已滿printf("停車場已滿,無法停車\n");printf(">>停車費(fèi)用:%4元(%d元/小時)",(car.InTime-t.InTime)*Price,Price);四、程序代碼設(shè)計#include<stdio.h>//停車場內(nèi)最多的停車數(shù)//每小時停車的價格(單位:元)#include<stdlib.h>//停車場內(nèi)最多的停車數(shù)//每小時停車的價格(單位:元)#defineM3#definePrice2typedefstruct{typedefstruct{//車輛信息intCarNo;intinTime;//intCarNo;intinTime;//車牌號//進(jìn)場時間}CarInfo;//停車場信息(順序棧類型)structStackSq{CarInfostack[M]; //存儲信息inttop; //指向棧頂位置的整型變量};//初始化停車場voidInitStack(structStackSq*S){S->top=-1;}〃往存儲停車場的棧內(nèi)插入車輛信息X,被函數(shù)Reach引用voidPush(structStackSq*s,CarInfox){if(s->top==M-1) //停車場已滿printf("停車場已滿,無法停車\n");else{s->top++;s->stack[s->top]=X;}}〃刪除棧頂元素,被函數(shù)Leave引用CarInfoPop(structStackSq*s){if(s->top<=-1){printf(” 停車場內(nèi)無任何車輛\n");}s->top--;returns->stack[s->top+1];}//顯示所有車輛信息voidDisplay(structStackSq*s){inti; 〃循環(huán)控制變量iprintf(“ 》》車牌號停車時間《《\n");for(i=0;i<=s->top;i++) //依次輸出車輛的信息{printf(" %4d%4d\n",s->stack[i].CarNo,s->stack[i].InTime);}}//車輛到達(dá)voidReach(structStackSq*s)CarInfocar;inti,flag=0;的標(biāo)記//car用于存儲駛?cè)胲囕v的信息〃i為循環(huán)控制變量,flag為控制循環(huán)printf("歡迎進(jìn)入!請輸入車牌號:");scanf("%d",&car.CarNo);do{for(i=0;i<=s->top;i++)//do-while循環(huán),保證車牌號無重復(fù){if(car.CarNo==s->stack[i].CarNo){printf(" >>車庫中已有此車輛,請重新輸入車牌號:");scanf("%d",&car.CarNo);flag=1; 〃如果有重復(fù),貝Jflag=1}elseflag=0; //如果無重復(fù),貝flag=0}}while(flag==l); 〃如果flag=1,輸入車牌號,直到車牌號無重復(fù)printf(”請輸入進(jìn)場時間:”);scanf("%d",&car.InTime);Push(s,car); 〃將車輛car的信息輸入到存儲停車場信息的棧中printf(“ >>停車場已有車輛數(shù):%d\n",s->top+1);}//車輛離開voidLeave(structStackSq*s){structStackSqs1; 〃臨時棧s1,存儲從停車場中導(dǎo)出的信息CarInfocar,t; //car,存儲要離開的車的編號和離開時間;t作為媒介,實現(xiàn)停車場棧和臨時棧的數(shù)據(jù)交換inti=0,j=0; 〃i,j同為循環(huán)控制變量intx=0; //存儲停車場內(nèi)元素個數(shù)InitStack(&s1); 〃初始化臨時棧s1printf("\n請輸入要離開的車牌號:");
scanf("%d",&car.CarNo);//scanf("%d",&car.CarNo);//輸入要離開的車牌號x=s->top;printf("%d\n",x);for(i=0;i<=s->top&&s->stack[i].CarNo!=car.CarNo;i++);//循環(huán),當(dāng)找到車輛時,停止循環(huán)f(i>s->top) 〃如果沒有此車輛,i大于棧頂指針指向的位置printf(“ >>未找到該編號的汽車\n");else{printf(" >>停車場中位置為%d\n",i+l);printf("請輸入離開時間printf("請輸入離開時間:");scanf("%d",&car.InTime);for(j=i+l;j<=x;j++){t=Pop(s);Push(&sl,t);}Display(s);Display(&sl);t=Pop(s);//輸入車輛離開時間//導(dǎo)出車輛信息〃將車輛信息導(dǎo)入臨時棧sl中//該汽車離開printf(" >>車牌號為%小的汽車停車時間:%d\n",car.CarNo,car.InTime-t.InTime);printf(" >>停車費(fèi)用:%4元(%d元/小日寸)",(car.InTime-t.InTime)*Price,Price);do 〃臨時棧s1中的車輛重新回到停車場中{t=Pop(&s1);Push(s,t);}while(s1.top!=-1);/**/}}voidmain(){structStackSqCar; //生成一個停車場intchoice;InitStack(&Car); //初始化停車場printf("\n 主菜單 \n");printf("\n (1)車輛到達(dá)\n");printf("\n (2)車輛離開\n");printf("\n (3)顯示停車場中所有車輛的信息\n");printf("\n (0)退出系統(tǒng)\n");do{printf("\n請輸入指令:");scanf("%d",&choice);if(choicev0&&choice>4)continue;switch(choice){case1:Reach(&Car);break;〃車輛到達(dá),調(diào)用Reach函數(shù)case2:Leave(&Car);break;〃車輛離開,調(diào)用Leave函數(shù)case3:Display(&Car);break;〃顯示車輛信息,調(diào)用Display函數(shù)case0:exit(0); 〃退出系統(tǒng)default:break; 〃如果指令不正確重新循環(huán)}}while(1);}五、程序運(yùn)行結(jié)果1?原始界面2.車輛1001于7:00駛?cè)?;車輛1002于8:00駛?cè)?.輸入錯誤車牌號碼1001,停車場中已有此車,無法駛?cè)?;重新輸入正確車牌號20013.車輛2012要停車,但停車場已滿C*"G:\Debug\停車場管理至統(tǒng)-exE使〉退出系統(tǒng)d入車牌號21001晴輸入進(jìn)場時間:7 .“停車場己有車荊數(shù)“牆輸入進(jìn):場時間.C*"G:\Debug\停車場管理至統(tǒng)-exE使〉退出系統(tǒng)d入車牌號21001晴輸入進(jìn)場時間:7 .“停車場己有車荊數(shù)“牆輸入進(jìn):場時間.8》>停車場已有車軻數(shù)疋霞殆臾欝輸入車牌號;晴輸入進(jìn)場葉間;810S1”左庫口已有此蘭輒請宣新輸入年牌號啦01”停車場己有車軻數(shù)汨2012》>停車場已有車軻數(shù)汨晴輸入指七IJad4.車輛1002于12點(diǎn)駛出停車場。輸出其停車位置,及停車費(fèi)用C**G:\Debug\f^^場管理系統(tǒng)-exe*C**G:\Debug\f^^場管理系統(tǒng)-exe*1002”停牛場己方牛輛數(shù)汐!"輸入車牌萬::矍庫口匚有此主輛,請宣新輸入干牌斗迪丄〉>停車場己百車軻數(shù)叮牌亡車9牌亡車9停A-fc香無:1=_再,令—鶴捋入進(jìn)已入進(jìn)入場H-2012沁停車場己有車軻數(shù)汁入指”停車場中位置対2為丄胸細(xì)汽圭停左時間:入指”停車場中位置対2為丄胸細(xì)汽圭停左時間:4,用:&元“元"卜時)5?顯示停車場所有車輛信息5?顯示停車場所有車輛信息6.退出程序■=*G:\Debug\停年場管理系統(tǒng)■e耳e""左庫口已有此左輒請皇新輸入罕牌號汐陰丄”停牛場己方牛輛數(shù)汨2012〉>停車場己百車軻數(shù)叮號牌亡車9停入£:1三開-V—聲指入進(jìn)已1A進(jìn)1A場請歡請停:12淪停車場中竹置為:12為1胴破“汽圭停主時間:4
'用:8元煜元/小吋〉》》車牌號1001》》車牌號1001200178anykeytocontinne六、本次實訓(xùn)的總結(jié)與心得短短一個禮拜的實訓(xùn)轉(zhuǎn)瞬即逝,由最初的不知甚解到現(xiàn)在的豁然開朗,我們對于數(shù)據(jù)結(jié)構(gòu)的認(rèn)識更深了一層。此次我寫的停車場管理系統(tǒng),這個系統(tǒng)涉及到數(shù)據(jù)結(jié)構(gòu)重要的概念,即棧和隊列。在實訓(xùn)之前,我自認(rèn)為對棧和隊列已經(jīng)很熟悉,寫起來應(yīng)該得心應(yīng)手,因此決定不從網(wǎng)上當(dāng)資料,而是靠自己完成這個系統(tǒng)。我從圖書館借了兩本書,其中都有涉及停車場管理系統(tǒng),但是內(nèi)容卻很不相同。正如老師所說,雖然停車場管理系統(tǒng)實現(xiàn)的功能一樣,但是每個人對于如何實現(xiàn)這個功能都有不同的理解,因此寫出來的程序也不盡相同。在程序設(shè)計之初我就遇到了問題,在結(jié)構(gòu)體的定義上,我選擇了一種定義方式,而在初始化和判空隊列時我是依照另一種定義方式寫,導(dǎo)致程序錯誤百出。究其原因就是對數(shù)據(jù)結(jié)構(gòu)的不了解,不知道兩種定義的區(qū)別。這使得我很糾結(jié),因為此時實訓(xùn)已經(jīng)過去兩天,而如果要重新定義,整個程序就得做大的變動,而且此時我思緒混亂,覺得數(shù)據(jù)庫的編寫難于登天。后來,我決定干脆完全重寫這個程序,按照自己的理解寫,按照教材上,我最理解的內(nèi)容寫。從函數(shù)的定義到對棧的基本操作到函數(shù)的編寫。
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智研咨詢發(fā)布-2024年中國可降解塑料行業(yè)產(chǎn)業(yè)鏈全景分析及發(fā)展趨勢預(yù)測報告
- 二零二五年度綠色能源項目委托投標(biāo)合作協(xié)議3篇
- 項目式學(xué)習(xí)在初中英語閱讀教學(xué)中的應(yīng)用研究
- 2025版物業(yè)管理企業(yè)清潔服務(wù)外包委托合同3篇
- 建筑市政工程質(zhì)量安全第三方巡查方案
- 高端餐飲銷售工作總結(jié)
- 二零二五年度個人信息保密與數(shù)據(jù)安全保障合同3篇
- 二零二五年度汽車制造廠行車維修保障協(xié)議2篇
- 物流行業(yè)運(yùn)輸安全管理總結(jié)
- 二零二五年度國際外教專業(yè)人才聘用合同范本3篇
- 辦文辦會辦事實務(wù)課件
- 大學(xué)宿舍人際關(guān)系
- 2023光明小升初(語文)試卷
- GB/T 14600-2009電子工業(yè)用氣體氧化亞氮
- GB/T 13234-2018用能單位節(jié)能量計算方法
- 申請使用物業(yè)專項維修資金征求業(yè)主意見表
- 高考物理二輪專題課件:“配速法”解決擺線問題
- 房屋買賣合同簡單范本 房屋買賣合同簡易范本
- 無抽搐電休克治療規(guī)范
- 環(huán)保有限公司營銷策劃方案
- 如何做一名合格的帶教老師PPT精選文檔
評論
0/150
提交評論