实验-构件图和部署图

实验-构件图和部署图

实验-构件图和部署图

数据结构实验报告七查找、

云南大学软件学院数据结构实验报告 (本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助)实验难度: A □ B □ C □ 学期:2010秋季学期 任课教师: 实验题目: 查找算法设计与实现 姓名: 王辉 学号: 20091120154 电子邮件: 完成提交时间: 2010 年 12 月 27 日

云南大学软件学院2010学年秋季学期 《数据结构实验》成绩考核表 学号:姓名:本人承担角色: 综合得分:(满分100分) 指导教师:年月日(注:此表在难度为C时使用,每个成员一份。)

(下面的内容由学生填写,格式统一为,字体: 楷体, 行距: 固定行距18,字号: 小四,个人报告按下面每一项的百分比打分。难度A满分70分,难度B满分90分)一、【实验构思(Conceive)】(10%) 1 哈希表查找。根据全年级学生的姓名,构造一个哈希表,选择适当的哈希函数和解决冲突的方法,设计并实现插入、删除和查找算法。 熟悉各种查找算法的思想。 2、掌握查找的实现过程。 3、学会在不同情况下运用不同结构和算法求解问题。 4 把每个学生的信息放在结构体中: typedef struct //记录 { NA name; NA tel; NA add; }Record; 5 void getin(Record* a)函数依次输入学生信息 6 人名折叠处理,先将用户名进行折叠处理折叠处理后的数,用除留余数法构造哈希函数,并返回模值。并采用二次探测再散列法解决冲突。 7姓名以汉语拼音形式,待填入哈希表的人名约30个,自行设计哈希函数,用线性探测再散列法或链地址法处理冲突;在查找的过程中给出比较的次数。完成按姓名查询的操作。将初始班级的通讯录信息存入文件。 二、【实验设计(Design)】(20%) (本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系) 1抽象数据类型的功能规格说明和结构体: #include

实验六 构件图和部署图设计 参考

实验六构件图和部署图设计 三、实验要求: 1、绘制构件图 在选课系统中,包括MainProgram类(主程序)、People类、FormObject类、Control Object类、Student类、Registrar类、Course类和Database类。People类是Student类和Registrar类的基类,所有Student类和Registrar类依赖People类。FormObject类和C ontrolObject类都和Course类相关,依赖Course类。ControlObject类和Database类相关,ControlObject类依赖Database类。 2. 绘制包图和构件图 问题描述:在某图书馆管理系统中,通过分析可以发现类图中的类应分为4个部分: 1)用户接口模块(UI),主要负责系统和用户的交互,包括Frame类,Dialog类等。 2)业务对象模块(BO),主要负责处理系统中的业务计算,如借书,还书等功能的具体操作。3)数据存储模块(DB),主要负责处理对数据的存储。 4)通用工具模块(UTIL),包括系统中通用函数。 通过一个主程序StartClass来启动。 用包图组织以上模块。

BO模块中包括 : Item类:书目类,表示一本实际存在的书籍或杂志 Loan类:借书业务类,将借阅者和图书馆关联起来,一个Loan对象表示借出的一本书BorrowerInfomation类:借阅者信息类,表示一个借阅者。 Title类:表示一种书或一种杂志。如《C++编程思想》就是一种书,用1个title表示,如果有2本这样的书,则需要用2个Item表示。 Reservation类:预定信息类,表示一个预定信息。 Item类和Loan类之间互相依赖,Loan类和BorrowerInfomation类之间互相依赖,BorrowerInfomation类和Reservation类之间互相依赖,Reservation类和Title之间互相依赖,Title和Item类之间互相依赖。 在BO包中加入相关构件。

数据结构实验七图的创建与遍历

实验七图的创建与遍历 实验目的: 通过上机实验进一步掌握图的存储结构及基本操作的实现。 实验内容与要求: 要求: ⑴能根据输入的顶点、边/弧的信息建立图; ⑵实现图中顶点、边/弧的插入、删除; ⑶实现对该图的深度优先遍历; ⑷实现对该图的广度优先遍历。 备注:单号基于邻接矩阵,双号基于邻接表存储结构实现上述操作。算法设计: #include #include #define INFINITY 32767 #define MAX_VEX 20 //最大顶点个数 #define QUEUE_SIZE (MAX_VEX+1) //队列长度 using namespace std; bool *visited; //访问标志数组 //图的邻接矩阵存储结构 typedef struct{ char *vexs; //顶点向量 int arcs[MAX_VEX][MAX_VEX]; //邻接矩阵 int vexnum,arcnum; //图的当前顶点数和弧数 }Graph; //队列类 class Queue{ public: void InitQueue() { base=(int *)malloc(QUEUE_SIZE*sizeof(int)); front=rear=0;

