> # ♻️ 资源
> **大小:** 307KB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100013215**](https://www.yuque.com/sxbn/ks/100013215)
> **➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/88247349**](https://download.csdn.net/download/s1t16/88247349)
> **注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!**
# 基于C语言的校园导航系统
# 1.设计思想
利用迪杰斯特拉求单源最短路算法,设计出郑州升达经贸管理学院的校园导航,求出学校一个景点到另一个景点的最短距离及路线。
# 2.系统功能
将校园设计为平面图,将学校各代表景点构成一个抽象的无向带权图,顶点为景点,边的权值代表了景点间路径的长度。设计出能够帮助人们快速找到从一个景点到达另一景点的最短路径及路线;以及能够显示任意景点信息的程序。
将学校各代表景点信息及名称运用结构体进行存储,各景点之间的权值存入二维数组map[ ]中,查询景点信息直接运用printf输出函数%s输出存储好的信息;利用迪杰斯特拉算法求出单源最短路,及输出路径。
**主要功能**:
- 遍历所有景点
- 输出任意景点信息
- 输出任意两景点的最短路径
- 输入错误可重新输入功能
- 能返回上一界面功能
- 输出学校简介、制作人页面
- 可以正常结束程序
# 3.总体设计
**功能模块**
通过主界面选择是进入导航系统、查看学校简介、查看制作人还是退出程序;导航系统要能实现遍历所有景点、查询任意景点信息、查询任意两景点间最短路径及返回至主界面功能。
![image.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1692838414370-d41b5250-704c-47ee-a0c6-9d0603e74646.png#averageHue=%23f9f9f8&clientId=u64529da5-4ff8-4&from=paste&height=361&id=u3bd734be&originHeight=648&originWidth=925&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=189427&status=done&style=none&taskId=u73a29eff-a4fc-4ff5-9830-47b3bc1239f&title=&width=515)
# 4.详细设计
## 4.1 详细的设计思路
- 进入导航系统,遍历所有景点及查询两景点间的最短路径都是通过迪杰斯特拉求单源最短路算法来实现,将各景点间的权值存入二维数组map[ ]中,通过迪杰斯特拉算法,每次找距离开始点最近的点,在通过这个点去更新别的边权值,同时将更新的点存储,放入栈中输出即为到终点所走路径。
- 查询所有景点信息是先将景点信息存储然后输出,景点信息是利用string.h头文件中的strcpy( )函数将各景点名称及信息存入到结构体中。查询那个输出对应下标存储的字符串。
- 返回主界面直接调用函数。
## 4.2 算法流程图
![image.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1692838454539-1dca1abc-0846-4ef3-aef8-dc74fb31efee.png#averageHue=%23fafafa&clientId=u64529da5-4ff8-4&from=paste&height=617&id=QSWG4&originHeight=771&originWidth=756&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=75623&status=done&style=none&taskId=ua6331e7f-bd90-4590-9570-93f9d162bd9&title=&width=604.8)
# 5.编码
## 5.1 数据结构定义
定义结构体顺序存储景点名称及景点信息。
```cpp
struct A //定义结构体存储景点信息
{
char name[100];
char jieshao[800];
}q[100];
```
定义二维数组存储建立无向带权图。
```cpp
int map[110][110];
for(i=1;i<=28;i++)
for(j=1;j<=28;j++)
{
if(i==j)
map[i][j]=0;
else
map[i][j]=inf;
}
```
定义数组作为栈顺序结构存储所走过的路径。
```cpp
int p[110],l[110];
i=1;
while(p[v]!=v0) //将路线存入栈中,正序输出
{
l[i++]=p[v];
v=p[v];
}
```
## 5.2 功能函数设计
- void cuntu() 初始化存图函数
- void zhujiemian() 输出欢迎界面函数
- void daohanglan() 主界面函数
- void kaishidaohang() 开始导航函数
- void liebiao() 景点列表函数
- int chaxunfangshi(int x) 查询方式函数
- int bianhao(char s[]) 查询景点下标函数
- void Dijkstra(int v0,int s) 迪杰斯特拉求最短路径函数
## 5.3 函数流程图
![image.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1692838539306-d0517f5c-a5ee-40bb-8144-4a9366314358.png#averageHue=%23f6f6f6&clientId=u64529da5-4ff8-4&from=paste&height=576&id=u9bb5d461&originHeight=720&originWidth=301&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=102627&status=done&style=none&taskId=u87d71ad4-e7ef-458f-abe3-2f04191d84b&title=&width=240.8)
```cpp
void Dijkstra(int v0,int s) //迪杰斯特拉求最短路径,并输出路线
{
int min,i,j,u,v;
int p[110],l[110];
memset(p,-1,sizeof(p));
memset(l,0,sizeof(l));
memset(book,0,sizeof(book));
for(i=1;i<=26;i++)
{
dis[i]=map[v0][i];
if(dis[i]<inf) //v0能直接到达,即上一站点为v0
p[i]=v0;
}
book[v0]=1;
for(i=1;i<26;i++)
{
min=inf;
for(j=1;j<=26;j++) //每次找出距离v0最近点
{
if(book[j]==0&&dis[j]<min)
{
min=dis[j];
u=j;
}
}
book[u]=1; //标记该点
for(v=1;v<=26;v++)
{
if(book[v]==0&&dis[v]>dis[u]+map[u][v]) //通过最近点更新其他边
{
p[v]=u; //存储更新的边,即为路线
dis[v]=dis[u]+map[u][v];
}
}
}
v=s;
i=1;
while(p[v]!=v0) //将路线存入栈中,正序输出
{
l[i++]=p[v];
v=p[v];
}
printf("\n");
u=i-1;
printf("路线为:\n");
printf("%s--->",q[v0].name);
for(i=u;i>=1;i--)
printf("%s--->",q[l[i]].name);
printf("%s\n",q[s].name);
printf("最短路径长度为:%d 米\n",dis[s]);
}
```
# 6.程序运行图
**开始界面**
![image.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1692838577379-721b1130-b30e-4d6d-8f1e-94b7defa8357.png#averageHue=%230f0f0f&clientId=u64529da5-4ff8-4&from=paste&height=285&id=u48a10f02&originHeight=356&originWidth=1054&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=112994&status=done&style=none&taskId=u1880678b-ad4d-43a6-9ca5-564d0a127cc&title=&width=843.2)
**主界面**
![image.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1692838675574-79985962-772a-4c6c-b26a-c41cb8534933.png#averageHue=%23101010&clientId=u64529da5-4ff8-4&from=paste&height=360&id=u51ceb8d3&originHeight=450&originWidth=1103&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=147492&status=done&style=none&taskId=u02bbe926-7757-4659-8935-3219981d4fb&title=&width=882.4)
**运行界面1**
![image.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1692839026035-6d3128a3-622e-4653-bfbe-408501376f1c.png#averageHue=%23121212&clientId=u64529da5-4ff8-4&from=paste&height=333&id=u0a691551&originHeight=416&originWidth=1106&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=100774&status=done&style=none&taskId=u2d89e394-061d-4f15-90b5-6cfa2a237fe&title=&width=884.8)
**运行界面2**
![image.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1692839041829-cde152f8-9bf5-441b-879f-2a4fbf940c12.png#averageHue=%230f0e0e&clientId=u64529da5-4ff8-4&from=paste&height=466&id=u6abaa75e&originHeight=583&originWidth=1106&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=284130&status=done&style=none&taskId=uee0b3e34-859f-4b6c-bcaf-dd15ab381c9&title=&width=884.8)
没有合适的资源?快使用搜索试试~ 我知道了~
基于C语言实现的(控制台)校园导航系统【100013215】
共4个文件
license:1个
md:1个
doc:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 186 浏览量
2023-08-24
09:05:49
上传
评论 1
收藏 308KB ZIP 举报
温馨提示
https://www.yuque.com/sxbn/ks/100013215 将校园设计为平面图,将学校各代表景点构成一个抽象的无向带权图,顶点为景点,边的权值代表了景点间路径的长度。设计出能够帮助人们快速找到从一个景点到达另一景点的最短路径及路线;以及能够显示任意景点信息的程序。 将学校各代表景点信息及名称运用结构体进行存储,各景点之间的权值存入二维数组map[ ]中,查询景点信息直接运用printf输出函数%s输出存储好的信息;利用迪杰斯特拉算法求出单源最短路,及输出路径。 主要功能:遍历所有景点、输出任意景点信息、输出任意两景点的最短路径、入错误可重新输入功能、能返回上一界面功能、输出学校简介、制作人页面、可以正常结束程序。
资源推荐
资源详情
资源评论
收起资源包目录
100013215-基于C语言实现的(控制台)校园导航系统.zip (4个子文件)
campus_navigation
LICENSE 1KB
校园导航.cpp 17KB
校园导航系统.doc 457KB
README.md 8KB
共 4 条
- 1
资源评论
- 2301_768318172024-01-19资源有很好的参考价值,总算找到了自己需要的资源啦。
神仙别闹
- 粉丝: 2674
- 资源: 7640
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功