校园导航系统课程设计报告
- 格式:doc
- 大小:628.00 KB
- 文档页数:16
题目石铁大校园导航系统
学院信息科学与技术学院
专业计算机科学与技术
学号 20112840 学生姓名刘铸辉
指导教师姓名陈娜
日期:2013-8-31
一.题目与要求
实习一
校园导游程序
[ 问题描述]
用无向网表示学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景
点介绍、游览路径等问题。游客通过终端可询问:
(1 )从某一景点到另一景点的最短路径。
(2 )游客从公园进入,选取一条最佳路线。
(3 )使游客可以不重复地浏览各景点,最后回到出口(出口就在入口旁边)。
[ 基本要求]
(1 )将导游图看作一张带权无向图,顶点表示公园的各个景点,边表示各景点之间的道路,边上的权值表示距离.为此图选择适当的数据结构。
(2 )把各种路径都显示给游客,由游客自己选择浏览路线。
(3 )画出景点分布图于屏幕上。
[ 实现提示]
(1 )构造一个无向图G 并用邻接矩阵来存储。
(2 )利用迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径用二维数组p[i][]
来记录,最短路径长度就用一维数组d[i] 存放;i 的范围:0 ~20 。
(3 )一维数组have[] 是用来记录最短路径出现顶点的顺序。
(4 )根据起点和终点输出最短路径和路径长度。
二.需求分析
本校园导航系统由C语言编写,主要掌握最短路径的实现方法,以及构造无向图G并用邻接矩阵来存储,掌握迪杰斯特拉算法来算最短路径。
1.输入的形式和输出的范围:
2.输出的形式:
3.程序所能到达的功能:
A.图中任意景点的相关信息查询
B.任意两个景点间的最短路径
C.任意两个景点间的所有路径
D.增加有关景点和道路的信息
E.删除更新有关景点和道路的信息
F.更新有关景点和道路的信息
G.显示全景
H.退出该系统
三.概要设计
(1)本程序包含了10个函数
①主函数main()
②显示操作菜单函数 menu()
③景点名称及其简介设置函数 picture(void)
④图中任意景点相关信息查询函数 checkscene(algraph g)
⑤图中任意两个景点间的最短路径 Dijkstra(algraph g)
⑥任意两个景点间的全部路径 alldistance(algraph g)
⑦增加有关景点和道路的信息 addscene(algraph g)
⑧删除有关景点和道路的信息 delscene(algraph g)
⑨更新有关景点和道路的信息 change(algraph g)
⑩显示全景 chang()
(2)各函数之间的关系
menu()
picture(void)
checkscene(algraph g)
Dijkstra(algraph g)
main() alldistance(algraph g)
addscene(algraph g)
delscene(algraph g)
change(algraph g)
chang()
四.详细设计
实现概要设计中定义的所有的数据类型,对每个操作给出伪代码,对主程序和其他模块也都需要写出伪代码算法。
(1)结点类型和指针类型
typedef struct {
int adj;
int *info;
}sceneinfo;
typedef struct adjlist{
int num;
char *sight;
char *description;
}adjlist;
typedef struct algraph
{
adjlist ver[MAXNUM];
sceneinfo arcs[MAXNUM][MAXNUM];
int vexnum,arcnum;
} algraph;
(2)图的基本操作
①主菜单
//主菜单
int menu(void)
{ int i;
printf("\n-------------------------欢迎来到莱震德瑞hui 校园导航系统!!-----------------------------------------------------\n");
printf("1.图中任意景点的相关信息查寻\n");
printf("2.任意两个景点间的最短路径\n");
printf("3.任意两个景点间的所有路径\n");
printf("4.增加有关景点和道路的信息\n");
printf("5.删除更新有关景点和道路的信息\n");
printf("6.更新有关景点和道路的信息\n");
printf("7.显示全景\n ");
printf("8.退出该系统\n ");
printf("---------------------------让辉哥带大家在石家庄铁道大学翱翔吧!!------------------------------------------------------\n");
printf("请输入你要进行的操作:");
scanf("%d",&i);
return(i);
}
②景点名称及其简介
void picture(void)
{ int i,j;
m.vexnum=11;
m.arcnum=16;
for(i=0;i m.ver[i].num=i; m.ver[0].sight="xiaomen";