全国交通咨询模拟数据结构源代码

全国交通咨询模拟数据结构源代码
全国交通咨询模拟数据结构源代码

// 全国交通咨询模拟.cpp : 定义控制台应用程序的入口点。// #include "stdafx.h"

#include #include #include #include

#include using namespace std;

#define INF 9999999 // 定义一个最大数定为无穷值#define MAX 30// 最多可以添加

15 个城市int addcityflag=0;// 标记添加城市的个数int delcityflag=0;// 标记删除城市的个数int delcity[6];//delcity[0] 不用static int c_number=25;// 当前城市个数typedef int costAdj[MAX+1][MAX+1];// 邻接矩阵从1 开始记数// 定义该类型

int Path[MAX+1][MAX+1][MAX+1];// 三维矩阵用来输出Path[i][i] “二维”中的路径costAdj h_cost,h_time,h_transer,p_cost,p_time,p_transer;// 全局矩阵

costAdj COST,ELSE乘放不同类型的领接矩阵

string addcity[6];//addcity[0] 不用,最多添加5 个城市信息

// 用来添加城市名称void set_h_cost(){// 构造火车费用的邻接矩阵for(int

i=1;i<=MAX;i++){// 矩阵各值置为INF for(int j=1;j<=MAX;j++){ h_cost[i][j]=INF;

} } h_cost[1][2]=h_cost[2][1]=842;// 成都-西安

h_cost[1][6]=h_cost[6][1]=967;// 成都-贵阳h_cost[2][3]=h_cost[3][2]=511;// 西安-郑州h_cost[3][10]=h_cost[10][3]=349;// 郑州-徐州

h_cost[3][4]=h_cost[4][3]=534;// 郑州-武汉h_cost[4][5]=h_cost[5][4]=409;// 武汉-株洲h_cost[5][8]=h_cost[8][5]=675;// 株洲-广州

h_cost[5][6]=h_cost[6][5]=902;// 株洲-贵阳h_cost[6][7]=h_cost[7][6]=607;// 贵阳-柳州h_cost[5][7]=h_cost[7][5]=672;// 株洲-柳州

h_cost[9][7]=h_cost[7][9]=255;// 柳州-南宁h_cost[6][11]=h_cost[11][6]=639;

h_cost[1][11]=h_cost[11][1]=1100;

h_cost[5][13]=h_cost[13][5]=367; h_cost[8][12]=h_cost[12][8]=140;

h_cost[13][14]=h_cost[14][13]=622; h_cost[13][15]=h_cost[15][13]=825;

h_cost[10][15]=h_cost[15][10]=651; h_cost[10][17]=h_cost[17][10]=674;

h_cost[3][16]=h_cost[16][3]=695; h_cost[16][17]=h_cost[17][16]=137;

h_cost[17][18]=h_cost[18][17]=704; h_cost[18][19]=h_cost[19][18]=397;

h_cost[18][20]=h_cost[20][18]=305; h_cost[20][21]=h_cost[21][10]=242;

h_cost[16][23]=h_cost[23][16]=668; h_cost[2][22]=h_cost[22][2]=676;

h_cost[22][23]=h_cost[23][22]=1145; h_cost[22][25]=h_cost[25][22]=216;

h_cost[22][24]=h_cost[24][22]=1892;

}

void set_p_cost(){// 构造飞机费用的邻接矩阵

for(int i=1;i<=MAX;i++){// 矩阵各值置为INF for(int

j=1;j<=MAX;j++){ p_cost[i][j]=INF;

}

}

p_cost[1][2]=p_cost[2][1]=842*2;// 成都-西安p_cost[1][6]=p_cost[6][1]=967*2;// 成都-贵阳p_cost[2][3]=p_cost[3][2]=511*2;// 西安-郑州

p_cost[3][10]=p_cost[10][3]=349*2;// 郑州-徐州p_cost[3][4]=p_cost[4][3]=534*2;// 郑州-武汉p_cost[4][5]=p_cost[5][4]=409*2;// 武汉-株洲p_cost[5][8]=p_cost[8][5]=675*2;// 株洲-广州p_cost[5][6]=p_cost[6][5]=902*2;// 株洲-贵阳p_cost[6][7]=p_cost[7][6]=607*2;// 贵阳-柳州p_cost[5][7]=p_cost[7][5]=672*2;// 株洲-柳州p_cost[9][7]=p_cost[7][9]=255*2;// 柳州-南宁p_cost[6][11]=p_cost[11][6]=639*2;

p_cost[1][11]=p_cost[11][1]=1100*2; p_cost[5][13]=p_cost[13][5]=367*2;

p_cost[8][12]=p_cost[12][8]=140*2; p_cost[13][14]=p_cost[14][13]=622*2;

p_cost[13][15]=p_cost[15][13]=825*2; p_cost[10][15]=p_cost[15][10]=651*2;

p_cost[10][17]=p_cost[17][10]=674*2;

p_cost[3][16]=p_cost[16][3]=695*2; p_cost[16][17]=p_cost[17][16]=137*2;

p_cost[17][18]=p_cost[18][17]=704*2; p_cost[18][19]=p_cost[19][18]=397*2;

p_cost[18][20]=p_cost[20][18]=305*2; p_cost[20][21]=p_cost[21][10]=242*2;

p_cost[16][23]=p_cost[23][16]=668*2; p_cost[2][22]=p_cost[22][2]=676*2;

p_cost[22][23]=p_cost[23][22]=1145*2; p_cost[22][25]=p_cost[25][22]=216*2;

p_cost[22][24]=p_cost[24][22]=1892*2;

}

void set_h_time(){// 构造火车费用的邻接矩阵for(int i=1;i<=MAX;i++){// 矩阵各值置为INF for(int j=1;j<=MAX;j++){ h_time[i][j]=INF;

}

}

h_time[1][2]=h_time [2][1]=8;// 成都-西安h_time[1][6]=h_time[6][1]=9;// 成都-贵阳h_time[2][3]=h_time[3][2]=5;// 西安-郑州h_time[3][10]=h_time[10][3]=3;// 郑州-徐州h_time[3][4]=h_time[4][3]=5;// 郑州-武汉h_time[4][5]=h_time[5][4]=4;// 武汉-株洲h_time[5][8]=h_time[8][5]=6;// 株洲-广州h_time[5][6]=h_time[6][5]=9;// 株洲-贵阳h_time[6][7]=h_time[7][6]=6;// 贵阳-柳州h_time[5][7]=h_time[7][5]=6;// 株洲-柳州h_time[9][7]=h_time[7][9]=2;// 柳州-南宁h_time[6][11]=h_time[11][6]=6; h_time[1][11]=h_time[11][1]=11;

h_time[5][13]=h_time[13][5]=3; h_time[8][12]=h_time[12][8]=1;

h_time[13][14]=h_time[14][13]=6; h_time[13][15]=h_time[15][13]=8;

h_time[10][15]=h_time[15][10]=6; h_time[10][17]=h_time[17][10]=6;

