停車場管理系統(tǒng)課程設(shè)計報告最終版_第1頁
停車場管理系統(tǒng)課程設(shè)計報告最終版_第2頁
停車場管理系統(tǒng)課程設(shè)計報告最終版_第3頁
停車場管理系統(tǒng)課程設(shè)計報告最終版_第4頁
停車場管理系統(tǒng)課程設(shè)計報告最終版_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1實習目的12問題描述13.1 設(shè)計基本要求13.2 停車場管理系統(tǒng)的主要功能24概要設(shè)計24.1 設(shè)計思想24.2 函數(shù)及功能要求35詳細設(shè)計45.1 數(shù)據(jù)結(jié)構(gòu)的設(shè)計45.2 算法的設(shè)計思想及流程圖55.2.1 主要函數(shù)的功能說明55.2.2 停車場管理系統(tǒng)流程圖65.2.3 主要模塊算法描述76測試分析86.1 測試用例86.1.1 第一組測試用例86.1.2 第二組測試用例96.1.3 第三組測試用例116.2 測試結(jié)果分析117使用說明128總結(jié)13參考文獻15附錄16停車場管理系統(tǒng)1實習目的通過本次課程設(shè)計,了解并初步掌握設(shè)計、實現(xiàn)系統(tǒng)的完整過程,包括系統(tǒng)分析、編碼設(shè)計、以及調(diào)試分析

2、,熟練掌握數(shù)據(jù)結(jié)構(gòu)的選擇、設(shè)計、實現(xiàn)以及操作方法,為進一步的應用開發(fā)打好基礎(chǔ)。2問題描述停車場是一條可以停放n輛車的狹窄通道,且只有一個大門。汽車停放安到達時間的先后依次由北向南排列(大門在最南端,最先到達的第一輛車停在最北端)若停車場已經(jīng)停滿n輛車,后來的汽車在便道上等候,一旦有車開走,排在便道上的第一輛車可以開入;當停車場的某輛車要離開時,停在他后面的車要先后退為他讓路,等它開出后其他車在按照原次序開入車場,每兩停在車場的車要安時間長短繳費。3需求分析停車場是一條可以停放n輛車的狹窄通道,且只有一個大門。汽車停放按到達時間的先后排列。若停車場已經(jīng)停滿n輛車,后來的汽車在便道上等候。一旦有車

3、開走,排在便道上的第一輛車可以開入;當停車場的某輛車要離開時,停在他后面的車要先后退為他讓路。等它開出后,其他車再按照原次序開入車場,每輛停在車場的車要按時間長短繳費。3.1 設(shè)計基本要求(1)以棧模擬停車場,以隊列模擬車場外的便道,按照從終端輸入的數(shù)據(jù)序列進行模擬管理。每一組數(shù)據(jù)包括三個數(shù)據(jù)項:汽車“到達”或“離去”信息、汽車牌照號碼、以及到達或離去的時刻。對每一組數(shù)據(jù)進行操作后的信息為:若是車輛到達,則輸出汽車在停車場的內(nèi)或便道上的位置:若是車輛離去則輸出汽車在停車場內(nèi)的停留時間和應繳納的費用(在便道上的停留時間不收費)。棧以順序結(jié)構(gòu)實現(xiàn),隊列以鏈表結(jié)構(gòu)實現(xiàn)(2)友好性:界面要友好,輸入有

4、提示,盡量展示人性化。(3)可讀性:源程序代碼清晰、有層次,必要時給出注釋。(4)健壯性:用戶輸入非法數(shù)據(jù)時,系統(tǒng)要及時給出警告信息。(5)測試數(shù)據(jù):要求使用全部合法數(shù)據(jù)、整體非法數(shù)據(jù)、局部非法數(shù)據(jù)進行程序測試,以保證程序的穩(wěn)定。測試數(shù)據(jù)及測試結(jié)果請在上交的資料中寫明。3.2 停車場管理系統(tǒng)的主要功能(1)根據(jù)車輛到達停車場到車輛離開停車場時所停留的時間進行計時收費。(2)該程序設(shè)計能夠通過車牌號查到該車輛在停車場或便道中的位置。(3)當有車輛從停車場離開時,等待的車輛按順序進入停車場停放。實現(xiàn)停車場的調(diào)度功能。該程序設(shè)計可以完整的模擬停車場的管理過程。4概要設(shè)計4.1 數(shù)據(jù)庫設(shè)計(1)棧的抽

