一个基于 C 语言实现的校园导游控制台程序。项目以校园平面图为应用场景,将景点抽象为图的顶点,将道路抽象为带权边,通过邻接矩阵存储无向带权图,并使用 Dijkstra 算法完成任意两个景点之间的最短路径查询。
当前示例数据以安徽大学磬苑校区为背景,包含 10 个校园景点和 14 条双向路径。
本项目根据数据结构课程实验要求完成,核心任务如下:
- 设计校园平面图,景点数量不少于 8 个
- 使用图中顶点表示校园景点,保存景点名称和景点介绍
- 使用图中边表示校园道路,边权表示道路长度
- 将景点和道路信息保存到
graph.txt - 程序运行时从
graph.txt读取数据并创建图 - 提供景点信息查询功能
- 提供任意两个景点之间的最短路径查询功能
在此基础上,程序还实现了景点新增、景点信息修改和路径新增功能,并会将修改后的数据写回 graph.txt。
- 景点信息查询:查看校园景点列表,并查询指定景点的简介
- 问路查询:输入起点和终点,输出一条最短路径及其总距离
- 景点维护:新增景点或修改已有景点的名称与简介
- 路径维护:在两个不同景点之间新增一条双向路径
- 文件持久化:所有图数据统一保存在
graph.txt - 输入校验:对菜单编号、景点编号、路径长度等进行基础检查
| 项目 | 说明 |
|---|---|
| 开发语言 | C |
| 图类型 | 无向带权图 |
| 存储结构 | 邻接矩阵 |
| 最短路径算法 | Dijkstra |
| 数据文件 | graph.txt |
| 最大景点数 | 20,定义于 MaxVex |
- GCC、MinGW-w64 或其他 C 语言编译器
- 支持中文显示的终端环境
- 运行时需保证
graph.txt与可执行文件位于同一工作目录
gcc Graph_search.c -o Graph_search.exe
.\Graph_search.exegcc Graph_search.c -o Graph_search
./Graph_search程序启动后会显示如下菜单:
********校园导游系统********
1.查询景点信息
2.问路查询
3.增加一个景点及其相关信息
4.修改一个景点的相关信息
5.增加一条新的路径
6.退出
请选择需要的服务: (1-6)
常见使用流程:
- 选择
1,输入景点编号,查看景点名称和简介。 - 选择
2,依次输入当前位置和目的地编号,系统输出最短路径和最短距离。 - 选择
3,输入新景点名称和简介,新增景点信息。 - 选择
4,输入景点编号,并更新该景点的名称和简介。 - 选择
5,输入两个景点编号和路径长度,新增一条双向路径。 - 选择
6,退出系统。
问路查询功能以用户选择的起点为源点,调用 ShortestPath_DIJ 计算该点到其他所有景点的最短距离,并通过 path 数组回溯得到到达目标景点的路径。
该实现基于邻接矩阵,适合景点数量较少、边权非负的校园导游场景。