h_time[3][16]=h_time[16][3]=6; h_time[16][17]=h_time[17][16]=1;

h_time[17][18]=h_time[18][17]=7; h_time[18][19]=h_time[19][18]=3;

h_time[18][20]=h_time[20][18]=3; h_time[20][21]=h_time[21][10]=2;

h_time[16][23]=h_time[23][16]=6;

h_time[2][22]=h_time[22][2]=6; h_time[22][23]=h_time[23][22]=11;

h_time[22][25]=h_time[25][22]=2; h_time[22][24]=h_time[24][22]=18;

}

void set_p_time(){// 构造飞机费用的邻接矩阵

for(int i=1;i<=MAX;i++){

for(int

j=1;j<=MAX;j++){ p_tim

e[i][j]=INF;

}

}

p_time[1][2]=p_time [2][1]=8 /2;// 成都-西安p_time[1][6]=p_time[6][1]=9/ 2;// 成都-贵阳p_time[2][3]=p_time[3][2]=5 /2;// 西安-郑州

p_time[3][10]=p_time[10][3]=3 /2;// 郑州-徐州p_time[3][4]=p_time[4][3]=5 /2;// 郑州-武汉p_time[4][5]=p_time[5][4]=4 /2;// 武汉-株洲

p_time[5][8]=p_time[8][5]=6 /2;// 株洲-广州p_time[5][6]=p_time[6][5]=9/ 2;// 株洲-贵阳p_time[6][7]=p_time[7][6]=6 /2;// 贵阳-柳州

p_time[5][7]=p_time[7][5]=6 /2;// 株洲-柳州p_time[9][7]=p_time[7][9]=2 /2;// 柳州-南宁p_time[6][11]=p_time[11][6]=6/ 2; p_time[1][11]=p_time[11][1]=11 /2;

p_time[5][13]=p_time[13][5]=3 /2; p_time[8][12]=p_time[12][8]=1 /2;

p_time[13][14]=p_time[14][13]=6/ 2; p_time[13][15]=p_time[15][13]=8/ 2;

p_time[10][15]=p_time[15][10]=6/ 2; p_time[10][17]=p_time[17][10]=6/ 2;

p_time[3][16]=p_time[16][3]=6/ 2; p_time[16][17]=p_time[17][16]=1 /2;

p_time[17][18]=p_time[18][17]=7 /2; p_time[18][19]=p_time[19][18]=3 /2;

p_time[18][20]=p_time[20][18]=3 /2; p_time[20][21]=p_time[21][10]=2 /2;

p_time[16][23]=p_time[23][16]=6/ 2; p_time[2][22]=p_time[22][2]=6/ 2;

p_time[22][23]=p_time[23][22]=11 /2; p_time[22][25]=p_time[25][22]=2 /2;

p_time[22][24]=p_time[24][22]=18 /2;

}

void set_p_transer(){// 构造飞机中转次数的邻接矩阵for(int i=1;i<=MAX;i++){ for(int j=1;j<=MAX;j++){

p_transer[i][j]=INF;

}

}

p_transer[1][2]=p_transer[2][1]=1;// 成都-西安p_transer[1][6]=p_transer[6][1]=1;// 成都-贵阳p_transer[2][3]=p_transer[3][2]=1;// 西安-郑州p_transer[3][10]=p_transer[10][3]=1;// 郑州-徐州p_transer[3][4]=p_transer[4][3]=1;// 郑州-武汉p_transer[4][5]=p_transer[5][4]=1;// 武汉-株洲p_transer[5][8]=p_transer[8][5]=1;// 株洲-广州p_transer[5][6]=p_transer[6][5]=1;// 株洲-贵阳p_transer[6][7]=p_transer[7][6]=1;// 贵阳-柳州p_transer[5][7]=p_transer[7][5]=1;// 株洲-柳州p_transer[9][7]=p_transer[7][9]=1;// 柳州-南宁p_transer[6][11]=p_transer[11][6]=1; p_transer[1][11]=p_transer[11][1]=1;

p_transer[5][13]=p_transer[13][5]=1; p_transer[8][12]=p_transer[12][8]=1;

p_transer[13][14]=p_transer[14][13]=1; p_transer[13][15]=p_transer[15][13]=1;

p_transer[10][15]=p_transer[15][10]=1; p_transer[10][17]=p_transer[17][10]=1;

p_transer[3][16]=p_transer[16][3]=1; p_transer[16][17]=p_transer[17][16]=1;

p_transer[17][18]=p_transer[18][17]=1; p_transer[18][19]=p_transer[19][18]=1;

p_transer[18][20]=p_transer[20][18]=1; p_transer[20][21]=p_transer[21][10]=1;

p_transer[16][23]=p_transer[23][16]=1; p_transer[2][22]=p_transer[22][2]=1;

p_transer[22][23]=p_transer[23][22]=1; p_transer[22][25]=p_transer[25][22]=1;

p_transer[22][24]=p_transer[24][22]=1;

}

void set_h_transer(){// 构造火车中转次数的邻接矩阵for(int i=1;i<=MAX;i++){ for(int j=1;j<=MAX;j++){

h_transer[i][j]=INF;

}

}

h_transer[1][2]=h_transer[2][1]=1;// 成都-西安h_transer[1][6]=h_transer[6][1]=1;// 成都-贵阳h_transer[2][3]=h_transer[3][2]=1;// 西安-郑州

h_transer[3][10]=h_transer[10][3]=1;// 郑州-徐州h_transer[3][4]=h_transer[4][3]=1;// 郑州-武汉h_transer[4][5]=h_transer[5][4]=1;// 武汉-株洲h_transer[5][8]=h_transer[8][5]=1;// 株洲-广州h_transer[5][6]=h_transer[6][5]=1;// 株洲-贵阳h_transer[6][7]=h_transer[7][6]=1;// 贵阳-柳州h_transer[5][7]=h_transer[7][5]=1;// 株洲-柳州h_transer[9][7]=h_transer[7][9]=1;// 柳州-南宁h_transer[6][11]=h_transer[11][6]=1; h_transer[1][11]=h_transer[11][1]=1;

h_transer[5][13]=h_transer[13][5]=1; h_transer[8][12]=h_transer[12][8]=1;

h_transer[13][14]=h_transer[14][13]=1; h_transer[13][15]=h_transer[15][13]=1;

h_transer[10][15]=h_transer[15][10]=1; h_transer[10][17]=h_transer[17][10]=1;

h_transer[3][16]=h_transer[16][3]=1; h_transer[16][17]=h_transer[17][16]=1;

h_transer[17][18]=h_transer[18][17]=1; h_transer[18][19]=h_transer[19][18]=1;

h_transer[18][20]=h_transer[20][18]=1; h_transer[20][21]=h_transer[21][10]=1;

h_transer[16][23]=h_transer[23][16]=1; h_transer[2][22]=h_transer[22][2]=1;

h_transer[22][23]=h_transer[23][22]=1; h_transer[22][25]=h_transer[25][22]=1;

