停車場管理問題系統(tǒng)課程設(shè)計(jì)報(bào)告_第1頁
已閱讀1頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)</b></p><p><b>  目 錄</b></p><p>  第1章 概述- 1 -</p><p>  1.1 停車場管理問題系統(tǒng)簡介- 1 -</p><p>  1.2 本課程設(shè)計(jì)任務(wù)及目的- 1 -</p>&l

2、t;p>  1.3 本課程設(shè)計(jì)意義- 1 -</p><p>  第2章 需求分析- 2 -</p><p>  2.1 問題描述- 2 -</p><p>  2.2 基本要求- 2 -</p><p>  2.3 實(shí)現(xiàn)思路- 3 -</p><p>  2.4 拓展分析- 3 -</p>

3、;<p>  第3章 設(shè)計(jì)思路- 5 -</p><p>  3.1 設(shè)計(jì)思想- 5 -</p><p>  3.2 概要設(shè)計(jì)- 5 -</p><p>  3.2.1 棧的抽象數(shù)據(jù)類型- 5 -</p><p>  3.2.2 鏈?zhǔn)疥?duì)列的抽象數(shù)據(jù)類型- 7 -</p><p>  3.2.3

4、程序流程圖- 8 -</p><p>  3.2.4 程序框圖- 10 -</p><p>  第4章 模塊劃分- 10 -</p><p>  4.1 主要模塊- 10 -</p><p>  4.1.1 主程序模塊- 10 -</p><p>  4.1.2 棧模塊- 10 -</p>&

5、lt;p>  4.1.3 列模塊- 10 -</p><p>  4.2 模塊調(diào)用關(guān)系- 11 -</p><p>  第5章 調(diào)試分析- 13 -</p><p>  第6章 課題概述- 13 -</p><p>  6.1 校園導(dǎo)游咨詢系統(tǒng)課題來源- 13 -</p><p>  6.2 程序簡介

6、- 13 -</p><p>  第7章 程序分析- 13 -</p><p>  7.1 程序基本要求- 13 -</p><p>  7.2 系統(tǒng)實(shí)現(xiàn)簡要分析- 13 -</p><p>  7.3 程序內(nèi)容- 13 -</p><p>  第8章 程序詳細(xì)設(shè)計(jì)- 17 -</p><

7、;p>  8.1 程序模塊- 17 -</p><p>  8.1.1 主函數(shù)模塊- 17 -</p><p>  8.1.2 查找介紹函數(shù)模塊- 17 -</p><p>  8.1.3 查找最短路徑模塊- 18 -</p><p>  8.1.4 退出函數(shù)模塊- 18 -</p><p>  8.2

8、 程序流程圖- 19 -</p><p>  第9章 系統(tǒng)結(jié)果圖- 18 -</p><p>  第10章 咨詢系統(tǒng)使用說明- 20 -</p><p>  第11章 心得體會(huì)- 21 -</p><p>  11.1 遇到的問題- 21 -</p><p>  11.2 心得- 21 -</p>

9、;<p>  11.3 總結(jié)- 21 -</p><p>  參考文獻(xiàn)- 23 -</p><p><b>  第1章 概述</b></p><p>  1.1 停車場管理問題系統(tǒng)簡介</p><p>  停車場系統(tǒng)旨在建立一個(gè)方便停車、計(jì)費(fèi)的系統(tǒng)。程序能輸出每輛車到達(dá)后的停車位置(停車場或便道上),以

10、及某輛車離開停車場時(shí)應(yīng)繳納的費(fèi)用和他在停車場停留的時(shí)間。</p><p>  1.2 本課程設(shè)計(jì)任務(wù)及目的</p><p>  停車場是一個(gè)可停放 n 輛汽車的狹長通道,且只有一個(gè)大門可供汽車進(jìn)出。停車場 內(nèi)已停了 n 輛汽車,后來的汽車只能在門外的便道上等候,一旦有車開走,排在通道上的第一輛車即可開入;當(dāng)停車場內(nèi)每輛車要離開時(shí),在它之后進(jìn)入的車輛必須先退出停 車場為其讓路,待該輛車開出大

11、門,其他車輛再按原次序進(jìn)入停車場。為停車場編寫按上述要求進(jìn)行管理的模擬程序。</p><p>  1.3 本課程設(shè)計(jì)意義</p><p>  課程設(shè)計(jì)是實(shí)踐性教學(xué)中的一個(gè)重要環(huán)節(jié),它以某一課程為基礎(chǔ),可以涉及和課程相關(guān)的各個(gè)方面,是一門獨(dú)立于課程之外的特殊課程。課程設(shè)計(jì)是讓個(gè)人對所學(xué)的課 程更全面的學(xué)習(xí)和應(yīng)用,理解和掌握課程的相關(guān)知識(shí)?!稊?shù)據(jù)結(jié)構(gòu)》是一門重要的專業(yè)基礎(chǔ)課,是計(jì)算機(jī)理論和應(yīng)用

