高校专用通信网络建设
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void save(graph *g)
//保存通信网络系统
基本操作:
数据结构课程设计报告
第 3 页,共 页
InitList(L) DestoryList(L) ClearList(L) ListLength(L) Locate(L,e) GetData(L,i) InsList(L,I,e) DelList(L,I,&e) 数据定义:
if(顶点数为 0) {
cout<<"未建立通信网络系统!\n"; system(暂停); Editgraph(g); } int k=LocateVex(g,v); if(k<0) { cout<<"不存在该学校!\n"; system(暂停); Editgraph(g); } int i,j; int m=0; if( v 不是图 g 的顶点) return 0; m=无限; for(j=0;j<(*g).vexnum;j++) if(有入弧或边) { 修改弧数 } for(序号 k 后面的顶点向量依次前移) (*g).vexs[j-1]=(*g).vexs[j]; for(i=0;i<(*g).vexnum;i++) for(j=k+1;j<(*g).vexnum;j++) 移动待删除顶点之后的矩阵元素
(*g).arcnum--;
return 1;
数据结构课程设计报告 } 四 程序设计与调试分析
第 8 页,共 页
1.因为前期需求分析的准备工作不充分,程序运行功能不全,程序中运用到大多的插入与删除,比
如查找时关于线路的信息不能全部显示出来,并且添加删除时线路的变化不能直接显示出来。程序
的健壮性不能达到预期的结果,这些都是需要改进的。
cout<<"请输入要修改的高校名:"; cin>>v; int n=LocateVex(g,v); if(n<0) {
cout<<"不存在该学校!\n"; system(暂停); Editgraph(g); } string s; cout<<"请输入修改后的高校名:"; cin>>s; g->vexs[n]=s; } 添加路线 int InsertArc(graph *g,string v,string w) {//在 g 中增添弧<v,w>,若 g 是无向的,则还增添对称弧<w,v> if(顶点数为 0) { cout<<"未建立通信网络系统!\n"; system(暂停); Editgraph(g); } cout<<"请输入要添加的线路的两端的高校名:"; cin>>v>>w; int v1,w1; v1=LocateVex(g,v); //尾 w1=LocateVex(g,w); //头 if(v1<0||w1<0||v1==w1) { cout<<"高校名输入错误!\n"; system(暂停); Editgraph(g); } else if(路线两头高校名重复) {
2. 在编写程序过程中,因为函数调用不准确,使得循环进不去,在程序中的函数调用是个非常重要
的部分,也是经常需要用到的,为了达到了预期结果,后来改变函数的调用关系,。
五 用户手册 【使用说明】 1.使用高校专用通信网络系统 2.选择 1.构造通信网络系统,则显示出 10 个高校 45 条线路的通信系统矩阵。 3.创建成功,选择 2.编辑通信网络系统,显示出功能 1~8。 4.销毁系统,选择 1.销毁通信网络系统。 5.添加高校,选择 2.添加一个高校,并输入要添加的高校名。 6. 删除高校,选择 3. 删除一个高校,并输入要删除的高校名。若输入的高校名不存在,则显示 不 存在该学校。 7.修改高校名,选择 4.修改高校名,并输入要修改的高校名。若输入的高校名不存在,则显示不存 在该学校。 8.添加高校间的线路,选择 5.添加一条高线间的线路,输入要添加线路两端的高校名。若输入的高 校名错误在则显示学校名输入错误。 9.删除高线间的线路,选择 6.删除一条高校间的线路,并输入要删除线路两端的高校名。若输入的 高校名不存在则显示学校名输入错误。 10.修改线路的成本,选择 7.修改线路的成本,并输入要删除线路连段的高校名。若输入的高校名不 存在则显示学校名输入错误。 11.推出编辑通信网络系统,选择 8.退出。回到高校专用通信网络建设系统。 12.生成最佳方案,选择 3.生成最佳方案。并输入起始学校和要保存的文件名。 13.输出通信网络系统,选择 4.输出通信网络系统。 14.保存通信网络系统,选择 5.保存通信网络系统。并输入要保存的文件名。 15. 退出,选择 6.退出系统。
第 5 页,共 页
数据结构课程设计报告
for(i=0;i<(*g).vexnum;i++) for(j=k+1;j<(*g).vexnum;j++) 移动待删除顶点之下的矩阵元素 更新图的顶点数 return 1;
}
第 6 页,共 页
修改高校名 void ChangeVex(graph *g,string v)//修改高校名 {
int Creategraph(graph *g) //创建通信网络系统
int InsertVex(graph *g,string v) //添加高校
void ChangeVex(graph *g,string v) //修改高校名
int InsertArc(graph *g,string v,string w) //添加高校间的路线
typedef struct ArcNode {
int adj;//权值 }ArcNode;
typedef struct { string vexs[MAX_VERTEX_NUM];//顶点
ArcNode arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM];//邻接矩阵 int vexnum,arcnum;//顶点数和边数 }graph;//图的类型 typedef struct { string adjvex; int lowcost; }minside;//求最小生成树时的辅助数组的类
(2) 高校数量不少于 10 个,覆盖苏南、苏中、苏北、南京等地的高校
(3) 输出方案的结果直观、明确
(4) 交互式改变某些线路的建设成本,可重新输出新方案
二 概要设计
3.课程设计说明书
二 概要设计
void menu(graph *g); //菜单
void Editgraph(graph *g); //编辑通信网络系统
if(顶点数为 0)
{
cout<<"未建立通信网络系统!\n";
system(暂停);
Editgraph(g);
}
cout<<"请输入要删除的线路的两端的高校名:";
cΒιβλιοθήκη Baidun>>v>>w;
int n=LocateVex(g,v);
int m=LocateVex(g,w);
if(m<0||n<0||m==n)
{
cout<<"输入的成本不是整型的!\n";
system(暂停);
exit(0);
}
(*g).arcs[w1][v1].adj=(*g).arcs[v1][w1].adj;
return 1;
}
删除线路
int DeleteArc(graph *g,string v,string w)
{ //在 g 中删除弧<v,w>,若 g 是无向的,则还删除对称弧<w,v>
初始化 L 为空表 销毁 L 将 L 置为空表 若 L 为空表则返回 0,否则返回表中元素个数 若 L 中存在元素 e 则将当前指针指向 e 所在位置并返回真 返回 L 中第 i 个元素的值 在 L 中第 i 个位置插入 e,L 的长度增加 1 删除 L 的第 i 个元素,并用 e 返回其值,L 长度减少 1
成绩:
签名:
年月日
数据结构课程设计报告
第 1 页,共 页
1.课程设计目的
1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问 题。
2、初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 3、提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 4、训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在 此过程中培养他们严谨的科学态度和良好的工作作风。
三 详细设计
数据结构课程设计报告
创建通信系统 int Creategraph(graph *g)
{ int i,j,k,w; string va,vb; 读取文件"通信网络.txt" if(未找到文件) { cout<<"open error!"<<endl; return 0; } 从文件读入顶点数 从文件读入边数 顶点向量 infile>>(*g).vexs[i]; 初始化邻接矩阵 for(j=0;j<(*g).vexnum;++j) { (*g).arcs[i][j].adj=INFINITY; //网 } for(k=0;k<(*g).arcnum;++k) { infile>>va>>vb>>w; i=LocateVex(g,va); j=LocateVex(g,vb); 无向网 } infile.close(); return 1;
数据结构课程设计报告
第 7 页,共 页
cout<<"该线路已存在!\n";
system(暂停);
Editgraph(g);
}
弧或边数加 1
cout<<"请输入该条线路的建设费用:";
cin>>(*g).arcs[v1][w1].adj;
bool bRet = cin.good();
if(!bRet)
{
cout<<"学校名输入错误!\n";
system(暂停);
Editgraph(g);
}
else if(花费无限)
{
cout<<"不存在该线路!\n";
system(暂停);
编辑
}
g->arcs[n][m].adj=INFINITY;
(*g).arcs[m][n].adj=(*g).arcs[n][m].adj;
} 添加高校 int InsertVex(graph *g,string v) { //在图 g 中增添新顶点 v
if(顶点数为 0) {
cout<<"未建立通信网络系统!\n"; system(暂停); Editgraph(g); } cout<<"请输入要添加的高校名:"; cin>>v; int n=LocateVex(g,v); if(高校名重复) { cout<<"该高校已存在!\n";
第 4 页,共 页
数据结构课程设计报告 system(暂停); Editgraph(g); } int i; 构造新顶点向量 for(i=0;i<=(*g).vexnum;i++) { 初始化该行邻接矩阵的值 初始化该列邻接矩阵的值 } 图 g 的顶点数加 1 return 1; }
删除学校 int DeleteVex(graph *g,string v) { // 删除 g 中顶点 v 及其相关的弧
2.课程设计任务与要求:
任务 根据教材《数据结构-C 语言描述》(耿国华主编)和参考书《数据结构题集(C 语言版)》(严蔚敏、吴伟民主 编)选择课程设计题目,要求通过设计,在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计 及其实现等方面加深对课程基本内容的理解和综合运用。 设计题目从任务书所列选题表中选取,每班每题不得超过 2 人。 学生自选课题。 学生原则上可以结合个人爱好自选课题,要求课题有一定的深度与难度,有一定的算法复杂性,能够巩固数 据结构课程所学的知识。学生自选课题需在 18 周前报课程设计指导教师批准方可生效。 要求: 1、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数 据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接 影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。 2、设计的题目要求达到一定工作量(300 行以上代码),并具有一定的深度和难度。 3、程序设计语言推荐使用 C/C++,程序书写规范,源程序需加必要的注释; 4、每位同学需提交可独立运行的程序; 5、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于 10 页(代码 不算);
int DeleteArc(graph *g,string v,string w) //删除高校间的路线
void ChangeWeight(graph *g,string v,string w) //修改高校间的路线及其成本
int Destroygraph(graph *g) //销毁通信网络系统
int Display(graph *g) //输出通信网络系统
淮 海 工 学 院 计算机工程学院
课程设计报告
设计名称:
数据结构课程设计
选题名称:
高校专用通信网络建设
姓 名: 陈韦迪 学 号: 2014122778
专业班级: 计算机科学与技术
计算机 142
系 (院):
计算机工程学院
设计时间:
2014.12.22~2015.1.4
设计地点:
计算机实验室、教室
指导教师评语:
6、课程设计实践作为培养学生动手能力的一种手段,单独考核。
3.课程设计说明书
一 需求分析
[ 问题描述 ]
数据结构课程设计报告
第 2 页,共 页
中国移动公司正在积极推广 3G 通信应用,计划在江苏高校之间建立一个专用通信网络,请为其规划一个投资
最省的通信线路架设方案。
[基本要求]
(1) 用无向网模拟该系统,顶点表示各高校,边表示线路建设成本