课程设计报告-- 小区网络光纤的铺设

中年如诗 范文 报告范文
精选回答

课程设计报告--小区网络光纤的铺设本文简介:广东海洋大学信息学院课程设计报告设计题目小区网络光纤的铺设课程名称数据结构姓名(学号)庞东兴(201211621165)刘凯(201211621121)梁杰生(201211621118)联系电话13726907179(67)专业名称计算机科学与技术所在班级计算机科学与技术1班指导教师谢仕义教师职称教

课程设计报告--小区网络光纤的铺设本文内容:

广东海洋大学信息学院

课程设计报告

设计题目

小区网络光纤的铺设

课程名称

数据结构

姓名(学号)

庞东兴(201211621165)

刘凯(201211621121)

梁杰生(201211621118)

联系电话

13726907179(67)

专业名称

计算机科学与技术

所在班级

计算机科学与技术

1

指导教师

谢仕义

教师职称

教授

起止时间

2013

年10月29日至

2013年12月6日

评定成绩

一、

课程设计的主要内容

设计数据结构和算法,实现居民小区之间网络光纤铺设的最佳方案选择,主要内容如下:需要在某个城市n个居民小区之间铺设网络光纤,假设任意两个居民小区之间均需要铺设光纤,则在这n个居民小区之间只需要铺设n-1条光纤即可形成一个网络,但由于地理环境不同,所需要的代价也不尽相同。本课程设计要求事先随机生成任意居民小区之间铺设网络光纤的代价,并将代价存入文件,然后设计一个最佳方案进行光纤铺设,使得既能连通所有小区之间的网络,又能使网络光纤铺设的代价最小,最终以图形形式输出所设计的最佳方案。

二、

功能和结构设计

1、克鲁斯卡尔算法:

1

克鲁斯卡尔算法的思想:

设无向连通网为G=(V,E),令G的最小生成树为T=(U,TE),其初态为U=V,TE={},这样T中个顶点各自构成一个连通分量。然后,按照边的权值由小到大的顺序,依次考察边集E中的各条边。若被考察边的两个顶点属于T的两个不同的连通分量,则将此边加入到TE中,同时把两个连通分量连接为一个连通分量;若被考察边的两个顶点属于同一个连通分量,则舍去此边,以免造成回路,如此下来,当T中的连通分量个数为1时,此连通分量便为G的一棵最小生成树。

2

算法过程描述:

1.

初始化:U=V;

TE={};

2.

重复下述操作直到T中的连通分量个数为1;

2、1

在E中寻找最短边(U,V);

2、2

如果顶点u、v位于T的两个不同连通分量,则

2

.

2

.

1、

将边(u、v)并入TE;

2

.

2

.

2、

将这两个连通分量合为一个;

2、3

在E中标记边(u,v),使得(u,v)不参加后续最短边的选取;

2、

模块分析

根据对模型的功能分析,该管道铺设设计可以具有以下功能:

①.

网络光纤铺设信息的输入;

②.

最小生成树信息的输出;

3、

抽象数据类型分析

Vertex[]

居民区

Edge[][]

邻接矩阵储存居民区的关系

R[]

居民区之间的距离

vertexNum

表示居民区数量

edgeNum

表示居民区的路线数目

4、

功能分析

信息输入:

程序输出:

最短路径:

三、

流程图和算法设计

//居民区数据输入

cout>vertexNum;

cout>vertex[i];

cout>edgeNum;

//二维数组存储居民区信息

cout>n>>m>>k;

Edge[n][m]=k;

Edge[m][n]=k;

R[i]=k;

}

cout::InsertSort()