12、的核心基礎(chǔ)課程。數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),要求個(gè)人在數(shù)據(jù)結(jié)構(gòu)的邏輯特性和物理表示、數(shù)據(jù)結(jié)構(gòu)的選擇和應(yīng)用、算法的設(shè)計(jì)及其實(shí)現(xiàn)等方面,加深對課程基本內(nèi)容的理解。同時(shí),在程序設(shè)計(jì)方法以及上機(jī)操作等基本技能和科學(xué)作風(fēng)方面受到比較系統(tǒng)和嚴(yán)格的訓(xùn)練。 </p><p><b>  第2章 需求分析</b></p><p><b>  2.1 問題描述</b><

13、/p><p>  停車場是一條可以停放 n 輛車的狹窄通道,且只有一個(gè)大門汽車停放安到達(dá)時(shí)間的先后依次由北向南排列(大門在最南端,最先到達(dá)的第一輛車停在最北端)若停車場已經(jīng)停滿 n 輛車,后來的汽車在便道上等候,一旦有車開走,排在便道上的第一輛車可以開入;當(dāng)停車場的某輛車要離開時(shí),停在他后面的車要先后退為他讓路,等它開出后其他車在按照原次序開入車場,每兩停在車場的車要安時(shí)間長短繳費(fèi)。要求:以棧模擬停車場,以隊(duì)列車場外

14、的便道,按照從終端輸入的數(shù)據(jù)序列進(jìn)行模擬管理。每一組數(shù)據(jù)包括三個(gè)數(shù)據(jù)項(xiàng):汽車“到達(dá)”或“離去”信 息、汽車牌照號(hào)碼、以及到達(dá)或離去的時(shí)刻。對每一組數(shù)據(jù)進(jìn)行操作后的信息為:若是車輛到達(dá),則輸出汽車在停車場的內(nèi)或便道上的位置:若是車輛離去則輸出汽車在停車場內(nèi)的停留時(shí) 間和應(yīng)繳納的費(fèi)用(在便道上的停留時(shí)間不收費(fèi))。棧以順序結(jié)構(gòu)實(shí)現(xiàn),隊(duì)列以鏈表結(jié)構(gòu)實(shí)現(xiàn)。</p><p><b>  2.2 基本要求</b

15、></p><p>  以棧模擬停車場,以隊(duì)列模擬車場外的便道,按照從終端讀入的輸入數(shù)據(jù)序列進(jìn)行模擬管理。每一組輸入數(shù)據(jù)包括三個(gè)數(shù)據(jù)項(xiàng);汽車“到達(dá)”或“離去”信息、汽車牌照號(hào)碼及到達(dá)或離去 的時(shí)刻,對每一組輸入數(shù)據(jù)進(jìn)行操作后的輸出數(shù)據(jù)為:若是車輛到達(dá),則輸出汽車在停車場內(nèi) 或便道上的停車位置;若是車輛離去,則輸出汽車在停車場內(nèi)停留的時(shí)間和應(yīng)交納的費(fèi)用(在便道上停留的時(shí)間不收費(fèi)) 。棧以順序結(jié)構(gòu)實(shí)現(xiàn),隊(duì)列以鏈

16、表結(jié)構(gòu)實(shí)現(xiàn)。測試數(shù)據(jù): 設(shè) n=2, 輸入數(shù)據(jù)為: (‘A’,1,5),(‘A’,2,10),(‘D’,1,15)(‘A’,3,20),(‘A’,4,25),(‘A’,5,30),(‘D’,2,35),(‘D’,4,40),(‘E’,0,0)。其 中:'A'表示到達(dá)(arrival);'D'表示離去(departure);'E'表示輸出(end)。</p><p>

17、;<b>  2.3 實(shí)現(xiàn)思路</b></p><p>  需要另設(shè)一個(gè)棧,臨時(shí)停放為離去的汽車讓路而從停車場退出來的汽車,也用順序存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)。棧中每個(gè)元素表示一輛汽車,包含兩個(gè)數(shù)據(jù)項(xiàng):汽車的牌照號(hào)碼和進(jìn)入停車場的時(shí)刻。</p><p><b>  2.4 拓展分析</b></p><p>  (1)用戶到來時(shí),選擇停車

