全国交通资讯模拟数据结构课程设计报告Word文档格式.docx

上传人:b****2 文档编号:4505112 上传时间:2023-05-03 格式:DOCX 页数:42 大小:233.69KB
下载 相关 举报
全国交通资讯模拟数据结构课程设计报告Word文档格式.docx_第1页
第1页 / 共42页
全国交通资讯模拟数据结构课程设计报告Word文档格式.docx_第2页
第2页 / 共42页
全国交通资讯模拟数据结构课程设计报告Word文档格式.docx_第3页
第3页 / 共42页
全国交通资讯模拟数据结构课程设计报告Word文档格式.docx_第4页
第4页 / 共42页
全国交通资讯模拟数据结构课程设计报告Word文档格式.docx_第5页
第5页 / 共42页
全国交通资讯模拟数据结构课程设计报告Word文档格式.docx_第6页
第6页 / 共42页
全国交通资讯模拟数据结构课程设计报告Word文档格式.docx_第7页
第7页 / 共42页
全国交通资讯模拟数据结构课程设计报告Word文档格式.docx_第8页
第8页 / 共42页
全国交通资讯模拟数据结构课程设计报告Word文档格式.docx_第9页
第9页 / 共42页
全国交通资讯模拟数据结构课程设计报告Word文档格式.docx_第10页
第10页 / 共42页
全国交通资讯模拟数据结构课程设计报告Word文档格式.docx_第11页
第11页 / 共42页
全国交通资讯模拟数据结构课程设计报告Word文档格式.docx_第12页
第12页 / 共42页
全国交通资讯模拟数据结构课程设计报告Word文档格式.docx_第13页
第13页 / 共42页
全国交通资讯模拟数据结构课程设计报告Word文档格式.docx_第14页
第14页 / 共42页
全国交通资讯模拟数据结构课程设计报告Word文档格式.docx_第15页
第15页 / 共42页
全国交通资讯模拟数据结构课程设计报告Word文档格式.docx_第16页
第16页 / 共42页
全国交通资讯模拟数据结构课程设计报告Word文档格式.docx_第17页
第17页 / 共42页
全国交通资讯模拟数据结构课程设计报告Word文档格式.docx_第18页
第18页 / 共42页
全国交通资讯模拟数据结构课程设计报告Word文档格式.docx_第19页
第19页 / 共42页
全国交通资讯模拟数据结构课程设计报告Word文档格式.docx_第20页
第20页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

全国交通资讯模拟数据结构课程设计报告Word文档格式.docx

《全国交通资讯模拟数据结构课程设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《全国交通资讯模拟数据结构课程设计报告Word文档格式.docx(42页珍藏版)》请在冰点文库上搜索。

全国交通资讯模拟数据结构课程设计报告Word文档格式.docx

全国交通咨询模拟系统由4个功能模块组成:

添加城市、删除程序、采用火车出行、采用飞机出行

下面给出功能模块图,如图3-1所示。

图3-1全国交通咨询模拟功能模块图

3.3主要函数调用关系图

(给出ADT基本操作的那些函数之间的函数调用关系图)

如图3-2所示。

图3-2系统函数调用关系图

3.4主界面设计

为了实现全国交通咨询模拟系统,需要设计一个含有多菜单项的主控菜单子程序,以系统中各个子项目的调用,为了方便用户使用本系统,本系统主控菜单的运行界面如图3-3所示。

4.详细设计

实现全国交通咨询模拟系统的开发,采用图结构类型存储城市的信息。

其中,各城市间的邻接关系用图的邻接矩阵类型存储;

城市信息用结构体数组存储,其中每个数组元素是一个结构体变量,包含时间和费用三个分量;

图的顶点的个数和边的个数由变量费用、时间大小表示,它们是整型数据。

4.1数据类型定义

数据存储:

有向图、邻接表

函数调用:

#include<

windows.h>

stdio.h>

crtdbg.h>

string.h>

#include<

iostream.h>

malloc.h>

//引用的文本件

#defineINF65535//定义一个最大数定为无穷值

#defineMAX13

typedefintcostAdj[MAX+1][MAX+1];

//图邻接矩阵从1开始记数

intPath[MAX+1][MAX+1];

