计算机网络课程设计报告 - 图文(5)

2019-01-19 13:57

最短路径的算法利用狄克斯特拉算法,具体算法可参照教材。

路由表中下一跳路由的确定是个难点,由于狄克斯特拉算法不能保存路径,只能求出到终点的前一跳的地址,因此,这里通过循环调用求到终点的前一跳的算法,并把所有的点存储在一个数组里,再逆序输出,即可求得下一跳地址。

由于路由表的第一列是目的地址,第二列是下一跳路由器,所以还需要设计一个算法,来实现路由器的序号和点分十进制IP地址的转换。

3.2.2 详细设计

(1) 程序流程图

开始初始化边和顶点的信息调用Dijsktra算法提示用户选择操作结束Y退出?N提示用户输入目的IP输入路由器序号输出下一跳Y查找路由表N提示目的不可达调用循环算法,求出到每个目的网络的下一跳路由输出路由表 图 3-16 程序流程图

(2)模块设计

? 图的存储—邻接矩阵 ? 最短路径的算法 ? 路由表的生成 ? 路由表的输出 ? 查询

17

(3)核心代码

? SeqList.h:顺序表操作函数

void ListInitiate(Seqlist *L);// 初始化

int ListLength(Seqlist L); //求当前数据元素个数

int ListInsert(Seqlist *L,int i,Datatype x); //插入数据元素 int ListDelete(Seqlist *L,int i,Datatype *x); //删除数据元素 int ListGet(Seqlist L,int i,Datatype *x); //取数据元素 ? AdjMGraph.h:邻接矩阵存储结构下图操作的实现

CreatGraph(AdjMGraph *G,char V[],int n,RowColWeight E[],int e)//创建图函数 InsertVertex(AdjMGraph *G,Datatype)//在图G中插入结点vertex InsertEdge(AdjMGraph *G,int v1,int v2,int weight)//在图中插入边 Initiate(AdjMGraph *G,int n)//图初始化函数 ? Dijkstra.h:迪克斯特拉算法

Dijkstra(AdjMGraph G,int v0,int distance[],int path[])

函数共有4个参数,其中两个为输入参数,分别为带权图G和源点序号v0;两个为输出参数,分别为distance[]和path[],distance[]用来存放得到的从源点v0到其余各点的最短距离数值,path[]用来存放得到的从源头v0到其余各点的最短路径上到目标顶点的前一顶点的下标。

? 路由器的序号和点分十进制IP地址的转换算法:

char IP(int c) { switch(c) { case 0:strcpy(s,\ case 1:strcpy(s,\ case 2:strcpy(s,\ case 3:strcpy(s,\ case 4:strcpy(s,\ case 5:strcpy(s,\ case 6:strcpy(s,\ case 7:strcpy(s,\ case 8:strcpy(s,\ } return 1;}

? 求下一跳路由的算法:

int Digui(int c1,int c2,int path[])

{//c1表示起始顶点,c2表示目的顶点

18

int i=0; P[0]=c2;//数组的第一个元素是目的顶点 i++; while((path[c2]!=c1)&&c2>=-1&&c1>=-1) { P[i]=path[c2]; c2=path[c2]; i++; } P[i]=c1;//数组的最后一个元素应该是起始顶点 return i; }

函数共有三个参数,其中其中两个为输入参数,c1表示起始顶点,c2表示目的顶点;一个输出参数path[],path[]用来存放得到的从源头v0到其余各点的最短路径上到目标顶点的前一顶点的下标。

? char IP(int c) 此函数实现IP地址与矩阵顶点对应 ? int luyou(char c)此函数实现路由器编号与矩阵对应

3.2.3 代码管理工具VSS

? VSS服务器端 - 账户管理

第一步:开始→程序中找到Visual SourceSafe安装好的目录,选择里面的Microsoft Visual SourceSafe Administration 运行客户器端并登陆,如下图:

图 3-17 开始菜单

默认账户:Admin为管理员,登录密码为空注意:第一次登入的用户可以设置用户的登录密码。

此时总共有三个用户(其中Admin是管理员用户,Administrator是为本机分配的用户账户,Guest用户是来宾账户)通过用户(U)菜单选项可以添加、删除账户并修改密码。建议先删除Administrator和Guest账户,然后自己需要添加的账户就,并更改Admin管理员的密码,新添加账户的初始密码为空。例如新添加账户名为:Lin。

19

图 3-18 管理器界面

注意:

下面是每个人的登录名,密码为空,请大家第一次登录后修改,具体修改方法如下: 点击菜单【用户(U)?.】中【修改密码(P)?】出现如下界面:

图 3-19 更改密码

填写账户管理员所需要的密码,点击“确定”就行了。

根据项目的实际需要,管理员可以创建多个用户。至此,VSS服务器端账配置-账户管理设置完毕。

? VSS服务器端设置共享文件

在电脑的任一位置建立一个文件夹,并将其设置为共享。

选中所要共享的文件,例如:VssDatabase,右键选择【共享和安全】菜单或者【属性】菜单。

? VSS服务器端 - 创建新数据库管理 1、在“开始”—“所有程序”中打开“Microsoft Visual SourceSafe Administration

20

(后面简称MVSSA)”,点击“文件”菜单的“新建数据库”,如下图:

图 3-20 新建数据库

注意:点击“浏览(R)...”按钮选择新建数据库所要共享的文件夹。

2、此处的Name可以随便填写,此处我采用默认的名称VssDatabase。

3、选择下一步,在这个页面选择第一个选项:锁定-修改-解锁模型(L)(Visual SourceSafe 6.0 默认)

说明:

这里有两个模型:“锁定-修改-解锁”意思为,当一个用户签出项目中的某个文件时,文件会被加锁,其他用户将不能修改该文件,直到当前用户修改完成并签入;“复制-修改-合并”意思为,当一个用户签出项目中的某个文件时,其他用户也可在期间签出该文件,各用户可在任意时间签入文件,签入时,VSS程序将比较服务器版本和本机版本,如无冲突将自动合并,如右冲突将要求人工合并。选择一种模型后,点击【下一步】,再点击【完成】。注:本次操作选择第一种模型。

4、选择“下一步”完成

5、直接点击“完成”按钮,出现如下界面,然后直接点击“确定”就行了。

图 3-21 完成界面

21


计算机网络课程设计报告 - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:量子力学统计学第五章作业答案A

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: