華科資料結構課設報告校園導遊系統C語言

2023-01-04 17:51:02 字數 2858 閱讀 2234

課程設計報告

題目: 校園導遊系統

課程名稱: 資料結構

專業班級: 計算機1209班

學號: u201215056

姓名: 公尺爾扎提·穆合塔爾

指導教師: 週時陽

報告日期: 2014.9.4

電腦科學與技術學院

校園導遊系統。

以本校校園景點為背景,設計乙個程式,為來訪的客人提供任意景點相關資訊的查詢。以及規劃遊覽的最佳線路等。

⑴按校園實際情況處理景點;

⑵能計算出每對景點間的最短距離,以及為從某景點出發,遊覽所有或選定景點後回到起點,設計一條最短路徑;

⑶介面友好、美觀,要求用圖形介面顯示,能直觀顯示遊覽線路。

本系統總體採用mfc對話方塊方式,景點包括華中科技大學主要的27個景點,選單欄主要包括:

檔案、校園地圖、景點簡介、景點距離、幫助等。

檔案選單下包括「退出」子選單,用來退出本系統,也可以用右上角的×號退出。主頁面背景採用本校的主要景點之一校史館來做背景。

「校園地圖」選單用來顯示本校實際校園地圖。為了方便看地圖的同時進行資訊查詢、距離查詢的等功能,此選單下的對話方塊採用非模態對話方塊。

「景點簡介」選單用來查詢學校主要的27個景點的簡單介紹。此選單下的對話方塊採用模態對話方塊,左側顯示27個景點的編號以及名稱,使用者可選擇編號來查詢景點介紹。

「景點距離」選單下的對話方塊採用非模態對話方塊。此對話方塊包括兩個功能:一是計算出任意兩點間的最短距離,二是查詢從乙個景點出發瀏覽所有回到原點的最佳路徑。

此對話方塊右側將顯示出景點編號及名稱,方便使用者選擇。

最後乙個選單「幫助」選單下有乙個「關於」子選單,主要是顯示開發人的基本資訊。

void chtu(int v,int a); //造圖函式

void list(); //列表函式

void path(int num); //最短路徑函式

void output(int sight1,int sight2); //輸出函式

int numlen(int *,int);

int lucheng,linshi;

int ls[num],ss[num];

int ***;

int zuijia(int,int,int);

graph g把圖定義為全域性變數

int p[num][num];

long int d[num]; //輔助變數儲存最短路徑長度

int x[26]=;

#define max 10000

#define num 27

int num1,num2,num3,iii;

int nmb0,nmb1[num];

int name1,name2[num];

本校園導遊系統是用圖來實現的。圖的結構如下:

typedef struct arccellarccell; //定義邊的型別

typedef struct vertextypevertextype; //定義頂點的型別

typedef structmgraph定義圖的型別

實驗前的準備:在實驗前我先在網上找到華中科技大學的校園地圖乙份。我將這張地圖格式轉換為位圖,以方便利用mfc來在對話方塊背景載入出bmp**。

實驗具體設計:介面都採用mfc做,首先做好基本的介面,工具欄、對話方塊等,再在對話方塊中新增各種控制項,布置好布局,等介面全部布置好了之後再對各個控制項進行程式設計。主要是控制項中輸入,通過點選操作來獲取對應(設定)的控制項中的內容,再在程式內部進行相關演算法計算,再將結果輸出到指定控制項中。

演算法設計:

本系統有兩大主要演算法,分別是計算任意兩點間距離演算法和查詢最佳路徑演算法。這兩個演算法詳情如下:

1.計算任意兩點距離:

void path(int num) //迪傑斯特拉演算法最短路徑函式 num為入口點的編號

}d[num]=0;

final[num]=1; //初始化num頂點屬於s集合

開始主迴圈,每一次求得num到某個頂點的最短路徑,並將其加入到s集合

for(i=0;i

final[v]=1; //離num頂點更近的v加入到s集合

for(w=0;w if(!final[w]&&((min+ }}

void output(int sight1,int sight2) // 輸出函式

{int a,b,c,d,q=0,l=0;

a=sight2; //將景點二賦值給a

if(a!=sight1) //如果景點二不和景點一輸入重合,則進行...

{ //printf("\n\t從*%s*到*%s*的最短路徑是",輸出提示資訊

//printf("\t(最短距離為:%dm.)\n\n\t",d[a]); // 輸出sight1到sight2的最短路徑長度,存放在d陣列中

num3=d[a];

printf("\t%s", //輸出景點一的名稱

name1=

d=sight1; //將景點一的編號賦值給d

for(c=0;c {

gate標號,可以作為goto語句跳轉的位置

p[a][sight1]=0;

for(b=0;b {

if(<20000&&p[a][b]) //如果景點一和它的乙個臨界點之間存在路徑且最短路徑

{//printf("-->%s", //輸出此節點的名稱

name2[l]=

//q=q+1; //計數變數加一,滿8控制輸出時的換行

p[a][b]=0;

d=b; // 將b作為出發點進行下一次迴圈輸出,如此反覆

//if(q%9==0) printf("\n");

資料結構課設報告

演算法與資料結構課程設計報告 系 院電腦科學學院 專業班級計科11105 姓名余方林 學號201103392 指導教師陳勇 設計時間 2013.6.17 2012.6.29 設計地點 12教機房 一 課程設計目的 3 二 設計任務及需求分析 3 三 總體設計 4 四 詳細設計與實現 含 和實現介面 ...

資料結構課設作業

利用佇列求解迷宮路徑。利用檔案的輸入輸出 查詢排序演算法建立乙個航班資訊順序表查詢系統。1.2.1迷宮問題 本程式用以求出任意輸入的入口和出口間的最短路徑和最長路徑。1.2.2航班息查詢系統設計 建立乙個順序表航班資訊查詢系統,用於管理和使用。m 12,n 12,move 4 vg1034 山東湖北...

資料結構課設分組

汗水和豐收是忠實的朋友,勤學和知識是一對最美麗的戀人。注意 1綠色 劉志偉,class txt 2紅色 宋文,class txt 3藍色 嚴常龍,135 class txt 200509010601 邱程電腦科學與技術 計算機應用軟體 計算機應用 軟體 05 11 31200713 許令 資訊與計算...