数据结构课程设计报告(2)

2018-12-23 23:50

数据结构课程设计论文

1.4.2 画出主菜单模块

当主菜单中的所有信息展现在访客面前时,一个好的模块可以给访客一种赏心悦目的感觉,进而能给访客留下深刻的印象,因此,在此程序中使用一个大表格将所有信息都囊括在内,这个模块需要调用子函数void Menu()然后,用printf输出“——”即可。

(详细代码请参看源代码)

1.4.3 存储学校各景点信息

建立一个邻接矩阵来存放无向图G,需要建立一个子函数MGraph InitGraph,在这个函数里,顶点个数决定了邻接矩阵的行数和列数,而且,每个顶点中必须包含三个数据:景点的编号vexnum、景点的名称name、景点的简单介绍introduction。其中,景点的编号可以放在一位数组中,用一维数组进行存储;景点的名称和简单介绍直接用字符串进行输入存储和输出; MGraph InitGraph(void) {

MGraph G; int i,j;

G.vexnum=10; //景点个数 G.arcnum=14; //路径条数 for(i=0;i

G.vexs[i].num=i; //存放顶点的数组 strcpy(G.vexs[0].name,\三食堂\

strcpy(G.vexs[0].introduction,\二楼更美味\//对各个景点编号、名称和简介的存放 ????

for(i=0;i

G.arcs[i][j].adj=INFINITY;

//如果两个景点间存在路径

G.arcs[0][1].adj=100; //对两个景点间的距离进行存储 ????

1.4.4 查询景点之间最短路的算法

为应对访客对两个景点之间最短距离的查问,在邻接矩阵的基础上进行弗洛伊德算法,有关代码如下: void Floyd(MGraph *G)

- 5 -

数据结构课程设计论文

{

int v,u,i,w,k,j,flag=1,p[10][10][10],D[10][10]; for(v=0;vvexnum;v++) for(w=0;wvexnum;w++) {

D[v][w]=G->arcs[v][w].adj; for(u=0;uvexnum;u++) p[v][w][u]=0; if(D[v][w]

p[v][w][v]=1;p[v][w][w]=1; } }

for(u=0;uvexnum;u++) for(v=0;vvexnum;v++) for(w=0;wvexnum;w++) if(D[v][u]+D[u][w]

D[v][w]=D[v][u]+D[u][w]; for(i=0;ivexnum;i++)

p[v][w][i]=p[v][u][i]||p[u][w][i]; }

在此过程中还需要访客对要查询的两个景点进行输入,为此,当遇到非景点编号时应有相应的处理程序:

if(k<0||k>G->vexnum||j<0||j>G->vexnum) {

printf(\景点编号不存在!请重新输入出发点和目的地的编号:\ scanf(\

当访客输入正确的景点编号时,程序运行过程中在输出此景点编号的同时,还要输出此景点的名称、最短距离:

if(k>=0&&kvexnum&&j>=0&&jvexnum) flag=0;

printf(\ for(u=0;uvexnum;u++) if(p[k][j][u]&&k!=u&&j!=u)

- 6 -

数据结构课程设计论文

printf(\ printf(\ printf(\总路线长%dm\\n\

1.4.5 景点查询与应错算法

为向访客提供某一景点的介绍,还需要一个void Search(MGraph *G) 函数,在这个函数中同样需要访客输入想查询的景点的编号,如果访客输入的景点不存在,系统会对此作出应急反应,详细代码请参看源代码。

1.5 调试分析

做这个程序首先要对访客的要求进行足够的分析,开始时的程序运行时是这个样

子的:

开始还没有觉得出现问题,因为在编写过程中我已记住这个系统的命令符号是什么,可是,当别人看见我这个程序时,他们不觉要问:你让我如何进行option?通过上网查询,我编写了如兄一段程序: void cmd(void) { int i;

b=InitGraph(); Menu();

scanf(\ while(i!=4) {

switch(i) {

case 1:system(\ case 2:system(\

- 7 -

数据结构课程设计论文

case 3:system(\ case 4:exit(1);break; default:break; }

scanf(\ } }

再次运行时的界面:

这样,任何一个进入此系统的访客看见主菜单提示,无论他想进行什么查询,都会一目了然,因此存在的问题也就迎刃而解了。

1.5.1 测试数据:校园全景图

当访客要浏览校园全景时,输入1,按enter:

此处存在一个问题:如何让这个全景图展现给访客的样子是一个有着地理方位的平面图,这样更方便访客对校园的全面了解,目前这个问题没有解决。

- 8 -

数据结构课程设计论文

当访客输入错误的命令时,系统对错误不作出反应,例如:访客输入6:

这个地方需要改进,应该出现一个错误提示界面,但由于时间和自身技术的问题,未对此进行优化。

1.5.2 测试数据:查询最短路径

当访客要访问任意两个景点之间的最短路径时,以景点4和景点1为例,首先输入2(选择出发地点和目的地),再按要求输入景点4,按enter、再输入景点1,按enter:

这是我觉得最好的运行结果,弗洛伊德的时间复杂度我目前尚不了解,但他的功能非常完美。

这个程序段有个出错应急系统,当访客输入的景点编号不正确时,例如:输入目的地的编号为14,系统自动提示:

1.5.3 数据测试:

当访客要查询某一景点的信息时,以景点2为例,首先输入3(查看景点信息),

- 9 -


数据结构课程设计报告(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:公司业务外包管理制度

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

马上注册会员

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