h_transer[22][24]=h_transer[24][22]=1;

void pr(int i){// 用来选择输出第i 个城市的名称

if(i==1 && delcity[1]!=1 && delcity[2]!=1 delcity[5]!=1 )cout<<" 成都.";

if(i==2 && delcity[1]!=2 && delcity[2]!=2 delcity[5]!=2 )cout<<" 西安.";

if(i==3 && delcity[1]!=3 && delcity[2]!=3 delcity[5]!=3 )cout<<" 郑州.";

if(i==4 && delcity[1]!=4 && delcity[2]!=4 delcity[5]!=4 )cout<<" 武汉.";

if(i==5 && delcity[1]!=5 && delcity[2]!=5 delcity[5]!=5 )cout<<" 株洲.";

if(i==6 && delcity[1]!=6 && delcity[2]!=6 delcity[5]!=6 )cout<<" 贵阳.";

if(i==7 && delcity[1]!=7 && delcity[2]!=7 }

delcity[5]!=7 )cout<<" 柳州."; && delcity[3]!=1 && delcity[4]!=1 && && delcity[3]!=2 && delcity[4]!=2 && && delcity[3]!=3 && delcity[4]!=3 && && delcity[3]!=4 && delcity[4]!=4 && && delcity[3]!=5 && delcity[4]!=5 && && delcity[3]!=6 && delcity[4]!=6 && && delcity[3]!=7 && delcity[4]!=7 &&

if(i==8 && delcity[1]!=8 && delcity[2]!=8 && delcity[3]!=8 && delcity[4]!=8 && delcity[5]!=8 )cout<<" 广州.";

if(i==9 && delcity[1]!=9 && delcity[2]!=9 && delcity[3]!=9 && delcity[4]!=9 && delcity[5]!=9 )cout<<" 南宁.";

if(i==10 && delcity[1]!=10 && delcity[2]!=10 && delcity[3]!=10 && delcity[4]!=10 && delcity[5]!=10 )cout<<" 徐州.";

if(i==11 && delcity[1]!=11 && delcity[2]!=11 && delcity[3]!=11 && delcity[4]!=11 && delcity[5]!=11 )cout<<" 昆明.";

if(i==12 && delcity[1]!=12 && delcity[2]!=12 && delcity[3]!=12 && delcity[4]!=12 && delcity[5]!=12 )cout<<" 深圳.";

if(i==13 && delcity[1]!=13 && delcity[2]!=13 && delcity[3]!=13 && delcity[4]!=13 && delcity[5]!=13 )cout<<" 南昌.";

if(i==14 && delcity[1]!=14 && delcity[2]!=14 && delcity[3]!=14 && delcity[4]!=14 && delcity[5]!=14 )cout<<" 福州.";

if(i==15 && delcity[1]!=15 && delcity[2]!=15 && delcity[3]!=15 && delcity[4]!=15 && delcity[5]!=15 )cout<<" 上海.";

if(i==16 && delcity[1]!=16 && delcity[2]!=16 && delcity[3]!=16 && delcity[4]!=16 && delcity[5]!=16 )cout<<" 北京.";

if(i==17 && delcity[1]!=17 && delcity[2]!=17 && delcity[3]!=17 && delcity[4]!=17 && delcity[5]!=17 )cout<<" 天津.";

if(i==18 && delcity[1]!=18 && delcity[2]!=18 && delcity[3]!=18 && delcity[4]!=18 && delcity[5]!=18 )cout<<" 沈阳.";

if(i==19 && delcity[1]!=19 && delcity[2]!=19 && delcity[3]!=19 && delcity[4]!=19 && delcity[5]!=19 )cout<<" 大连.";

if(i==20 && delcity[1]!=20 && delcity[2]!=20 && delcity[3]!=20 && delcity[4]!=20 && delcity[5]!=20)cout<<" 长春.";

if(i==21 && delcity[1]!=21 && delcity[2]!=21 && delcity[3]!=21 && delcity[4]!=21 && delcity[5]!=21 )cout<<" 哈尔滨.";

if(i==22 && delcity[1]!=22 && delcity[2]!=22 && delcity[3]!=22 && delcity[4]!=22 && delcity[5]!=22 )cout<<" 兰州.";

if(i==23 && delcity[1]!=23 && delcity[2]!=23 && delcity[3]!=23 && delcity[4]!=23 &&

delcity[5]!=23 )cout<<" 呼和浩特if(i==24 && delcity[1]!=24 ? J

&& delcity[2]!=24 && delcity[3]!=24 && delcity[4]!=24 &&

delcity[5]!=24 )cout<<" 乌鲁木齐if(i==25 && delcity[1]!=25 ? J

&& delcity[2]!=25 && delcity[3]!=25 && delcity[4]!=25 &&

delcity[5]!=25 )cout<<" 西宁.";

if(i==26 && addcityflag>0 && delcity[1]!=26 && delcity[2]!=26 && delcity[3]!=26 && delcity[4]!=26 && delcity[5]!=26 ) cout<

if(i==27 && addcityflag>1 && delcity[1]!=27 && delcity[2]!=27 && delcity[3]!=27 &&

delcity[4]!=27 && delcity[5]!=27 ) cout<

if(i==28 && addcityflag>2 && delcity[1]!=28 && delcity[2]!=28 && delcity[3]!=28 &&

delcity[4]!=28 && delcity[5]!=28 ) cout<

if(i==29 && addcityflag>3 && delcity[1]!=29 && delcity[2]!=29 && delcity[3]!=29 && delcity[4]!=29 && delcity[5]!=29 ) cout<

&& if(i==30 && addcityflag>4 && delcity[1]!=30 && delcity[2]!=30 && delcity[3]!=30 delcity[4]!=30

&& delcity[5]!=30 ) cout<

}

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

void pri(){// 用来输出当前存在的所有城市名称

int i;

cout<<" --------------------------------------------------- "<

for (i=1;i<=c_number;i++){ if((delcity[1]&& delcity[2]&& delcity[3] && delcity[4]

&&delcity[5])!=i){ cout<

}

pr(i); if(i%5==0){ cout<

}

} cout<<" ----------------------------------------------------- "<

}