18、,并輸入車牌號(hào)和當(dāng)前時(shí)間,程序?qū)崿F(xiàn):計(jì)算并輸出停車位置 </p><p> ?。?)用戶離開時(shí),選擇離開,同樣輸入車牌號(hào)和當(dāng)前時(shí)間,程序?qū)崿F(xiàn):計(jì)算所要付的費(fèi)用,若便道上有車,將第一位置的車輛停在車位上</p><p> ?。?)在此過程中,不斷 </p><p>  保存記錄,通過重載運(yùn)算符實(shí)現(xiàn),為程序下次運(yùn)行提供必要的數(shù)據(jù) </p><p&

19、gt; ?。?)在程序開始運(yùn)行時(shí),首先讀取文件中的記錄,為程序運(yùn)行提供必要的歷史數(shù)據(jù)記錄。</p><p>  (5)程序中還提供退出操作:</p><p>  圖2—1 停車場俯瞰圖</p><p><b>  第3章 設(shè)計(jì)思路</b></p><p><b>  3.1 設(shè)計(jì)思想</b><

20、/p><p>  由于停車場是一個(gè)狹窄通道,而且只有一個(gè)大門可供汽車進(jìn)出,問題要求汽車停車場內(nèi)按車輛到達(dá)時(shí)間的先后順序,依次由北向南排列。由此很容易聯(lián)想到數(shù)據(jù)結(jié)構(gòu)中的堆棧模型,因此可首先設(shè)計(jì)一個(gè)堆棧,以堆棧來模擬停車場,我設(shè)計(jì)用順序存儲(chǔ)結(jié)構(gòu)來存儲(chǔ)停車場內(nèi)的車輛信息,并給車輛按進(jìn)棧順序編號(hào),當(dāng)停車場內(nèi)某輛車要離開時(shí),在他之后進(jìn)入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其他車輛再按原次序進(jìn)入停車場。這是個(gè)一退一

21、進(jìn)的過程,而且讓道的汽車必須保持原有的先后順序,因此可再設(shè)計(jì)一個(gè)堆棧,以之來暫時(shí)存放為出站汽車暫時(shí)讓道的汽車。當(dāng)停車場滿后,繼續(xù)進(jìn)來的汽車需要停放在停車場旁邊的便道上等候,若停車場有汽車開走,則按排隊(duì)的先后順序依次進(jìn)站,最先進(jìn)入便道的汽車將會(huì)最先進(jìn)入停車場,這完全是一個(gè)先進(jìn)先出模型,因此可設(shè)計(jì)一個(gè)隊(duì)列來模擬便道,隊(duì)列中的數(shù)據(jù)元素設(shè)計(jì)成汽車的車牌號(hào),并以鏈表的形式存儲(chǔ)。另外,停車場根據(jù)汽車在停車場內(nèi)停放的總時(shí)長來收費(fèi)的,在便道上的時(shí)間不計(jì)

22、費(fèi),因此必須記錄車輛進(jìn)入停車場時(shí)的時(shí)間和車輛離開停車場時(shí)的時(shí)間,然后計(jì)算、顯示費(fèi)用情況。 </p><p><b>  3.2 概要設(shè)計(jì)</b></p><p>  3.2.1 棧的抽象數(shù)據(jù)類型</p><p>  ADT stack{ </p><p>  數(shù)據(jù)對象:D={aiai∈charset,I=1,2,……,n

23、,n=0} </p><p>  數(shù)據(jù)關(guān)系:R1={ai-1,aiai-1,ai∈D,I=2……,n} </p><p><b>  基本操作: </b></p><p>  Initstack(&S) </p><p>  操作結(jié)果:構(gòu)造一個(gè)空棧 S。</p><p>  Destroy

24、Stack(&S) </p><p>  初始條件:棧 S 已經(jīng)存在。</p><p>  操作結(jié)果:操作結(jié)果:銷毀棧 S。 </p><p>  ClaerStack(&S) </p><p>  初始條件:棧 S 已經(jīng)存在。 </p><p>  操作結(jié)果:將 S 清空為空棧。 </p>

25、<p>  StackLength(&S) </p><p>  初始條件:棧 S 已經(jīng)存在。 </p><p>  操作結(jié)果:返回棧 S 的長度。 </p><p>  StackEmpty(&S) </p><p>  初始條件:棧 S 已經(jīng)存在。 </p><p>  操作結(jié)果:若

26、S 為空棧,則返 </p><p>  回 TURE,否則返回 FALSE。</p><p>  GetTop(S,&e) </p><p>  初始條件:棧 S 已經(jīng)存在。 </p><p>  操作結(jié)果:若棧 S 不空,則以 e 返回棧頂元素。 </p><p>  Push(&S,e) </

27、p><p>  初始條件:棧 S 已經(jīng)存在。 </p><p>  操作結(jié)果:在棧 S 的棧頂插入新的棧頂元素 e。 </p><p>  Pop(&S,&e) </p><p>  初始條件:棧 S 已經(jīng)存在。 </p><p>  操作結(jié)果:刪除 S 的棧頂元素,并以 e 返回其值。 </p>

28、;<p>  StackTraverse(S,visit()) </p><p>  初始條件:棧 S 已經(jīng)存在。 </p><p>  操作結(jié)果:從棧底到棧頂依次對 S 中的每個(gè)元素調(diào)用函數(shù) visit( )。 </p><p>  }ADT stack </p><p>  3.2.2 鏈?zhǔn)疥?duì)列的抽象數(shù)據(jù)類型</p&g