. } void EnQueue(int e) { base[rear]=e; rear=(rear+1)%QUEUE_SIZE; } void DeQueue(int &e) { e=base[front]; front=(front+1)%QUEUE_SIZE; } public: int *base; int front; int rear; }; //图G中查找元素c的位置 int Locate(Graph G,char c) { for(int i=0;i

数据结构实验七

(*ht)[i].RChild = 0; } for(i=n+1;i<=m;i++){ (*ht)[i].weight = 0; (*ht)[i].LChild = 0; (*ht)[i].parent = 0; (*ht)[i].RChild = 0; } for(i=n+1;i<=m;i++){ YLX_select(ht,i-1,&s1,&s2); (*ht)[s1].parent=i; (*ht)[s2].parent=i; (*ht)[i].LChild=s1; (*ht)[i].RChild=s2; (*ht)[i].weight=(*ht)[s1].weight+(*ht)[s2].weight ; } } void YLX_outputHuffman(HuffmanTree HT, int m){ if(m!=0){ YLX_outputHuffman(HT,HT[m].LChild); if(!HT[m].LChild&&!HT[m].RChild)printf("%c \t", HT[m].data); YLX_outputHuffman(HT,HT[m].RChild); } } void YLX_CrtHuffmanCode(HuffmanTree *ht, HuffmanCode *hc, int n){ char *cd; int i; unsigned int c; int start; int p; hc=(HuffmanCode *)malloc((n+1)*sizeof(char *)); cd=(char * )malloc(n * sizeof(char )); cd[n-1]='\0'; for(i=1;i<=n;i++){ start=n-1; for(c=i,p=(*ht)[i].parent; p!=0; c=p,p=(*ht)[p].parent) if( (*ht)[p].LChild == c) cd[--start]='0'; else cd[--start]='1'; hc[i]=(char *)malloc((n-start)*sizeof(char)); strcpy(hc[i],&cd[start]); } free(cd); for(i=1;i<=n;i++) printf("%c编码为%s\n",(*ht)[i].data,hc[i]); } void main() { HuffmanTree HT; HuffmanCode HC; int n; int m; printf("*******袁丽湘*******"); printf("\n"); printf("输入叶子节点的个数:" ); scanf("%d",&n); YLX_CrtHuffmanTree(&HT,n); m=2*n-1;printf("中序输出哈夫曼树叶子节点:\n"); YLX_outputHuffman(HT,m); printf("\n"); YLX_CrtHuffmanCode(&HT,&HC,n); } 六、运行结果截图

(完整版)Matlab实验7图形绘制