void Floyed_new(costAdj D,costAdj M){// 弗洛伊德算法

int i,j,k,n; n=MAX; costAdj A,C;

for(i=1;i<=n;i++){ for(j=1;j<=n;j++){

A[i][j]=D[i][j];// 初始化矩阵A

C[i][j]=M[i][j]; for(k=1;k<=n;k++){

Path[i][j][k]=0; // 初始化矩阵path, 置-1. } if(A[i][j]

Path[i][j][i]=1;Path[i][j][j]=1;

}

}

}

int t,flag=1;

for(k=1;k<=n;k++){ for(i=1;i<=n;i++) { for(j=1;j<=n;j++)

if(A[i][k]+A[k][j]

A[i][j]=A[i][k]+A[k][j];

数据结构课程实验指导书

数据结构实验指导书 一、实验目的 《数据结构》是计算机学科一门重要的专业基础课程,也是计算机学科的一门核心课程。本课程较为系统地论述了软件设计中常用的数据结构以及相应的存储结构与实现算法,并做了相应的性能分析和比较,课程内容丰富,理论系统。本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。 由于以下原因,使得掌握这门课程具有较大的难度: 1)理论艰深,方法灵活,给学习带来困难; 2)内容丰富,涉及的知识较多,学习有一定的难度; 3)侧重于知识的实际应用,要求学生有较好的思维以及较强的分析和解决问题的能力,因而加大了学习的难度; 根据《数据结构》课程本身的特性,通过实验实践内容的训练,突出构造性思维训练的特征,目的是提高学生分析问题,组织数据及设计大型软件的能力。 课程上机实验的目的,不仅仅是验证教材和讲课的内容,检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面: (1)加深对课堂讲授内容的理解 实验是对学生的一种全面综合训练。是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,实验题中的问题比平时的习题复杂得多,也更接近实际。实验着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变" 活" ,起到深化理解和灵活掌握教学内容的目的。 不少学生在解答习题尤其是算法设计时,觉得无从下手。实验中的内容和教科书的内容是密切相关的,解决题目要求所需的各种技术大多可从教科书中找到,只不过其出

现的形式呈多样化,因此需要仔细体会,在反复实践的过程中才能掌握。 (2) 培养学生软件设计的综合能力 平时的练习较偏重于如何编写功能单一的" 小" 算法,而实验题是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。 通过实验使学生不仅能够深化理解教学内容,进一步提高灵活运用数据结构、算法和程序设计技术的能力,而且可以在需求分析、总体结构设计、算法设计、程序设计、上机操作及程序调试等基本技能方面受到综合训练。实验着眼于原理与应用的结合点,使学生学会如何把书本上和课堂上学到的知识用于解决实际问题,从而培养计算机软件工作所需要的动手能力。 (3) 熟悉程序开发环境,学习上机调试程序一个程序从编辑,编译,连接到运行,都要在一定的外部操作环境下才能进行。所谓" 环境" 就是所用的计算机系统硬件,软件条件,只有学会使用这些环境,才能进行 程序开发工作。通过上机实验,熟练地掌握程序的开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。 完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆语法错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,尽快掌握程序调试方法是非常重要的。分析问题,选择算法,编好程序,只能说完成一半工作,另一半工作就是调试程序,运行程序并得到正确结果。 二、实验要求 常用的软件开发方法,是将软件开发过程划分为分析、设计、实现和维护四个阶段。虽然数据结构课程中的实验题目的远不如从实际问题中的复杂程度度高,但为了培养一个软件工作者所应具备的科学工作的方法和作风,也应遵循以下五个步骤来完成实验题目: 1) 问题分析和任务定义 在进行设计之前,首先应该充分地分析和理解问题,明确问题要求做什么?限制条件是什么。本步骤强调的是做什么?而不是怎么做。对问题的描述应避开算法和所涉及的数据类型,而是对所需完成的任务作出明确的回答。例如:输入数据的类型、值的范围以及输入的

数据结构家谱管理系统范本

数据结构家谱管理 系统

宁波大红鹰学院 信息工程学院 课 程 设 计 报 告 项目名 家谱查询系统 称: 白钰琦 项目组 长: 徐程凯、徐海域、项鸿伟 项目成 员: 10计科1班 班级名 称: 计算机科学与技术 专业名 称: 完成时间: 12月1日 信息工程学院制 目录 一、案例描述 ............................................................ 错误!未定义书签。 1、总体描述 ....................................................... 错误!未定义书签。 2、模块描述 ....................................................... 错误!未定义书签。

二、设计思路 ............................................................ 错误!未定义书签。 三、程序设计 ............................................................ 错误!未定义书签。 1、数据结构描述................................................ 错误!未定义书签。 2、主函数及其流程图........................................ 错误!未定义书签。 3、源程序 ........................................................... 错误!未定义书签。 四、调试与分析 ........................................................ 错误!未定义书签。 1、主菜单 ........................................................... 错误!未定义书签。 2、显示家谱信息................................................ 错误!未定义书签。 3、显示家谱中第n代人所有信息 .................... 错误!未定义书签。 4、按姓名查找某人并相应输出 ........................ 错误!未定义书签。 5、按出生日期查找家谱成员信息 .................... 错误!未定义书签。 6、为家谱中成员添加孩子信息 ........................ 错误!未定义书签。 7、为家谱中成员添加妻子信息 ........................ 错误!未定义书签。 8、删除家谱中成员及其后代信息 .................... 错误!未定义书签。 9、修改家谱中成员信息.................................... 错误!未定义书签。 10、确定家谱中两个成员关系 .......................... 错误!未定义书签。 11、按出生年月排序家谱 .................................. 错误!未定义书签。 五、设计总结 ............................................................ 错误!未定义书签。 1、完成情况 ....................................................... 错误!未定义书签。 2、心得体会 ....................................................... 错误!未定义书签。

数据结构课程设计交通咨询系统设计(DOC36页)