29、t;<p>  typedef struct Qnode{</p><p>  QelemType data;</p><p>  Struct Qnode next; </p><p>  }Qnode,QueuePtr; </p><p>  typedef struct{ </p><p>  Qu

30、euePtr front; 隊(duì)頭指針 </p><p>  QueuePtr rear; 隊(duì)尾指針 </p><p>  ADT Queue{ </p><p>  數(shù)據(jù)對象:D={aiai∈ElemSet,i=1,2,……,n,n=0} </p><p>  數(shù)據(jù)關(guān)系:R1={ai-1,aiai-1,ai∈D,i=2,……,n} <

31、;/p><p>  約定中端為隊(duì)列頭,后端為隊(duì)列尾。 </p><p><b>  基本操作: </b></p><p>  InitQueue(&Q) </p><p>  操作結(jié)果:構(gòu)造一個(gè)空隊(duì)列 Q。</p><p>  DestroyQueue(&Q) </p>

32、<p>  初始條件:隊(duì)列 Q 已經(jīng)存在。 </p><p>  操作結(jié)果:隊(duì)列 Q 被銷毀,不再存在。 </p><p>  ClearQueue(&Q) </p><p>  初始條件:隊(duì)列 Q 已經(jīng)存在。 </p><p>  操作結(jié)果:將 Q 清為空隊(duì)列。 </p><p>  QueueEm

33、pty(Q) </p><p>  初始條件:隊(duì)列 Q 已經(jīng)存在。 </p><p>  操作結(jié)果:若 Q 為空隊(duì)列,則返回 TRUE,否則 FALSE。 </p><p>  QueueLength(Q) </p><p>  初始條件:隊(duì)列 Q 已經(jīng)存在。 </p><p>  操作結(jié)果:返回 Q 的元素個(gè)數(shù),即隊(duì)

34、列的長度。 </p><p>  GetHead(Q,&e) </p><p>  初始條件:Q 為非空隊(duì)列。 </p><p>  操作結(jié)果:用 e 返回的 e 隊(duì)頭元素。 </p><p>  EnQueue(&Q,e) </p><p>  初始條件:隊(duì)列 Q 已經(jīng)存在。 </p>

35、<p>  操作結(jié)果:插入元素 e 為 Q 的新的隊(duì)尾元素。 </p><p>  DeQueue(&Q,&e) </p><p>  初始條件:Q 為非空隊(duì)列。 </p><p>  操作結(jié)果:刪除 Q 的隊(duì)頭元素,并用 e 返回其值。 </p><p>  QueueTraverse(Q,visit()) <

36、;/p><p>  初始條件:Q 已經(jīng)存在且非空。 </p><p>  操作結(jié)果:從隊(duì)頭到隊(duì)尾,依次對 Q 的每個(gè)數(shù)據(jù)元素調(diào)用函數(shù) visit()。一旦 visit()失敗, 則操作失敗。 </p><p>  }ADT Queue </p><p>  3.2.3 程序流程圖</p><p>  圖3—1 程序流程圖&

37、lt;/p><p>  3.2.4 程序框圖</p><p><b>  圖3—2 程序流程</b></p><p><b>  第4章 模塊劃分</b></p><p><b>  4.1 主要模塊</b></p><p>  4.1.1 主程序模塊 &l

38、t;/p><p><b>  main(){ </b></p><p><b>  初始化 </b></p><p>  while(重復(fù)條件){ </p><p><b>  接受命令; </b></p><p>  switch(調(diào)用條件) </p

39、><p><b>  { </b></p><p>  Case 調(diào)用條件’A’ 到達(dá)處理;break;</p><p>  Case 調(diào)用條件’D’ 離開處理;break; </p><p>  Case 調(diào)用條件’E’ 退出處理;</p><p><b>  } <

40、/b></p><p><b>  } </b></p><p><b>  } </b></p><p><b>  4.1.2 棧模塊</b></p><p>  2 個(gè)棧模塊---實(shí)現(xiàn)棧抽象數(shù)據(jù)類型</p><p>  4.1.3 列模塊 &

41、lt;/p><p>  隊(duì)列模塊---實(shí)現(xiàn)隊(duì)列抽象數(shù)據(jù)類型 </p><p>  4.2 模塊調(diào)用關(guān)系</p><p>  圖4—1 模塊調(diào)用關(guān)系</p><p>  棧模塊 1----模擬停車場 </p><p>  棧模塊 2----模擬倒車場 </p><p>  隊(duì)列模塊----模擬車道&l

42、t;/p><p><b>  第5章 調(diào)試分析</b></p><p>  圖5—1 主窗口界面</p><p><b>  圖5—2 停車界面</b></p><p><b>  圖5—3 出車界面</b></p><p>  圖5—4 退出程序界面<

43、;/p><p>  以上為系統(tǒng)運(yùn)行結(jié)果圖,主要包括:主窗口界面、停車界面、出車界面、退出程序界面。個(gè)界面顯示的均為正確的結(jié)果圖。</p><p><b>  第6章 課題概述</b></p><p>  6.1 校園導(dǎo)游咨詢系統(tǒng)課題來源</p><p>  校園導(dǎo)游咨詢系統(tǒng),為來訪的客人提供各種信息服務(wù)。同時(shí)現(xiàn)代快節(jié)奏的生活

44、使得都市人越來越渴望親近自然,因此外出旅游現(xiàn)在被越來越多的都市人所看中,所以如何快速方便的找到我們想要的旅游景點(diǎn)的信息和最短路徑就成了一個(gè)很重要的問題。所以,該系統(tǒng)旨在解決這一問題。</p><p><b>  6.2 程序簡介</b></p><p>  本設(shè)計(jì)基于圖的結(jié)構(gòu),創(chuàng)建一個(gè)無向圖,針對游客的實(shí)際需求,將學(xué)校景點(diǎn)編號(hào)、名稱、介紹等信息放入到圖的頂點(diǎn)當(dāng)中并保存

45、在景點(diǎn)文本文件當(dāng)中,將兩個(gè)景點(diǎn)的編號(hào)和它們之間的距離當(dāng)作權(quán)值也保存到權(quán)值文本文件當(dāng)中,利用迪克斯特拉算法來求從一個(gè)景點(diǎn)到另一個(gè)景點(diǎn)的最短距離,利用 strcmp();函數(shù)來查找景點(diǎn),并顯示出它的信息,從而解決了要查找景點(diǎn)信息和景點(diǎn)之間的最短路徑的問題,最后按照顯示屏上的提示進(jìn)行相關(guān)的操作。</p><p><b>  第7章 程序分析</b></p><p>  7.

46、1 程序基本要求</p><p>  (1)設(shè)計(jì)你的學(xué)校的校園平面圖,所含景點(diǎn)不少于10個(gè)。以圖中頂點(diǎn)內(nèi)表示學(xué)校各景點(diǎn),存放景點(diǎn)名稱、代號(hào)、簡介等信息;以邊表示路徑,存容放路徑長度等相關(guān)信息。</p><p>  (2)為來訪客人提供圖中任意景點(diǎn)相關(guān)信息的查詢。</p><p>  (3)為來訪客人提供圖中任意景點(diǎn)的問路查詢,即查詢?nèi)我鈨蓚€(gè)景點(diǎn)之間的一條最短的簡單路

