資料結構課程設計作業 校園導遊

2021-05-31 11:50:50 字數 4019 閱讀 2228

資料結構課程設計

course design of data structure

電腦科學與技術082

姓名學號:08422137

指導老師2023年7月9日

目錄1.需求分析說明

2.概要設計說明

3.詳細設計說明

4.除錯分析

5.課程設計總結

6.參考書目

7.致謝

需求分析說明

隨著高校校園的逐漸擴充套件,來訪校園的人士逐漸增多, 隨著校園透明度的提高,各界人士對學術氛圍的追求,越來越多的人走進了大學校園,走進了象牙塔,這片靜土也以它嶄新的面貌,迎接著所有的到來者,以前封閉以及半封閉的校園狀況隨之改變,派生的是它積極的迎接挑戰的狀態。

高等院校,歷來以其悠久的歷史、深厚的文化底蘊、優美的自然和人文景觀吸引著人們的目光。高校校園旅遊在掀起「羞答答的頭蓋「後,正悄然走向市場,當今高校在確立了旅遊的市場可行性之後,隨之而來的導遊系統是勢在必行,高校的旅遊可以讓人陶冶情操,也可以讓人對學術產生濃厚的興趣。那麼如何更好的更科學的更科學的組織好高校導遊,如何更方便更便捷的把高校的校園展示給世人,就成為了乙個需要解決的問題。

利用計算機建立乙個自動的導遊系統,可以很好的解決這個問題。當客人來訪時,系統可以根據客人指定的景點給予相關的資訊,遊客可以方便的了解到每個景點的詳細資訊,同時可以通過系統找到起始點和終點的多條路徑,通過系統的分析後,能得出一條最短路徑。各個景點的全景圖、區域性圖可以在景點瀏覽中找到,付予語音、**以及相關文字說明,讓遊客輕輕鬆鬆掌握景點資訊。

概要設計說明

用無向網表示你所在學校的校園景點平面圖,圖中頂點表示主要景點,存放景點的編號、名稱、簡介等資訊,圖中的邊表示景點間的道路,存放路徑長度等資訊。要求實現以下功能:

(1)查詢各景點的相關資訊。

(2)查詢圖中任意兩個景點間的最短路徑。

(3)查詢圖中任意兩個景點間的所有路徑。

用圖的結點代表景點,用圖的邊代表景點意見的路徑,首先設計乙個圖類,結點值代表景點的資訊,邊的權值代表景點之間的距離,結點值及邊的權值用順序表儲存,所以需要設計乙個順序錶類,本系統需要查詢景點資訊和求乙個景點到另乙個景點的最短路徑長度及路線,為方便操作,所以給每個景點乙個編號,用結構體型別來實現。計算路徑長度和最短路線是可以用dijkstra(迪傑斯特拉)演算法實現,在主函式中用switch選擇語句執行瀏覽景點資訊或查詢最短路徑

typedef struct arcell

arcell,adjmatrix[max_vertex_num][max_vertex_num];

typedef struct //圖中頂點表示主要景點,存放景點的編號、名稱、簡介等資訊,

infotype;

typedef struct

mgraph;

void cmd(void);//在主函式中用來呼叫其他應用子函式的函式宣告

mgraph initgraph(void);//用來構造學校地圖的子函式返回mgraph型別

void menu(void);//選單函式;

void browser(mgraph *g);//呼叫mgraph型別的位址,進行

void shortestpath_dij(mgraph * g);//迪傑斯特拉演算法求最短路徑的子函式

void floyd(mgraph *g);//佛洛伊德演算法

void search(mgraph *g);//尋找要查詢的景點,並輸出該景點的資訊

int locatevex(mgraph *g,char* v);//定點位置

mgraph * creatudn(mgraph *g);////初始化圖形,接受使用者輸入

void print(mgraph *g);//列印輸出子函式

詳細設計說明

#define infinity 10000 /*無窮大*/

#define max_vertex_num 40

#define max 40

#include

#include

#include

#include

typedef struct arcell

arcell,adjmatrix[max_vertex_num][max_vertex_num];

typedef struct //圖中頂點表示主要景點,存放景點的編號、名稱、簡介等資訊,