设计题目<二>:7.3.4交通咨询系统设计P160 一、设计要求 1.问题描述 根据不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能的短,出门旅行的旅客希望旅费尽可能的少,而老年人则要求中转次数少。模拟一个全国城市之间的咨询交通程序,为旅客提供两种或三种最优的交通路线。 2.需求分析 二、概要设计 1.主界面设计 (图2.1“交通咨询系统”主菜单) 2.存储结构设计 本系统采用图结构类型存储抽象交通咨询系统的信息。 typedef struct TrafficNode { char name[MAX_STRING_NUM]; //班次//MAX_STRING_NUM最为10 int StartTime, StopTime; //起止时间 int EndCity; //该有向边指向的顶点在数组中的位置,即该城市编号 int Cost; //票价

} TrafficNodeDat; typedef struct VNode { CityType city; int TrainNum, FlightNum; //标记下面Train数组和Flight数组里元素个数 TrafficNodeDat Train[MAX_TRAFFIC_NUM]; //数组成员为结构体,记录了到达城市、起止时间、票价和班次 TrafficNodeDat Flight[MAX_TRAFFIC_NUM]; // int Cost; //遍历时到达该城市的耗费(时间或者费用) } VNodeDat; typedef struct PNode { int City; int TraNo; } PNodeDat; 3.系统功能设计 (1)添加城市。添加一个城市的名称 (2)删除城市。输入一个城市名称,删除该城市。 (3)添加交通路线。输入起始城市、终点城市、航班或火车、车次、起始时间、终点时间和票价 (4)删除交通路线。输入火车或飞机的班次删除该交通路线。 (5)查询最小费用路线。输入起始城市、终点城市、航班或火车、车次、起始时间、终点时间查询最小费用路线。 三、模块设计 1.模块设计 (图2.2 模块调用示意图)

数据结构实验报告代码

线性表 代码一 #include "stdio.h" #include "malloc.h" #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 typedef struct { int * elem; int length; int listsize; }SqList; int InitList_Sq(SqList *L) { L->elem = (int*)malloc(LIST_INIT_SIZE*sizeof(int)); if (!L->elem) return ERROR; L->length = 0; L->listsize = LIST_INIT_SIZE; return OK; } int ListInsert_Sq(SqList *L, int i,int e) { int *p,*newbase,*q; if (i < 1 || i > L->length+1) return ERROR; if (L->length >= L->listsize) { newbase = (int *)realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof (int)); if (!newbase) return ERROR; L->elem = newbase; L->listsize += LISTINCREMENT; } q = &(L->elem[i-1]); //插入后元素后移for(p=&(L->elem[L->length-1]);p>=q;p--) *(p+1)=*p; *q=e; L->length++; return OK; } int ListDelete_Sq(SqList *L, int i, int *e) {

全国交通咨询模拟数据结构课程设计

数据结构课程设计报告 题目:全国交通咨询模拟 一.需求分析 1.程序设计任务:从中国地图平面图中选取部分城市,抽象为程序所需要图的结点,并以城市间的列车路线和飞机路线,作为图结点中的弧信息,设计一个全国交通咨询模拟系统。利用该系统实现两种最优决策:最快到达或最省钱到达。 2. 明确规定: (1) 输入形式和输入值的范围:每条飞机弧或者火车弧涉及的信息量很多,包括:起始城市、目的城市、出发时间、到达时间、班次以及费用。作为管理员要输入的信息包括以上信息,而作为用户或者客户,要输入的信息有起始城市和目的城市,并选择何种最优决策。 (2) 输出形式:按用户提供的最优决策的不同而输出不同的信息,其中输出的所搭飞机或火车的班次及其起始地点和终点、起始时间和出发时间还有相关的最优信息,比如最快经多少时间到达、最省钱多少钱到达和最少经多少中转站到达。 (3) 程序所能达到的功能 a. 该系统有供用户选择的菜单和交互性。可以对城市、列车车次和飞机航班进行 编辑,添加或删除。 b. 建立一个全国交通咨询系统,该系统具备自动查找任意两城市间铁路、飞机交通的最短路径和最少花费及中转次数最少等功能。 c. 初始化交通系统有两种方式,键盘和文档。

二.设计概要 1.算法设计 (1)、总体设计 (1)数据存储:城市信息(城市名、代码)、交通信息(城市间的里程、各航班和列车时刻)存储于磁盘文件。建议把城市信息存于文件前面,交通信息存于文件的后面,用fread和fwrite函数操作。 (2)数据的逻辑结构:根据设计任务的描述,其城市之间的旅游交通问题是典型的图结构,可看作为有向图,图的顶点是城市,边是城市之间所耗费的时间(要 包括中转站的等候时间)或旅费。 (3)数据的存储结构:采用邻接表和邻接矩阵都可作为数据的存储结构,但当邻接边不多时,宜采用邻接表,以提高空间的存储效率。这里采用邻接表作为数据的存储结构。 (4)用不同的功能模块对城市信息和交通信息进行编辑。添加、修改、删除 功能可用菜单方式或命令提示方式。只要能方便的对城市信息和交通信息进行管理即可,但要注意人机界面。 (5)最优决策功能模块(fast or province)。 ①读入城市信息和交通信息,用邻接表生成含权网络,表头数组中的元素存放城市名及对方城市到达该元素所代表城市的所有信息;表头数组中的元素所对应的单链表存放与该元素所代表的城市有交通联系的城市(代码、里程、航班、列车车次)。 ②根据具体最优决策的要求,用Dijkstra算法求出出发城市到其它各城市 的最优值(最短时间或最小的费用),搜索过程中所经过城市的局部最优信息都保存在邻接表的表头数组中。其目的城市所代表的元素中就保存了所需的最优决策结果。这过程中,要用队列或栈保存局部最优决策值(局部最短的时间或最省的费用)变小的城市,其相应的初始值可为%,并在表头数组对应的城市元素中保 存响应的信息。开始时,栈(队列)中只有出发地城市,随着对栈(队列)顶(首)城市有交通联系的城市求得决策值(最短时间或最小的费用),若该值是局部最优值且该城市不在栈(队列)中,则进栈(队列),直至栈(队列)为空,本题采用队列实现。 ③输出结果:从目的城市出发,搜索到出发城市,所经过的城市均入栈(队列),再逐一出栈栈(队列)中的城市,输出保存在表头数组中对应城市的信息 (对 方城市的出发信息,里程、时间、费用等)及最终结果。即输出依次于何时何地乘坐几点的飞机或火车于何时到达何地;最终所需的最快需要多长时间才能到达及旅费,或者最少需要多少旅费才能到达及时间。 (6)主程序可以有系统界面、菜单;也可用命令提示方式;选择功能模块执行,要求在程序运行过程中可以反复操作。 (2).详细设计思想: 本题所要求的交通系统是一个有向带权图结构,考虑到要求该系统有动态增加飞机和列车航班的功能,因而采用邻接表的形式存储:对每个顶点建立一个 单链表,单链表中的子结点表示以该顶点连接的弧,单链表中子结点的顺序可以 按权值递增的顺序排列,表头结点按顺序存储。题目中提到要提供三种策略,最快到达,最省钱到达和最少中转次数策略,前两种策略采用迪杰斯特拉算法思想,其中最快到达的权值为到达两城市所需的最短时间,最省钱到达的权值为到达两城市所需的费用,后一种采用广度优先算法的思想,只需求的两城市所在的层数,就可以求的到达两城市所需的最少中转次数。

数据结构实验一的源代码

#include #include typedef struct Node { int key;//密码 int num;//编号 struct Node *next;//指向下一个节点 } Node, *Link; void InitList(Link &L) //创建一个空的链表{ L = (Node *)malloc(sizeof(Node)); if (!L) exit(1); L->key = 0; L->num = 0; L->next = L; } void Creatlinklist(int n, Link &L) //初始化链表{ Link p, q; q = L; for (int i = 1; i <= n; i++) { p = (Node *)malloc(sizeof(Node)); if (!p) exit(1); scanf("%d", &p->key); p->num = i; L->next = p; L = p; } L->next = q->next; free(q); } Link Locate_m(Link &p, int m)//找到第m个 { Link q; for (int j = 1; jnext; q = p->next; m = q->key;

return q; } void Delete_m(Link &L, Link p, Link q)//删除第m个{ p->next = q->next; free(q); } void main() { Link L, p, q; int n, m; L = NULL; InitList(L);//构造出一个只有头结点的空链表 printf("请输入初始密码人数每个人的密码:\n"); scanf("%d", &m);//初始密码为m scanf("%d", &n);// Creatlinklist(n, L);//构建 p = L; for (int i = 1; i <= n; i++) { q = Locate_m(p, m);//找到第m个 printf("%d", q->num); Delete_m(L, p, q);//删除第m个 } system("pause"); }

数据结构家谱课程设计报告