{

int

k;

for(int

i=1;i::Kruskal()

{

Sum=0;

int

i,b=0,d=0,num,vex1,vex2;

for(i=0;ivertexNum*(vertexNum-1)/2

N

Y

cin>>c

edgeNum=c

输权值(Edge[n][m]),并赋值给R[i]

对R[i]

直接插入排序

Kruskal算法

输出图形

计算代价

结束

四、

源程序代码

#ifndef

Graph_H

#define

Graph_H

const

int

MaxVertex=10;

const

int

MaxEdge=100;

struct

EdgeType

{

int

from,to;

int

weight;

};

template

class

Graph

{

public:

Graph();

~Graph(){}

void

Kruskal();

void

InsertSort();

void

BubbleSort1();

int

FindRoot(int

a[],int

n);

void

outSum();

void

Price();

void

Print();

private:

Datatype

vertex[MaxVertex];

int

Edge[MaxVertex][MaxVertex];

EdgeType

edge[MaxEdge];

EdgeType

edgeP[MaxEdge];

int

parent[MaxVertex];

int

vertexNum,edgeNum;

int

R[MaxEdge];

int

Sum;

int

price;

};

#endif

#include

using

namespace

std;

#include

“Graph.h“#include

#include

#include

#include

#include

template

Graph::Graph()

{

getch();

int

i,j,k,n,m;

cout>vertexNum;

cout>vertex[i];

cout>edgeNum;

coutvertexNum*(vertexNum-1)/2)

{

int

c;

cout>c;

edgeNum=c;

}

for(i=0;i>n>>m>>k;

Edge[n][m]=k;

Edge[m][n]=k;

R[i]=k;

}

cout

void

Graph::InsertSort()

{

int

k;

for(int

i=1;i

void

Graph::BubbleSort1()

{

int

count=0;

while(count!=edgeNum)

{

for(int

i=0;i

void

Graph::Kruskal()

{

Sum=0;

int

i,b=0,d=0,num,vex1,vex2;

for(i=0;i

int

Graph::FindRoot(int

parent[],int

v)

{

int

t=v;

if(parent[t]>-1)

t=parent[t];

return

t;

}

template

void

Graph::outSum()

{

cout

void

Graph::Price()

{

cout>price;

cout

void

Graph::Print()

{

int

x1,x2,y1,y2;

initgraph(500,500);

if(vertexNum>0){

circle(100,200,25);

outtextxy(100,200,vertex[0]);

if(vertexNum>1){

circle(250,100,25);

outtextxy(250,100,vertex[1]);

if(vertexNum>2){

circle(150,350,25);

outtextxy(150,350,vertex[2]);

if(vertexNum>3){

circle(350,350,25);

outtextxy(350,350,vertex[3]);

if(vertexNum>4){

circle(400,200,25);

outtextxy(400,200,vertex[4]);

if(vertexNum>5)circle(250,250,25);

outtextxy(250,250,vertex[5]);}}}}}

for(int

n=0,k=0;k

using

namespace

std;

#include

“Graph.cpp“#include

#include

int

main()

{

int

a1;

for(a1=0;a1G;

G.InsertSort();

G.BubbleSort1();

G.Kruskal();

G.outSum();

G.Price

();

getch();

G.Print

();

cout<

for(a1=0;a1<15;a1++)

cout<<““;

for(a1=0;a1<25;a1++)

cout<<“*“;

cout<

for(a1=0;a1<15;a1++)

cout<<““;

cout<<“*

使

!“<

for(a1=0;a1<15;a1++)

cout<<““;

for(a1=0;a1<25;a1++)

cout<<“*“;

cout<

return

0;

}

五、

课程设计总结

经过两个多星期的不懈努力,我们小组终于完成本次课程设计一一《网络光纤铺设的最佳方案选择》,我们选用克鲁斯卡尔算法进行程序设计。首先,我们对程序的大概框架进行构想,设计好基本的逻辑框架,然后针对克鲁斯卡尔算法进行程序编写,对于高级程序员来说,虽然bug可以使程序崩溃,但他们依然可以闲庭信步般把问题解决,可是对于我们这些正在成长中的初级程序员来说,那就是一个灾难,需要我们一起扛才能度过难关,于是我们的合作精神就被发挥得淋漓尽致了,不管对外还是对内,我们这些菜鸟程序员都是一家子,处理分析问题就跟快,完成了编写,再经过多次的调试,终于完成本次程序设计。

通过本次程序设计,使我们对本学期学习的数据结构有了进一步的了解,巩固上一学年所学的知识;而且,我们对程序设计的算法有了基本的认识,同时,让我们知道算法对于一个程序来说是非常重要的,好的程序就应该要用好的算法;本次课程设计中涉及到图形的处理,但我们对于图形是一无所知的,经过在多种渠道的查阅,最后通过使用C++图形库EasyX实现图形处理。

本次程序设计使我们学会了很多,巩固课本所学的知识的同时,也掌握一些课外的有关程序设计的知识,希望以后能够编写出更好的程序!

六、

参考资料

1、胡明

《数据结构》(C++版)

清华大学出版社

2、张勇

《C++语言程序设计教程》(第二版)

清华大学出版社

3、C++语言的图形库EasyX

感谢经历 2022-07-16 23:47:29

相关推荐

得意洋洋,反义词(得意洋洋的反义词)

1、得意洋洋的反义词有郁郁寡欢的,有空虚进取的书,有哭天抢地的,有郁郁寡欢的,有失意的,有垂头丧气的,有谦虚谨慎的,有黯然销魂的,有抑郁的。2、“得意”是中国成语,读作:dyyngyng,解释为:得意:明白意图...
展开详情

蚍蜉撼树是什么意思蚍(蚍蜉撼树是什么意思)

1、蜉蝣树(拼音pfhnsh)是中国成语,蜉蝣树(蜉蝣:一种大蚂蚁;Shake:摇动)比喻力量本来就很弱,但是你想摇动一个很强大的东西,就不能随心所欲了。这个成语一般用作主语、谓语、宾语,属于主谓式,含有贬义。...
展开详情

回眸一笑是啥意思(回眸一笑什么意思)

1、回首微笑,拼音是humuy和ao,中国成语,意思是翻白眼,微笑。常用来形容女人妩媚的表情,诱惑人,引人入胜。出自唐白居易《长恨歌》。2、唐白居易《长恨歌》:“只要她转过头来笑一笑,就有一百个符咒在施,六宫的...
展开详情

农历七月二十二是什么日子适合结婚(农历七月二十二是什么日子)

1、中国民间习俗是在正月初五祭拜财神,在7月22日祭拜财神的生日,也称为财神日。2、幸运日,在中国古代,商朝的比干就是财神,三国的关云长就是武财神。每年的正月初五都是献给财神的。祭祀时,红烛发高烧,鞭炮齐鸣,面...
展开详情

飘逸的字体(飘逸)

1、飘逸是一个汉字,它的拼音是pio,解读为洒脱、自然、有特色;浮动;飘走。通常飘逸用来形容人:气质好,动作自然优美。2、出自唐图《二十四诗品飘逸》:“飘逸:落而欲去,修正不强,山上鹤是山上鹤,花顶云。钟会,高...
展开详情

精选推荐更多>

救人一命胜造七级浮屠中的浮屠是指

“救人一命,胜造七级浮屠”中的“浮屠”是指佛教建筑形式,即所说的塔,又称浮图。读作jiù rén yī mìng,shèng zào qī jí fú tú。这种建筑最初用以供奉佛骨,后来用以供奉佛像,收藏经书。词语指救人一条性命,犹如建筑一座七级宝塔,功德无量。用以劝人行善,或向人恳求救命。
“救人一命,胜造七级浮屠”是一个汉语成语,意思是为死去的人造塔,毕竟不如“救人一命”的功德更大,更有意义。

己亥岁这首诗深刻地揭示了什么

《己亥岁二首》深刻地揭示了战争对人民造成的深重灾难和浩劫。
原文:
其一:
泽国江山入战图,生民何计乐樵苏。
凭君莫话封侯事,一将功成万骨枯。
其二:
传闻一战百神愁,两岸强兵过未休。
谁道沧江总无事,近来长共血争流。
译文:
其一:
富饶的水域江山都已绘入战图,百姓想要打柴割草度日而不得。
请你别再提什么封侯的事情了,一将功成要牺牲多少士卒生命!
其二:
传说一旦开战连众神灵都发愁,两岸军队连年混战一直不停休。
谁还说沧江总是太平没有祸事,近来江水混着鲜血争先向东流。
《己亥岁二首》是唐代诗人曹松的组诗作品。这组诗以干支为题,以示纪实,明确表明了对现实的批判态度。全诗概况地写出了战争对人民造成的深重灾难和浩劫,以冷峻深邃的目光洞穿千百年来封建战争的实质,写得力透纸背,入木三分。

山居秋暝是什么体裁的诗

《山居秋暝》是一首五言律诗,运用了反衬手法和对典故的艺术手法。《山居秋暝》是唐代诗人王维写的初秋时节所见雨后黄昏的景色,为山水名篇。该诗于诗情画意之中寄托着诗人高洁的情怀和对理想境界的追求。
原文:
空山新雨后,天气晚来秋。
明月松间照,清泉石上流。
竹喧归浣女,莲动下渔舟。
随意春芳歇,王孙自可留。
全诗将空山雨后的秋凉,松间明月的光照,石上清泉的声音以及浣女归来竹林中的喧笑声,渔船穿过荷花的动态,和谐完美地融合在一起,给人一种丰富新鲜的感受。它像一幅清新秀丽的山水画,又像一支恬静优美的抒情乐曲,体现了王维诗中有画的创作特点。

个个和各个的区别

个个与各个的区别:指代不同、出处不同、侧重点不同。
一、指代不同:
1、个个:一个一个,每一个。
2、各个:每个;所有的那些个;逐个。
二、出处不同:
1、个个:出自毛泽东《对晋绥日报编辑人员的谈话》:“陕北的部队经过整训诉苦以后,战士们的觉悟提高了……个个磨拳擦掌,士气很高,一出马就打了胜仗。”
2、各个:出自《儿女英雄传》第一回:“家人们听见老爷得了外任,各个喜出望外。”
三、侧重点不同:
1、个个:指团体或整体。
2、各个:指具体的每一个。
“个个”造句:
1、登上山顶时,我们个个累得气喘吁吁的。
2、孩子们个个天真活泼,多么可爱!
“各个”造句:
1、围棋比赛时,小华利用诱敌深入,各个击破的战法,瓦解了对方的攻势。
2、校长负责学校各个方面的工作。
常见热点问答
热点搜索
1-20
21-40
41-60
61-80
81-100
101-120
121-140
141-160
161-180
181-200
作文大全
1-20
21-40
41-60
61-80
81-100
101-120
121-140
141-160
161-180
181-200