一:设计目的
1.进一步掌握图的存储,建立和遍历。
2.掌握弗洛伊德算法和迪杰斯特拉算法完成最短路径的有关问题。 3.文件的读写操作的练习与使用。 4.提供校园导游的实用地图。
二. 设计内容
1.以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。 2.为来访客人提供图中任意景点相关信息的查询。
3.为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
三.概要设计
2.各个模块详细的功能描述。
1.CreateGraph()---从文件中读出景点的信息,并创建无向图。 2.graph()---显示校园平面图,方便游客进行查询。 3.find()---查询任意景点的详细信息。
4.BrowsePath()---迪杰斯特拉算法,用于实现目前所在点到任意一景点的最短路径。
5.ShortestPath()---弗洛伊德算法,用于实现任意两景点间最短路径。 6.main_menu(),secord_menu()---用于实现菜单的显示并接受输入选择。
四.详细设计
1.功能函数的调用关系图
2.各功能函数的数据流程图
3.重点设计及编码
.查询功能的实现。 while(ch=G.vexnum) { printf("\n\t你所输入的景点编号不存在!\n"); printf("请重新输入:"); scanf("%d",&ch); } for(i=0;i
.从文件中读取信息并储存到图的结构体数组中。 for(i=0;i
。弗洛伊德算法的实现。 for(u=0;u
for(v=0;v
system("color 3d");
printf("\n请输入出发点和目的地的编号: "); scanf("%d%d",&k,&j);
while(kG.vexnum||jG.vexnum) { printf("\n\n 你输入的景点编号不存在~\n"); printf("\n请重新输入出发点和目的地编号:\n\n"); scanf("%d%d",&k,&j); printf("\n\n"); }
printf("\n\t%s",G.vexs[k].name); for(u=0;u%s",G.vexs[u].name); printf("--->%s",G.vexs[j].name); printf("\n\n\t总长为%d米\n\n\n",d[k][j]); printf("按任意健返回!");
五.测试数据及运行结果
1.正常测试数据和运行结果
2.异常测试数据及运行结果
六.调试情况,设计技巧及体会 1.改进方案
.未实现某一点到其余景点的所有路径,用哈密尔顿遍历即可实现。 .在登录时可实现游客登录和管理员登陆,管理员登陆中需要输入密码,并可对景点信息,
路径等进行修改。
2.体会
.应该加强对图的学习和使用,特别是对图的遍历及图的应用中最短路径及关键路径的部
分应加强理解与掌握。
.适当掌握课本外知识是很有必要的,例如哈密尔顿图的遍历。
.今后应该加强上机练习,在实践中提高自身编程能力和水平,同时掌握课本知识。 .对界面的设计应加强学习,例如颜色及屏幕大小的变化等。
七.参考文献
《数据结构案例精编》---清华大学出版社 《C Primer Plus》---人民邮电出版社
一:设计目的
1.进一步掌握图的存储,建立和遍历。
2.掌握弗洛伊德算法和迪杰斯特拉算法完成最短路径的有关问题。 3.文件的读写操作的练习与使用。 4.提供校园导游的实用地图。
二. 设计内容
1.以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。 2.为来访客人提供图中任意景点相关信息的查询。
3.为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
三.概要设计
2.各个模块详细的功能描述。
1.CreateGraph()---从文件中读出景点的信息,并创建无向图。 2.graph()---显示校园平面图,方便游客进行查询。 3.find()---查询任意景点的详细信息。
4.BrowsePath()---迪杰斯特拉算法,用于实现目前所在点到任意一景点的最短路径。
5.ShortestPath()---弗洛伊德算法,用于实现任意两景点间最短路径。 6.main_menu(),secord_menu()---用于实现菜单的显示并接受输入选择。
四.详细设计
1.功能函数的调用关系图
2.各功能函数的数据流程图
3.重点设计及编码
.查询功能的实现。 while(ch=G.vexnum) { printf("\n\t你所输入的景点编号不存在!\n"); printf("请重新输入:"); scanf("%d",&ch); } for(i=0;i
.从文件中读取信息并储存到图的结构体数组中。 for(i=0;i
。弗洛伊德算法的实现。 for(u=0;u
for(v=0;v
system("color 3d");
printf("\n请输入出发点和目的地的编号: "); scanf("%d%d",&k,&j);
while(kG.vexnum||jG.vexnum) { printf("\n\n 你输入的景点编号不存在~\n"); printf("\n请重新输入出发点和目的地编号:\n\n"); scanf("%d%d",&k,&j); printf("\n\n"); }
printf("\n\t%s",G.vexs[k].name); for(u=0;u%s",G.vexs[u].name); printf("--->%s",G.vexs[j].name); printf("\n\n\t总长为%d米\n\n\n",d[k][j]); printf("按任意健返回!");
五.测试数据及运行结果
1.正常测试数据和运行结果
2.异常测试数据及运行结果
六.调试情况,设计技巧及体会 1.改进方案
.未实现某一点到其余景点的所有路径,用哈密尔顿遍历即可实现。 .在登录时可实现游客登录和管理员登陆,管理员登陆中需要输入密码,并可对景点信息,
路径等进行修改。
2.体会
.应该加强对图的学习和使用,特别是对图的遍历及图的应用中最短路径及关键路径的部
分应加强理解与掌握。
.适当掌握课本外知识是很有必要的,例如哈密尔顿图的遍历。
.今后应该加强上机练习,在实践中提高自身编程能力和水平,同时掌握课本知识。 .对界面的设计应加强学习,例如颜色及屏幕大小的变化等。
七.参考文献
《数据结构案例精编》---清华大学出版社 《C Primer Plus》---人民邮电出版社