C语言校园导游程序设计汇报
《应用程序设计
课程设计》报告
班级:
学号:
姓名:
指导教师:
成绩评定:
目录
题目:
设计一个校园导游程序,为来访的客人提供各种信息查询服务
一.需求分析:
此次课程设计的主要内容是校园导航,为来访的客人提供各种信息查询服务
③学校主要景点的分布④查询任意两个景点之间的最短路径。
⑴对于功能①的输入形式是没什么要求的,主要就是根据菜单的提示输入相应的数字选择相应的功能;对于功能②的输入形式的要求也比较简单,要查询某一景点的简介直接输入其对应的编号即可;对于功能③的输入形式的要求同功能①;对于功能④只需要输入起始景点和目的景点的编号即可。此程序在输入形式上都没什么特殊的要求只是一些简单的数字就可以了。
⑵功能①③就是输出由字符构成的一幅简易图,形式比较单一;景点的简介方面输出景点的简单信息就可以了;要查询最短路径的话输出的是从起始景点到目的地的最短路径中所途经的各个景点及距离。
⑶本程序所能达到的功能就是前面所提到的①—④中的功能。
二.概要设计:
抽象数据类型的定义:
ADT Graph{
数据对象 V:具有相同特性的数组元素的集合,称为顶点集。
数据关系 R:
R={VR}
VR={|v,w∈V且P(v,w), 表示从v到w的弧,谓词P(v,w)定义了弧的意义或信息}
基本操作P:
CreateGraph(&G,V,VR);
初始条件:V是图的顶点集,VR是图中弧的集合。
操作结果:按V和VR的定义构造图G。
DistroyGraph(&G)
初始条件:图G存在
操作结果:销毁图G
LocateVex(G,u);
初始条件:图G存在,u和G中顶点有相同的特征。
操作结果:若存在顶点u,则返回该顶点在图中的位置;否则返回其他信息。
GetVex(G,u);
初始条件:图G存在,u是图中的顶点。
操作结果:返回u的值。
InsertVex(&G,v);
初始条件 :图G存在,v和图中的顶点有相同的特性。
操作结果:在图G中新增顶点v.
InsertArc(&G,v,w);
初始条件:图G存在,v和w是图中的顶点。
操作结果:在图G中增添弧,若是无向图,还增添弧。
}ADT Graph
主程序流程(各函数之间的调用关系):
Main();//主函数
Initview();//景点信息的初始化
InitLength();//各个景点之间距离的初始化
log();//登录时的头部
showmenu();//登录后的菜单
browser();//全景平面图的浏览
browse_view_info();//景点简介的查询
browse_view_distribute();//主要景点的分布
onetoone();//查询任意两个景点之间的最短路径
调用关系如下:(函数内部没什么调用关系)
三.详细设计:
⑴图的结构:
typedef struct view//点的结构
{
int no;//景点编号
char name[100];//景点名称
char briefinfo[1000];//景点简介
}view;
typedef struct edge//边的结构
{
int length;//两个景点之间的距离
char direction[4];//方向
}edge;
⑵伪码算法:
Main()
{path=(edge **)malloc(MAX*sizeof(edge));
for(v=0;v
path[v]=(edge *)malloc(1000*sizeof(edge));
TD=(view *)malloc(MAX*sizeof(view));
D=(DistancMatrix )malloc(MAX*sizeof(DistancMatrix));
P=(PathMatrix )malloc(MAX*sizeof(PathMatrix));
for(v=0;v
Initview(TD);InitLength(path);//初始化
system("mode con: cols=140 lines=130");
log();while(1){
showmenu();//菜单
printf("请选择:\n");
scanf("%d",&k);
switch(k){
case 1: browser();system("cls");break;
case 2: browse_view_info(TD