5、象數(shù)據(jù)類型定義ASTStack數(shù)據(jù)對象:D=ai|aiEElemSet,i=1,2,.,n,n0數(shù)據(jù)關(guān)系:R1=|ai-1,aiCD,i=2,.,n約定an端為棧頂,a1端為棧底?;静僮鳎篒nitStack(&S)操作結(jié)果:構(gòu)造一個空棧SoDestroyStack(&S)初始條件:棧S已存在。操作結(jié)果:棧S被銷毀。ClearStack(&S)初始條件:棧S已存在。操作結(jié)果:將棧S清為空棧。tackEmpty(S)初始條件:棧S已存在。操作結(jié)果:若棧S為空棧,則返回TRUE否則FALSEStackLength(s)初始條件:棧S已存在。操作結(jié)果:返回S的元素個數(shù),既棧的長度。GetTop(S,

6、&e)初始條件:棧S已存在且非空。操作結(jié)果:用e返回S的棧頂元素。Push(&S,e)初始條件:棧S已存在。操作結(jié)果:插入元素e為新的棧頂元素。Pop(&S,&e)初始條件:棧S已存在且非空。操作結(jié)果:刪除S的棧頂元素,并用e返回其值。StackTraverse(S,visit()初始條件:棧S已存在且非空。操作結(jié)果:從棧底到棧頂依次對S的每個數(shù)據(jù)元素調(diào)用函數(shù)visit()。一旦visit()失敗,則操作失效。ADTStack(2)隊列的抽象數(shù)據(jù)類型定義ADTQueue數(shù)據(jù)對象:D=ai|aiElemSet,i=1,2,.,n,n0數(shù)據(jù)關(guān)系:R1=|ai-1,ai6D,i=2,.,n約定其中a

7、1端為隊列頭,an為隊列尾?;静僮鳎篒nitQueue(&Q)操作結(jié)果:構(gòu)造一個空隊列QDestroyQueue(&Q)初始條件:隊列Q已存在。操作結(jié)果:隊列Q被銷毀,不再存在。ClearQueue(&Q)初始條件:隊列Q已存在。操作結(jié)果:將Q清為空隊列。QueueEmpty(Q)初始條件:隊列Q已存在。操作結(jié)果:若Q為空隊列,則返回TRUE否則FALSEQueueLength(Q)初始條件:隊列Q已存在。操作結(jié)果:返回Q的元素個數(shù),即隊列的長度。GetHead(Q,&e)初始條件:Q為非空隊列。操作結(jié)果:用e返回的隊頭元素。EnQueue(&Q,e)初始條件:隊列Q已存在。操作結(jié)果:插入元

8、素e為Q的新的隊尾元素。DeQueue(&Q,&e)初始條件:Q為非空隊列。操作結(jié)果:刪除Q的隊頭元素,并用e返回其值。QueueTraverse(Q,visit()初始條件:Q已存在且非空。操作結(jié)果:從隊頭到隊尾,依次對Q的每個數(shù)據(jù)元素調(diào)用函數(shù)visit()。一旦visit()失敗,則操作失敗。ADTQueue4.2 函數(shù)及功能要求(1)此停車場管理系統(tǒng),主要分為以下若干模塊:首先定義用來模擬停車場的堆棧以及用來模擬通道的鏈隊列為全局變量,然后編寫主函數(shù),在此主函數(shù)中實現(xiàn)對其它各個模塊的調(diào)用。在主函數(shù)中首先調(diào)用option()函數(shù),出現(xiàn)歡迎用戶使用的主界面,然后提示用戶進入此停車場管理系統(tǒng)后

9、,再出現(xiàn)一個供用戶選擇的界面,在用戶的選擇過程中,程序又分別調(diào)用車輛的到達、車輛的離開、停車場內(nèi)停放車輛的信息以及退出程序這四個函數(shù)模塊。其中,在車輛的離開那個模塊函數(shù)中又調(diào)用了打印離開車輛信息的函數(shù),在停車場內(nèi)停放車輛信息的那個模塊函數(shù)中,又分別調(diào)用了顯示停車場上車輛信息的函數(shù)以及顯示便道上車輛信息的函數(shù)。最后,從調(diào)用的這四個函數(shù)中回到主函數(shù)結(jié)束整個程序的運行。(2)在以上各個模塊中,出現(xiàn)的調(diào)用的函數(shù)為:voidInitStack(SeqStackCar*s);intInitQueue(LinkQueueCar*Q);option();intArrival(SeqStackCar*Enter

10、,LinkQueueCar*W);voidLeave(SeqStackCar*Enter,SeqStackCar*Temp,LinkQueueCar*W);voidPRINT(CarNode*p);voidList(SeqStackCarS,LinkQueueCarW);voidList1(SeqStackCar*S);voidList2(LinkQueueCar*W);5詳細設(shè)計5.1 數(shù)據(jù)結(jié)構(gòu)的設(shè)計程序中使用了一個類,五個結(jié)構(gòu)體,兩個棧(模擬停車場,其中一個為臨時棧)個隊列(模擬便道)。(1)車輛信息的表示車輛可看成是一個節(jié)點,設(shè)計成一個結(jié)構(gòu)體,車輛信息包括:車牌號碼,車輛的進站時間和離開

11、停車場的時間,定義如下:typedefstructnodecharnum10;/車牌號碼Timereach;/到站時間Timeleave;/離開時間CarNode;(2)時間、棧和隊列的定義時間是由小時和分鐘表示的,有兩部分數(shù)據(jù),設(shè)計兩個變量分別存儲小時和分鐘,定義如下:typedefstructtimeinthour;intmin;Time;停車場內(nèi)用棧表示:typedefstructNODECarNode*stackMAX+1;/棧用順序表示inttop;SeqStackCar;SeqStackCarEnter,Temp;InitStack(&Temp)在車輛離開時,應用temp臨時棧把將

12、要離開的車輛后續(xù)車輛壓入,等車輛離開后壓回原棧stack。便道上的車輛表示:typedefstructcarCarNode*data;/便道上的車用鏈表表示structcar*next;QueueNode;typedefstructNodeQueueNode*head;/設(shè)置頭指針、尾指針QueueNode*rear;LinkQueueCar;5.2 算法的設(shè)計思想及流程圖5.2.1 主要函數(shù)的功能說明(1) voidInitStack(SeqStackCar*);/車輛節(jié)點進棧。即當棧未滿時,就把到達的車輛進棧。(2) intInitQueue(LinkQueueCar*);/車輛節(jié)點進隊列

13、。即當棧已滿時,車輛就進入便道上的隊列中(3) intArrival(SeqStackCar*,LinkQueueCar*);/車輛到達登記。即車輛到達時,先登記車輛車牌號碼。然后再判斷停車場有沒有停滿,沒停滿就進棧,停滿了就停在便道上,即進隊列。(4) voidLeave(SeqStackCar*,SeqStackCar*,LinkQueueCar*);/車輛離開處理。即通過輸入離開車輛的位置處理,然后調(diào)用PRINT(CarNode*p,introom);函數(shù)進行收費。然后再判斷便道上有沒有車,如果有,就把便道上的車進停車場內(nèi)。(5) voidList(SeqStackCar,LinkQue

14、ueCar);/顯示車場內(nèi)和便道上的車輛情況。利用switch();函數(shù)選擇顯示車場內(nèi)或是便道上的車輛情況,包括對下面兩個子函數(shù)的分別用來顯示調(diào)用:voidList1(SeqStackCar*S);voidList2(LinkQueueCar*W);/車場和便道上的車輛情況(6) voidPRINT(CarNode*p,introom);/車輛離開時的收費。即這個函數(shù)由車輛離開的函數(shù)調(diào)用,以分鐘計時算費,但只能計算當天之內(nèi)的費用,如果第二天的話會導致計費為負或減少。即只能當天停,當天開走。5.2.2 停車場管理系統(tǒng)流程圖經(jīng)過對車輛的進出分析以及對該系統(tǒng)的詳細設(shè)計,繪制停車場管理系統(tǒng)流程圖圖1停

15、車場管理系統(tǒng)流程圖5.2.3主要模塊算法描述本程序最主要的算法就是車輛到達登記的和車輛離開時的登記首先定義一(1)車輛到達:intArrival(SeqStackCar*Enter,LinkQueueCar*W)/個棧和隊列的結(jié)構(gòu)體指針為:*p,*t0然后申請一個車輛信息的內(nèi)存空間,并把它賦給棧指針。車輛到達時就輸入車牌號,并通過if(Enter-toptop0)確保棧不空,然后用個while(1)確保輸入的車輛離開位置的合法性。如果不合法,顯示輸入有誤,要重新輸入。通過while(Enter-toproom)判斷離開車輛的位置,如果是中間位置,就要再用一個臨時棧放置前面臨時開出來的車,等要開

16、出的車開出后,再把臨時棧內(nèi)的車開進停車場內(nèi),并調(diào)用PRINT(p,room);這個函數(shù)計算顯示費用。然后還要用if(W-head!=W-rear)&Enter-topMAX)語句判斷便道上有沒有車,如果有車就要顯示進停車場的車的車牌號,并登記進入時間。并要進行相應的出隊列和進棧操作。6測試分析6.1 測試用例說明:測試用例要合理并且足夠,既要有正確用例,也要有錯誤用例,同時檢驗程序的正確性和強壯性。6.1.1 第一組測試用例測試輸入:停車場的車輛離開,如表1所示:表1:車輛離開測試服務選擇車牌號/車位到達/離開時間1京A121212:121津S121212:131魯D121212:142114

17、:122125:65(錯誤)(2)測試目的:測試離開方法時間格式控制以及費用計算是否正確。(3)正確輸出:第一次離開的是京A1212,應交費2.4元。第二次時,當在輸入65時,應該提示輸入錯誤,重輸。(4)實際輸出:解蠹麟常薪篇黔鸚=歡迎使用停車場系統(tǒng)=,不要輸入非數(shù)字?2 請輸入車在車場的位置一“:1 請輸入車輛離開的時間=小時:舟中乳4二12 離開車輛的車牌號為:京期212 該生到達時間為:12:工2 該車離開時同為二4:12 應交費用為二24兀,圖2測試離開方式時間格式及費用計算圖=歡迎使用停車場系統(tǒng) 說明:適窿注意正確施入時間,不要輸入非數(shù)字 請選擇愚序需要的服務L4建 請輸入車在車場

18、的位置尸工一“:1:盛富邙管黑翼翻蹩輻輜群船0-23:iz圖3測試車輛離開錯誤圖(5)錯誤原因:第一個正確,第二個錯誤,原因是沒有對時間格式控制(6)當前狀態(tài):已改正6.1.2第二組測試用例(1)測試輸入:連續(xù)5輛車到達,如表2所示:表2:連續(xù)5輛車到達測試服務選擇車牌號/車位到達時間1京A121212:121津S121212:131魯D121212:141豫F121212:151滬G121212:162114:12(2)測試目的:測試到達方法與列表顯示方法能否正確完成。正確輸出:先到達的三輛車先進入停車場,最后到達的兩輛在便道等候。實際輸出:表4車輛到達方式測試=歡迎使用停車場系統(tǒng)說明:埴您

19、注意正使笳入時間,不要輸入非數(shù)字,請選擇盛房需萋的熊毒Tf”1請輸入車牌號(例:豫B1234h豫F1212您擔“侵生切至魚舄懣.請該車在便道上等停有空余車位時才菖納入停車場?小圖5車輛進入提示圖(5)錯誤原因:沒有錯誤。(6)當前狀態(tài):通過。6.1.3第三組測試用例(1)測試輸入:接上一步輸入離開信息,如表3所示:表3:接上一步離開信息測試服務選擇離開車便離開時間便道車進入時間2114:1214:13(2)測試目的:測試離開方法功能是否成功以及便道進入車場是否正確。(3)正確輸出:輸出1號車位的車輛離開信息清單,便道1號車進入停車場實際輸出:就迎何用停車場系統(tǒng)+*:由支占后妥車輛酬達寰記六六會

20、會*tr由占QO*2.車輛高開登記在女工i白白3.車輛列表顯示:cAAAAA退出系抗六上歡迎使用停車場系統(tǒng)說明.讀畬注蠢比毅人時間.不要輸入非數(shù)字, 請選擇遂篇需的強騫2 請輸入車在車場的位置“一3門I 請確人車輛離開的時間;(小時:分鐘“外工2 高開車輛的車牌號士1212-R-011,111;r2時時為1Fl.K詵開用的凈工到高費上人本X富該透應倬清1元號車置蒞3*-稻自輛的舌停車人停12賈:喜圖6測試離開方法功能是否成功圖(5)錯誤原因:沒有錯誤。(6)當前狀態(tài):通過6.2測試結(jié)果分析經(jīng)過我們小組一天的調(diào)試,我們終于把各模塊整合起來了。在這過程中,我們遇到了很多問題,像數(shù)據(jù)不匹配、括號不配

21、對、賦值重復等。因為C語言的語法限制不太嚴格,對變量的類型約束不嚴格,對數(shù)組下標越界不做檢查等原因,所以,我們的修改工作難度加大。但經(jīng)過我們這小組共同的努力。此停車管理系統(tǒng)可以基本實現(xiàn)一個小的停車場的管理,具“到達”與“離開”方法都相對比較完整,費用結(jié)算清單直觀。在輸入數(shù)據(jù)時,要按照嚴格的格式輸入,否則有可能出現(xiàn)死去或崩潰。若本系統(tǒng)能加上保存功能就更好了,因為一個系統(tǒng)在使用過程中總會關(guān)機等,而此系統(tǒng)的缺點卻是沒有保存功能,關(guān)閉之后數(shù)據(jù)丟失?,F(xiàn)受限于各種條件,又因為要求中并未提及,所以本程序暫時沒有加入保存功能。7使用說明(1)運行程序,首先出現(xiàn)主界面。主界面包括四個選項:選項1:車輛到達登記,

22、選擇該項可進行車輛到達彳車場情況登記;選項2:車輛離開登記,選擇該項可進行車輛離開停車場情況登記;選項3:車輛列表顯示,選擇該項可查看車輛列表顯示的所有信息,包括停車場列表和便道列表的全部信息;選項4:退出系統(tǒng),選擇該項將退出程序。歡迎使用停車場系統(tǒng)/說明車輛到達登記車輛離開疊記車輛列表顯示退出壬統(tǒng)歡迎使用停車場系統(tǒng)輸入時間,不要輸入非數(shù)字,圖7程序初始界面圖(2)車輛列表顯示界面包括3個選項:選項1:停車場列表,選擇該項可以查看停車場列表的所有車輛的全部信息;選項2:便道列表,選擇該項可以查看便道列表顯示的全部信息;選項3:返回主菜單,可返回主界面。圖8車輛列表顯示界面圖8總結(jié)總體來說,這次

23、的課程設(shè)計比去年的c語言的課程設(shè)計稍難。我這次的課程設(shè)計題目:停車場問題。相比其他課題來說,這個題目還是比較簡單的,主要是運用了數(shù)據(jù)結(jié)構(gòu)中棧和隊列的知識和操作。程序能夠?qū)崿F(xiàn)基本的車輛到達、離開、收費、遍歷顯示等主要功能。但我覺得這個程序還有很多小的地方是可以完善的,比如:在計算收費時如果離開時間是到了第二天,這樣就會導致收費是負的或減少很多。也就是說,該程序限制于只能規(guī)定當天停,當天開走。至于加算天數(shù)的功能我改了幾次改不好,又鑒于程序要求中也沒有提及并且時間緊張,所以也就沒再去研究實現(xiàn)。只要能實現(xiàn)主要的功能就好了。當然,這次的課程設(shè)計、編程實踐還是收獲頗豐的。通過實習我的收獲如下:(1)我知道

24、了怎樣去簡化程序,減少他的時間復雜度和空間復雜度。還知道了怎樣去完善程序,使其更具健壯性。(2)鞏固和加深了對數(shù)據(jù)結(jié)構(gòu)相關(guān)知識的理解,提高綜合運用本課程所學知識的能力。(3)培養(yǎng)了我選用參考書,查閱手冊及文獻資料的能力。培養(yǎng)獨立思考、深入研究、分析問題、解決問題的能力(4)通過實際編譯系統(tǒng)的分析設(shè)計、編程調(diào)試,掌握應用軟件的分析方法。(5)通過課程設(shè)計,培養(yǎng)了我嚴肅認真的工作作風,逐步建立正確的生產(chǎn)觀念、經(jīng)濟觀念和全局觀念。根據(jù)我在實習中遇到的問題,我將在以后的學習過程中注意以下幾點:(1)認真上好專業(yè)實驗課,多在實踐中鍛煉自己。更讓我懂得實踐是檢驗和掌握真理的最好辦法。(2)寫程序的過程中要

25、考慮周到、嚴密。需求分析需要反復思考修正。(3)在做課程設(shè)計的時候要有信心、有耐心,切勿浮躁。(4)認真學習課本知識,掌握課本中的知識點,并在此基礎(chǔ)上學會靈活運用。(5)在課余時間里多寫程序,熟練掌握在調(diào)試程序的過程中所遇到的常見錯誤,以便能節(jié)省調(diào)試程序的時間??傊?本次課程設(shè)計不僅加深了我們對棧和隊列等數(shù)據(jù)結(jié)構(gòu)的理解和掌握,同時一定程度上提高了我們程序設(shè)計和閱讀程序的能力。本次課程設(shè)計提高了我們的專業(yè)知識,使自己所學的內(nèi)容運用到實際中來,也增強了實際操作能力,為以后的工作學習提供了一個良好的鋪墊。參考文獻1嚴蔚敏,吳偉民.數(shù)據(jù)Z勾M.北京:清華大學出版社,2004.2李春葆.數(shù)據(jù)結(jié)解析M.北

26、京:清華大學出版社,2001.3譚浩強.C語言程序設(shè)計M.北京:清華大學出版社,2005.4朱戰(zhàn)立,張選平.數(shù)據(jù)結(jié)構(gòu)學習指導與典型題解M.西安:西安交通大學出版社,2002.5張玲,席德春,劉曉杰.C語言上機實踐指導教程M.北京:機械工業(yè)出版社,2004.6羅文劭,王苗,石強.數(shù)據(jù)結(jié)構(gòu)習題解答與實驗指導M.北京:中國鐵道出版社,2004.7殷人昆,陶永雷,謝若陽等.數(shù)據(jù)Z勾M.北京:清華大學出版社,2005.附錄系統(tǒng)說明:本系統(tǒng)適應于小型停車場,且停車時間在一天之內(nèi)的短期停放停車場。/在此系統(tǒng)中,車庫容量設(shè)置為3,便于測試。在實際使用中可以對容量大小按實際情況設(shè)置。#include#inclu

27、de#include#defineMAX3/停車場最大容量為3輛,便于觀察#defineprice0.02/定義時間結(jié)構(gòu)體typedefstructtimeinthour;intmin;Time;/定義車輛信息結(jié)構(gòu)體typedefstructnodecharnum10;Timereach;Timeleave;CarNode;typedefstructNODECarNode*stackMAX+1;inttop;SeqStackCar;/模擬停車場typedefstructcar(CarNode*data;structcar*next;QueueNode;typedefstructNode(Que

28、ueNode*head;QueueNode*rear;LinkQueueCar;/模擬便道/方法聲明voidInitStack(SeqStackCar*);/初始化棧intInitQueue(LinkQueueCar*);/初始化便道intArrival(SeqStackCar*,LinkQueueCar*);/車輛到達voidLeave(SeqStackCar*,SeqStackCar*,LinkQueueCar*);/車輛離開voidPRINT(CarNode*p,introom);/車輛收費voidList1(SeqStackCar*S);/顯示車場里的車輛情況voidList2(Lin

29、kQueueCar*W);/顯示便道上的車輛情況voidList(SeqStackCar,LinkQueueCar);/顯示信息/voidsavecar(CarNode*);/保存車輛信息/自定義函數(shù)/*voidsavecar(CarNode*p1)/保存車輛信息(FILE*fp1;if(fp1=fopen(car1.txt,w)=NULL)(printf(nt不能保存車輛信息n);return;while(pl)(fwrite(p1,sizeof(structnode),1,fp1);p1=p1-next;)*/棧的初始化voidInitStack(SeqStackCar*s)(inti;s

30、-top=0;for(i=0;istacks-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);elsereturn(-1);/車輛收費voidPRINT(CarNode*p,introom)(intA1,A2,B1,B2;printf(n請輸入車輛離開的時間:(小時:分鐘);scanf(%d:%d,&(p-leave.hour),&(p-leave.m

31、in);while(p-leave.hourleave.hour23)printf(您的輸入有誤!);printf(請重新輸入離開時間的時(0-23):);scanf(%d,&(p-leave.hour);if(p-leave.minleave.min59)printf(您的輸入有誤!);printf(請重新輸入離開時間的分(0-59):);scanf(%d,&(p-leave.min);printf(n離開車輛的車牌號為:);puts(p-num);printf(n該車到達時間為:%d:%d,p-reach.hour,p-reach.min);printf(n該車離開時間為:%d:%d,p-

32、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);free(p);/車輛的到達登記intArrival(SeqStackCar*Enter,LinkQueueCar*W)/charnum10;/inta;CarNode*p;QueueNode*t;p=(CarNode*)malloc(sizeof(CarNode);flushall();/清空緩存輸入的作用printf(n請輸

33、入車牌號(例:豫B1234):);gets(p-num);/*a=Enter-top;loop:scanf(%s”,&num);if(a=0)strcpy(p-num,num);a+;while(a)if(strcmp(num,Enter-stacka-num)=0)printf(您輸入的車牌號重復,請重新輸入!”);gotoloop;*/if(Enter-toptop+;printf(n車輛在車場第g置二Enter-top);printf(n車輛到達時間:);scanf(%d:%d,&(p-reach.hour),&(p-reach.min);while(p-reach.hourreach.

34、hour23)/控制時間格式正確printf(您的輸入有誤!);printf(請重新輸入到達時間的時(0-23):);scanf(%d,&(p-reach.hour);)while(p-reach.minreach.min59)/控制分鐘輸入正確printf(您的輸入有誤!);printf(請重新輸入到達時間的分(0-59):);scanf(%d”,&(p-reach.min);)Enter-stackEnter-top=p;printf(n恭喜您登記成功!);/savecar(?);printf(n);return(1);)else/車場已滿,車進便道printf(n您好,停車場車位已滿,請

35、該車在便道上等待!有空余車位時才能進入停車場!/n);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)introom;CarNode*p,*t;QueueNode*q;if(Enter-top0)/判斷停車場是否為空(while(1)/輸入離開車輛的信息(printf(n請輸入車在車場的位置/1-%d/:,Enter-top)

36、;scanf(%d”,&room);if(room=1&roomtop)break;elseprintf(n您的輸入有誤,請重新輸入:);while(Enter-toproom)/把要離開車輛前面的車開出來,進臨時棧。(Temp-top+;/臨時通道的棧頂指針Temp-stackTemp-top=Enter-stackEnter-top;Enter-stackEnter-top=NULL;Enter-top-;p=Enter-stackEnter-top;/把要刪除的車輛節(jié)點賦給p。Enter-stackEnter-top=NULL;Enter-top-;while(Temp-top=1)/判

37、斷臨時通道上是否有車。(Enter-top+;Enter-stackEnter-top=Temp-stackTemp-top;Temp-stackTemp-top=NULL;Temp-top-;)PRINT(p,room);/調(diào)用計費函數(shù)計費。if(W-head!=W-rear)&Enter-tophead-next;t=q-data;Enter-top+;printf(n便道上的s號車進入停車場內(nèi)第位置二t-num,Enter-top);printf(n請輸入s號車進入停車場的時間:,t-num);scanf(%d:%d,&(t-reach.hour),&(t-reach.min);while(t-reach.hourreach.hour23)/控制時間格式正確printf(您的輸入有誤!);printf(請重新輸入到達時間的時(0-23):);scanf(%d”,&(t-reach.hour);)while(t-reach.minreach.min59)/控制分鐘輸

溫馨提示

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

評論

0/150

提交評論