校园导游咨询设计说明书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2012年春季学期
算法与数据结构课程设计
题目:校园导游咨询
专业班级:10级软件工程基地班
姓名:
学号:10500231
指导教师:王旭阳
成绩:
目录
摘要 (1)
1.采用类C语言定义相关的数据类型 (2)
2.各模块的伪码算法 (3)
3.函数的调用关系图 ........................... 错误!未定义书签。
4.调试分析 (5)
5.测试结果 (6)
6.源程序(带注释) (9)
总结 (21)
参考文献 (22)
致谢 (23)
附件Ⅰ任务一源程序代码 (24)
摘要
一个校园导游程序,为来访的客人提供各种信息查询服务:即查询任意两个景点之间的一条最短的简单路径。
校园平面图采用邻接矩阵(或邻接表)表示,主要功能有:校园平面图邻接矩阵(或邻接表)的建立、路径的查询、从某一景点到另一景点的最短路径查找、游客从大门进入,选一条最佳路线,使游客可以不重复地游览各景点,最后回到出口(出口就在大门旁边)、显示输出等功能。
校园内景点不少于10个,算法对于合法的输入数据都能产生满足规格说明要求的结果。
通过该题目的设计过程,可以加深理解图的基本概念、逻辑结构及存储结构,掌握图的重要应用——最短路径等算法的应用,进一步理解和熟练掌握课本中所学的各种数据结构,学会如何把学到的知识用于解决实际问题,培养动手能力。
关键词:校园导游咨询;图;邻接矩阵。
1.采用类c语言定义相关的数据类型
typedef struct ArCell
{
int adj; //路径长度
}ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
typedef struct //图中顶点表示主要景点,存放景点的编号、名称、简介等信息,
{
char name[30];
int num;
char introduction[100];//简介
}infotype;
typedef struct
{
infotype vexs[MAX_VERTEX_NUM];
AdjMatrix arcs;
int vexnum,arcnum;
}MGraph;
MGraph b;
void cmd(void);
MGraph InitGraph(void);
void Menu(void);
void Browser(MGraph *G);
void ShortestPath_DIJ(MGraph * G);
void Floyd(MGraph *G);
void Search(MGraph *G);
int LocateVex(MGraph *G,char* v);
2.各模块的伪码算法
void print(MGraph *G)
{
int v,w,t=0;
for(v=0;v
for(w=0;w
{ if(G->arcs[v][w].adj==INFINITY)
printf("∞ ");
else printf("%-7d",G->arcs[v][w].adj);
t++;
if(t%G->vexnum==0)
printf("\n");
}
}
3.函数调用关系
4.调试分析
调试中遇到的问题及对问题的解决方法
首先遇到问题是:库函数的调用,因为本程序调用很多系统库函数,所以在使用时常出错,有很多错从未见过,只能通过学习系统函数的是用来解决。还有就是对每位C或C++编程者来说最难用最灵活的指针了,虽然此程序用的不是很多但难免也会出错,这样的错误有时在编译时也发现不了,甚至是在用行时,也是是有是无,很难捉摸,这就要求我们,树立掌握指针的使用,在申明时记得初始化,至少应该是NULL,在运行时要注意,指针的越位和指针的悬挂等,面对如此难的问题,必须细心认真,和用一些习惯操作(防止意外发生)。算法的时间复杂度和空间复杂度:
此算法的空间复杂度是:200KB,
此算法的时间复杂度是:O(n4)。
5.测试结果
程序运行主界面如图5.1所示
图5.1 程序初始界面输入1后浏览校园全景如图5.2所示
图5.2浏览全景界面
图5.3查看游览路线界面输入3后运行界面如图5.4所示
图5.4两个景点间的最短距离
图5.5 查询景点界面
6.源程序(带注释)
#define INFINITY 10000 /*无穷大*/
#define MAX_VERTEX_NUM 40
#define MAX 40
#include
#include
#include
#include
typedef struct ArCell
{
int adj; //路径长度
}ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
typedef struct //图中顶点表示主要景点,存放景点的编号、名称、简介等信息,
{
char name[30];
int num;
char introduction[100];//简介
}infotype;
typedef struct
{
infotype vexs[MAX_VERTEX_NUM];
AdjMatrix arcs;
int vexnum,arcnum;
}MGraph;
MGraph b;
void cmd(void);