47、徑。</p><p>  7.2 系統(tǒng)實(shí)現(xiàn)簡要分析</p><p>  實(shí)現(xiàn)提示:一般情況下,校園的道路是雙向通行的,可設(shè)校園平面圖是一個(gè)無向網(wǎng)。頂點(diǎn)和邊均含有相關(guān)信息。</p><p><b>  7.3 程序內(nèi)容</b></p><p>  依據(jù)課程設(shè)計(jì)的要求,利用一個(gè)無向圖的結(jié)構(gòu),將景點(diǎn)當(dāng)作圖的頂點(diǎn),將景點(diǎn)之間的

48、距離當(dāng)作權(quán)值來儲(chǔ)存,然后根據(jù)游客自己的需求,按照顯示屏上的提示來進(jìn)行查找景點(diǎn)介紹,查找兩個(gè)景點(diǎn)之間的最短距離,退出程序等基本操作。</p><p>  第8章 程序詳細(xì)設(shè)計(jì)</p><p><b>  8.1 程序模塊</b></p><p>  8.1.1 主函數(shù)模塊</p><p>  主函數(shù)是一個(gè)程序的主體,當(dāng)我們

49、要進(jìn)行我們所需要的操作的時(shí)候我們就要根據(jù)主函數(shù)中的顯示信息和它給我們的相關(guān)的提示信息來進(jìn)行所需要的操作,因此在這次的程序?qū)崿F(xiàn)的過程當(dāng)中,利用一個(gè) for();循環(huán)語句。設(shè)置主函數(shù)為了便于其在后面的操作過程當(dāng)中能夠快速方便的找到其需要查找的景點(diǎn)的名稱。而后就是一個(gè)switch();的選擇函數(shù),提供查找景點(diǎn)信息,查找兩個(gè)景點(diǎn)之間的最短距離和退出的相關(guān)的選擇操作而后進(jìn)入到每一個(gè)操作界面當(dāng)中,從而實(shí)現(xiàn)所需要的功能。循環(huán)語句:</p>

