校园的导游交通咨询系统(2)

2019-01-19 11:15

校园的导游交通咨询系统

三.详细设计 3.1 函数声明

MGraph G;

int P[NUM][NUM]; //存放边的权值 long int D[NUM]; int x[9] = {0};

void CreateInfor(int v,int a); //创建各景点及其信息函数声明 void GuideInfor(); //景点信息界面函数声明 void ShortestPath(int num); //输出最短路径函数声明 void Output(int sight1,int sight2); //输出最短距离函数声明 char Menu(); //选择菜单函数声明 void search(); //查找菜单函数声明 char SearchMenu(); //查找子菜单函数声明 void PrintMap(); //输出农大平面图的函数声明

3.2 功能函数实现 3.2.1结构体定义

typedef struct ArcCell {

int adj;

}ArcCell;

typedef struct VertexType {

int number; char *sight; char *description;

}VertexType; //定义景点的描述结构体

-4-

校园的导游交通咨询系统

typedef struct {

VertexType vex[NUM]; ArcCell arcs[NUM][NUM];

int vexnum,arcnum; //定义图的结点数和边数

}MGraph; //邻接矩阵结构体定义

3.2.2创建各景点及其信息函数(CreateInfor)

void CreateInfor(int v,int a) //创建各景点及其信息函数 {

int i,j; G.vexnum = v; G.arcnum = a;

for(i = 0;i < G.vexnum;++i)

G.vex[i].number = i;

G.vex[0].sight = \商业街\写入各景点及其信息 G.vex[0].description = \学生购物、聚餐、娱乐之地\G.vex[1].sight = \校医院\

G.vex[1].description = \农大就医之所,虽然有点贵\G.vex[2].sight = \南区食堂\

G.vex[2].description = \学生就餐之所\G.vex[3].sight = \前街\

G.vex[3].description = \店面虽不多,但生意很好\G.vex[4].sight = \北区食堂\

G.vex[4].description = \学生就餐之所,味道比南区的好\G.vex[5].sight = \教育超市\

G.vex[5].description = \农大最大的超市,很方便\G.vex[6].sight = \体育馆\

G.vex[6].description = \农大运动场所,可以进去打球\

-5-

校园的导游交通咨询系统

}

G.vex[7].sight = \北区田径场\

G.vex[7].description = \体育课上课之所,各种活动场所\G.vex[8].sight = \五教先骕楼\

G.vex[8].description = \新教学楼,大部分学生在此上课\G.vex[9].sight = \逸夫图书馆\

G.vex[9].description = \学生阅览、借阅图书之地\G.vex[10].sight = \农大正门\

G.vex[10].description = \历史悠久,很多人都会认错\G.vex[11].sight = \一教惟义楼\

G.vex[11].description = \老教学楼,考研学生最多之地\

for(i = 0;i < G.vexnum;++i)

for(j = 0;j < G.vexnum;++j)

G.arcs[i][j].adj = Max; //写入各景点之间的距离

G.arcs[0][1].adj = G.arcs[1][0].adj = 300; G.arcs[0][2].adj = G.arcs[2][0].adj = 200; G.arcs[2][3].adj = G.arcs[3][2].adj = 350; G.arcs[2][5].adj = G.arcs[5][2].adj = 100; G.arcs[3][4].adj = G.arcs[4][3].adj = 350; G.arcs[3][5].adj = G.arcs[5][3].adj = 300; G.arcs[5][6].adj = G.arcs[6][5].adj = 200; G.arcs[5][8].adj = G.arcs[8][5].adj = 300; G.arcs[5][10].adj = G.arcs[10][5].adj = 300; G.arcs[7][11].adj = G.arcs[11][7].adj = 300; G.arcs[8][9].adj = G.arcs[9][8].adj = 100; G.arcs[9][10].adj = G.arcs[10][9].adj = 350; G.arcs[10][11].adj = G.arcs[11][10].adj = 350;

3.2.3景点信息界面函数(GuideInfor)

-6-

校园的导游交通咨询系统

void GuideInfor() //景点信息界面函数声明 {

int i,k = 0; printf(\

*******************

西

*******************\\n\输出导游系统主界面

printf(\

__________\\n\

printf(\景点名称\\t\\t|\\t景点描述\\n\

printf(\

__________\\n\

printf(\for(i = 0;i < NUM;i++) {

description); //输出各景点及其信息

}

printf(\

k = k+1;

__________\\n\}

3.2.4输出最短路径函数(ShortestPath)

void ShortestPath(int num) //景点游览最短路径函数(采用狄克斯特拉算法设计) {

int v,w,i,t;

int final[NUM]; //保存最短路径 int min;

/*初始化*/

-7-

校园的导游交通咨询系统

for(v = 0;v < NUM;v++) { }

D[num] = 0; final[num] = 1;

/*在当前还未找到最短路径的结点中选取具有最短路径的结点v*/ for(i = 0;i < NUM;++i) //依次查找 {

min = Max; //查找出最小值 for(w = 0;w < NUM;++w)

if(!final[w])

if(D[w] < min) { }

/*当已不再存在路径时算法结束*/ if(min == Max) return;

v = w;

min = D[w]; //保存最小值

final[v] = 0;

D[v] = G.arcs[num][v].adj; for(w = 0;w < NUM;w++)

P[v][w] = 0;

if(D[v] < 20000) { }

P[v][num] = 1; P[v][v] = 1;

-8-


校园的导游交通咨询系统(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:北师大实验中学初二语文阶段测试试卷(2015-12) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: