高校专用通信网络建设概要Word文档格式.docx
《高校专用通信网络建设概要Word文档格式.docx》由会员分享,可在线阅读,更多相关《高校专用通信网络建设概要Word文档格式.docx(67页珍藏版)》请在冰点文库上搜索。
计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。
前期准备工作完备与否直接影响到后序上机调试工作的效率。
在程序设计阶段应尽量利用已有的标
准函数,加大代码的重用率。
2、设计的题目要求达到一定工作量(300
行以上代码),并具有一定的深度和难度。
3、程序设计语言推荐使用
C/C++,程序书写规范,源程序需加必要的注释;
4、每位同学需提交可独立运行的程序;
5、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少
于
10
页(代码不算);
6、课程设计实践作为培养学生动手能力的一种手段,单独考核。
数据结构课程设计报告第1页,共页
3.课程设计说明书
一
需求分析
[问题描述]
中国移动公司正在积极推广
3G
通信应用,计划在江苏高校之间建立一个专用通信网络,请为其
规划一个投资最省的通信线路架设方案。
[数据需求]
高校(高校名称,地址,数量)
高校间的线路
线路的成本
[功能需求]
能够构造通信网络系统,编辑通信网络系统,销毁通信网络系统,添加高校,删除高校,修改
高校名,添加高校间的线路,删除高校间的线路,修改线路的成本,能生成最佳方案,输出通信网
络系统,保存通信网络系统。
[性能需求]
输出方案的结果直观、明确
二
概要设计
高校专用通信网络建设
构造
通信
网络
编辑
生成
最佳
方案
输出
保存
销毁
添加
删除
高校
修改
名
线路
成本
间的
ADT
LinearList{
数据元素:
D={ai|ai∈D0,i=1,2,……,n,n≥0,D0
为高校}
关系:
S={<ai,ai+1>|ai,ai+1∈D0,i=1,2,……,n-1}
基本操作:
InitList(L)初始化
L
为空表
DestoryList(L)销毁
L
ClearList(L)将
置为空表
ListLength(L)若
为空表则返回
0,否则返回表中元素个数
Locate(L,e)若
中存在元素
e
则将当前指针指向
所在位置并返回真
GetData(L,i)返回
中第
i
个元素的值
InsList(L,I,e)在
个位置插入
e,L
的长度增加
1
DelList(L,I,&
e)
删除
的第
个元素,并用
返回其值,L
长度减少
}ADT
LinearList
数据结构课程设计报告第2页,共页
数据定义:
typedef
struct
ArcNode
{
int
adj;
//权值
}ArcNode;
struct
{string
vexs[MAX_VERTEX_NUM];
//顶点
ArcNode
arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
//邻接矩阵
vexnum,arcnum;
//顶点数和边数
}graph;
//图的类型
string
adjvex;
lowcost;
}minside;
//求最小生成树时的辅助数组的类
void
menu(graph
*g);
//菜单
Editgraph(graph
//编辑通信网络系统
Creategraph(graph
*g)//创建通信网络系统
InsertVex(graph
*g,string
v)//添加高校
ChangeVex(graph
v)//修改高校名
InsertArc(graph
v,string
w)//添加高校间的路线
DeleteArc(graph
w)//删除高校间的路线
ChangeWeight(graph
w)
//修改高校间的路线及其成本
Destroygraph(graph
*g)//销毁通信网络系统
Display(graph
*g)//输出通信网络系统
save(graph
*g)//保存通信网络系统
main()主函数
Menu()菜单
mn
InPutNumber(m)
Creategraph()InsertVex(
)
三
详细设计
创建通信系统
*g)
DeleteVex()
ChangeVex()
Destorygraph()
数据结构课程设计报告第3页,共页
i,j,k,w;
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)
va>
vb>
w;
i=LocateVex(g,va);
j=LocateVex(g,vb);
无向网
infile.close();
1;
开始
能否读取文件
N
Y
Open
error
创建成功
数据结构课程设计报告第4页,共页
结束
添加高校
v)
{
//在图
g
中增添新顶点
v
if(顶点数为
0)
未建立通信网络系统!
\n"
;
system(暂停);
Editgraph(g);
请输入要添加的高校名:
cin>
v;
n=LocateVex(g,v);
if(高校名重复)
该高校已存在!
i;
构造新顶点向量
for(i=0;
i<
=(*g).vexnum;
i++)
初始化该行邻接矩阵的值
初始化该列邻接矩阵的值
图
的顶点数加
删除学校
DeleteVex(graph
//
中顶点
v
及其相关的弧
k=LocateVex(g,v);
if(k<
不存在该学校!
数据结构课程设计报告第5页,共页
i,j;
m=0;
if(
不是图
的顶点)
m=无限;
j++)
if(有入弧或边)
修改弧数
for(序号
k
后面的顶点向量依次前移)
(*g).vexs[j-1]=(*g).vexs[j];
for(j=k+1;
移动待删除顶点之后的矩阵元素
移动待删除顶点之下的矩阵元素
更新图的顶点数
修改高校名
v)//修改高校名
请输入要修改的高校名:
if(n<
s;
请输入修改后的高校名:
g->
vexs[n]=s;
添加路线
w)
{//在
中增添弧<
v,w>
若
是无向的,则还增添对称弧<
w,v>
数据结构课程设计报告第6页,共页
请输入要添加的线路的两端的高校名:
v>
v1,w1;
v1=LocateVex(g,v);
//尾
w1=LocateVex(g,w);
//头
if(v1<
0||w1<
0||v1==w1)
高校名输入错误!
else
if(路线两头高校名重复)
该线路已存在!
弧或边数加
请输入该条线路的建设费用:
(*g).arcs[v1][w1].adj;
bool
bRet
=
cin.good();
if(!
bRet)
输入的成本不是整型的!
exit(0);
(*g).arcs[w1][v1].adj=(*g).arcs[v1][w1].adj;
删除线路
//在
中删除弧<
是无向的,则还删除对称弧<
请输入要删除的线路的两端的高校名:
数据结构课程设计报告第7页,共页
m=LocateVex(g,w);
if(m<
0||n<
0||m==n)
学校名输入错误!
if(花费无限)
不存在该线路!
arcs[n][m].adj=INFINITY;
(*g).arcs[m][n].adj=(*g).arcs[n][m].adj;
(*g).arcnum--;
四
程序设计与调试分析
1.程序中运用到大多的插入与删除,但应前期需求分析的准备工作不充分,导致程序运行功能不
全,比如查找时关于此书的信息不能全部显示出来,并且添加删除时库存的变化不能直接显示
出来。
程序的健壮性不能达到预期的结果,这些都是需要改进的。
2.在程序中的函数调用是个非常重要的部分,也是经常需要用到的,在编写程序过程中,因为函
数调用不准确,使得循环进不去,后来改变函数的调用关系,才达到了预期结果。
五
用户手册
【使用说明】
1.进入高校专用通信网络系统
2.选择
1.构造通信网络系统,显示出
个高校
45
条线路的通信系统矩阵。
3.若创建成功,选择
2.编辑通信网络系统,显示出功能
1~8。
4.若要销毁系统,选择
1.销毁通信网络系统。
5.若要添加高校,选择
2.添加一个高校,并输入要添加的高校名。
6.若要删除高校,选择
3.删除一个高校,并输入要删除的高校名。
若输入的高校名不存在,则显
示不存在该学校。
7.若要修改高校名,选择
4.修改高校名,并输入要修改的高校名。
8.若要添加高校间的线路,选择
5.添加一条高线间的线路,并输入要添加线路两端的高校名。
若
数据结构课程设计报告第8页,共页
输入的高校名错误在则显示学校名输入错误。
9.若要删除高线间的线路,选择
6.删除一条高校间的线路,并输入要删除线路两端的高校名。
输入的高校名不存在则显示学校名输入错误。
10.
若要修改线路的成本,选择
7.修改线路的成本,并输入要删除线路连段的高校名。
若输入的高
校名不存在则显示学校名输入错误。
11.
若要推出编辑通信网络系统,选择
8.退出。
回到高校专用通信网络建设系统。
12.
若要生成最佳方案,选择
3.生成最佳方案。
并输入起始学校和要保存的文件名。
13.
若要输出通信网络系统,选择
4.输出通信网络系统。
14.
若要保存通信网络系统,选择
5.保存通信网络系统。
并输入要保存的文件名。
15.
退出,选择
6.退出系统。
六
测试成果
构造通信网络系统
编辑通信网络系统,添加一个高校
删除一个高校
数据结构课程设计报告第9页,共页
添加一条高校间的线路
删除高校间的线路
数据结构课程设计报告第10页,共页
修改高校间的成本
生成最佳路线
输出通信网络系统
数据结构课程设计报告第11页,共页
保存通信网络系统
七
附录(源程序清单)
#include
stdafx.h"
iostream>
iomanip>
windows.h>
fstream>
string>
#define
MAX_VERTEX_NUM
30
INFINITY
32768
using
namespace
std;
数据结构课程设计报告第12页,共页
LocateVex(graph
v)//求顶点位置函数,若
存在,输出
j;
若不存在,输出
j=-1,k;
vexnum;
k++)
if(g->
vexs[k]==v)//判断是否存在顶点
j=k;
break;
*g)//采用邻接矩阵法,构造有向网
g
ifstream
infile("
ios:
:
in);
//从文件中读入数据
infile)
数据结构课程设计报告第13页,共页
//从文件读入顶点数
arcnum;
//从文件读入边数
++i)
//顶点向量
//初始化邻接矩阵
(*g).arcs[i][j].adj=(*g).arcs[j][i].adj=w;
//无向网
vexnum==0)
system("
pause"
);
数据结构课程设计报告第14页,共页
if(n>
=0&
&
v==g->
vexs[n])
(*g).vexs[(*g).vexnum]=v;
//构造新顶点向量
(*g).arcs[(*g).vexnum][i].adj=INFINITY;
//初始化该行邻接矩阵的值
(*g).arcs[i][(*g).vexnum].adj=INFINITY;
//初始化该列邻接矩阵的值
(*g).vexnum+=1;
数据结构课程设计报告第15页,共页
0)
//v
的顶点
m=INFINITY;
if((*g).arcs[j][k].adj!
=m)
//有入弧或边
//修改弧数
j++)
//序号
后面的顶点向量依次前移
(*g).arcs[i][j-1]=(*g).arcs[i][j];
//移动待删除顶点之后的矩阵元素
(*g).arcs[j-1][i]=(*g).arcs[j][i];
//移动待删除顶点之下的矩阵元素
(*g).vexnum--;
//更新图的顶点数
数据结构课程设计报告第16页,共页
arcs[v1][w1].adj!
=INFINITY)
pa