- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于C語言的数字校园问题
课程设计报告
报告名称:基于C语言的数字校园问题
姓名:
学号:
【摘要】
本文利用C语言,设计了一个可供游人查询校园内道路选择的系统,可以查询查询图中任意两个地点间的所有路径,并求出最短路径,同时增加、删除、更新有关地点和道路的信息。通过模拟得到测试结果。
关键词:数字校园、最短路径
一、设计目标
事实上,如果是初来乍到的人到电子科大来,难免会遇到迷路或者不知道走哪条路最近的问题。本设计就是为了达到给他们提供这样信息的目的,设计一个方便查询各地点路径的系统。即设计一个简易的数字校园系统,实现道路的选择。
二、设计要求
设计一个系统,要求完成以下功能:
1、查询各地点的相关信息
2、查询图中任意两个地点间的最短路径。
3、查询图中任意两个地点间的所有路径。
4、增加、删除、更新有关地点和道路的信息。
为了达到这些功能,我们可以将宿舍楼,教学楼,主楼,图书馆,食堂,超市,等等作为节点,各节点之间有道路相连,每条道路有长度,则问题转化为最优路线规划问题。因为在学校里面,人流量不算很多,车流量也可以得到控制,行人的出行基本不受干扰,则可以忽略人流量的问题。则我们需要做的工作是:
1、输出顶点信息:将校园内各位置输出。
2、输出边的信息:将校园内每两个位置(若两个位置之间有直接路径)的距离输出。
3、修改:修改两个位置(若两个位置之间有直接路径)的距离,并重新输出每两个位置(若两个位置之间有直接路径)的距离。
4、求最短路径:输出给定两点之间的最短路径的长度及途径的地点或输出任意一点与其它各点的最短路径。
5、删除:删除任意一条边。
6、插入:插入任意一条边。
三、程序功能
1、查询地点的信息
2、查询任意两地点之间的最短路径及路径长度。
3、查询任意两地点之间的所有路线。
4、在已有的校园导游图中添加新的地点及该地点到其他景点的路径长度。
5、在已有的校园导游图中删除已有的地点及以该地点为端点的路径。
6、修改已有校园导游图中的任意一个地点的名称和地点信息或任意一条路径的长度。
7、重新创建一个新的学校的导游图。
四、系统设计
1、系统总图
图1
该程序运用数据结构中的图的邻接表的存储方式用顶点来存储地点的名称和地点信息等用边来存储路径的长度等信息。之后以有向图的邻接矩阵的方式用Dijkstra算法来求图的最短路径问题以及图的遍历来求两点间的所有路径问题。最后用图的添加、删除、修改等基本操作完成对校园导游图的修改和重新创建。
2、程序设计
#include stdio.h
#include stdio.h
#include malloc.h
#include stdlib.h
#define Max 20000
typedef struct ArcCell{
int adj; /* 相邻接的地点之间的路程 */
}ArcCell; /* 定义边的类型 */
typedef struct VertexType{
int number; /* 地点编号 */
char sight[100]; /* 地点名称 */
char description[1000]; /* 地点描述 */
}VertexType; /* 定义顶点的类型 */
typedef struct{
VertexType vex[20]; /* 图中的顶点即为地点 */
ArcCell arcs[20][20]; /* 图中的边即为地点间的距离 */
int vexnum,arcnum; /* 顶点数边数 */
}MGraph; /* 定义图的类型 */
MGraph G; /* 把图定义为全局变量 */
char nameofschool[100];
int NUM=9;
int P[20][20]; /* */
int p[20];/*全局数组用来存放路径上的各顶点*/
int visited[20];/*全局数组用来记录各顶点被访问的情况*/
int a=0;/*全局变量用来记录每对顶点之间的所有路径的条数*/
long int D[20]; /* 辅助变量存储最短路径长度 */
int x[20]={0};
void CreateUDN(int v,int a); /* 造图函数 */
void narrate(); /*说明函数*/
void ShortestPath(int num); /*最短路径函数*/
void output(int sight1,int sight2); /*输出函数
文档评论(0)