50、<p>  for(int k = 0; k < G.vexnum; k++)</p><p><b>  {</b></p><p>  if(k - 5 == 0) </p><p><b>  { </b></p><p>  cout<<endl; </

51、p><p>  cout<<""<<'\t'<<G.vexs[k].name; </p><p><b>  }</b></p><p><b>  else </b></p><p><b>  { </b>

52、</p><p>  cout<<""<<'\t'<<G.vexs[k].name;</p><p><b>  }</b></p><p><b>  }</b></p><p>  將景點(diǎn)的名稱打印在顯示屏上,最后是一個(gè)sw

53、itch();的選擇語句,提示游客根據(jù)選擇來進(jìn)入到相關(guān)的操作界面實(shí)現(xiàn)程序的基本功能。</p><p>  8.1.2 查找介紹函數(shù)模塊</p><p>  當(dāng)游客選擇了要查找景點(diǎn)的信息的介紹這一項(xiàng)功能的時(shí)候,程序就會(huì)調(diào)用DisIntroduction(G);函數(shù)進(jìn)入到查找景點(diǎn)的介紹的界面,當(dāng)游客輸入了需要查找的景點(diǎn)的名稱的時(shí)候,程序利用 for();循環(huán)語句來查找是否有這個(gè)景點(diǎn)</p

54、><p>  for(int i=0;i<G.vexnum;i++)</p><p><b>  { </b></p><p>  int m = strcmp(G.vexs[i].name,n1); </p><p><b>  if(m==0) </b></p><p&g

55、t;<b>  { </b></p><p><b>  v1=i; </b></p><p>  count1=count1+1;</p><p><b>  }</b></p><p><b>  }</b></p><p> 

56、 8.1.3 查找最短路徑模塊</p><p>  當(dāng)游客選擇了要查找兩個(gè)景點(diǎn)之間的最短距離這一項(xiàng)功能的時(shí)候,程序就會(huì)調(diào)DisPath(G);函數(shù)進(jìn)入到查找兩個(gè)景點(diǎn)之間的最短距離的操作界面當(dāng)中,當(dāng)游客輸入了兩個(gè)景點(diǎn)的名稱過后,程序會(huì)調(diào)用 strcmp();函數(shù)查看是否有這兩個(gè)景點(diǎn),如果有則返回他們各自的編號(hào),并調(diào)用ShortPath_DIJ(G,v1,v2);函數(shù)進(jìn)入到查找最短路徑問題的程序當(dāng)中。</p&g

57、t;<p> ?。?)假設(shè)用帶權(quán)的鄰接矩陣 arcs 來表示帶權(quán)的有向圖,arcs[i][j]表示(vi,vj)上的權(quán)值。若(vi,vj)不存在,則置 arcs[i][j]為無窮大。S為已找到從v 出發(fā)的最短路徑的終點(diǎn)集合,它的初始狀態(tài)為空集。那么,從v出發(fā)到圖上其余各個(gè)定點(diǎn)vi可能到達(dá)的最短路徑長度的初始值為:D[i] = arcs[v][i];</p><p>  (2)選擇 vj,使得 D[j

58、] = Min{D[i] | vi ∈ V – S}vj 就是當(dāng)前求得的一條從v出發(fā)的最短路徑的終點(diǎn)。令 S = S ∪ {j};</p><p> ?。?)修改從v出發(fā)到集合 V – S 上任意頂點(diǎn)vk可到達(dá)的最短路徑的長度。如果D[j] + arcs[j][k] < D[k]則修改D[k]為 D[k] = D[j]+arcs[j][k]; </p><p> ?。?)重復(fù)操作(

59、2)、(3)共 n – 1 次,由此求得從v到圖上其余各個(gè)頂點(diǎn)的最短路徑是依路徑長度遞增的序列。從而求得了從一個(gè)景點(diǎn)到另一個(gè)景點(diǎn)的最短路徑的問題。 </p><p>  8.1.4 退出函數(shù)模塊</p><p>  對于退出函數(shù),當(dāng)游客選擇了退出這一個(gè)操作的時(shí)候,程序就會(huì)調(diào)用 Exit(); 函數(shù)從而進(jìn)入到退出函數(shù)的界面</p><p>  void Exit()

