數(shù)據(jù)結構課程設計---校園導游系統(tǒng)_第1頁
已閱讀1頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  *****設計報告</b></p><p>  題 目:校園導游系統(tǒng)</p><p>  院系名稱:計算機學院</p><p>  專業(yè)名稱:計算機科學與技術</p><p><b>  班 級:</b></p><p>&

2、lt;b>  學生姓名:</b></p><p><b>  學號(8位)</b></p><p><b>  指導教師:</b></p><p>  設計起止時間:2011年12月12日~2011年12月16日</p><p><b>  一. 設計目的&l

3、t;/b></p><p>  校園導游系統(tǒng) -- 為了系統(tǒng)的把前后的知識連貫的學會應用,了解一個地圖是怎么用C語言的形式表達存儲的。</p><p><b>  二. 設計內容</b></p><p>  校園導游系統(tǒng) — 這是西安郵電學院的一個校園導游圖,內容有:管理員管理(有地圖的輸入,保存文件);客戶訪問(景點查詢,景點打印,景點

4、信息,最短路線查詢)。</p><p><b>  三.概要設計</b></p><p><b>  1.功能模塊圖;</b></p><p><b>  校園導游系統(tǒng) —</b></p><p><b>  Y</b></p><p&

5、gt;<b>  N</b></p><p>  2.各個模塊詳細的功能描述。</p><p>  校園導游系統(tǒng) —三個選項:1.Administrator Login—管理員登陸; 2.Client Access—客戶登</p><p>  陸 ;0.Exit the system—退出系統(tǒng)。</p><p>  三個

6、選項:1.Input Attractions Map—輸入地圖信息;2.Back to the main </p><p>  Menu—返回主菜單;0.Exit the system—退出系統(tǒng)。</p><p>  六個選項:1.List of the Attractions—列出景點;2.Print the vertex's </p><p>  inf

7、ormation – 打印景點信息;3.Find attractions—景點查詢;4.Search the shortest path—最短路徑查詢;5.Back to the main menu—返回主菜單;0.Exit the system—退出系統(tǒng)。</p><p><b>  四.詳細設計</b></p><p>  1.功能函數(shù)的調用關系圖</p&g

8、t;<p><b>  校園導游系統(tǒng) —</b></p><p>  系統(tǒng)中的所有函數(shù)如下:</p><p>  void main();</p><p>  void Cipher ();//密碼</p><p>  void MainMenu ();//主菜單</p><p> 

9、 void AdministratorMenu ();//管理員菜單</p><p>  void CustomerMenu();//客戶訪問菜單</p><p>  int LocateVertex (AdjMatrix *G, int v);//求頂點位置函數(shù)</p><p>  void CreateGraph (AdjMatrix *G);//建立圖函數(shù)&l

10、t;/p><p>  void SaveGraphFile (AdjMatrix *G);//保存圖到文件函數(shù)</p><p>  void DiaplayGraph (AdjMatrix *G);//打印圖函數(shù)</p><p>  void FindAttractions ();//景點查找</p><p>  void TraverseGra

11、ph ();//圖的遍歷</p><p>  void DepthFirstSearch (AdjMatrix *G, int v0);//圖的深度優(yōu)先搜索</p><p>  void PrintGraph ();//打印圖</p><p>  void ReadGraphInfoFile (AdjMatrix *g);//讀取圖的景點信息文件</p>

12、<p>  void ReadGraphFile (AdjMatrix *g);//讀取圖矩陣文件</p><p>  void ShortestPath_Floyd(AdjMatrix *g);//弗洛伊德算法</p><p>  void ShortestPath_Print();//兩點間的最短路徑</p><p>  函數(shù)調用關系: a

13、 b:a調用b</p><p>  2.各功能函數(shù)的數(shù)據(jù)流程圖</p><p><b>  校園導游系統(tǒng) —</b></p><p>  函數(shù)7)void CreateGraph (AdjMatrix *G);為創(chuàng)建圖,然后,調用 8)void SaveGraphFile (AdjMatrix *G) 保存到文件啊中。</p&

14、gt;<p>  函數(shù)11),13),10),17)都需調用14),15)來讀取文件中的數(shù)據(jù)。分別完成相應的功能。</p><p><b>  3.重點設計及編碼</b></p><p><b>  校園導游系統(tǒng) —</b></p><p>  程序中定義的結構體,數(shù)據(jù):</p><p&g