实验7:图形绘制 一、实验目的 1、 掌握绘制二维图形的常用函数。 2、 掌握绘制三维图形的常用函数。 3、 掌握绘制图形的辅助操作。 二、实验内容 1、 已知2*13),2cos(2,12 y y y x y x y ===,完成下列操作: (1) 在同一坐标系下用不同的颜色和线型绘制三条曲线。 %homework_7_1_1.m x=0:pi/100:2*pi; y1=x.*x; y2=cos(2*x); y3=y1.*y2; plot(x,y1,'r--',x,y2,'k:',x,y3,'b-.'); (2) 以子图形式绘制三条曲线。 %homework_7_1_2.m x=0:pi/100:2*pi; y1=x.*x; y2=cos(2*x); y3=y1.*y2; subplot(2, 2, 1); plot(x,y1,'r--'); subplot(2, 2, 2); plot(x,y2,'k:'); subplot(2, 2, 3); plot(x,y3,'b-.'); (3) 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。 %homework_7_1_3.m %ì?D?í??¢?×ìYí??¢??í?oíì?3?í? x=0:pi/100:2*pi; y1=x.*x; y2=cos(2*x); y3=y1.*y2; %μúò?DD subplot(4, 3, 1); bar(x,y1,'r'); subplot(4, 3, 2); bar(x,y2,'k'); subplot(4, 3, 3); bar(x,y3,'b'); %μú?tDD

stairs(x,y1,'r'); subplot(4, 3, 5); stairs(x,y2,'k'); subplot(4, 3, 6); stairs(x,y3,'b'); %μúèyDD subplot(4, 3, 7); stem(x,y1,'r'); subplot(4, 3, 8); stem(x,y2,'k'); subplot(4, 3, 9); stem(x,y3,'b'); %μú??DD subplot(4, 3, 10); fill(x,y1,'r'); subplot(4, 3, 11); fill(x,y2,'k'); subplot(4, 3, 12); fill(x,y3,'b'); 2、 绘制极坐标曲线)sin(θρn b a +=,并分析参数a ,b ,n 对曲线形状的影响。 %homework_7_2.m function homework_7_2(a,b,n) theta=0:0.01:2*pi; rho=a.*sin(b+n.*theta); polar(theta,rho,'k'); %homework_7_2_tiao.m % a μ?ó°?ì subplot(3, 4, 1); homework_7_2(1,1,1) subplot(3, 4, 2); homework_7_2(2,1,1) subplot(3, 4, 3); homework_7_2(3,1,1) subplot(3, 4, 4); homework_7_2(4,1,1) % b μ?ó°?ì subplot(3, 4, 1); homework_7_2(1,1,1) subplot(3, 4, 2); homework_7_2(1,2,1) subplot(3, 4, 3); homework_7_2(1,3,1)

实验7 图及图地操作实验

实验报告七图及图的操作实验班级::学号:专业: 一、实验目的: 1、掌握图的基本概念和术语 2、掌握图的存储结构及创建算法。 3、掌握图的遍历算法(递归或非递归算法)。 二、实验容: 1、图邻接矩阵存储结构表示及基本操作算法实现 (1)邻接矩阵存储结构类定义: 自定义如下: package Ex7.Ex7_1; import Ex5.Ex5_1.Matrix; import Ex7.Triple; import java.util.List; /** * Created by 74062 on 2017/5/17. */ public class MatrixGraph { private Matrix matrix; private List vertxList; private static final int MAX_WEIGHT = 0x0000ffff; private int size; public MatrixGraph(Triple[] TripleArray, List vertxList ) { this.matrix = new Matrix(vertxList.size(),vertxList.size()); this.vertxList = vertxList; for(Triple triple:TripleArray){ insertEdge(triple); } size = vertxList.size(); } public MatrixGraph(List vertxList){ this.matrix = new Matrix(vertxList.size(),vertxList.size()); size = vertxList.size(); this.vertxList = vertxList; }

数据结构实验报告图实验

邻接矩阵的实现 1. 实验目的 (1)掌握图的逻辑结构 (2)掌握图的邻接矩阵的存储结构 (3)验证图的邻接矩阵存储及其遍历操作的实现2. 实验内容 (1)建立无向图的邻接矩阵存储 (2)进行深度优先遍历 (3)进行广度优先遍历3.设计与编码MGraph.h #ifndef MGraph_H #define MGraph_H const int MaxSize = 10; template class MGraph { public: MGraph(DataType a[], int n, int e); ~MGraph(){ void DFSTraverse(int v); void BFSTraverse(int v); private: DataType vertex[MaxSize]; int arc[MaxSize][MaxSize]; }

int vertexNum, arcNum; }; #endif MGraph.cpp #include using namespace std; #include "MGraph.h" extern int visited[MaxSize]; template MGraph::MGraph(DataType a[], int n, int e) { int i, j, k; vertexNum = n, arcNum = e; for(i = 0; i < vertexNum; i++) vertex[i] = a[i]; for(i = 0;i < vertexNum; i++) for(j = 0; j < vertexNum; j++) arc[i][j] = 0; for(k = 0; k < arcNum; k++) { cout << "Please enter two vertexs number of edge: " cin >> i >> j; arc[i][j] = 1; arc[j][i] = 1; } }

实验七 图形、文本和位图

实验七图形、文本和位图 一实验内容 练习第7章的例Ex_Draw,Ex_Icon,Ex_Cursor 二实验步骤 例Ex_Draw课程的成绩分布直方图 1.创建工作文件夹Ex_Draw 2.在View类中添加一个成员函数DrawScore,用于根据成绩来绘制直方图,该函数代码 如下: void CEx_DrawView::DrawScore(CDC *pDC, float *fScore, int nNum) { int nScoreNum[]={0,0,0,0,0}; for(int i=0;iSelectObject(&brush1); CPen *oldPen=pDC->SelectObject(&pen); CRect rcSeg(rc); rcSeg.right=rcSeg.left+nSegWidth; CString strSeg[]={"<60","60-70","70-80","80-90",">=90"); CRect rcStr; for(i=0;i

数据结构实验报告图实验

图实验 一,邻接矩阵的实现 1.实验目的 (1)掌握图的逻辑结构 (2)掌握图的邻接矩阵的存储结构 (3)验证图的邻接矩阵存储及其遍历操作的实现 2.实验内容 (1)建立无向图的邻接矩阵存储 (2)进行深度优先遍历 (3)进行广度优先遍历 3.设计与编码 #ifndef MGraph_H #define MGraph_H const int MaxSize = 10; template class MGraph { public: MGraph(DataType a[], int n, int e); ~MGraph(){ } void DFSTraverse(int v); void BFSTraverse(int v); private: DataType vertex[MaxSize]; int arc[MaxSize][MaxSize]; int vertexNum, arcNum; }; #endif #include using namespace std; #include "" extern int visited[MaxSize]; template MGraph::MGraph(DataType a[], int n, int e) { int i, j, k; vertexNum = n, arcNum = e; for(i = 0; i < vertexNum; i++) vertex[i] = a[i]; for(i = 0;i < vertexNum; i++) for(j = 0; j < vertexNum; j++) arc[i][j] = 0;

UML组件图和部署图实践课件

实验十、组件图和部署图 、实验目的 1 ?理解组件图的基本概念。 2?理解组件图的应用:逻辑部署。 3?理解部署图的基本概念。 4.理解部署图的应用:物理部署。 5?掌握组件图和部署图绘制的方法。 、实验器材 1. 计算机一台。 2. Rational Rose工具软件。 、实验内容 某图书管理系统的分析和设计已按计划完成类图和交互图的分析与设计,下一步将完成系统的组件图和部署图,现系统分析部指派您完成如下任务:完成系统的组件图。 四、实验步骤 1.绘制组件图分析: 在某图书馆管理系统中,通过分析可以发现类图中的类应分为4个部分: 1.用户接口模块(UI),主要负责系统和用户的交互,包括Frame类,Dialog 类等。 2.业务对象模块(BO),主要负责处理系统中的业务计算,如借书,还书等功能的具体操作。 3 ?数据存储模块(DB),主要负责处理对数据的存储。4?通用工具模块(UTIL ),包括系统中通用函数。

通过一个主程序StartClass来启动。由于系统中的类较多,这里以业务对象模块 (BO)为例来讲解如何创建组件图,BO模块中包括 Item类:书目类,表示一本实际存在的书籍或杂志 Loan类:借书业务类,将借阅者和图书馆关联起来,一个Loan对象表示借出的一本书Borrowerlnfomation类:借阅者信息类,表示一个借阅者。 Title类:表示一种书或一种杂志。如《C++编程思想》就是一种书,用1个title 表示,如果有2本这样的书,则需要用2个Item表示。 Reservation类:预定信息类,表示一个预定信息。 Item类和Loan类之间互相依赖,Loan类和BorrowerI nfomation类之间互相依赖,BorrowerI nfomation 类和Reservation 类之间互相依赖,Reservation 类和Title 之间互相依赖,Title和Item类之间互相依赖。 绘图步骤: (1)在组件视图中双击Main图,出现图10.1,为编辑组件图做好准备,这时 绘图工具栏中的图标如图中椭圆所示,其中具体含义可参看本节“补充图标” 一段的介绍。 图10.1 2)在组件视图中,从工具栏中选择Ma in Program图标,在右边的绘图区中添加一个新组件,并取名StartClass.java表明新增一个主程序。

单片机实验7

实验七直流数字电压表设计 姓名:田坤学号:2 专业:电子信息科学与技术 1.实验目的: 掌握LED动态显示和A/D 转换接口设计方法。 2.实验原理: 实验电路原理图如图A..94所示。图中显示器采用4位共阴极数码管,并按动态显示方式接线。A/D转换结束标志采用查询法检查,启动信号由软件模拟产生,时钟信号由Proteus的DClock信号发生器产生,频率为5kHz。电位器的输出电压送到A/D转换器中转换,转换结果以十进制形式显示在数码管上。调节电位器可使数码管的显示值发生相应变化。 图实验7的电路原理图 3.实验内容: # (1)、学习使用Proteus软件,掌握原理图绘图方法; (2)、学习使用Keil C软件,掌握C51程序编写与调试方法;(3)、理解动态显示与A/D转换工作原理,完成单片机电压采集与显示程序的编写与调试。 4.实验步骤: (1)、在Proteus中绘制电路原理图,按照表将元件添加到编辑环境中; (2)、在Keil中编写C51程序,并使之编译通过;

(3)、在Proteus中加载程序,观察仿真结果。 5.实验要求: 提交的实验报告中应包括电路原理图、含注释内容的源程序及实验结果分析。 表实验7的元器件清单 # 1)源程序如下: #include <> // 头文件 #include <> unsigned int tmp; //定义一个整形中间变量 sbit START=P2^5; //定义ADC0808启动位 sbit ad_busy=P2^6; //定义ADC0808转换结束标志位 sbit OE=P2^7; //定义ADC0808输出使能标志位

实验7:彩色图像及伪彩色处理

一、实验名称 彩色图像及伪彩色处理 二、实验目的及要求 掌握彩色图像的基础知识、彩色模型的概念和伪彩色处理的基本原理和基本方法,加深对其的感性认识,巩固所学理论知识。编写MATLAB程序,实现对灰度图像的伪彩色处理。 三、实验内容 显示图像一律要求加上相关标题。 (1)彩色图像的分析 调入并显示一幅彩色图像,然后拆分这幅图像,并分别显示其R,G,B分量;利用NTSC彩色空间该彩色图像的亮度、色调和饱和度性质。 (2)彩色图像的直方图均衡 ①调入并显示一幅彩色图像及其直方图,然后分别显示这幅图像的R,G,B 分量的直方图。 ②分别R,G,B分量进行直方图均衡处理,显示各分量均衡后的直方图; ③将处理完毕的各个分量合成彩色图像并显示其结果和直方图; ④利用NTSC彩色空间显示合成后的彩色图像的亮度、色调和饱和度性质,并观察处理前后图像的亮度、色调和饱和度性质的变化。 用到的函数说明如下: imhist(I) %显示图像I的直方图。 J = histeq(I,n) %指定直方图均衡后的灰度级数n,默认值为64,本次实验用256。 (3)伪彩色处理 分别采用2、8、16、32个灰度级进行伪彩色处理,并使用hot模式进行彩色化显示,观察并比较结果。 用到的函数说明如下: G2C=grayslice(I,m); %该函数用多重(即m-1个)等间隔阈值将灰度图像I 转换为索引图像,即m色图像。 imshow(X,map);%用指定的调色板来显示图像 常用map如下:

四、实现代码及运行效果图 (1)彩色图像的分析 调入并显示一幅彩色图像,然后拆分这幅图像,并分别显示其R,G,B分量;利用NTSC彩色空间该彩色图像的亮度、色调和饱和度性质。 [A,map]=imread('lena.jpg'); A1=A(:,:,1); A2=A(:,:,2); A3=A(:,:,3); subplot(2,2,1),imshow(A,map),title('ntsc图') subplot(2,2,2),imshow(A1),title('亮度') subplot(2,2,3),imshow(A2),title('色度') subplot(2,2,4),imshow(A3),title('饱和度')

数据结构实验报告(图)

附录A 实验报告 课程:数据结构(c语言)实验名称:图的建立、基本操作以及遍历系别:数字媒体技术实验日期: 12月13号 12月20号 专业班级:媒体161 组别:无 姓名:学号: 实验报告内容 验证性实验 一、预习准备: 实验目的: 1、熟练掌握图的结构特性,熟悉图的各种存储结构的特点及适用范围; 2、熟练掌握几种常见图的遍历方法及遍历算法; 实验环境:Widows操作系统、VC6.0 实验原理: 1.定义: 基本定义和术语 图(Graph)——图G是由两个集合V(G)和E(G)组成的,记为G=(V,E),其中:V(G)是顶点(V ertex)的非空有限集E(G)是边(Edge)的有限集合,边是顶点的无序对(即:无方向的,(v0,v2))或有序对(即:有方向的,)。 邻接矩阵——表示顶点间相联关系的矩阵 设G=(V,E) 是有n 1 个顶点的图,G 的邻接矩阵A 是具有以下性质的n 阶方阵特点: 无向图的邻接矩阵对称,可压缩存储;有n个顶点的无向图需存储空间为n(n+1)/2 有向图邻接矩阵不一定对称;有n个顶点的有向图需存储空间为n2 9

无向图中顶点V i的度TD(V i)是邻接矩阵A中第i行元素之和有向图中, 顶点V i的出度是A中第i行元素之和 顶点V i的入度是A中第i列元素之和 邻接表 实现:为图中每个顶点建立一个单链表,第i个单链表中的结点表示依附于顶点Vi的边(有向图中指以Vi为尾的弧) 特点: 无向图中顶点Vi的度为第i个单链表中的结点数有向图中 顶点Vi的出度为第i个单链表中的结点个数 顶点Vi的入度为整个单链表中邻接点域值是i的结点个数 逆邻接表:有向图中对每个结点建立以Vi为头的弧的单链表。 图的遍历 从图中某个顶点出发访遍图中其余顶点,并且使图中的每个顶点仅被访问一次过程.。遍历图的过程实质上是通过边或弧对每个顶点查找其邻接点的过程,其耗费的时间取决于所采用的存储结构。图的遍历有两条路径:深度优先搜索和广度优先搜索。当用邻接矩阵作图的存储结构时,查找每个顶点的邻接点所需要时间为O(n2),n为图中顶点数;而当以邻接表作图的存储结构时,找邻接点所需时间为O(e),e 为无向图中边的数或有向图中弧的数。 实验内容和要求: 选用任一种图的存储结构,建立如下图所示的带权有向图: 要求:1、建立边的条数为零的图;

实验7 CAD建筑平面图绘制实例(1)

实验7 AutoCAD室内平面图实验案例打开“最终室内平面效果图”,看到平面图,要绘制定位中心线: 步骤1、首先单击工具栏前面的

按钮来创建图层,出现图层创建面板(如下 图),再按这个按钮进行创建,单击刚创建的图层,按F2键可以进行修改图层,如先点选图层1,再按F2键,修改为:轴线。

步骤2:首先绘制如下图所示的定位中心线(红色的定位中心线,如下图),每一个定位中心线都是用来绘制柱子或墙体的辅助线。 单击右侧工具箱中的“直线”工具,输入12000,利用这条线往下偏移(快捷键O), 把所有中心线都定位好。 步骤3:下面进行窗洞和门洞的开口: 开窗洞:单击“直线”命令,拾取A点,不按下鼠标,输入1519,至B点后,单击C点,完成BC直线,用偏移命令,把BC直线偏移1600,用修剪命令把BD线段(如下左图所示),删除即完成一个1600窗洞的开口,其它依次如此,最终所有窗洞完成(如下右图所示)。(可打开“室内平面图制作过程.dwg”文件,看过程)。 步骤4、在开门洞之前,用“修剪”命令,先把多余的中心线删除掉(如下图所示)。

步骤5:开门洞:此平面图的墙体宽为180。既然墙体180,对半分就是90,门边我们设50,也就是大门左侧开门洞的距离至中心钱为90+50=140(如左图),依旧按照开窗洞的方法来开门洞,单击“直线”命令,拾取、偏移、修剪来完成所有门洞的开口(如右图); 步骤6:墙体的设置:此平面图全部用180,也有设墙体为120的。 首先切换至墙体图层。白色 单击“绘图”菜单下的“多线”命令,设置对正为无,比例为180, 要把墙体封口,要单击“格式”菜单下的“多线样式”命令,对话框单击“新建”按钮,新建“墙体”把前后封口,置为当前层,先把外框拉好(如下图)。

数据结构图实验报告

数据结构教程 上机实验报告 实验七、图算法上机实现 一、实验目的: 1.了解熟知图的定义和图的基本术语,掌握图的几种存储结构。 2.掌握邻接矩阵和邻接表定义及特点,并通过实例解析掌握邻接矩阵和邻接表的类型定义。 3.掌握图的遍历的定义、复杂性分析及应用,并掌握图的遍历方法及其基本思想。 二、实验内容: 1.建立无向图的邻接矩阵 2.图的xx优先搜索 3.图的xx优先搜索 三、实验步骤及结果: 1.建立无向图的邻接矩阵: 1)源代码: #include "stdio.h" #include "stdlib.h" #define MAXSIZE 30 typedefstruct{charvertex[MAXSIZE];//顶点为字符型且顶点表的长度小于MAXSIZE intedges[MAXSIZE][MAXSIZE];//边为整形且edges为邻近矩阵

}MGraph;//MGraph为采用邻近矩阵存储的图类型 voidCreatMGraph(MGraph *g,inte,int n) {//建立无向图的邻近矩阵g->egdes,n为顶点个数,e为边数inti,j,k; printf("Input data of vertexs(0~n-1): \n"); for(i=0;ivertex[i]=i; //读入顶点信息 for(i=0;iedges[i][j]=0; //初始化邻接矩阵 for(k=1;k<=e;k++)//输入e条边{}printf("Input edges of(i,j): "); scanf("%d,%d",&i,&j); g->edges[i][j]=1; g->edges[j][i]=1;}void main(){inti,j,n,e; MGraph *g; //建立指向采用邻接矩阵存储图类型指针 g=(MGraph*)malloc(sizeof(MGraph));//生成采用邻接举证存储图类型的存储空间}2)运行结果: printf("Input size of MGraph: "); //输入邻接矩阵的大小scanf("%d",&n); printf("Input number of edge: "); //输入邻接矩阵的边数scanf("%d",&e);

实验七 活动图

实验六活动图 一、实验目的 1.熟悉活动图的基本功能和使用方法。 2.掌握如何使用建模工具绘制活动图方法。 二、实验器材 1.计算机一台。 2.Rational Rose 工具软件。 三、实验内容 根据图书馆管理系统开发进度,在完成对系统的需求建模,得到用例模型后,应针对每个用例进行业务分析,说明其具体的业务流程。要求: 用活动图来描述系统中已知用例的业务过程: 1.描述“删除读者信息”用例。 四、实验步骤 绘制“删除读者信息”用例的活动图。删除读者信息一般按照以下步骤进行: (1)管理员在录入界面,输入待删除的读者名; (2)“业务逻辑”组件在数据库中查找待删除的读者名; (3)如果不存在,则显示出错信息,返回步骤(1),如果存在则继续; (4)“业务逻辑”组件判断“待删除的读者”是否可以删除; (5)如果不可以,则显示出错信息,返回步骤(8),如果可以则继续; (6)在数据库中,删除相关信息; (7)显示删除成功信息; (8)结束。 绘图步骤: (1)在用例图中,找到“删除读者信息”的用例,如图6.1所示,在“删除读者信息”用例上单击右键,在弹出的快捷菜单中选“New”,Rose工具也会弹出一个菜单,选”Activity Diagram”,选中后单击,便可以新建好一个活动图。如图6.2所示。

图 6.1 图6.2 (2)新建好活动图后,双击“删除读者信息”的活动图,得到如图6.3所示,然后在左边的工具栏内点击“Swimlane”,在右边的图添加一个泳道,如图6.4所示,并命名为administrator.按照此步骤,再添加另一个泳道,并命名为SystemTool,得到图6.5。

数据结构实验—图实验报告

精品文档数据结构 实 验 报 告

目的要求 1.掌握图的存储思想及其存储实现。 2.掌握图的深度、广度优先遍历算法思想及其程序实现。 3.掌握图的常见应用算法的思想及其程序实现。 实验内容 1.键盘输入数据,建立一个有向图的邻接表。 2.输出该邻接表。 3.在有向图的邻接表的基础上计算各顶点的度,并输出。 4.以有向图的邻接表为基础实现输出它的拓扑排序序列。 5.采用邻接表存储实现无向图的深度优先递归遍历。 6.采用邻接表存储实现无向图的广度优先遍历。 7.在主函数中设计一个简单的菜单,分别调试上述算法。 源程序: 主程序的头文件:队列 #include #include #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int QElemType; typedef struct QNode{ //队的操作 QElemType data; struct QNode *next; }QNode,*QueuePtr; typedef struct { QueuePtr front; QueuePtr rear; }LinkQueue; void InitQueue(LinkQueue &Q){ //初始化队列 Q.front =Q.rear =(QueuePtr)malloc(sizeof(QNode)); if(!Q.front) exit(OVERFLOW); //存储分配失败 Q.front ->next =NULL; } int EnQueue(LinkQueue &Q,QElemType e) //插入元素e为Q的新的队尾元素{ QueuePtr p; p=(QueuePtr)malloc(sizeof(QNode)); if(!p) exit(OVERFLOW); p->data=e;

数据结构实验———图实验报告

数据结构 实 验 报 告

目的要求 1.掌握图的存储思想及其存储实现。 2.掌握图的深度、广度优先遍历算法思想及其程序实现。 3.掌握图的常见应用算法的思想及其程序实现。 实验内容 1.键盘输入数据,建立一个有向图的邻接表。 2.输出该邻接表。 3.在有向图的邻接表的基础上计算各顶点的度,并输出。 4.以有向图的邻接表为基础实现输出它的拓扑排序序列。 5.采用邻接表存储实现无向图的深度优先递归遍历。 6.采用邻接表存储实现无向图的广度优先遍历。 7.在主函数中设计一个简单的菜单,分别调试上述算法。 源程序: 主程序的头文件:队列 #include #include #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int QElemType; typedef struct QNode{ //队的操作 QElemType data; struct QNode *next; }QNode,*QueuePtr; typedef struct { QueuePtr front; QueuePtr rear; }LinkQueue; void InitQueue(LinkQueue &Q){ //初始化队列 Q.front =Q.rear =(QueuePtr)malloc(sizeof(QNode)); if(!Q.front) exit(OVERFLOW); //存储分配失败 Q.front ->next =NULL; } int EnQueue(LinkQueue &Q,QElemType e) //插入元素e为Q的新的队尾元素{ QueuePtr p; p=(QueuePtr)malloc(sizeof(QNode)); if(!p) exit(OVERFLOW); p->data=e;

UML组件图和部署图实践课件

实验十、十一组件图和部署图 一、实验目的 1.理解组件图的基本概念。 2.理解组件图的应用:逻辑部署。 3.理解部署图的基本概念。 4.理解部署图的应用:物理部署。 5.掌握组件图和部署图绘制的方法。 二、实验器材 1.计算机一台。 2.Rational Rose 工具软件。 三、实验内容 某图书管理系统的分析和设计已按计划完成类图和交互图的分析与设计,下一步将完成系统的组件图和部署图,现系统分析部指派您完成如下任务: 完成系统的组件图。 四、实验步骤 1. 绘制组件图分析: 在某图书馆管理系统中,通过分析可以发现类图中的类应分为4个部分:1.用户接口模块(UI),主要负责系统和用户的交互,包括Frame类,Dialog类等。 2.业务对象模块(BO),主要负责处理系统中的业务计算,如借书,还书等功能的具体操作。 3.数据存储模块(DB),主要负责处理对数据的存储。 4.通用工具模块(UTIL),包括系统中通用函数。 通过一个主程序StartClass来启动。由于系统中的类较多,这里以业务对象模块

(BO)为例来讲解如何创建组件图,BO模块中包括

Item类:书目类,表示一本实际存在的书籍或杂志 Loan类:借书业务类,将借阅者和图书馆关联起来,一个Loan对象表示借出的一本书 BorrowerInfomation类:借阅者信息类,表示一个借阅者。 Title类:表示一种书或一种杂志。如《C++编程思想》就是一种书,用1个title 表示,如果有2本这样的书,则需要用2个Item表示。 Reservation类:预定信息类,表示一个预定信息。 Item类和Loan类之间互相依赖,Loan类和BorrowerInfomation类之间互相依赖,BorrowerInfomation类和Reservation类之间互相依赖,Reservation类和Title之间互相依赖,Title和Item类之间互相依赖。 绘图步骤: (1)在组件视图中双击Main图,出现图10.1,为编辑组件图做好准备,这时绘图工具栏中的图标如图中椭圆所示,其中具体含义可参看本节“补充图标”一段的介绍。 图10.1 2)在组件视图中,从工具栏中选择MainProgram图标,在右边的绘图区中添加一个新组件,并取名StartClass.java表明新增一个主程序。

相关文档
最新文档