高校专用通信网络建设_第1页
高校专用通信网络建设_第2页
高校专用通信网络建设_第3页
高校专用通信网络建设_第4页
高校专用通信网络建设_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

..11/淮海工学院淮海工学院姓姓名:韦迪 系院 指指导教师评语成绩签名年月日..11/课程设计目12、初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能3、提高综合运用所学的理论知识和方法独立分析和解决问题的能力4课程设计任务与要求CC设计题目从任务书所列选题表中选取,每班每题不得超过2人。据结构课程所学的知识。学生自选课题需在8周前报课程设计指导教师批准方可生效。要求12、设计的题目要求达到一定工作量(300行以上代码,并具有一定的深度和难度3、程序设计语言推荐使用C/C++,程序书写规,源程序需加必要的注4、每位同学需提交可独立运行的程序5、每位同学需独立提交设计报告书(每人一份要求编排格式统一、规、容充实,不少于10(代码不算6、课程设计实践作为培养学生动手能力的一种手段,单独考核..PAGEPAGE2/课程设计说明~问题描述]中国移动公司正在积极推3G信应用,计划在高校之间建立一个专用通信网络,请为其规划一个投资最省[基本要用无向网模拟该系统,顶点表示各高校,边表示线路建设成高校数量不少于10个,覆盖南、中、北、等地的高输出方案的结果直观、明交互式改变某些线路的建设成本,可重新输出新方二概要设课程设计说明二概要设voidmenu(graph*g);//菜voidEditgraph(graph*g);// intCreategraph(graph*g)//创建通信网络系统intInsertVex(graph*g,stringv)//添加高校voidChangeVex(graph*g,stringv)// 修改高校intInsertArc(graph*g,stringv,stringw)// intDeleteArc(graph*g,stringv,stringw) 删除高校间的路voidChangeWeight(graph*g,stringv,stringw)// intDestroygraph(graph*g)// intDisplay(graph*g)// voidsave(graph 保存通信网络系基本操作 初始化L为空表 销毁L 将L置为空表 若L为空表则返回0,否则返回表中元素个数 若L中存在元素e则将当前指针指向e所在位置并返回真 返回L中第i个元素的值 L第i位置插入e,L长度增加1DelList(L,I,&e)删除L的第i元素,并用e回其值,L度减少1typedefstruct{int 权typedef{stringvexs[MAX_VERTEX_NUM];//顶ArcNodearcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM];//邻接矩阵intvexnum,arcnum;//顶点数和边数}graph;//图的类typedef{stringadjvex;intlowcost;}minside;//求最小生成树时的辅助数组的三详细设创建通信系intCreategraph(graph{inti,j,k,w;stringif(未找到文件){cout<<"openerror!"<return0;}{(*g).arcs[i][j].adj=INFINITY;// }{无向}return}添加高intInsertVex(graph*g,string{//在图g增添新顶点vif(顶点数为0){ }cout<<"请输入要添加的高校名:";intn=LocateVex(g,v);if(高校名重复){ }int{初始化该列邻接矩阵的}图g顶点数加1return1;}删除学intDeleteVex(graph*g,string{//删除g中顶点v及其相关的弧 顶点数为0){ }intk=LocateVex(g,v);{ }inti,j;intif(v不是图g顶点)return0;if(有入弧或{修改弧}for(序号k面的顶点向量依次前移)移动待删除顶点之后的矩阵元return}..PAGEPAGE10/修改高校voidChangeVex(graph*g,stringv)//修改高校{cout<<"请输入要修改的高校名:";intn=LocateVex(g,v);{ }stringcout<<"请输入修改后的高校名:";g-}添加路intInsertArc(graph*g,stringv,string{//在g中增添弧, 若g是无向的,则还增添对称弧if(顶点数为0){cout<<"未建立通信网络系统!\n";system(暂停);}intv1,w1;v1=LocateVex(g,v);w1=LocateVex(g,w);{cout<<"高校名输入错误!\n";system(暂停);}elseif(线两头高校名重{cout<<"该线路已存在!\n";system(暂停);}弧或边数加cout<<"请输入该条线路的建设费boolbRet=cin.good();{cout<<"输入的成本不是整型的!\n";system(暂停);}return1;}删除线intDeleteArc(graph*g,stringv,string{//在g中删除弧, 若g是无向的,则还删除对称弧if(顶点数为0){cout<<"未建立通信网络系统!\n";system(暂停);}intintm=LocateVex(g,w);{cout<<"学校名输入错误!\n";system(暂停);}elseif(费无{cout<<"不存在该线路!\n";system(暂停);编}return}四程序设计与调试分的健壮性不能达到预期的结果,这些都是需要改进的。在编写程序过程中,因为函数调用不准确,使得循环进不去,在程序中的函数调用是个非常重的部分,也是经常需要用到的,为了达到了预期结果,后来改变函数的调用关系五用户手【使用说明使用高校专用通信网络系选择1.构造通信网络系统,则显示出10高校45线路的通信系统矩阵创建成功,选择2.编辑通信网络系统,显示出功能1~8销毁系统,选择1.销毁通信网络系统添加高校,选择2.添加一个高校,并输入要添加的高校名删除高校,选择3.删除一个高校,并输入要删除的高校名。若输入的高校名不存在,则显示不修改高校名,选择4.修改高校名,并输入要修改的高校名。若输入的高校名不存在,则显示不存添加高校间的线路,选择5.添加一条高线间的线路,输入要添加线路两端的高校名。若输入的高删除高线间的线路,选择6.删除一条高校间的线路,并输入要删除线路两端的高校名。若输入的修改线路的成本,选择7.修改线路的成本,并输入要删除线路连段的高校名。若输入的高校名推出编辑通信网络系统,选择8.退出。回到高校专用通信网络建设系统生成最佳方案,选择3.生成最佳方案。并输入起始学校和要保存的文件名输出通信网络系统,选择4.输出通信网络系统保存通信网络系统,选择5.保存通信网络系统。并输入要保存的文件名退出,选择6.退出系统六测试成通信网络系添加一个高删除一个高修改高校添加一条高校间的线删除高校间的线修改高校间的成生成最佳路输出通信网络系七附录(源程序清单#include"stdafx.h"#defineMAX_VERTEX_NUM#defineINFINITY32768usingnamespacestd;typedefstructArcNode{intadj;/typedefstruct{stringvexs[MAX_VERTEX_NUM];/ArcNodearcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM];/接矩阵intvexnum,arcnum;/点数和边数voidmenu(graph*g);voidEditgraph(graphintLocateVex(graph*g,stringv)//求顶点位置函数,若v在,输出j;若不存在,输出{intj=-1,k;{if(g->vexs[k]==v)//判断是否存在顶点{}}return}intCreategraph(graph*g)//采用邻接矩阵法,构造有向网{stringva,vb;{return0;}infile>>g->vexnum;//从文件读入顶点数infile>>g->arcnum;//从文件读入边数for(i=0;ivexnum;++i)// for(i=0;i<(*g).vexnum;++i)初始化邻接矩阵{(*g).arcs[i][j].adj=INFINITY;}{(*g).arcs[i][j].adj=(*g).arcs[j][i].adj=w;// 无向}return1;}intInsertVex(graph*g,stringg中增添新顶点v{}intn=LocateVex(g,v);{}int(*g).vexs[(*g).vexnum]=v;构造新顶点向量{(*g).arcs[(*g).vexnum][i].adj=INFINITY;//初始化该行邻接矩阵的值(*g).arcs[i][(*g).vexnum].adj=INFINITY; 初始化该列邻接矩阵的}(*g).vexnum+=1; return1;}intDeleteVex(graph*g,string删除g中顶点v及其相关的弧{}intk=LocateVex(g,v);{}intm=0;if(k<0)//v 不是图g的顶点return0;if((*g).arcs[j][k].adj!=m)有入弧或边{(*g).arcnum 修改弧}for(j=k+1;j<(*g).vexnum;j++)k面的顶点向量依次前移(*g).arcs[i][j-1]=(*g).arcs[i][j]; (*g).arcs[j-1][i]=(*g).arcs[j][i];动待删除顶点之下的矩阵元素(*g).vexnum更新图的顶点数return}voidChangeVex(graph*g,stringv)//修改高校{intn=LocateVex(g,v);{}stringg-}intInsertArc(graph*g,stringv,string{//在g中增添弧, 若g是无向的,则还增添对称弧{}intv1,w1;v1=LocateVex(g,v);尾w1=LocateVex(g,w);头{}elseif(g-{}(*g).arcnum++;弧或边数加1boolbRet=cin.good();{}return1;}intDeleteArc(graph*g,stringv,string{//在g中删除弧, 若g是无向的,则还删除对称弧{}intn=LocateVex(g,v);intm=LocateVex(g,w);{}elseif(g-{}return}voidChangeWeight(graph*g,stringv,string{intm=LocateVex(g,v);intn=LocateVex(g,w);{}elseif(g-{}charcout<<"请输入该路线修改后的成boolbRet=cin.good();{}{g->arcs[m][n].adj=g-}}intDestroygraph(graph毁图if(g-{}intreturn}intDisplay(graph*g)//以矩阵方式输出{if(g-{}int cout<vexs[i]<<"";{cout<vexs[i]<<"";{ ∞"<<"";cout<arcs[i][j].adj<<"}}return}{intlowcost;}minside;//求最小生成树时的辅助数组的intminimum(graph*G,minside{//求closedge[i].lowcost小值,并返回iinti=0,j,k,min;while(closedge[i].lowcost==0)//找到第一个值不0closedge[i].lowcost序号min=closedge[i].lowcost;//min记第一个不为0 {}returnk;//回当前最小正值的序}voidMiniSpanTree_Prim(graph*g,string{if(g-{}int{}minsideclosedge[MAX_VERTEX_NUM];intk=LocateVex(g,s);stringa[30],b[30];//a[],b[]中间变量,用来存放边的顶点for(int 初始化{{}}charofstreamoutfile(name);for(inte=1;e<=g->vexnum-1;e++)//n-1{intk0=minimum(g,closedge);stringu0=closedge[k0].adjvex;stringv0=g->vexs[k0];intm=LocateVex(g,u0);int 成本为 {if(g-{}}}}voidsave(graph{if(g-{}charofstreamoutfile(name);for(int{}for(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论