没有合适的资源?快使用搜索试试~ 我知道了~
关于校园导游咨询的c语言程序,这是我课程设计的时候做的,感觉还行吧。要是对你有用就看看
资源推荐
资源详情
资源评论
长 春 大 学 课程设计纸
一、设计题目 校园导游咨询
二、需求分析
(1)设计你的学校的校园平面图,所含景点不少于 10 个。以图中顶点表示
学校各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等
相关信息。
(2)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的
一条最短的简单路径。
(3)为来访客人提供图中任意景点相关信息的查询。
(4)界面美观,方便使用。通过主菜单操作。
三、总体设计
3.1 设计思路
设计一个校园导游系统,应用到数据结构中学到的图的建立,各景点应存在一
个图中,而计算不重复路线的时候需要应用到弗洛伊德图的遍历。计算俩景点间最短
路径应用到最小生成树的遍历。
景点数据装在一个图中,能够输入图的顶点和边的信息,并存储到相应存储结
构中然后输出图的邻接矩阵。
邻接矩阵是表示顶点之间相邻关系。
生成树是指:如果 G 是一个图,这个图的生成子图 T 是树,那么可以说 T 为
G 的生成树。一个图有生成树当且仅当这个图连通。可通过求该网络的最小生成树
达到求解线路或总代价最小的最佳方案。
弗洛伊德算法是通过一个图的权值矩阵求出它的每两点间的最短路径矩阵。
它是从图的带权邻接矩 A=[a(i,j)] n×n 开始,递归地进行 n 次更新,即由矩
阵 D(0)=A,按一个公式,构造出矩阵 D(1) ;又用同样地公式由 D(1)构造出
D(2);……;最后又用同样的公式由 D(n-1)构造出矩阵 D(n)。矩阵 D(n)的 i 行 j
列元素便是 i 号顶点到 j 号顶点的最短路径长度,称 D(n)为图的距离矩阵,同时还
可引入一个后继节点矩阵 path 来记录两点间的最短路径。
3、2 系统功能设计
本系统除了有主程序模块外还有 3 个子功能菜单。3 个子功能的设计描述如下。
(1)学校景点介绍
学校景点介绍由函数 introduce( )实现。当用户选择该功能,系统即能输出学
共 13 页 第 1 页
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
长 春 大 学 课程设计纸
校全部景点的信息:包括景点编号、景点名称及景点简介。
(2)查看两景点间最短路径
查看两景点间最短路径由函数 shortestdistance( )实现。该功能采用弗洛伊
德(Floyd)算法实现。当用户选择该功能,系统能根据用户输入的起始景点及目
的地景点编号,查询任意两个景点之间的最短路径线路及距离。
(3)退出
即退出校园导游系统,由 exit(0)函数实现。
3、3 模块间调用关系
四、详细设计
4、1 数据存储
(1) 无向带权图(无向网)的定义
int i,j;
char k;
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
{
cost[i][j]=INT_MAX;
}
cost[1][3]=cost[3][1]=2;
cost[2][3]=cost[3][2]=1;
cost[2][4]=cost[4][2]=2;
cost[3][10]=cost[10][3]=4;
cost[1][10]=cost[10][1]=4;
cost[2][10]=cost[10][2]=4;
cost[4][10]=cost[10][4]=4;
cost[1][4]=cost[4][1]=5;
cost[4][5]=cost[5][4]=3;
共 13 页 第 2 页
主程序模块
(界面)
景点最短路径
查询
景点信息查询 退出
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
长 春 大 学 课程设计纸
cost[4][9]=cost[9][4]=4;
cost[5][9]=cost[9][5]=8;
cost[5][7]=cost[7][5]=4;
cost[5][6]=cost[6][5]=2;
cost[6][7]=cost[7][6]=1;
cost[7][8]=cost[8][7]=3;
cost[8][6]=cost[6][8]=4;
cost[1][1]=cost[2][2]=cost[3][3]=cost[4][4]=cost[5][5]=0;
cost[6][6]=cost[7][7]=cost[8][8]=cost[9][9]=cost[10][10]=0;
(2)全局变量定义
#define INT_MAX 10000
#define n 10
int cost[n][n]; /* 边的值*/
int shortest[n][n]; /* 两点间的最短距离*/
int path[n][n]; /* 经过的景点*/
4、2 主程序模块
用于作为界面,显示校园景点和概况描述,提供各子模块的连接 如上图所示
程序设计
while(1)
{
printf("----------------欢迎使用中北大学导游系统!----------------\n");
printf("1.景点信息查询………请按 i (introduc)键\n");
printf("2.景点最短路径查询…请按 s (shortestdistance)键\n");
printf("3.退出系统……………请按 e (exit)键\n");
printf("学校景点列表:\n");
printf("1:学校南门 ");
printf("2:学生公寓 ");
printf("3:柏林园 ");
printf("4:餐厅 ");
printf("5:体育馆\n");
printf("6:图书馆 ");
printf("7:重点实验室 ");
printf("8:主楼 ");
printf("9:科艺苑 ");
printf("10:国防生公寓\n");
共 13 页 第 3 页
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
剩余12页未读,继续阅读
资源评论
quaws
- 粉丝: 4
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功