城市通信网络建设系统.docx
- 文档编号:7740914
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:36
- 大小:219.45KB
城市通信网络建设系统.docx
《城市通信网络建设系统.docx》由会员分享,可在线阅读,更多相关《城市通信网络建设系统.docx(36页珍藏版)》请在冰豆网上搜索。
城市通信网络建设系统
《数据结构》课程设计
题目:
城市通信网络建设系统
班级:
********
姓名:
********
学号:
1111111111
指导教师:
^^^^^^^^^
完成日期:
2015年6月13日
1.需求分析
1.1问题描述
通信设施的安全保障是安全生产管理工作的一项重要内容。
随着通信网络的不断扩大和各种先进的通信方式日益增多相应的通信设施也在快速扩展,在不同的环境、不同的地域受到各种客观条件的影响和破坏(包括自然因素和人为因素)以及通信设施在使用过程中的老化都会对全程全网的通信质量造成不同程度的影响。
因此,采用通信设施安全保障计算机管理系统实现全区通信设施的集中管理,对保障通信设施安全,提高维护工作效率,及时发现与处理隐患问题,增强抵抗灾害能力,特别是在实现管理工作的系统化、正规化、规范化方面是非常必要的。
如何在最小的经济条件下达到利益最大化,是所有公司、企业已经政府部门一直所探讨和解决的问题。
对于城市通信管理系统来说,若要在n个城市之间建设通信网络,只需要架设1条通信线路即可,建立最小生成树即能实现以最低的经济代价建设这个通信网。
1.2基本任务
通过用户调查分析及实际需求,系统需要实现如下基本任务:
(1)在纸上模拟设计n个城市的网络平面图,城市数不少于20个,相同的的城市数不少于2
(1),顶点表示各城市,边表示城市间的距离;
(2)编写算法,求解最小代价通信网络;
(3)输出该通信网络中各边及其权值;
n个城市间的线路连接属于图的结构,要构建最经济的通信网络,即是构建图的生成树。
把城市间的线路关系看成是图。
城市间的距离即是图的权值。
利用算法或算法即可求出最小生成树。
2.概要设计
为了完成需求分析的基本任务,主要从以下3个方面进行设计:
2.1主界面设计
为了使程序界面更加友好,建立了函数和函数,即欢迎界面以及实现用户可以按数字键选择相应的功能。
欢迎界面如下图:
2.2数据结构设计
若要在n个城市之间建设通信网络,只需要架设1条通信线路即可。
所以,将一个现实的经济问题,转变为一个求最小生成树的问题。
本系统软件采用经典算法算法和算法实现求最小生成树,从而获取最经济的通信路径。
2.3系统功能设计
系统建立了函数和函数,其功能如下:
(1)函数:
使用户更清晰看到程序的主体,使得程序界面更为直观。
程序如下:
()初始界面
{
("\n");
("…………最小生成树的应用…………\n");
("…………通信网络建设问题………\n");
("………………董卓琴1.0\n");
("\n");
("\n");
("\n");
("\n";
("\n");
("1.输入通信网络基本信息并将信息存储到文件中\n");
("2.将网络基本信息显示到屏幕上\n");
("3.用算法算出最短路径,并将结果存储
到文件中\n");
("4.用算法算出最短路径,并将结果存储到文件中\n");
("5.退出\n");
("\n");
("\n");
("\t\t\t请输入您要选择的选项(1-5):
\n");
}
(2)函数:
为用户提供了方便,用户可以通过按数字键来选择相应的功能。
程序如下:
()控制选项函数
{
G=();
c;
();
>>c;
(c)
{
(c)
{
1:
("");
("1b");
("\n");
("\n\t\t*****************欢迎使用**********************");
("\");
("\n*********************************************************************************");
("\n");
("\n");
("\n");
(G);
("");
();
("");
>>c;
;
2:
("");
("1c");
("\n");
("\n\t\t*****************欢迎使用**********************");
("\");
("\n*********************************************************************************");
("\n");
("\t\t\t下面显示的是通信网络的基本信息\n");
("\n");
(G);
(G);
("\n\t\t\t按任意键返回\n");
();
();
("");
();
("");
>>c;
;
3:
("");
("1e");
("\n");
("\n\t\t*****************欢迎使用**********************");
("\");
("\n*********************************************************************************");
("\n");
("\n");
("\n");
(G);
([0]);
("\t\t*******结果存入中,按任意键返回***********\n");
();
();
("");
();
("");
>>c;
;
4:
("");
("1d");
("\n");
("\n\t\t*****************欢迎使用**********************");
("\");
("\n*********************************************************************************");
("\n");
("\n");
("\n");
(G);
(G);
("\t\t*******结果存入中,按任意键返回***********\n");
();
();
("");
();
("");
>>c;
;
5:
;
}
}
}
3.模块设计
3.1模块设计
系统主要包含主程序模块和其它操作模块。
其调用关系如下图所示。
3.2系统子模块及其功能设计
本系统共设计了5个子模块,各程序的函数名及功能说明如下:
(1)(G);创建图模块
(2)(G);存储图模块
(3)(G);输出图模块
(4)(G);算法求最小生成树模块
算法的基本思想是:
1、若网络G的边数1,则G即为所求的最小生成树,否则,一定有e>1.
2、将网络的e条边按权值自小到大顺序排列。
3、将网络G中的边都去掉,只留下n个孤立顶点作为初始的最小生成树T,再按边的排放顺序逐个考察,若与当前E(T)中的边不构成圈,便将它加入到边集E(T),直至E(T)中边数满1为止。
(5)(G);算法求最小生成树模块
算法是另一种求最小生成树的方法,它的基本思想是按权值局部最小逐次将顶点和边加入到T中,直至V(T)满n个顶点为止。
算法步骤为:
1、设最小生成树T的V(T)和E(T)均为空。
2、从顶点集V(G)中任取一顶点加到顶点集V(T)中。
3、在与V(T)中各顶点相关的所有边中,取一条权值最小的边(),其中,包含于V(T),包含于V(T)。
4、()加入到E(T)中,将顶点加入到V(T)中。
5、若V(T)已满n个顶点,则算法终止,否则转步骤(3)。
3.3系统模块之间的调用关系
系统的5个子模块之间的主要调用关系如下图所示:
4.详细设计
4.1数据结构设计
系统采用邻接矩阵存储信息,定义如下:
图的数据结构
建立图
{
()
{
(,0,);
}
[]城市名称
网络条数
;图的当前顶点数(城市总数)
;图的当前弧数(网络总数)
};
记录从顶点集U到的代价最小的边的辅助数组定义
辅助数组
{
()
{
=0;
}
;当前点
;权值
}[];
{
()
{
(,0,1024);
}
[1024];
};
*=[20];
若G中存在顶点u,则返回该顶点在图中位置;否则返回-1。
<>
(u)
{
i;
(i=0;i<;)
((u,[i])0)
i;
-1;
}
4.2系统主要模块设计
4.2.1函数
1)创建邻接矩阵以存储图的内容。
2)填充矩阵,即输入城市间网络的状况,以方便使用算法或算法求
出最经济的架设方法。
程序如下:
采用数组(邻接矩阵)表示法,构造无向网G。
()
{
i=0,j=0,k=0,w=0;
;路径的两个节点
("\n\n\t\t*************建立城市间网络信息**********");
("请输入城市的总数:
\n");
("");
("请输入城市间的网络数:
\n");
("");
("请输入个城市的名称(<个字符):
\n");
(0<)构造顶点向量
(""[i]);
(0<)初始化邻接矩阵
(0<)
[i][j]=65535;65535为无穷大
("请输入条网络的两个城市信息城市1和城市2
的距离(以空格作为间隔):
\n");
(0<)
{
("");输入城市1城市2名称及其距离
(G,);定位权值位置
(G,);
[i][j][j][i];对称
}
G;
}
4.2.2函数
1)为了避免每次都重复输入信息,用文件存储图的内容。
2)如果没有文件则建立文件,并把图的内容存储到文件中。
3)如果文件存在,则从文件中读取图的内容到内存,以便完成其他操作。
程序如下:
(G)输入内容存储在
{
;
*;
("","");
()
{
(G);
("","");
(,"\n");存城市树
(,"\n");存网络数
(0<)
(,"\t\n"[i])存城市名称
(0<)存储邻接矩阵
(0<;)
([i][j])
{
[i][j]=0;到它自己
(,"\n"[i],[j],[i][j]);
}
{
(,"\n"[i],[j],[i][j]);
}
();
<<"存储成功!
。
。
。
输入任意键返回."<<;
c=();
}
从文件中读取网的信息存到内存中
{
("\t\t*******正在读取文件中....***********\n");
(,"\n",);
(,"\n",);
[1024];
(,0,1024);
(0;i<;)
{
(,1023,);
([i]);
}
[1024];
=0;
(,0,1024);
(0;i<;)
(0<)
{
(,"",);
n=0;
[1024];
(,0,1024);
([n]'_')
{
[n]=[n];
;
}
([],);
;
(,0,1024);
=0;
([n]'_')
{
[]=[n];
;
;
}
([1],);
=0;
;
(,0,1024);
([n]'\0')
{
[]=[n];
;
;
}
X=1;
=0;
(n=1;n>=0;)
{
=0;
([n])
{
'0':
=0;
;
'1':
=1;
;
'2':
=2;
;
'3':
=3;
;
'4':
=4;
;
'5':
=5;
;
'6':
=6;
;
'7':
=7;
;
'8':
=8;
;
'9':
=9;
;
}
*X;
X=X*10;
}
[i][j]=;
}
("\t\t*******读取成功...\t***********\n");
}
();
G;
}
4.2.3函数
函数完成输出功能,将内存中图的内容输出到屏幕上
程序如下:
(G)将输入的网络基本信息打到屏幕上
{
;
("城市总数\t",);
("网络条数\n",);
("城市名称:
\t\n");
(0;i<;)
{
(""[i]);
<<[i];
}
("\n");
("各个城市间的距离:
\n");
("\n");
("\n");
(0<)
(0<)
("距离公里\n"[][][i][j]);
<<"输入任意键返回."<<;
c=();
G;
}
4.2.4函数
用算法求出最小生成树,即最经济的假设方案
程序如下:
(G)结果存储在
{
[];
000[a][b];
*;
("","");
(0<)
[i];
("最短网络路径为:
\n");
(k<1)
{
(0<)从[i][j]中找到权值最小的
(1<)
([i][j]<)
{
[i][j]中存最小权值
;
;
}
([a][b])如果a和b值不同则输出
{
("\t距离\n"[a][b][a][b])输出生成树各边
(,"\n"[a][b]);
;
(0<)输出后变成相同值,下次将不会输出
([i][b])
[i][a];
}
[a][b][b][a]=65535;输出过的权值变为最大值
}
();
();
G;
}
4.2.5函数
用算法求出最小生成树,即最经济的假设方案
程序如下:
用普里姆算法从第u个顶点出发构造网G的最小生成树T,输出T的各条边
(u)结果存储在中
{
0;
;
*;
("","");
();
(0<)辅助数组初始化
{
([j]);
[j][k][j];
}
[k]0;初始{u}
("最短网络路径为:
\n");
(1<)选择其余1个顶点
{
();求出T的下一个结点:
第K顶点
("()\n"[k][k]);
(,"\n"[k][k]);输出生成树的边
[k]0;第K顶点并入U集
(0<)
([k][j]<[j])新顶点并入U集后重新选择最小边
{
([j][k]);
[j][k][j];
}
}
();
();
}
5.调试分析
系统主界面运行如图1所示。
各子功能测试运行结果如下:
运行程序,出现欢迎界面,见下图:
5.1城市间网络信息的建立
5.2显示通信网络的基本信息
5.3查询最短网络路径
6.用户使用说明
1、运行程序,出现欢迎界面;
2、按1进入输入系统,如果文件没有存储城市网络内容,则由用户从键盘读入,读入后自动保存到文件中,按任意键即可返回欢迎界面;
3、如果文件内已经存储了城市网络内容,则显示文件已保存到文件中,按任意键返回;
4、输入2可以在屏幕上输出存储在文件内的城市间网络信息,显示完毕后按任意键可返回欢迎见面;
5、按3和4分别可实现算法和算法求出最小生成树,即最低经济代价建设通信网络(距离最短的最经济),显示完毕后按任意键返回欢迎界面;
6、按5退出程序。
7.参考文献
《数据结构理论与实践》杨永斌(核心算法算法以及算法来源于此)
《数据结构(C语言)实践教程》胡元义
《数据结构》严蔚敏、吴伟民
《课程设计案例精选与编程指导》陈清华、朱红
8.对所设计的软件进行自我评价,如创新点、未解决的问题等情况说明:
1、对图的逻辑结构及存储结构有了更深刻的认识;
2、对算法和算法亦有了更深刻的认识;
3、了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力,深入了解了模块化的程序设计步骤;
4、算法应该用堆排序然后再找路径,但未能实现;
5、输入方面如果没有将网络信息存入文件,由键盘输入信息时,如果手误输错了无法更改,只能重新输入,而且如果输入中文,最后显示时会出现乱码,只能用英文输入;
6、算法的实现仍有问题,结果存在错误,而且只能实行到第三步,到第四步时会出现程序关闭的提醒;
9、程序源代码:
<>
<>
<>
20最大顶点个数
3顶点字符串的最大长度+1
[][];
[]邻接矩阵的数据结构
图的数据结构
建立图
{
()
{
(,0,);
}
[]城市名称
网络条数
;图的当前顶点数(城市总数)
;图的当前弧数(网络总数)
};
记录从顶点集U到的代价最小的边的辅助数组定义
辅助数组
{
()
{
=0;
}
;当前点
;权值
}[];
{
()
{
(,0,1024);
}
[1024];
};
*=[20];
若G中存在顶点u,则返回该顶点在图中位置;否则返回-1。
<>
(u)
{
i;
(i=0;i<;)
((u,[i])0)
i;
-1;
}
采用数组(邻接矩阵)表示法,构造无向网G。
()
{
i=0,j=0,k=0,w=0;
;路径的两个节点
("\n\n\t\t*************建立城市间网络信息**********");
("请输入城市的总数:
\n");
("");
("请输入城市间的网络数:
\n");
("");
("请输入个城市的名称(<个字符):
\n");
(0<)构造顶点向量
(""[i]);
(0<)初始化邻接矩阵
(0<)
[i][j]=65535;65535为无穷大
("请输入条网络的两个城市信息城市1和城市2的距离(以空格作为间隔):
\n");
(0<)
{
("");输入城市1城市2名称及其距离
(G,);定位权值位置
(G,);
[i][j][j][i];对称
}
G;
}
(G)输入内容存储在
{
;
*;
("","");
()
{
(G);
("","");
(,"\n");存城市树
(,"\n");存网络数
(0<)
(,"\t\n"[i])存城市名称
(0<)存储邻接矩阵
(0<;)
([i][j])
{
[i][j]=0;到它自己
(,"\n"[i],[j],[i][j]);
}
{
(,"\n"[i],[j],[i][j]);
}
();
<<"存储成功!
。
。
。
输入任意键返回."<<;
c=();
}
从文件中读取网的信息存到内存中
{
("\t\t*******正在读取文件中....***********\n");
(,"\n",);
(,"\n",);
[1024];
(,0,1024);
(0;i<;)
{
(,1023,);
([i]);
}
[1024];
=0;
(,0,1024);
(0;i<;)
(0<)
{
(,"",);
n=0;
[1024];
(,0,1024);
([n]'_')
{
[n]=[n];
;
}
([],);
;
(,0,1024);
=0;
([n]'_')
{
[]=[n];
;
;
}
([1],);
=0;
;
(,0,1024);
([n]'\0')
{
[]=[n];
;
;
}
X=1;
=0;
(n=1;n>=0;)
{
=0;
([n])
{
'0':
=0;
;
'1':
=1;
;
'2':
=2;
;
'3':
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 城市 通信 网络 建设 系统