数据结构实习报告西安旅游查询系统汉源代码Word下载.docx

上传人:b****5 文档编号:16146811 上传时间:2022-11-20 格式:DOCX 页数:45 大小:458.74KB
下载 相关 举报
数据结构实习报告西安旅游查询系统汉源代码Word下载.docx_第1页
第1页 / 共45页
数据结构实习报告西安旅游查询系统汉源代码Word下载.docx_第2页
第2页 / 共45页
数据结构实习报告西安旅游查询系统汉源代码Word下载.docx_第3页
第3页 / 共45页
数据结构实习报告西安旅游查询系统汉源代码Word下载.docx_第4页
第4页 / 共45页
数据结构实习报告西安旅游查询系统汉源代码Word下载.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

数据结构实习报告西安旅游查询系统汉源代码Word下载.docx

《数据结构实习报告西安旅游查询系统汉源代码Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构实习报告西安旅游查询系统汉源代码Word下载.docx(45页珍藏版)》请在冰豆网上搜索。

数据结构实习报告西安旅游查询系统汉源代码Word下载.docx

3)任意两个地点之间的所有简单路径。

4、增加新地点和路线、撤销旧地点和路线。

二、实验内容

1.旅游景点平面图(选取具有代表性的几个地点,用邻接表存储图的信息,用文件存储景点相关信息)

2.查询相关景点的描述信息,查看景点简介

3.新增或更改景点描述信息(用不同文件存储不同景点描述信息及景点简介)

4.创建或新增加景点信息及其文件(用文件存储景点间路径及其路径长度)

5.确定一个景点,由该景点出发到其他所有可到达景点的最优路径(中转次数最少)6.查询任意两景点间的最优路径{中转次数最少最少)

7.查询任意两景点间的最短路径

三、需求分析

这个程序功能比较简单,用户打开应用后可实现操作以下功能:

1.输出景点平面图;

2.查询有关景点的简介;

3.创建景点描述信息文件;

4.查询定点到其他所有景点间的最优路径;

5.查询两景点间的最优路径;

6.查询两景点间的最短路径;

7.创建景点及其路径关系的文件。

对于1而言,仅是输出文字信息。

功能2和3,用到了文件的存储与读取,对每个景点均用不同的文件来存储,这样每个景点的描述信息便不受存储容量大小的限制。

同样,功能7,用到的还是文件的存储与读取,同样可以增加或删除景点信息,存取信息相对都比较方便。

4,5,6这三个功能,说来虽是目标不同,但其编写思想却不尽相同。

四、概要设计

数据结构说明

程序中定义的数据类型——结构体(各个成员的作用)

typedefstructArcNode

{

intadjvex;

//所在数组中位置

AdjTypeadj;

//边的权值

OtherInfoinfo;

//边的其他类型

structArcNode*nextarc;

//下一个邻接点

}ArcNode;

typedefstructVertexNode

VertexDatavertexdata[M];

//顶点数据

charfilename[LEN];

//顶点的文件名

ArcNode*firstarc;

//顶点的第一个邻接点

}VertexNode;

typedefstruct

VertexNodevertex[MAX_VERTEX_NUM];

//顶点数组信息

intvernum,arcnum;

//顶点数边数

GraphKindkind;

//图的种类

}AdjList;

---------对的参数-------------

typedefstructQnode

intdata;

structQnode*next;

}LinkQueueNode;

LinkQueueNode*rear;

LinkQueueNode*front;

}LinkQueue;

------栈的参数-----------

typedefstructnode

structnode*next;

}LinkList;

五、详细设计及运行结果

1.各模块流程图,

函数间相互调用关系图:

Print_Scenic(AdjList*G)查询景点描述

建立景点信息(简介)voidCreat_Scenic(AdjList*G)

//voidAll_Good()一点到其他各点最佳路径(中专次数最少)

voidBreadth_first_Search(AdjList*G,intv1,intpre[M])广度优先

Search_Good()两景点间的最优路径

Shortest_Path()两景点间的最短路径

voidShortest_Path_DIJ(AdjList*G,intv1,intpre[MAX_VERTEX_NUM])

2.程序设计过程及编码

//-----------------------------------------景点描述

voidPrint_Scenic(AdjList*G)

FILE*fp;

charstr[MAX],v[M];

intm;

printf("

请输入所要查询的景点名称:

"

);

flushall();

gets(v);

m=LocateVex(G,v);

strcpy(filename,G->

vertex[m].filename);

fp=fopen(filename,"

rt"

if(fp==NULL)

{

printf("

\n文件不存在"

getch();

//system("

cls"

}

while(!

feof(fp))

fscanf(fp,"

%s"

str);

puts(str);

}

}

//-----------------------------------------建立景点信息(简介)

voidCreat_Scenic(AdjList*G)

charname[M],str[MAX],m;

inti;

\n请输入要描述的景点名称:

gets(name);

i=LocateVex(G,name);

vertex[i].filename);

\n是否重新介绍(yorn):

scanf("

%c"

&

m);

if(m=='

y'

||m=='

Y'

fp=fopen(filename,"

wt"

else

a+"

if(fp!

=NULL)

请输入关于%s的描述信息\n\n"

name);

system("

strcpy(G->

vertex[i].filename,filename);

flushall();

gets(str);

fprintf(fp,"

\n%s"

fclose(fp);

\n按任意键继续"

getch();

}

//----------------一点到其他各点最佳路径(中专次数最少)

voidAll_Good()

AdjList*G;

charv1[M];

inti,j=1;

intpre[M];

G=(AdjList*)malloc(sizeof(AdjList));

G=Creat_Link();

\n起始点到其他各点的最佳路径\n请输入要搜索的起始景点名称:

"

v1);

i=LocateVex(G,v1);

while(i==-1)

起始点错误,按任意键重新输入"

gets(v1);

i=LocateVex(G,v1);

}

Breadth_first_Search(G,i,pre);

for(j=1;

j<

G->

vernum;

j++)

if(j!

=i)

Print_Path(G,i,j,pre);

\n"

//--------------------------两点间最佳路径(中专次数最少)

voidSearch_Good()

charv1[M],v2[M];

inti,j;

请输入要搜索的两个景点名称:

v2);

j=LocateVex(G,v2);

while(i==-1||j==-1)

起始点或终点错误错误,按任意键重新输入"

请输入起点:

请输入终点:

gets(v2);

j=LocateVex(G,v2);

Print_Path(G,i,j,pre);

//------------------------------------两点间最短路径

voidShortest_Path()

intpre[MAX_VERTEX_NUM];

//将文件读出并存入邻接链表中

gets(v1);

gets(v2);

;

i=LocateVex(G,v1);

//得到起,终点下表

j=LocateVex(G,v2);

Shortest_Path_DIJ(G,i,pre);

Print_Path(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1