into[13],h;

//图的定义

costAdjB,L;

voidpr(inti)//选择城市

voidpri()//输出城市

unDiGraph*CreateCostG()//构造带权(费用)图返回首地址G:

unDiGraph*CreateTimeG()//构造带权(时间)图返回首地址G:

unDiGraph*CreateFlyG()//飞机的相关信息

voidFloyed(unDiGraph*D,unDiGraph*M)//Floyed函数求任意两点的最短路径:

voidprn_pass(inti,intj)//为了求从i到j的最短路径,只需要调用如下的过程

voidtime()//求最少时间路径。

voidmoney()//求最少花费路径

voidadministrator()//管理员功能

voidmain()//main函数

4.2系统子程序详细设计

4.2.1求最小路径

VoidShortPath_DIJ(AMGraphG,intv0,PathMatrix&

P,ShortpathTable&

D)

For(v=0;

v<

G.vexnum;

++v)

Final[v]=FALSE;

D[v]=G.arce[v0][v];

For(w=0;

w<

G.vexnum;

++w)

P[v][w]=FALSE;

}

If(D[v]<

INFINITY)

{//如果有直接互通的两个顶点,直接将这个路径赋值到数组P[V].

P[v][v0]=TRUE;

P[v][v]=TRUE;

D[v0]=0;

final[v]=TRUE;

//*下面开始主循环,每次求得v0到某个v顶点的最短路径,同时刷新之前的最短路径。

*/

//对于除了v0之外的顶点(这个循环仅仅限制次数,i的值不用。

Min=INFINITY;

//假定初始的”最小值”为无穷大。

For(w=0;

{

If(!

final[w])//w定点在V-S中,及还未确定的顶点。

If(D[w]<

min)

v=w;

min=D[w];

//随着循环进行,依与v0的距离大小,从小到达取的顶点v,并标记进final。

Final[v]=TRUE;

//标记已经找到

w++)

{

//更新路径

If(!

final[w]&

&

(min+G.arcs[v][w]))

D[w]=min+G.arcs[v][w];

P[w]=P[w];

//把一行都给赋值

P[w][w]=TRUE;

4.2.2利用邻接表输出结果

//邻接表中表对应的链表的特点。

TypedefstructENode

Intivex;

//该边所指向的顶点的位置。

StructENode*next_edge;

//指向下一条弧的指针。

}ENode,*PENode;

//邻接表中表的顶点

TypedefstructVNode

Chardata;

//顶点信息

ENode*first_edge;

//指向第一条依附该顶点的弧

}VNode;

//邻接表

TypedefstructLGraph

Intvexnum;

//图的顶点数目

Intedgnum;

//图的边的数目

VNodevexs[max];

}LGraph

5.编码实现

详见:

源程序清单。

6.系统测试

本程序在DOS操作系统下运行