15、t;  #define M 100</p><p>  #define INFINITY 0</p><p>  #define True 1</p><p>  #define False 0</p><p>  int visited[M];</p><p>  int dist[M][M];//最短路徑長度<

16、;/p><p>  int path[M][M];//最短路徑</p><p>  typedef struct VerInfo</p><p><b>  {</b></p><p>  int ver;//景點編號</p><p>  char name[M];/景點名字/</p>

17、<p>  char information[M];//景點信息</p><p>  } VerInfo;</p><p>  typedef struct ArcNode</p><p><b>  {</b></p><p>  int adj;//權值</p><p>  } Ar

18、cNode;</p><p>  typedef struct</p><p><b>  {</b></p><p>  VerInfo vertex[M];//頂點數(shù)組</p><p>  ArcNode arcs[M][M];//鄰接矩陣</p><p>  int vexnum, arcn

19、um;//定點數(shù)和弧數(shù)</p><p>  } AdjMatrix;</p><p><b>  重點函數(shù)</b></p><p>  int LocateVertex (AdjMatrix *G, int v)//求定點位置函數(shù)</p><p><b>  {</b></p><

20、;p><b>  int k;</b></p><p>  for(k = 0; k < G->vexnum; k++)</p><p>  if(G->vertex[k].ver == v)</p><p><b>  {</b></p><p><b>  re

21、turn k;</b></p><p><b>  }</b></p><p>  return -k;</p><p><b>  }</b></p><p>  void DepthFirstSearch (AdjMatrix *G, int v0)//深度優(yōu)先搜索</p>

22、;<p><b>  {</b></p><p><b>  int vj;</b></p><p>  printf("║%6d║%16s║\n", G->vertex[v0].ver, G->vertex[v0].name);</p><p>  visited[v0] =

23、 True;</p><p>  for(vj=0; vj < G->vexnum; vj ++)</p><p>  if ((! visited[vj]) && G->arcs[v0][vj].adj != 0)</p><p>  DepthFirstSearch (G, vj);</p><p>&l

24、t;b>  }</b></p><p><b>  讀取圖矩陣文件</b></p><p>  while (fscanf(fp, "%4d", &g->arcs[i][j].adj) != EOF)</p><p><b>  {</b></p><

25、p>  fscanf(fp, "%c", &ch);</p><p><b>  j++;</b></p><p>  if (ch == '\n')</p><p><b>  {</b></p><p><b>  i++;</b

26、></p><p><b>  j=0;</b></p><p><b>  }</b></p><p>  if (g->arcs[i][j].adj != 0)</p><p><b>  h++;</b></p><p><b

27、>  }</b></p><p>  g->vexnum = i;//最后i為圖的頂點個數(shù)</p><p>  g->arcnum = h/2;//h為弧數(shù)的2倍</p><p>  void ShortestPath_Floyd(AdjMatrix *g)//弗洛伊德算法的實現(xiàn)</p><p><b>

28、;  {</b></p><p>  int i, j, k;</p><p>  for(i=0; i<g->vexnum; i++)</p><p>  for(j=0; j<g->vexnum; j++)</p><p>  {dist[i][j]=1000;</p><p>

29、;  path[i][j]=0;</p><p><b>  }</b></p><p>  for(i=0; i<g->vexnum; i++)</p><p>  for(j=0; j<g->vexnum; j++)</p><p>  if(g->arcs[i][j].adj!=0)&

30、lt;/p><p><b>  { </b></p><p>  dist[i][j] = g->arcs[i][j].adj;</p><p>  dist[j][i] = g->arcs[j][i].adj;</p><p><b>  }</b></p><p&g

31、t;  for(k=0; k<g->vexnum; k++)</p><p>  for(i=0; i<g->vexnum; i++)</p><p>  for(j=0; j<g->vexnum; j++)</p><p>  if(dist[i][k] + dist[k][j] < dist[i][j])</p&g

32、t;<p><b>  {</b></p><p>  dist[i][j] = dist[i][k] + dist[k][j];</p><p>  path[i][j] = k;</p><p>  path[j][i] = k;</p><p><b>  }</b></p

33、><p><b>  }</b></p><p>  五.測試數(shù)據(jù)及運行結果</p><p>  1.正常測試數(shù)據(jù)和運行結果</p><p>  要求提供3組正常測試數(shù)據(jù)和運行結果</p><p>  A.校園導游系統(tǒng) —</p><p><b>  輸入:1;<