infotype;

typedef struct

mgraph;

mgraph b;//全域性變數

void cmd(void);//在主函式中用來呼叫其他應用子函式的函式宣告

mgraph initgraph(void);//用來構造學校地圖的子函式返回mgraph型別

void menu(void);//選單函式;

void browser(mgraph *g);//呼叫mgraph型別的位址,進行

void shortestpath_dij(mgraph * g);//迪傑斯特拉演算法求最短路徑的子函式

void floyd(mgraph *g);//佛洛伊德演算法

void search(mgraph *g);//尋找要查詢的景點,並輸出該景點的資訊

int locatevex(mgraph *g,char* v);//定點位置

mgraph * creatudn(mgraph *g);////初始化圖形,接受使用者輸入

void print(mgraph *g);//列印輸出子函式

void main(void)

void cmd(void)//用來呼叫其他需要用到的函式的子函式

scanf("%d",&i);

}}mgraph initgraph(void)//構造校園地圖

{ mgraph g;

int i,j;

g.vexnum=10;//景點數量

g.ar**um=14;//路徑數量

for(i=0;i g.vexs[i].num=i;//對景點進行對應編號

/*對對應的景點編號進行命名,輸入簡介*/

strcpy(g.vexs[0].name,"行政樓");

strcpy(g.vexs[0].introduction,"學校的行政機構");

strcpy(g.vexs[1].name,"圖書館");

strcpy(g.vexs[1].introduction,"藏書200萬冊,設施良好,環境幽雅");

strcpy(g.vexs[2].name,"新理科樓");

strcpy(g.vexs[2].introduction,"學校最氣派的教學樓,裡面的設施比較好");

strcpy(g.vexs[3].name,"川味府");

strcpy(g.vexs[3].introduction,"裡面有南方各種美食,就餐環境幽雅");

strcpy(g.vexs[4].name,"洗浴中心");

strcpy(g.vexs[4].introduction,"學校唯一的澡堂,在川味府旁邊");

strcpy(g.vexs[5].name,"中心體育場");

strcpy(g.vexs[5].introduction,"化塑膠跑道,人造草坪,適宜鍛鍊身體的場所");

strcpy(g.vexs[6].name,"會堂");

strcpy(g.vexs[6].introduction,"學校有大型的晚會都在這裡舉行");

strcpy(g.vexs[7].name,"鐘樓廣場");

strcpy(g.vexs[7].introduction,"是連大學子展現才華的地方,旁有郵局");

strcpy(g.vexs[8].name,"新文科樓");

strcpy(g.vexs[8].introduction,"裡面包含幾個學院");

strcpy(g.vexs[9].name,"清緣超市");

strcpy(g.vexs[9].introduction,"學校最大的超市,裡面有很多學生使用的商品");

//對有路的各景點之間的路徑長度進行設定,沒路的設定為無窮大

for(i=0;i for(j=0;j

資料結構課程設計

指導書山東建築大學 電腦科學與技術學院 二 六年十二月 課程設計基本情況 課程名稱 資料結構課程設計 相關課程 c語言程式設計 visual c 程式設計 資料結構 適合專業 電腦科學與技術 網路工程 軟體工程 設計週數 2周 學分 2學分 開課學期 第4學期 開課單位 電腦科學與技術學院 一 課程...

資料結構課程設計

總結報告 專業軟體工程 班級軟體1007 學號 20103540 姓名 日期 2012.9.17 東北大學軟體學院 第一章需求分析 問題定義 實現乙個網上拍賣系統,根據需求描述和附加的框架 完成乙個網上拍賣系統。分析 整個系統執行於windows平台,是基於b s結構的商業應用程式,程式為使用者提供...

資料結構課程設計

環境與測繪學院 1 c 物件導向程式設計基礎 實驗簡介 學會用演算法語言c 描述抽象資料型別。理解資料結構的組成分為兩部分,第一部分是資料集 資料元素 第二部分是在此資料集上的操作。從物件導向的觀點看,這兩部分代表了物件的屬性和方法。掌握用c 描述資料結構的基本方法,即通過建立類來描述抽象資料型別。...