《高校专用通信网络建设(2020年10月整理).pdf》由会员分享,可在线阅读,更多相关《高校专用通信网络建设(2020年10月整理).pdf(32页珍藏版)》请在金锄头文库上搜索。
1、 1 淮 海 工 学 院 计算机工程学院 课程设计报告 设计名称:设计名称: 数据结构课程设计 选题名称:选题名称: 高校专用通信网络建设 姓姓 名:名: 陈韦迪 学学 号:号: 2014122778 专业班级:专业班级: 计算机科学与技术 计算机 142 系系 (院) :院) : 计算机工程学院 设计时间:设计时间: 2014.12.222015.1.4 设计地点:设计地点: 计算机实验室、教室 指导教师评语: 签名: 年 月 日 成绩:成绩: 数据结构课程设计报告 第 1 页,共 页 1 1课程设计目的 1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序
2、求解指定问 题。 2、初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 3、提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 4、训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在 此过程中培养他们严谨的科学态度和良好的工作作风。 2课程设计任务与要求: 任务任务 根据教材数据结构-C 语言描述 (耿国华主编)和参考书数据结构题集(C 语言版) (严蔚敏、吴伟民主 编)选择课程设计题目,要求通过设计,在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计 及其实现等方面加深对课程基本内容的理解和综合运用。 设
3、计题目从任务书所列选题表中选取,每班每题不得超过 2 人。 学生自选课题。 学生原则上可以结合个人爱好自选课题,要求课题有一定的深度与难度,有一定的算法复杂性,能够巩固数 据结构课程所学的知识。学生自选课题需在 18 周前报课程设计指导教师批准方可生效。 要求:要求: 1、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数 据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接 影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。 2、设计的题目要求达到一定工作量(300
4、行以上代码) ,并具有一定的深度和难度。 3、程序设计语言推荐使用 C/C+,程序书写规范,源程序需加必要的注释; 4、每位同学需提交可独立运行的程序; 5、每位同学需独立提交设计报告书(每人一份) ,要求编排格式统一、规范、内容充实,不少于 10 页(代码 不算) ; 6、课程设计实践作为培养学生动手能力的一种手段,单独考核。 3课程设计说明书 数据结构课程设计报告 第 2 页,共 页 2 一一 需求分析需求分析 问题描述 中国移动公司正在积极推广 3G 通信应用,计划在江苏高校之间建立一个专用通信网络,请为其规划一个投资 最省的通信线路架设方案。 基本要求 (1) 用无向网模拟该系统,顶点
5、表示各高校,边表示线路建设成本 (2) 高校数量不少于 10 个,覆盖苏南、苏中、苏北、南京等地的高校 (3) 输出方案的结果直观、明确 (4) 交互式改变某些线路的建设成本,可重新输出新方案 二二 概要设计概要设计 3课程设计说明书 二 概要设计 void menu(graph *g); /菜单 void Editgraph(graph *g); /编辑通信网络系统 int Creategraph(graph *g) /创建通信网络系统 int InsertVex(graph *g,string v) /添加高校 void ChangeVex(graph *g,string v) /修改高校
6、名 int InsertArc(graph *g,string v,string w) /添加高校间的路线 int DeleteArc(graph *g,string v,string w) /删除高校间的路线 void ChangeWeight(graph *g,string v,string w) /修改高校间的路线及其成本 int Destroygraph(graph *g) /销毁通信网络系统 int Display(graph *g) /输出通信网络系统 void save(graph *g) /保存通信网络系统 数据结构课程设计报告 第 3 页,共 页 3 基本操作: InitLi
7、st(L) 初始化 L 为空表 DestoryList(L) 销毁 L ClearList(L) 将 L 置为空表 ListLength(L) 若 L 为空表则返回 0,否则返回表中元素个数 Locate(L,e) 若 L 中存在元素 e 则将当前指针指向 e 所在位置并返回真 GetData(L,i) 返回 L 中第 i 个元素的值 InsList(L,I,e) 在 L 中第 i 个位置插入 e,L 的长度增加 1 DelList(L,I,/权值 ArcNode; typedef struct string vexsMAX_VERTEX_NUM;/顶点 ArcNode arcsMAX_VER
8、TEX_NUMMAX_VERTEX_NUM;/邻接矩阵 int vexnum,arcnum;/顶点数和边数 graph;/图的类型 typedef struct string adjvex; int lowcost; minside;/求最小生成树时的辅助数组的类 三三 详细设计详细设计 数据结构课程设计报告 第 4 页,共 页 4 创建通信系统 int Creategraph(graph *g) int i,j,k,w; string va,vb; 读取文件通信网络.txt if(未找到文件) coutopen error!(*g).vexsi; 初始化邻接矩阵 for(j=0;j(*g).
9、vexnum;+j) (*g).arcsij.adj=INFINITY; /网 for(k=0;kvavbw; i=LocateVex(g,va); j=LocateVex(g,vb); 无向网 infile.close(); return 1; 添加高校 int InsertVex(graph *g,string v) /在图 g 中增添新顶点 v if(顶点数为 0) cout未建立通信网络系统!n; system(暂停); Editgraph(g); coutv; int n=LocateVex(g,v); if(高校名重复) cout该高校已存在!n; 数据结构课程设计报告 第 5 页
10、,共 页 5 system(暂停); Editgraph(g); int i; 构造新顶点向量 for(i=0;i=(*g).vexnum;i+) 初始化该行邻接矩阵的值 初始化该列邻接矩阵的值 图 g 的顶点数加 1 return 1; 删除学校 int DeleteVex(graph *g,string v) / 删除 g 中顶点 v 及其相关的弧 if(顶点数为 0) cout未建立通信网络系统!n; system(暂停); Editgraph(g); int k=LocateVex(g,v); if(k0) cout不存在该学校!n; system(暂停); Editgraph(g);
11、 int i,j; int m=0; if( v 不是图 g 的顶点) return 0; m=无限; for(j=0;j(*g).vexnum;j+) if(有入弧或边) 修改弧数 for(序号 k 后面的顶点向量依次前移) (*g).vexsj-1=(*g).vexsj; for(i=0;i(*g).vexnum;i+) for(j=k+1;j(*g).vexnum;j+) 移动待删除顶点之后的矩阵元素 数据结构课程设计报告 第 6 页,共 页 6 for(i=0;i(*g).vexnum;i+) for(j=k+1;j(*g).vexnum;j+) 移动待删除顶点之下的矩阵元素 更新图的
12、顶点数 return 1; 修改高校名 void ChangeVex(graph *g,string v)/修改高校名 coutv; int n=LocateVex(g,v); if(n0) cout不存在该学校!n; system(暂停); Editgraph(g); string s; couts; g-vexsn=s; 添加路线 int InsertArc(graph *g,string v,string w) /在 g 中增添弧,若 g 是无向的,则还增添对称弧 if(顶点数为 0) cout未建立通信网络系统!n; system(暂停); Editgraph(g); coutvw;
13、int v1,w1; v1=LocateVex(g,v); /尾 w1=LocateVex(g,w); /头 if(v10|w10|v1=w1) cout高校名输入错误!n; system(暂停); Editgraph(g); else if(路线两头高校名重复) 数据结构课程设计报告 第 7 页,共 页 7 cout该线路已存在!n; system(暂停); Editgraph(g); 弧或边数加 1 cout(*g).arcsv1w1.adj; bool bRet = cin.good(); if(!bRet) cout输入的成本不是整型的!n; system(暂停); exit(0);
14、(*g).arcsw1v1.adj=(*g).arcsv1w1.adj; return 1; 删除线路 int DeleteArc(graph *g,string v,string w) /在 g 中删除弧,若 g 是无向的,则还删除对称弧 if(顶点数为 0) cout未建立通信网络系统!n; system(暂停); Editgraph(g); coutvw; int n=LocateVex(g,v); int m=LocateVex(g,w); if(m0|n0|m=n) cout学校名输入错误!n; system(暂停); Editgraph(g); else if(花费无限) coutarcsnm.adj=INFINITY; (*g).arcsmn.adj=(*g).arcsnm.adj; (*g).arcnum-; return 1; 数据结构课程设计报告