課程設計報告
題目: 校園導遊系統
課程名稱: 資料結構
專業班級: 計算機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 許令 資訊與計算...