家谱管理系统 姓名:田鑫磊 学号:1514020421 (1)功能部分: 本程序共实现了6个功能分别为: 1.读出家谱并显示 2.确定指定成员在家族中的辈份 3.输出指定辈的所有成员 4.在家谱中添加新成员,并追加到文件中 5.输出指定家庭的所有成员 6. 退出本系统 (2)各功能的算法思想: 1.读出家谱并显示 存储结构用栈,按照先显示双亲,然后显示其所有孩子的顺序显示所有的家庭成员。 2.确定指定成员在家族中的辈份 用求成员所在的二叉树中的层数(按层遍历二叉树)来确定,这里采用的是递归算法3.输出指定辈的所有成员 此处定义了一个新的结构体类型(增加存储节点所在的层数),定义如下: struct { BTNode *q; int loc; //存结点所在的层数 }qu[10]; 并用一个队列来比较显示同辈分的所有成员。 4.在家谱中添加新成员,并追加到文件中 首先,输入一个新成员的名字; 然后,输入其双亲; 之后,再添加到整个存储二叉链表中。 然后,再将新的存储结构写回到文件中。 二叉链表的结点类型为:typedef struct node { ElemType data[10]; //存放成员的名字 struct node *child; //其孩子指针 struct node *brother; //其兄弟指针 }BTNode; 5.输出指定家庭的所有成员 首先,设一个栈,并设一个标记位,先置1; 然后,找到输入的要待显示的成员,将标记位置0; 再次,显示其孩子和兄弟,依次下去直到显示完其所有的亲戚。 6.退出本系统 通过一个输入字符q来控制,每完成一个功能,系统提示是否要继续操作:

数据结构课程设计全国交通咨询系统方案

工业应用技术学院 课程设计任务书 题目全国交通资询系统 主要容: 设计了一个方便用户查询交通咨询系统。该系统所做的工作的是模拟全国交通咨询,为旅客提供三种最优决策的交通咨询。该系统可以进行城市,列车车次和飞机航班的编辑的基本信息输入操作。程序的输出信息主要是:最快需要多少时间才能到达,或最少需要多少旅费才能到达,或最少需要多少次中转到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。程序的功能包括:提供对城市信息的编辑,提供列车时刻表和飞机航班表的编辑,提供三种最优决策:最快到达、最省钱到达、最少中转次数到达。 基本要求: 1、掌握C语言的变量及函数的灵活使用; 2、熟练掌握图的深度、广度优先遍历算法思想及其程序实现; 3、掌握C语言中文件的基本操作; 4、掌握VC++6.0软件的熟练使用。 主要参考资料: [1] 春葆.数据结构程序设计[M].:清华大学,2002,03 [2] 王黎,袁永康https://www.360docs.net/doc/c85594928.html,战略[M].:清华大学,2002,01 [3] 谭浩强.C程序设计第二版[M].:清华大学,2003,03 [4] 任哲.MFC Windows程序设计[M].:清华大学,2004,06 完成期限:2016.12.05—2017.01.05 指导教师签名: 课程负责人签名:

随着高科技的飞速发展,列车、飞机、动车、高铁的出现极大的减少了人们花在旅途上的时间。对于城市间错综复杂交通网的管理,是一项庞大而复杂的工作。在此基础上,如何实现交通网智能化的管理达到帮助乘客选择经济高效的交通工具是目前仍处空白。尤其乘客交通工具的择优选择是一个令人懊恼的工作,一个原因就是各种交通工具的查询十分分散和繁琐。即使有互联网的帮忙,但是没有一个统一的归类、没有一个精细的算法、系统的软件帮助,人们仍然无法获得最优方式。为此开发一个交通择优系统是十分必要的。采用计算机对城市间的交通工具进行系统录入和管理,进一步提高了交通部门针对城市间客运网络的管理效率,实现交通运营网络的系统化、规化和自动化。同时使乘客能通过网络进行称心的交通工具的选择,这也是交通网络优选智能决策的体现。交通信息的咨询和管理是交通部门管理工作中异常重要的一个环节,因此,运用交通资询管理系统对春运时减轻乘客购票压力、舒缓紧的城际拥堵有重要意义。 关键字:错综复杂;智能化;最优方式;择优系统

交通咨询系统设计报告

重庆科技学院 《数据结构》课程设计 报告 学院:_电气与信息工程学院_ 专业班级: 计科2 学生姓名: 学号: 设计地点(单位)__ _ 计算机基础自主学习中心__ _ _ 设计题目:________ 交通咨询系统设计__ ___ _ _ 完成日期:2012年7 月6 日 指导教师评语: ______________________ _________________ ________________________________________________________________________________________________ ________________________________________________________________________________________________

_________ __________ _ 成绩(五级记分制):______ __________ 指导教师(签字):________ ________ 重庆科技学院 课程设计任务书 设计题目:交通咨询系统的设计

系主任:雷亮指导教师:黄永文/王双明/熊茜/彭军/王成敏 2012年6月20日 摘要

在交通网络非常发达,人们在出差、旅游出行时,往往关心节省交通费用或节省所需要的时间等问题。对于这样一个人们关心的问题,可以用一个图结构来表示交通网络,利用计算机建立一个交通咨询系统。图中顶点表示城市,边表示城市之间的交通情况,其权值可代表里程、交通费用或时间。比如任意一个城市到其他城市的最短路径,任意两个城市之间的最短路径问题。 本次设计的交通咨询系统主要是运用C语言的数据结构来完成交通图的存储、图中顶点的单源最短路径和任意一对顶点间的最短路径问题。 关键词:数字结构C语言交通咨询最短路径

数据结构实验程序

顺序表的基本操作 #include using namespace std; typedef int datatype; #define maxsize 1024 #define NULL -1 typedef struct { datatype *data; int last; }sequenlist; void SETNULL(sequenlist &L) { L.data=new datatype[maxsize]; for(int i=0;i>https://www.360docs.net/doc/c85594928.html,st; cout<<"请输入"<>L.data[i]; } int LENGTH(sequenlist &L) { int i=0; while(L.data[i]!=NULL) i++; return i; } datatype GET(sequenlist &L,int i) { if(i<1||i>https://www.360docs.net/doc/c85594928.html,st) { cout<<"error1"<

int j=0; while(L.data[j]!=x) j++; if(j==https://www.360docs.net/doc/c85594928.html,st) { cout<<"所查找值不存在!"<=maxsize-1) { cout<<"overflow"; return NULL; } else if(i<1||(i>https://www.360docs.net/doc/c85594928.html,st)) { cout<<"error2"<=i-1;j--) L.data[j+1]=L.data[j]; L.data[i-1]=x; https://www.360docs.net/doc/c85594928.html,st++; } return 1; } int DELETE(sequenlist &L,int i) { int j; if((i<1)||(i>https://www.360docs.net/doc/c85594928.html,st+1)) { cout<<"error3"<

2数据结构_全国交通咨询模拟系统实验报告

全国交通咨询模拟 一、设计目的 掌握线性表、栈、图结构和对文件的操作,学习屏幕编辑和菜单技术,掌握用最短路径及其搜索算法编制较综合性的程序,能用图的邻接存储结构求解最优路线问题,解决有关实际问题。得到软件设计技能的训练。 二、问题描述 交通咨询模拟。根据旅客的不同需要,要考虑到旅客希望在旅途中的时间尽可能短、希望旅费尽可能省等的要求。 三、基本要求 1、对城市信息(城市名、城市间的里程)进行编辑:具备添加、修改、删除功能; 2、对城市间的交通工具:火车。对列车时刻表进行编辑:里程、和列车班次的添加、修改、删除; 3、提供两种最优决策:最快到达或最省钱到达。全程只考虑一种交通工具,可以不考虑回程; 4、咨询以用户和计算机对话方式进行,要注意人机交互的屏幕界面。由用户选择最优决策原则和交通工具,输入起始站、终点站、出发时间,输出信息:最快需要多长时间才能到达及旅费,或者最少需要多少旅费才能到达及时间,并详细说明依次于何时何地乘坐哪一趟列车何时到达何地。

四、具体实现 1、思路 (1) 数据存储。城市信息(城市名、代码)、交通信息(城市间的里程、各航班和列车时刻)存储于磁盘文件。在实验中本想用文本储存数据,但操作不熟悉,而是改用图的邻接矩阵储存原始信息,而后用数组进行添加删改 (2) 数据的逻辑结构。根据设计任务的描述,其城市之间的旅游交通问题是典型的图结构,可看作为无向图,图的顶点是城市,边是城市之间所耗费的时间(要包括中转站的时间)或旅费。 (3) 数据的存储结构。采用邻接表和邻接矩阵都可作为数据的存储结构,这里建议采用邻接矩阵作为数据的存储结构。 (4) 用不同的功能模块对城市信息和交通信息进行编辑。添加、修改、删除功能可用菜单方式或命令提示方式。只要能方便的对城市信息和交通信息进行管理即可,但要注意人机界面,具体实现由学生自行设计,也可参考有关程序(届时在网上提供)。这些工作有不小的工作量。 (5) 最优决策功能模块 ① 读入城市信息和交通信息,用邻接表生成含权网络,表头数组中的元素存放城市名及对方城市到达该元素所代表城市的所有信息;表头数组中的元素所对应的单链表存放与该元素所代表的城市有交通联系的城市(代码、里程、列车车次)。 ② 根据具体最优决策的要求,用floyd算法求出出发城市到其它各城市的最优值(最短时间或最小的费用),搜索过程中所经过城市的局部最优信息都保存在邻接表的表头数组中。其目的城市所代表的元素中就保存了所需的最优决策结果。其相应的初始值可为∞,并在表头数组对应的城市元素中保存响应的信息。 ③主程序可以有系统界面、菜单;也可用命令提示方式;选择功能模块执行,要求在程序运行过程中可以反复操作。 2、数据结构 本程序运用了关于图这种数据结构。 他的抽象数据类型定义如下: typedef struct unDiGraph

数据结构实验报告全集

数据结构实验报告全集 实验一线性表基本操作和简单程序 1.实验目的 (1)掌握使用Visual C++ 上机调试程序的基本方法; (2)掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。 2.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)认真阅读和掌握本章相关内容的程序。 (3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 (5)按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果 实验代码: 1)头文件模块 #include >验目的 掌握顺序栈的基本操作:初始化栈、判栈空否、入栈、出栈、取栈顶数据元素等运算以及程序实现方法。 2.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)分析问题的要求,编写和调试完成程序。 (3)保存和打印出程序的运行结果,并分析程序的运行结果。 3.实验内容 利用栈的基本操作实现一个判断算术表达式中包含圆括号、方括号是否正确配对的程序。具体完成如下:

(1)定义栈的顺序存取结构。 (2)分别定义顺序栈的基本操作(初始化栈、判栈空否、入栈、出栈等)。 (3)定义一个函数用来判断算术表达式中包含圆括号、方括号是否正确配对。其中,括号配对共有四种情况:左右括号配对次序不正确;右括号多于左括号;左括号多于右括号;左右括号匹配正确。 (4)设计一个测试主函数进行测试。 (5)对程序的运行结果进行分析。 实验代码: #include < > #define MaxSize 100 typedef struct { ??? int data[MaxSize]; ??? int top; }SqStack; void InitStack(SqStack *st) 验目的 (1)进一步掌握指针变量的用途和程序设计方法。 (2)掌握二叉树的结构特征,以及链式存储结构的特点及程序设计方法。 (3)掌握构造二叉树的基本方法。 (4)掌握二叉树遍历算法的设计方法。 3.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)掌握一个实际二叉树的创建方法。 (3)掌握二叉链存储结构下二叉树操作的设计方法和遍历操作设计方法。 4.实验内容 (1)定义二叉链存储结构。

数据结构家谱管理系统

//////////////////////////////////////////////////////////// /////////////////// //题目:家谱资料管理 //要求:家谱用于记录某家族历代家族成员的情况与关系。现编制一个家谱资料管理软件, //实现对一个家族所有的资料进行收集整理。支持对家谱的增加,删除,更新,统计等。 //////////////////////////////////////////////////////////// /////////////////// #include #include #include int MATEFLAG=0; typedef struct TreeNode

int Num; //记录这个人拥有几个儿女 char Name[20]; //记录这个人的姓名 char Kind; //标示节点的种类有女G男B struct TreeNode * NextNode[20]; //记录这个人的儿女struct TreeNode * Parent; //记录这个节点的父节点 }TreeNode; void CreatTree(TreeNode *Tree); void OutPutAll(TreeNode *Tree); TreeNode * SearchTree(TreeNode *Tree,char name[],int length); void MainMenue(TreeNode *Tree); void SubMenue1(TreeNode * Tree); void SubMenue2(TreeNode *Tree); void Change(TreeNode * Tree); void AddNew(TreeNode * Tree);

数据结构全国交通模拟系统

全国交通模拟系统课程设计报告 姓名:唐文龙 班级: 2班 学号: 411417080216 学院:华信学院 专业:计算机科学与技术 指导: 日期:2013.06.20

目录 1 需求分析 (1) 1.1 概述 (1) 1.2 数据需求 (1) 1.3 功能性需求 (1) 1.4 其他需求 (1) 2 概要设计 (2) 3 详细设计 (4) 3.1 记录的定义 (4) 3.2 子程序说明 (5) 3.3 子程序的算法说明 (5) 3.3.1主函数流程图 (6) 4 系统实现 (7) 4.1开发环境 (8) 4.2运行界面 (9) 4.3测试用例 (10) 5 总结 (11) 6.参考文献 (11) 附录:源程序 (11)

1 需求分析 出于不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能短,出门旅游的游客则期望旅费尽可能省,而老年旅客则要求中转次数最少。编制一个全国城市间的交通咨询程序,为旅客提供两种或三种最优决策的交通咨询。 1.1 概述 程序的功能包括:提供对城市信息的编辑,提供列车时刻表和飞机航班表的编辑,提供两种最优决策:最快到达、最省钱到达。 1.2 数据需求 输入列车或飞机编号时需输入一个整型数据;输入列车或飞机的费用时需输入一个实型数据;输入列车或飞机开始时间和到达时间时均需输入两个整型数据;在选择功能时,应输入与所选功能对应的一个整型数据。 1.3 功能性需求 总体功能描述 (1) 提供对城市信息进行编辑的功能。 (2) 城市之间有两种交通工具:火车和飞机。提供对列车时刻表和飞机航班进行编辑的功能。 (3) 提供两种最优决策: 最快到达或最省钱到达。全程只考虑一种交通工具,不考虑回程; (4) 旅途中耗费的总时间应该包括中转站的等候时间。 (5) 咨询以用户和计算机的对话方式进行。由用户输入起始站、终点站、最优决策原 则和交通工具, 输出信息: 最快需要多长时间才能到达或者最少需要多少旅费才能到达。 1.4 其他需求 (1)具有可靠性,可用性。

数据结构上机实验线性表单链表源代码

#include template class LinearList { public: virtual bool IsEmpty()const=0; virtual int Length()const=0; virtual bool Find(int i,T& x)const=0; virtual int Search(T x)const=0; virtual bool Insert(int i,T x)=0; virtual bool Update(int i,T x)=0; virtual bool Delete(int i)=0; virtual void Output(ostream& out)const=0; protected: int n; }; #include "linearlist" template class SeqList:public LinearLisr { public: SeqList(int mSize); ~SeqList(){delete [] elements;} bool IsEmpty()const; bool Find(int i,T& x)const; int Length()const; int Search(T x)const; bool Insert(int i,T x); bool Update(int i,T x); bool Delete(int i); void Output(ostream& out)const; private: int maxLength; T *elements; }; template SeqList::SeqList(int mSize) { maxLength=mSize;

数据结构(二叉树)家谱管理系统

数学与计算机学院 课程设计说明书 课程名称: 数据结构与算法课程设计 课程代码: 题目: 二叉树生成家谱 年级/专业/班: 学生姓名: 学号: 开始时间: 2015 年 12 月 09 日 完成时间: 2015 年 12 月 29 日 课程设计成绩: 指导教师签名:年月日目录(小三黑体,居中)

1 需求分析 (6) 1.1任务与分析 (6) 1.2测试数据 (6) 2 概要设计 (7) 2.1 ADT描述 (7) 2.2程序模块结构 (8) 2.3各功能模块 (9) 3 详细设计 (10) 3.1结构体定义 (10) 3.2 初始化 (11) 3.3 插入操作 (13) 3.4 查询操作 (15) 4 调试分析 (18) 5 用户使用说明 (18) 6 测试结果 (18) 结论 (23) 附录 (24) 参考文献 (25)

随着计算机科学技术、计算机产业的迅速发展,计算机的应用普及也在以惊人的速度发展,计算机应用已经深入到人类社会的各个领域。 计算机的应用早已不限于科学计算,而更多地应用在信息处理方面。 计算机可以存储的数据对象不再是纯粹的数值,而扩展到了字符、声 音、图像、表格等各种各样的信息。对于信息的处理也不再是单纯的 计算,而是一些如信息存储、信息检索等非数值的计算。那么,现实 世界的各种数据信息怎样才能够存储到计算机的内存之中,对存入计 算机的数据信息怎样进行科学处理,这涉及计算机科学的信息表示和 算法设计问题。为解决现实世界中某个复杂问题,总是希望设计一个 高效适用的程序。这就需要解决怎样合理地组织数据、建立合适的数 据结构,怎样设计适用的算法,以提高程序执行的时间效率和空间效 率。“数据结构”就是在此背景下逐步形成、发展起来的。 在各种高级语言程序设计的基本训练中,解决某一实际问题的步骤一般是:分析实际问题;确定数学模型;编写程序;反复调试程序直 至得到正确结果。所谓数学模型一般指具体的数学公式、方程式等,如牛顿迭代法解方程,各种级数的计算等。这属于数值计算的一类问 题。而现实生活中,更多的是非数值计算问题,如手机中的通讯录,人们对它的操作主要是查找、增加、删除或者修改电话记录。再如,人们经常在互联网上查阅各种新闻,或查阅电子地图,人们可以在某 城区地图上查找自己所需的街道或店铺,其操作主要是搜索和查询。 下面再来分析几个典型实例,它们的主要特点是:不同实例的数据元 素之间存在不同的关系;对数据信息的处理主要有插入、删除、排序、 检索等。 关键词:网络化;计算机;对策;二叉树

交通咨询系统 C语言

CHINA 交通咨询系统

目录 一、需求分析 (2) 1、程序的功能及设计要求 (2) 2、输入输出的要求 (2) 二、环境说明 (2) 三、详细设计 (3) 1、模块设计 (3) 2、画出各函数的调用关系图、主要函数的流程图。 (3) 2、详细代码 (4) 四、调试分析 (4) 1、测试数据: (4) 2、借鉴的资料 (5) 五、课程总结 (6) 六、附录 (6)

一、需求分析 1、程序的功能及设计要求 在交通网络非常发达、交通工具和交通方式不断更新的今天, 人们在出差、旅游或做其他出行时,不仅关心节省交通费用,而且对里程和所需时间等问题也感兴趣。对于这样一个人们关心的问题,通过建立交通网络图的存储结构图,提供用户查询的功能,功能一:通过输入城市名及任意两个城市的距离,查询任意两个城市之间的最短距离,从而达到最省目的;功能二:通过输入城市名以及任意两个程序的距离,查询中转路线最少。程序所具有的功能特色本程序主要目的是为了给用户提供路径咨询,可以通过输入设置,延续程序的拓展性。 设计要求及分析 设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到另一城市顶点之间的中转次数最少问题或最低花费或最少时间(最短路径)问题。 该设计共分三个部分:一是建立交通网络图的存储结构;二是解决单源最短路径问题;最后再实现任意两个城市顶点之间的最短路径问题。 1. 建立交通网络图的存储结构 要实现设计要求,首先要定义交通图的存储结构:邻接链表和邻接矩阵; 2. 解决任意两个城市顶点之间的中转次数最少的问题; 3. 解决任意两个城市顶点之间的最短路径(最低花费或最少时间)问题。 2、输入输出的要求 定义变量类型应该保持类型一致,通过键盘输入,确保输入输出一致,使最短路径途径以及最短路径能够简单明了的输出,同时保持程序简洁美观,效果明显。输入要求为输入界面直观、亲切;有利于快速输入;有利于准确输入;有利于输入、修改;方便操作。输出要求:输出要求应简单、直观,一目了然,尽量符合用户的习惯,便于用户阅读、理解与使用。输出内容应尽量汉字化,从而使输出格式醒目;各种输出设计要长考虑以利于系统发展和输出项目扩充、变动的需要;输出操作方便 二、环境说明 系统:WINDOS7 开发软件:vc6+

相关文档
最新文档