34、;/b></p><p><b>  輸出:</b></p><p>  輸入:lj;111;</p><p><b>  輸出:</b></p><p>  輸入:1; 15,; 23;</p><p>  公交站 這里有西安最方便的600路公交車</p

35、><p>  大門 仔細看看那大門,你會發(fā)現(xiàn)那是“郵電”兩個字</p><p>  郵政儲蓄 這里可以辦理儲蓄、郵政業(yè)務,ATM機,方便</p><p>  大學生活動中心 這是一個小型的會場,可以舉行各種晚會,活動</p><p>  人工湖 湖水渾濁,不過偶爾有一條魚跳出水面</p><p>  圖書館 130萬的出數(shù)

36、量,各種圖書,供你選擇</p><p>  教學區(qū) 教室少,樓房出現(xiàn)漏水現(xiàn)象,豆腐渣工程</p><p>  學術交流中心 供外人居住的地方,但不是免費得,180/天,貴</p><p>  操場 塑膠跑道,采用荷蘭進口的高仿草坪足球場</p><p>  體育館 有室內籃球館,但是有點小,一次性容人量小</p><p&g

37、t;  實驗樓 設備比較齊全,部分設備太舊,得更新</p><p>  醫(yī)療中心 設備差,收費高,只能看感冒類的小病</p><p>  學生公寓 大都采用6人間的方式,部分是4人間</p><p>  旭日苑 衛(wèi)生極差,筷子出來是油的,濕的就不說的,你懂得!</p><p>  美食廣場 這里的飯菜種類多,味道也不錯</p>

38、<p>  輸出:Save the file successfully!</p><p><b>  輸入:2; 1;</b></p><p><b>  輸出:</b></p><p><b>  輸入:2</b></p><p><b>  輸出<

39、/b></p><p><b>  輸入:3; 8;</b></p><p><b>  輸出:</b></p><p>  輸入:4; 2 15;</p><p><b>  輸出:</b></p><p><b>  輸入:5;&

40、lt;/b></p><p><b>  輸出:</b></p><p>  2.異常測試數(shù)據(jù)及運行結果</p><p>  輸入密碼,或用戶名不對的會返回到上一級。另外選擇選項的時候輸入非法的數(shù)據(jù)時會提醒你輸入有誤,重新輸入。</p><p>  六.調試情況,設計技巧及體會</p><p&g

41、t;<b>  1. 改進方案</b></p><p>  對自己的設計進行評價,指出合理和不足之處,提出改進方案;</p><p>  A. 校園導游系統(tǒng) —</p><p>  程序優(yōu)點:1.有管理員和客戶訪問兩個部分。客戶不能輸入地圖信息。</p><p>  2.輸入地圖是點數(shù)和弧數(shù)可以隨意輸入,數(shù)據(jù)全部存在文件

42、中,比較好讀取數(shù)據(jù),讀取文件的同時還計算出了圖的頂點數(shù)和弧數(shù)。</p><p>  程序不足:1.由于宏定義INFINITY是0.所以在查詢最短路線的時候不好控制數(shù)據(jù)。其實應該定義成32768,最大值,這樣好控制數(shù)據(jù)。</p><p>  2.程序只能一次性的進行一次性的地圖數(shù)據(jù)錄入,不能進行修改,添加地圖信息。</p><p>  3.程序放在linux下不能運行

43、,原因是linux下沒有 <conio.h> 這個函數(shù)庫,在linux下實現(xiàn)要用到<termios.h>、 <unistd.h>、 <assert.h>這三個函數(shù)庫。有待遇進一步的改善。</p><p><b>  2.體會</b></p><p>  弗洛伊德算法思想很精辟。</p><p> 

44、 在查找最短路徑中的一次循環(huán)這一點很節(jié)省時間。</p><p>  一個大的程序不是在短時間之內可以完成的,更不是由一兩個人就可以完成的,需要一個團隊來集體完成</p><p>  程序的調試在編程的過程中起到了舉足輕重的作用。</p><p><b>  七.參考文獻</b></p><p>  《數(shù)據(jù)結構》 楊劍

溫馨提示

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

評論

0/150

提交評論