(1查看城市

(2选择最短时间路线的两种方式

(3选择以火车的方式出行

(4坐火车从到的最短时间路线与所花费的金额

(5从到天津的最少花费与时间

(6管理员成语

(7增添新城市

(8增添到的火车费用

(9增添到的火车时间

(10坐火车从到的最短时间

(11采用飞机从到

7.结果分析

1.构造带权图CreateFlyGCreateCostG和CreateTimeG:

T(MAX)=O((MAX)2)

2.Floyed函数Floyed:

T(n)=O(n2+n3)

3.显示路径函数prn_pass:

T(n)=O(n)

4.本程序的空间复杂度均为S(n)=(n2);

即存放n2个节点数据辅助空间。

8.学习体会

通过此次课程设计大大加深了我对数据结构这门课程的理解,而且尤其对图这章的理解,可以说有一个大的进步。

学习能力也大大提高。

当然通过此次课设也为我以后的道路奠定了一定的基础,认识到了基础的重要。

让我对计算机有了更深的认识,对他产生了更加浓厚的兴趣。

9.源程序清单

#defineMAX23

staticintc_number=13;

staticintk=0;

staticintv=0,z=0,r=0,t=0;

typedefstructjl

intc_cost;

intc_time;

intf_cost;

intf_time;

}jl;

jlm[20],x[20],n[20];

typedefstructc_edit

chara[10];

}c_edit;

c_editadd[10];

intpr(inti,intj)

inth=0;

if(j==0){

h=i;

elseif(j==1)

cin>

>

add[i].a;

switch(h)//运用switch语句。

{

case(0):

cout<

<

"

;

break;

case

(1):

cout<

"

case

(2):

break;

case(3):

case(4):

case(5):

case(6):

case(7):

case(8):

case(9):

case(10):

case(11):

case(12):

天津"

case(13):

default:

cout<

add[i-13].a;

}

return1;

//输出城市列表及相应代码

voidpri()

inti;

城市及其代码"

endl<

endl;

*********************************************************"

for(i=1;

i<

=c_number;

i++)

."

pr(i,0);

}

//构造带权(费用)图返回首地址G:

unDiGraph*CreateCostG(into)//火车的花费的存贮和编辑功能

unDiGraph*G;

inti,j;

inta=0,b=0,f,h=1;

if(!

(G=(unDiGraph*)malloc(sizeof(unDiGraph))))//为G分配存储空间。

return(NULL);

for(i=1;

c_number+1;

for(j=1;

j<

j++)

{

G->

cost[i][j]=INF;

//初始化使G->

cost[i][j]为无穷。

}

G->

numVerts=c_number;

G->

cost[1][6]=G->

cost[6][1]=96;

cost[1][2]=G->

cost[2][1]=84;

cost[2][3]=G->

cost[3][2]=51;

cost[3][4]=G->

cost[4][3]=53;

cost[4][5]=G->

cost[5][4]=40;

cost[5][6]=G->

cost[6][5]=90;

cost[5][8]=G->

cost[8][5]=67;

cost[5][7]=G->

cost[7][5]=67;

cost[6][7]=G->

cost[7][6]=60;

cost[7][9]=G->

cost[9][7]=25;

cost[3][11]=G->

cost[11][3]=69;

cost[11][12]=G->

cost[12][11]=13;

cost[12][10]=G->

cost[10][12]=67;

cost[3][10]=G->

cost[10][3]=34;

cost[13][10]=G->

cost[10][13]=65;

cost[13][5]=G->

cost[5][13]=118;

if(o){

while(h==1)

v=v+1;

pri();

cout<

火车花费查询"

请输入开始城市的数字代码"

cin>

a;

请输入结尾城市的数字代码"

b;

请输入你预算的两地花费金额"

m[v].c_cost;

n[v].c_cost=a;

x[v].c_cost=b;

请选择"

****************---------------------********************"

1:

继续更改城市费用"

0:

返回上一级菜单"

h;

switch(h){

case1:

h=1;

break;

case0:

h=0;

default:

cout<

选择出错"

f=v+1;

while(v--){

cost[n[v].c_cost][x[v].c_cost]=m[v].c_cost;

v=f;

return(G);

//构造带权(时间)图返回首地址G:

unDiGraph*CreateTimeG(into)//火车的时间的存贮和编辑功能

inta=0,b=0,f,h=1;

//初始化使G->

cost[6][1]=9;

cost[2][1]=8;

cost[3][2]=5;

cost[4][3]=5;

cost[5][4]=4;

cost[6][5]=9;

cost[7][5]=6;

cost[8][5]=6;

cost[7][6]=6;

cost[9][7]=2;

cost[11][3]=6;

cost[12][11]=1;

cost[10][12]=6;

cost[10][3]=3;

cost[10][13]=6;

cost[5][13]=11;

if(o){

z=z+1;

火车时间预算编辑"

请输入你的两地时间"

m[z].c_time;

n[z].c_time=a;

x[z].c_time=b;

继续更改城市时间"

选择出现BUG!

f=z+1;

while(z--){

cost[n[z].c_time][x[z].c_time]=m[z].c_time;

z=f;

unDiGraph*CreateTimeF(into)//飞机的时间的存贮和编辑功能

cost[6][1]=3;

cost[2][1]=2;

cost[3][2]=1;

cost[4][3]=2;

cost[6][5]=3;

cost[10][12]=2;

cost[5][13]=1;

t=t+1;

飞机时间编辑"

m[t].f_time;

n[t].f_time=a;

x[t].f_time=b;

****************------------------------*****************"

返回

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2