60、//退出 </p><p><b>  { </b></p><p>  cout<<"歡迎下次繼續(xù)使用!"<<endl; </p><p><b>  exit(0); </b></p><p><b>  }</b></p&

61、gt;<p>  程序會(huì)提示游客感謝使用,歡迎下次繼續(xù)使用的提示語,然后調(diào)用exit(0);函數(shù)實(shí)現(xiàn)退出主函數(shù)的功能。</p><p><b>  8.2 程序流程圖</b></p><p>  圖8—1 程序流程圖</p><p><b>  第9章 系統(tǒng)結(jié)果圖</b></p><p&g

62、t;<b>  圖9—1 菜單</b></p><p>  圖9—2 查找景點(diǎn)信息</p><p>  圖9—3 查找兩個(gè)景點(diǎn)之間最短的距離</p><p><b>  圖9—4 退出界面</b></p><p>  以上圖片為系統(tǒng)運(yùn)行的正確結(jié)果圖,從圖片中可知查找的景點(diǎn)相關(guān)信息、任意兩景點(diǎn)間的最短

63、距離和最短路徑。</p><p>  第10章 咨詢系統(tǒng)使用說明</p><p>  對于第一次使用軟件的游客來說,要讓他們在第一次用的時(shí)候就能夠快速輕松的掌握軟件的用法,因此在程序一開始運(yùn)行的時(shí)候,我們要進(jìn)行如下的操作: </p><p>  首先我會(huì)給游客提供一個(gè)可視化的菜單操作界面,在顯示屏上提示用戶其可以進(jìn)行的操作和他能夠查詢的景點(diǎn)的名稱。 </p&g

64、t;<p>  用戶輸入了“i”后,進(jìn)入到查詢景點(diǎn)簡介的界面,當(dāng)用戶輸入了想要查找的景點(diǎn)的名稱過后就會(huì)顯示出這個(gè)景點(diǎn)的介紹來。 </p><p>  當(dāng)用戶輸入了“p”后,進(jìn)入到查詢最短路徑的界面,然后依據(jù)提示用 戶依次輸入兩個(gè)景點(diǎn)的名稱,程序就會(huì)將這兩個(gè)景點(diǎn)的最短路徑給我們表示出來 并顯示出最短路徑是多少。 </p><p>  當(dāng)用戶輸入了“q”后,進(jìn)入到退出界面,這是系

65、統(tǒng)就會(huì)提示用戶程序 將要運(yùn)行結(jié)束,歡迎下次繼續(xù)使用的提示語,最后按下任意鍵程序結(jié)束。</p><p><b>  第11章 心得體會(huì)</b></p><p>  11.1 遇到的問題</p><p>  由于是第一次接觸這種形式的課程設(shè)計(jì),設(shè)計(jì)之初卻是費(fèi)了不少功夫,尤其是在編寫源代碼及其更改和調(diào)試上,使程序調(diào)試時(shí)要花費(fèi)不少時(shí)間。 </p&

66、gt;<p>  有的程序可能有些代碼重復(fù)出現(xiàn),顯得程序的有些代碼看起來很雜亂。但其中最主要的問題是邏輯錯(cuò)誤導(dǎo)致程序死循環(huán)或不循環(huán)或循環(huán)一小部分,但是編譯時(shí)卻沒有錯(cuò)誤,就是沒有正確的輸出答案。類似的還有出現(xiàn)死循環(huán)的問題,經(jīng)細(xì)心改正后才把調(diào)試工作做完。 </p><p>  由于我編寫創(chuàng)建校園圖的程序時(shí),不會(huì)編寫打開一個(gè)文本的程序,所以創(chuàng)建校園圖的運(yùn)行結(jié)果顯示的是“打開文本錯(cuò)誤”。經(jīng)過修改之后,才最終

67、顯示出正確的界面。 </p><p><b>  11.2 心得</b></p><p>  經(jīng)過幾天的準(zhǔn)備我了解數(shù)據(jù)結(jié)構(gòu)在編寫比較復(fù)雜的程序的重要作用,對數(shù)據(jù)結(jié)構(gòu)中定義無向圖和創(chuàng)建無向圖的理解更加深刻,完全理解了迪克斯特拉算法的原理,但對于其算法的程序編寫 還是不太明白,學(xué)會(huì)了在編寫幾百行程序時(shí)如何查找錯(cuò)誤,如何更改出現(xiàn)的錯(cuò)誤。經(jīng)過這段時(shí)間的課設(shè)準(zhǔn)備,感覺自己編程水

