城市通信网络建设系统

  • 格式:docx
  • 大小:759.64 KB
  • 文档页数:29

《数据结构》课程设计题目:城市通信网络建设系统班级:********姓名:********学号:1111111111指导教师:^^^^^^^^^完成日期:2015 年 6 月13 日1.需求分析1.1 问题描述通信设施的安全保障是安全生产管理工作的一项重要内容。

随着通信网络的不断扩大和各种先进的通信方式日益增多相应的通信设施也在快速扩展, 在不同的环境、不同的地域受到各种客观条件的影响和破坏( 包括自然因素和人为因素) 以及通信设施在使用过程中的老化都会对全程全网的通信质量造成不同程度的影响。

因此, 采用通信设施安全保障计算机管理系统实现全区通信设施的集中管理, 对保障通信设施安全, 提高维护工作效率, 及时发现与处理隐患问题, 增强抵抗灾害能力, 特别是在实现管理工作的系统化、正规化、规范化方面是非常必要的。

如何在最小的经济条件下达到利益最大化,是所有公司、企业已经政府部门一直所探讨和解决的问题。

对于城市通信管理系统来说,若要在n 个城市之间建设通信网络,只需要架设n-1 条通信线路即可,建立最小生成树即能实现以最低的经济代价建设这个通信网。

1.2 基本任务通过用户调查分析及实际需求,系统需要实现如下基本任务:(1)在纸上模拟设计n 个城市的网络平面图,城市数不少于20 个,相同的的城市数不少于2(n-1) ,顶点表示各城市,边表示城市间的距离;(2)编写算法,求解最小代价通信网络;(3)输出该通信网络中各边及其权值;n 个城市间的线路连接属于图的结构,要构建最经济的通信网络,即是构建图的生成树。

把城市间的线路关系看成是图。

城市间的距离即是图的权值。

利用prim 算法或kruskal 算法即可求出最小生成树。

2.概要设计为了完成需求分析的基本任务,主要从以下 3 个方面进行设计:2.1 主界面设计为了使程序界面更加友好,建立了interface 函数和choice 函数,即欢迎界面以及实现用户可以按数字键选择相应的功能。

欢迎界面如下图:2.2 数据结构设计若要在n 个城市之间建设通信网络,只需要架设n-1 条通信线路即可。

所以,将一个现实的经济问题,转变为一个求最小生成树的问题。

本系统软件采用经典算法prim 算法和kruskal 算法实现求最小生成树,从而获取最经济的通信路径。

2.3 系统功能设计系统建立了interface 函数和choice 函数,其功能如下:(1)interface 函数:使用户更清晰看到程序的主体,使得程序界面更为直观。

程序如下:void interface() // 初始界面{printf(" ____________________________________________\n");printf(" ⋯⋯⋯⋯最小生成树的应用⋯⋯⋯⋯\n");printf(" ⋯⋯⋯⋯通信网络建设问题⋯⋯⋯\n");printf(" ⋯⋯⋯⋯Made⋯By⋯董卓琴Version1.0\n");printf("_______________________________________________________\n");printf(" \n");printf(" \n");printf("___________________________________________________________\n";printf(" \n");printf("___________1. 输入通信网络基本信息并将信息存储到文件中\n");printf("___________2. 将网络基本信息显示到屏幕上\n");printf("___________3. 用kruskal 算法算出最短路径,并将结果存储到文件中\n");printf("___________4. 用prim 算法算出最短路径,并将结果存储到文件中\n");printf("___________5. 退出\n");printf(" \n");printf(" \n");printf(" \t\t\t 请输入您要选择的选项(1-5):\n");}(2)choice 函数:为用户提供了方便,用户可以通过按数字键来选择相应的功能。

程序如下:void choice() // 控制选项函数{MGraph G = MGraph();int c;interface();std::cin>>c;while(c){switch(c){case 1:system("color 1b");printf(" \n");printf(" \n\t\t***************** 欢迎使用**********************");printf(" \n__________________Welcom_to_Use");printf("\n********************************************_____________*************************************");printf(" \n");printf(" \n");printf(" \n");G=SaveGraph(G);system("cls");interface();//system("PAUSE");std::cin>>c;continue;case 2:system("cls");system("color 1c");printf(" \n");printf(" \n\t\t***************** 欢迎使用**********************");printf(" \n__________________Welcom_to_Use");printf("\n********************************************_____________*************************************");printf(" \n");printf(" \t\t\t 下面显示的是通信网络的基本信息\n");printf(" \n");G=SaveGraph(G);G=print(G);printf(" \n\t\t\t 按任意键返回\n");c=getchar();//c=getchar();system("cls");interface();//system("PAUSE");std::cin>>c;continue;case 3:system("cls");printf(" \n");printf(" \n\t\t***************** 欢迎使用**********************");printf(" \n__________________Welcom_to_Use");printf("\n********************************************_____________*************************************");printf(" \n");printf(" \n");printf(" \n");G=SaveGraph(G);prim(G,G.vexs[0]);printf(" \t\t******* 结果存入KruskalResult.dat 中,按任意键返回***********\n");c=getchar();c=getchar();system("cls");interface();system("PAUSE");std::cin>>c;continue;case 4:system("cls");system("color 1d");printf(" \n");printf(" \n\t\t***************** 欢迎使用**********************");printf(" \n__________________Welcom_to_Use");printf("\n********************************************_____________*************************************");printf(" \n");printf(" \n");printf(" \n");G=SaveGraph(G);G=kruskal(G);printf(" \t\t******* 结果存入PrimResult.dat 中,按任意键返回***********\n");c=getchar();c=getchar();system("cls");interface();system("PAUSE");std::cin>>c;continue;case 5:return;}}}3.模块设计3.1 模块设计系统主要包含主程序模块和其它操作模块。

其调用关系如下图所示。

开始interface 函数3.2 系统子模块及其功能设计choice 函数本系统共设计了 5 个子模块,各程序的函数名及功能说明如下:(1)CreateGraph(G); // 创建图模块(2)SaveGraph(G); // 存储图模块(3)Print(G); // 输出图模块(4)Kruskal(G); //kruskal 算法求最小生成树模块Kruskal 算法的基本思想是:1 、若网络G的边数en1, 则G即为所求的最小生成树,否则,一定有e>n-1.2 、将网络的 e 条边按权值自小到大顺序排列。