- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计(校园导游系统).doc
设计目的
设计一个学校的导游系统,方便游客游览我们学校。
二. 设计内容
为来访的客人提供各种信息查询服务
(3) IniGraph:初始化学校地图,给出景点的详细信息,以及景点之间的距离。
(4) Shortestpath_dij:迪杰斯特拉算法,用于求两个景点之间的最短路径。
(5) serch:供游客查询单个景点的详细信息
(6) prim:普利姆算法,用于得出最佳布网方案。
(7) map:无参函数,打印学校的全景图。
(8) menu:游客的输入界面。
(9) print:打印相应的游览路线。
(10) cmd:输入相应的选择进行不同的游览方式。
四.详细设计
1.功能函数的调用关系图
2.各功能函数的数据流程图
3.重点设计及编码
创建结构体,表示景点,成员为编号,名称,简介
typedef struct //图中顶点表示主要景点,存放景点的编号、名称、简介等信息,
{
char name[30];
int num;
char introduction[100];//简介
}infotype;
Prim算法:
void prim(MGraph *G)
{
FILE *fp;
fp=fopen(D:sight.txt,at+);
if(fp==NULL)
printf(fail to open!!\n);
else
{
int v,u,i,w,k,j,flag=1,p[10][10][10],D[10][10];
for(v=0;vG-vexnum;v++)
for(w=0;wG-vexnum;w++)
{
D[v][w]=G-arcs[v][w].adj;
for(u=0;uG-vexnum;u++)
p[v][w][u]=0;
if(D[v][w]INFINITY)
{
p[v][w][v]=1;p[v][w][w]=1;
}
}
for(u=0;uG-vexnum;u++)
for(v=0;vG-vexnum;v++)
for(w=0;wG-vexnum;w++)
if(D[v][u]+D[u][w]D[v][w])
{
D[v][w]=D[v][u]+D[u][w];
for(i=0;iG-vexnum;i++)
p[v][w][i]=p[v][u][i]||p[u][w][i];
}
while(flag)
{
printf(请输入出发点和目的地的编号:);
scanf(%d%d,k,j);
if(k0||kG-vexnum||j0||jG-vexnum)
{
printf(景点编号不存在!请重新输入出发点和目的地的编号:);
scanf(%d%d,k,j);
}
if(k=0kG-vexnumj=0jG-vexnum)
flag=0;
}
fprintf(fp,%s,G-vexs[k].name);
for(u=0;uG-vexnum;u++)
if(p[k][j][u]k!=uj!=u)
fprintf(fp,--%s,G-vexs[u].name);
fprintf(fp,--%s,G-vexs[j].name);
fprintf(fp, 总路线长%dm\n,D[k][j]);
}
fclose(fp);
}
迪杰斯特拉算法:
void ShortestPath_DIJ(MGraph * G)
{
FILE *fp;
fp=fopen(D:approach.txt,at+);
if(fp==NULL)
printf(Fail to open!!!!\n);
else
{
int v,w,i,min,t=0,x,flag=1,v0;
int final[20], D[20], p[20][20];
while(flag)
{
printf(请输入一个起始景点编号:);
scanf(%d,v0);
if(v00||v0G-vexnum)
{
printf(景点编号不存在!请重新输入景点编号:);
scanf(%d,v0);
}
if(v0=0v0G-vexnum)
flag=0;
}//endwhile
for(v=0;vG-vexnum;v++)
{
final[v]=0;
D[v]=G-arcs[v0][v].adj;
for(w=0;wG-vexnum;w++)
p[v][w]=0;
if(D[v]INFINITY)
{
p[v][v0]=1;p
文档评论(0)