68、平有了較大的提高,同時(shí)我也發(fā)現(xiàn)自己在做比較綜合型的程序時(shí),經(jīng)常受阻,經(jīng)常出現(xiàn)一些低級(jí)失誤。我感覺主要原因是自己平時(shí)動(dòng)手寫程序太少。以后要加緊練習(xí),繼續(xù)深入地去學(xué)習(xí)各種算法,不斷提高自己的水平。這次的課程設(shè)計(jì),加深了我對數(shù)據(jù)結(jié)構(gòu)、C 語言和 C++語言的理解,這也是我第一次面對實(shí)際問題的實(shí)踐, 提高了動(dòng)手能力, 除此之外還學(xué)會(huì)了如何寫課程設(shè)計(jì)報(bào)告, 為以后的畢業(yè)論文設(shè)計(jì)積累了經(jīng)驗(yàn)。</p><p><b>

69、;  11.3 總結(jié)</b></p><p>  通過《停車場管理》和《校園導(dǎo)游咨詢》的課程設(shè)計(jì)中,我更加深入的理解了棧的先進(jìn)后出和隊(duì)列的先進(jìn)先出的原理,和求圖的最短路徑中用到的迪克斯特拉算法,并且學(xué)習(xí)了用其去解決實(shí)際問題的思想和方法。</p><p>  通過此次課程設(shè)計(jì),我深化了對數(shù)據(jù)結(jié)構(gòu)的基本概念、理論和方法的理解,把所學(xué)的理論知識(shí)用于處理實(shí)際問題。這種學(xué)以致用的感覺非常

70、好,讓自己真正的掌握了所學(xué)的知識(shí),并將其利用在實(shí)際問題中。還有就是C++的面向?qū)ο蟮某绦蛟O(shè)計(jì)理念,對程序設(shè)計(jì)是一個(gè)好的啟發(fā)。其中,在程序的調(diào)試中遇到了一些問題,這讓我重新審視到了做好一個(gè)程序需要具備哪些能力。實(shí)踐能給人以成就之感,我是以著“態(tài)度決定一切”的心態(tài)對待此次《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)的,于是偶然又必然地收獲了諸多,概而言之,大約以下幾點(diǎn):</p><p>  一、將理論應(yīng)用于實(shí)踐。時(shí)至今日,課程設(shè)計(jì)基本告成,

71、切身領(lǐng)悟有了思路還需要用實(shí)踐進(jìn)行考驗(yàn),才明曉實(shí)踐出真知。如在進(jìn)行算法分析時(shí)要深刻地從正確性、穩(wěn)健性、可讀性、時(shí)間復(fù)雜度等方面進(jìn)行考慮,在一個(gè)算法中,進(jìn)行簡單操作的次數(shù)越少,其運(yùn)行時(shí)間也就相對的越短;次數(shù)越多,其運(yùn)行時(shí)間也就相對的越長。同樣很多時(shí)候時(shí)間的長短與程序的難易程度(實(shí)現(xiàn)的所要付出的代價(jià))呈反比。</p><p>  二、在創(chuàng)新中尋求發(fā)展。“創(chuàng)新”目前已經(jīng)提升到國家發(fā)展戰(zhàn)略地位,足見“創(chuàng)新”的舉足輕重。因此

72、,我們要從小處著手,順應(yīng)時(shí)代發(fā)展潮流,在課程設(shè)計(jì)中不忘在小處創(chuàng)新,未必是創(chuàng)新技術(shù),但凡創(chuàng)新思維亦可,未必成功,只要實(shí)現(xiàn)創(chuàng)新思維培育和鍛煉即可。</p><p>  三、知錯(cuò)就改,修心求教。不從忘卻“金無足赤,人無完人”,我們換種思維方式,去惡亦是至善,改錯(cuò)亦為至美。在課程設(shè)計(jì)過程中,我們不斷發(fā)現(xiàn)錯(cuò)誤,不斷改正,不斷領(lǐng)悟,不斷獲取。</p><p><b>  參考文獻(xiàn)</b

73、></p><p>  [1]于文良,蔣勁柏.數(shù)據(jù)結(jié)構(gòu)(C語言版)例題詳解與課程設(shè)計(jì)指導(dǎo).合肥: </p><p>  中國科學(xué)技術(shù)大學(xué)出版社,2009.1</p><p>  [2]劉光然,徐棣,羅梅,李典蔚.數(shù)據(jù)結(jié)構(gòu)實(shí)踐訓(xùn)練教程.天津:南開大學(xué) </p><

溫馨提示

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

最新文檔

評論

0/150

提交評論