文档库 最新最全的文档下载
当前位置:文档库 › 数据结构图实验报告汇总

数据结构图实验报告汇总

数据结构图实验报告汇总
数据结构图实验报告汇总

一、实验目的和要求

(1)掌握图的相关概念,包括图,有向图,无向图,完全图,子图,连通图,度,入度,出度,简单回路和环等定义。

(2)重点掌握图的各种存储结构,包括邻接矩阵和邻接表等。

(3)重点掌握图的基本运算,包括创建图,输出图,深度优先遍历,广度优先遍历等。 (4)掌握图的其他运算 ,包括最小生成树,最短路径,拓扑排序和关键路径等算法。 (5)灵活运用图这种数据结构解决一些综合应用问题。

二、实验内容和方法

(1)实验内容:

1、编写一个程序algo8-1.cpp ,实现不带权图和带权图的邻接矩阵与邻接表的相互转换算法、输出邻接矩阵与邻接表的算法,并在此基础上设计一个程序exp8-1.cpp 实现如下功能:

①建立如图1所示的有向图G 的邻接矩阵,并输出; ②由有向图G 的邻接矩阵产生邻接表,并输出; ③再由②的邻接表产生对应的邻接矩阵,并输出。

图1

2、编写一个程序algo8-2.cpp ,实现图的遍历运算,并在此基础上设计一个程序exp8-2.cpp 完成如下功能:

①输出图1所示的有向图G 从顶点0开始的深度优先遍历序列(递归算法); ②输出图1所示的有向图G 从顶点0开始的深度优先遍历序列(非递归算法); ③输出图1所示的有向图G 从顶点0开始的广度优先遍历序列。

3、设计一个程序exp8-3.cpp,采用邻接表存储图,并输出图8.1(a )中从指定顶点1出发的所有深度优先遍历序列。

1

5

6 9

7

5

8

4

5

3

0 1 5

2 4

3

(2)实验方法:

1、综合运用课本所学的知识,用不同的算法实现在不同的程序功能。

2、结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。

3、根据实验内容,编译程序。

三、实验环境:

Windows 7,Visual C++6.0

三、实验过程描述

文件graph.h中定义了图的邻接矩阵表示类型和邻接表表示类型,该头文件在以下三个实验中都会使用到。其代码如下:

#ifndef GRAPH_H_INCLUDED

#define GRAPH_H_INCLUDED

typedef int InfoType;

#define MAXV 100 //最大顶点个数

#define INF 32767 //INF表示无限大

//以下定义邻接矩阵类型

typedef struct

{

int no;

InfoType info;

}VertexType;

typedef struct

{

int edges[MAXV][MAXV];

int n,e;

VertexType vexs[MAXV];

}MGraph;

//以下定义邻接表类型

typedef struct ANode

{

int adjvex;

struct ANode* nextarc;

InfoType info;

}ArcNode;

typedef int Vertex;

typedef struct VNode

{

Vertex data;

实验①

源程序。

一、输入如下所示程序;

//文件名:exp8-1.cpp

#include

#include

#include "graph.h"

extern void MatToList1(MGraph, ALGraph* &);

extern void ListToMat1(ALGraph*, MGraph&);

extern void DispMat1(MGraph);

extern void DispAdj1(ALGraph*);

int main()

{

int i,j;

MGraph g,g1;

ALGraph *G;

int A[MAXV][6] = {{0,5,INF,7,INF,INF},{INF,0,4,INF,INF,INF},

{8,INF,0,INF,INF,9},{INF,INF,5,0,INF,6},

{INF,INF,INF,5,0,INF},{3,INF,INF,INF,1,0}};

g.n = 6;

g.e = 10;

for(i=0; i

for(j=0; j

g.edges[i][j] = A[i][j];

printf("有向图G的邻接矩阵:\n");

//文件名:algo8-1.cpp

#include

#include

#include "graph.h"

//不带权图的算法

void MatToList(MGraph g, ALGraph *&G)

{

int i,j;

ArcNode *p;

G = (ALGraph*)malloc(sizeof(ALGraph));

for(i=0; i

for(j = g.n-1; j>=0; j--)

if(g.edges[i][j]!=0)

{

p = (ArcNode*)malloc(sizeof(ArcNode));

p->adjvex = j;

p->nextarc = G->adjlist[i].firstarc;

G->adjlist[i].firstarc = p;

}

G->n = g.n;

G->e = g.e;

}

void ListToMat(ALGraph *G,MGraph &g)

{

int i,j;

ArcNode *p;

for(i=0; in; i++)

void DispAdj1(ALGraph *G)

{

int i;

ArcNode *p;

for(i=0; in; i++)

{

p = G->adjlist[i].firstarc;

printf("%3d:",i);

while(p!=NULL)

{

printf("%3d(%d)",p->adjvex,p->info);

p = p->nextarc;

}

printf("\n");

}

二、编译并链接程序;

三、运行程序,结果如下图:

实验○2

源程序

一、输入如下所示程序;

//文件名:exp8-2.cpp

#include

#include

#include "graph.h"

extern void MatToList1(MGraph, ALGraph *&); extern void DispAdj1(ALGraph *G);

extern void DFS(ALGraph *G,int v);

extern void DFS1(ALGraph *G,int v);

extern void DFS2(ALGraph *G,int v);

extern void BFS(ALGraph *G,int v);

int main()

{

int i,j;

//文件名:algo8-2.cpp

#include

#include

#include "graph.h"

int visited[MAXV];

void DFS(ALGraph *G,int v) //递归深度优先遍历{

ArcNode *p;

visited[v] = 1;

printf("%3d",v);

p = G->adjlist[v].firstarc;

while(p!=NULL)

{

if(visited[p->adjvex]==0)

top++;

St[top] = G->adjlist[w].firstarc;

break;

}

p = p->nextarc;

}

}

printf("\n");

}

void BFS(ALGraph *G,int v)

{

ArcNode *p;

int queue[MAXV],front = 0,rear = 0;

int visited[MAXV];

int w,i;

for(i=0;in;i++)

void MatToList1(MGraph g, ALGraph *&G)

{

int i,j;

ArcNode *p;

G = (ALGraph*)malloc(sizeof(ALGraph));

for(i=0; i

G->adjlist[i].firstarc = NULL;

for(i=0; i

for(j=g.n-1; j>=0; j--)

if(g.edges[i][j]!=0 && g.edges[i][j]!=INF)

{

p = (ArcNode*)malloc(sizeof(ArcNode));

p->adjvex = j;

p->info = g.edges[i][j];

p->nextarc = G->adjlist[i].firstarc;

G->adjlist[i].firstarc = p;

}

二、对程序进行编译链接;

三、运行该程序,结果如图

实验③

源程序。

一、输入如下所示程序;

#include

#include

#include "graph.h"

extern void MatToList(MGraph,ALGraph *&); extern void DispAdj(ALGraph *);

int visited[MAXV];

void DFSALL(ALGraph *G,int v,int path[],int d) {

ArcNode *p;

visited[v] = 1;

path[d] = v;

d++;

if(d==G->n)

{

for(int k=0;k

printf("%2d",path[k]);

printf("\n");

}

p = G->adjlist[v].firstarc;

while(p!=NULL)

{

if(visited[p->adjvex]==0)

if(visited[p->adjvex]==0)

DFSALL(G,p->adjvex,path,d);

p = p->nextarc;

}

visited[v] = 0;

}

p = (ArcNode*)malloc(sizeof(ArcNode));

p->adjvex = j;

p->nextarc = G->adjlist[i].firstarc;

G->adjlist[i].firstarc = p;

}

G->n = g.n;

G->e = g.e;

二、对程序进行编译链接;

三、运行该程序,结果如图

数据结构实验报告

数据结构实验报告 一.题目要求 1)编程实现二叉排序树,包括生成、插入,删除; 2)对二叉排序树进行先根、中根、和后根非递归遍历; 3)每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来。 4)分别用二叉排序树和数组去存储一个班(50人以上)的成员信息(至少包括学号、姓名、成绩3项),对比查找效率,并说明在什么情况下二叉排序树效率高,为什么? 二.解决方案 对于前三个题目要求,我们用一个程序实现代码如下 #include #include #include #include "Stack.h"//栈的头文件,没有用上 typedefintElemType; //数据类型 typedefint Status; //返回值类型 //定义二叉树结构 typedefstructBiTNode{ ElemType data; //数据域 structBiTNode *lChild, *rChild;//左右子树域 }BiTNode, *BiTree; intInsertBST(BiTree&T,int key){//插入二叉树函数 if(T==NULL) { T = (BiTree)malloc(sizeof(BiTNode)); T->data=key; T->lChild=T->rChild=NULL; return 1; } else if(keydata){ InsertBST(T->lChild,key); } else if(key>T->data){ InsertBST(T->rChild,key); } else return 0; } BiTreeCreateBST(int a[],int n){//创建二叉树函数 BiTreebst=NULL; inti=0; while(i

图形学实验报告

山东建筑大学测绘地理信息学院 实验报告 (2016—2017学年第一学期) 课程:计算机图形学 专业:地理信息科学 班级:地信141 学生姓名:王俊凝 学号:20140113010 指

实验一直线生成算法设计 一、实验目的 掌握基本图形元素直线的生成算法,利用编程语言C分别实现直线和圆的绘制算法。 二、实验任务 在TurboC环境下开发出绘制直线和圆的程序。 三、实验仪器设备 计算机。 四、实验方法与步骤 1 运行TurboC编程环境。 2 编写Bresenham直线绘制算法的函数并进行测试。 3 编写中点圆绘制算法的函数并进行测试。 4 增加函数参数,实现直线颜色的设置。 提示: 1. 编程时可分别针对直线和圆的绘制算法,设计相应的函数,例如void drawline(…)和void drawcircle(…),直线的两个端点可作为drawline的参数,圆的圆心和半径可作为drawcircle的参数。 2. 使用C语言编写一个结构体类型用来表示一个点,结构体由两个成员构成,x和y。这样,在向函数传入参数时,可使用两个点类型来传参。定义方法为:

typedef struct{ int x; int y; }pt2; 此处,pt2就是定义的一个新的结构体数据类型,之后就可用pt2来定义其他变量,具体用法见程序模板。 3. 在main函数中,分别调用以上函数,并传入不同的参数,实现对直线的绘制。 4. 线的颜色也可作为参数传入,参数可采用TurboC语言中的预设颜色值,具体参见TurboC图形函数。 五、注意事项 1 代码要求正确运行,直线和圆的位置应当为参数,实现可配置。 2 程序提交.c源文件,函数前和关键代码中增加注释。 程序模板 #include #include typedef struct{ int x; int y; }pt2; /*declare your drawing functions.*/ void drawline(pt2 startpt,pt2 endpt,int color); void drawcircle(pt2 centerpt,int radius,int color); void circlePlotPoints(pt2 centerpt,int x,int y,int color); int main() { int color,radius;

人事管理系统-软件工程实验报告

软件工程实验报告 课题:人事管理系统学生姓名: 学号: 专业班级: 指导教师: 同组成员:

需求分析 一、实验目的 掌握软件需求的结构化分析方法。 二、实验任务与实验要求 导出系统详细的逻辑模型,这里用数据流图来表示。 三、实验内容 (1)功能分析 经过初步分析“人事管理系统”应该具备以下主要功能。 1、职员个人信息资料的增加、修改和删除; 2、职员的考勤录入和查询; 3、职员工资结算和查询; 4、人事管理人员的变化和操作授权; 由于是使用计算机管理,就带来了新的功能:用户登陆、操作人员的管理、基本数据的维护、由数据安全产生的数据备份与恢复。 (2)、关系模式 在满足函数依赖和无损连接的基础上,使数据的设计更加合理。在本系统中只有3个实体,那就是普通员工、管理员、超级管理员,他们权限的不听通过角色来区分。在整个系统中超级管理员只有一人,管理员二人。一个人只可以在普通员工、管理员、超级管理员中处于一个角色,而不可以兼任。其具体的关系模式如下: 普通员工(员工号,密码,姓名,性别,出生年月,身份证号,联系电话,就职时间) 管理员(管理员号,密码,姓名,性别,出生年月,身份证号,联系电话,就职时间) 超级管理员(超级管理员号,密码,姓名,性别,出生年月,身份证号,联系电话,就职时间) 工资(员工号,时间,基本工资,提成,奖金) 考勤(员工号,时间,迟到,早退,管理员号) 注意:“”表示主码,“”表示既是主码又是外码。 E-R图如下所示

数据字典设计: 为了方便数据库的管理和维护,本系统只设计一个数据库workers.mdb,其中包含worker(员工信息表)、manager(考勤信息表)、booklist(工资信息表) 表1-1 worker(员工信息表)各字段设计 表1-2 monit (考勤信息表)各字段设计

一步测量测站实验

数字测图实验报告 班级2013012班 专业地理信息科学 组别第六组 组员王宁 华北水利水电大学资源与环境学院地理信息科学教研室

数字测图实验报告一 [实验名称] 一步测量测站实验 [实验目的] 1 对图根控制测量少设一次站,少跑一遍路,提高外业效率 2 进行内业导线平差处理的时候,如果误差超限,不需要全部重新测量,只需要在错误处重新架仪器进行测量,提高工作效率。 [仪器和工具] 外业;全站仪、尺子、标尺、棱镜 内业:CASS软件 [实验原理] 一步测量法"即在图根导线选点、埋桩以后,图根导线测量和碎部测量同步进行。一步测量法"对图根控制测量少设一次站,少跑一遍路,提高外业效率是明显的。如果导线闭合差超限,只需重测导线错误处,用正确的导线点坐标,进行坐标改正,可以通过坐标的旋转。平移进行改正,然后对本站所测的全部碎部点重算就可重新绘图,因而在数字测图中采用"一步测量法"是合适的。 [实验步骤] (一外业工作) 1. 在一个已知控制点架仪器,对中,调平,并记录仪器高和棱镜高。 2.找到一个已知坐标的控制点,当做定点2,并且把定点2的坐标输入进仪器中记录下来。在已知点的后方再选择一个已知控制点作为定向点1,把棱镜立在1处,记录棱镜高。在2处后视1,把数据记录下来。以1 2为定向边。

3. 先选好两个图根点3和4,以便进行闭合导线测量。把棱镜立在一个图根点3处,在2处前视图根点3,把所有数据记录下来以便内业计算。 4. 把仪器搬到图根点3处,对中调平并且记录仪器高。 5. 分别把棱镜立在原点2处和图根点4处,后视2,前视图根点4,记录所有数据。另外,在3点测量几个碎步点,也把数据记录下来。 6. 把仪器立在图根点4处,对中调平,记录仪器高。 7.分别把棱镜立在图根点3处和原控制点2处,,后视图根点3,前视原点2,记录所有数据。在4点测量几个碎步点坐标,并记录数据。 8. 此时记录出来的2点坐标就可以和已知2点坐标作对比,进行内业导线平差处理。 4 3 定向边 2 1 (二)内业处理 1. 对所有已经记录的数据进行编号,并把它们输入到记事本中,把后缀名更改为.dat格式,以便在CASS中展绘。

数据结构实验十一:图实验

一,实验题目 实验十一:图实验 采用邻接表存储有向图,设计算法判断任意两个顶点间手否存在路径。 二,问题分析 本程序要求采用邻接表存储有向图,设计算法判断任意两个顶点间手否存在路径,完成这些操作需要解决的关键问题是:用邻接表的形式存储有向图并输出该邻接表。用一个函数实现判断任意两点间是否存在路径。 1,数据的输入形式和输入值的范围:输入的图的结点均为整型。 2,结果的输出形式:输出的是两结点间是否存在路径的情况。 3,测试数据:输入的图的结点个数为:4 输入的图的边得个数为:3 边的信息为:1 2,2 3,3 1 三,概要设计 (1)为了实现上述程序的功能,需要: A,用邻接表的方式构建图 B,深度优先遍历该图的结点 C,判断任意两结点间是否存在路径 (2)本程序包含6个函数: a,主函数main() b,用邻接表建立图函数create_adjlistgraph() c,深度优先搜索遍历函数dfs() d,初始化遍历数组并判断有无通路函数dfs_trave() e,输出邻接表函数print() f,释放邻接表结点空间函数freealgraph() 各函数间关系如右图所示: 四,详细设计 (1)邻接表中的结点类型定义:

typedef struct arcnode{ int adjvex; arcnode *nextarc; }arcnode; (2)邻接表中头结点的类型定义: typedef struct{ char vexdata; arcnode *firstarc; }adjlist; (3)邻接表类型定义: typedef struct{ adjlist vextices[max]; int vexnum,arcnum; }algraph; (4)深度优先搜索遍历函数伪代码: int dfs(algraph *alg,int i,int n){ arcnode *p; visited[i]=1; p=alg->vextices[i].firstarc; while(p!=NULL) { if(visited[p->adjvex]==0){ if(p->adjvex==n) {flag=1; } dfs(alg,p->adjvex,n); if(flag==1) return 1; } p=p->nextarc; } return 0; } (5)初始化遍历数组并判断有无通路函数伪代码: void dfs_trave(algraph *alg,int x,int y){ int i; for(i=0;i<=alg->vexnum;i++) visited[i]=0; dfs(alg,x,y); } 五,源代码 #include "stdio.h" #include "stdlib.h" #include "malloc.h" #define max 100 typedef struct arcnode{ //定义邻接表中的结点类型 int adjvex; //定点信息 arcnode *nextarc; //指向下一个结点的指针nextarc }arcnode; typedef struct{ //定义邻接表中头结点的类型 char vexdata; //头结点的序号 arcnode *firstarc; //定义一个arcnode型指针指向头结点所对应的下一个结点}adjlist; typedef struct{ //定义邻接表类型 adjlist vextices[max]; //定义表头结点数组

《建筑结构试验》实验报告

《建筑结构试验》实验报告 班级: 学号: 姓名: 南昌航空大学土木工程试验中心 二○一○年四月

目录 试验一电阻应变片的粘贴及防潮技术试验二静态电阻应变仪的使用及接桥试验三电阻应变片灵敏系数的测定 试验四简支钢筋混凝土梁的破坏试验

试验一电阻应变片的粘贴及防潮技术 姓名:学号:星期第讲第组 实验日期:年月日同组者: 一、实验目的: 1.掌握电阻应变片的选用原则和方法; 2.学习常温用电阻应变片的粘贴方法及过程; 3.学会防潮层的制作; 4.认识并理解粘贴过程中涉及到的各种技术及要求对应变测试工作的影响。 二、实验仪表和器材: 1.模拟试件(小钢板); 2.常温用电阻应变片; 3.数字万用表; 4.兆欧表; 5.粘合剂:T-1型502胶,CH31双管胶(环氧树脂)或硅橡胶; 6.丙酮浸泡的棉球; 7.镊子、划针、砂纸、锉刀、刮刀、塑料薄膜、胶带纸、电烙铁、焊锡、焊锡膏等小工具; 8.接线柱、短引线 三、简述整个操作过程及注意事项: 1.分选应变片。在应变片灵敏数K相同的一批应变片中,剔除电阻丝栅有形状缺陷,片内有气泡、霉斑、锈点等缺陷的应变片,将电阻值在120±2Ω范围内的应变片选出待用。 2.试件表面处理。去除贴片位置的油污、漆层、锈迹、电镀层,用丙酮棉球将贴片处擦洗干净,至棉球洁白为止,以保证应变片能够牢固的粘贴在试件表面。 3.测点定位。应变片必须准确地粘贴在结构或试件的应变测点上,而且粘贴方向必须是要测量的应变方向。 4.应变片粘贴。注意分清应变片的正、反面,保证电阻栅的中心与十字交叉点对准。应变片贴好后,先检查有无气泡、翘曲、脱胶等现象,再用数字万用表的电阻档检查应变片有无短路、断路和阻值发生突变(因应变片粘贴不平整导致)的现象。 5.导线固定。接线柱粘帖不要离应变片太远,接线柱挂锡不可太多,导线挂锡一端的裸露线芯不能过长,以31mm为宜。引出线不要拉得太紧,以免试件受到拉力作用后,接线柱与应变片之间距离增加,使引出线先被拉断,造成断路;也不能过松,以避免两引出线互碰

实验报告格式范文

实验报告格式范文 实验一撰写可行性研究报告 一、实验目的 1、掌握可行性研究步骤; 2、学习编制可行性研究报告。 二、实验要求 硬件:Intel Pentium 120 或以上级别的CPU,大于16MB的内存。 软件:Win dows 95/98/2000 操作系统,Office 97/2000 软件 学时:2学时 写岀此项实验报告 三、实验内容 1、可行性研究(结构化分析)方法; 2、绘制数据流图,使用Word写实验报告。 四、实验步骤 1 ?引言 1.1 编写目的 可行性研究的目的是为了对问题进行研究,以最小的代价在最短的时间内确定问题是否可解。 经过对此项目进行详细调查研究,初拟系统实现报告,对软件开发中将要面临的问题及其解决方案进行初步设计及合理安排。明确开发风险及其所带来的经济效益。本报告经审核后,交软件经理审查。 1 . 2 项目背景 (1 )待开发的软件产品名称:旅行社机票预定系统。 (2)本项目的提岀者:冯剑。开发者:李翀。用户:旅行社 (3)本软件产品将用于旅行社的机票预定和费用的记录。

1 . 3术语说明 DFD (数据流图):一种描述书记变换的图形工具,是结构化分析方法最普遍采用的表示手段,但数据流图并不是结构化分析模型的全部,数据字典和小说明为数据流图提供了补充,并用以验证图形表示的正确性、一致性和完整性,三者共同构成了被建系统的模型。 1 . 4.系统参考文献 参考文献见附录 2?可行性研究的前提 2.1基本要求 ⑴功能 本软件实现的功能有:为游客提供机票预定服务,提高旅游局的服务质量和服务效率。 对航班数据库的查询和修改,对机票费用记帐数据库的查询和修改,记录旅客信息(姓名、性别、年龄、身份证号、单位、旅行时间、目的地)、航班时间和班次,打印机票和帐单。 (2) 性能 时间:提供的信息必须及时的反映在工作平台上。售票系统的定单必须无差错的存 储在机场的主服务器上。对服务器上的数据必须进行及时正确的刷新。一笔业务在一分钟内完成。空间:运行空间 2M。 (3) 系统的输入和输岀 输入:旅行社定票单。数据完整,详实。 输岀:机票、帐单。简捷,快速,实时。 (4) 处理流程 旅行社将定票信息输入定票系统,系统输岀机票和帐单给旅客。 5 )安全保密要求

机构运动简图的测绘实验报告doc

机构运动简图的测绘实验报告 篇一:机构运动简图的测绘和分析试验报告 实验一机构运动简图的测绘和分析 一. 实验目的 1. 学会根据各种机械实物或模型,绘制机构运动简图; 2. 分析和验证机构自由度,进一步理解机构自由度的概念,掌握机构自由度的计算方法; 3. 加深对机构结构分析的了解。 二. 设备和工具 1. 各类典型机械的实物(如:缝纫机等) 2. 各类典型机械的模型(如:内燃机模型、牛头刨床等); 3. 钢皮尺,内外卡钳,量角器(根据需要选用); 4. 三角板,铅笔,橡皮,稿纸(自备)。 三. 原理和方法 1. 原理 由于机构和运动仅与机构中所有的构件的数目的构件所组成的运动副的数目、类型、相对位置有关,因此,在绘制机构运动简图时,可以撇开构件的形状和运动副的具体构造,而用一些简略的符号(如教科书和机械设计手册中有关“常用构件的运动副简图符号”的规定)来代替构件和运动副,并按一定的比例尺表示运动副的相对位置,以此表明机

构的运动特征。表1-1为常用符号示例。 2. 方法 (1)确定组成机构的构件数目 测绘时使被测绘机械缓慢运动,仔细观测机构的运动,区分各个运动单元,从而确定组成机构的构件数目,找出原动件。 (2)测绘运动副的种类、数目 根据相联接两构件的接触情况及相对运动的特点,确定各个运动副的种类。 (3)合理选择投影面,坐标和原动件位置 选与机构的各个构件上的点运动平面皆平行的平面,或选能反映机构运动特征的其他平面做投影面。 转动(或移动)原动件,找出每个构件都能表达清楚的原动件位置。 (4)绘机构运动简图的示意图 徒手按规定的符号,凭目测,使图与实物大致成比例(转动副位置、移动副导路方 位,高副接触点及曲率),从原动件开始,依构件的连接次序,逐渐画出机构运动简图的示意图。用数字1、2、3??区分构件,用字母A、B、C??区分运动副。 (5)绘正式机构运动简图 仔细测量与机构运动有关的尺寸,即转动副间的中心距

数据结构实验---图的储存与遍历

数据结构实验---图的储存与遍历

学号: 姓名: 实验日期: 2016.1.7 实验名称: 图的存贮与遍历 一、实验目的 掌握图这种复杂的非线性结构的邻接矩阵和邻接表的存储表示,以及在此两种常用存储方式下深度优先遍历(DFS)和广度优先遍历(BFS)操作的实现。 二、实验内容与实验步骤 题目1:对以邻接矩阵为存储结构的图进行DFS 和BFS 遍历 问题描述:以邻接矩阵为图的存储结构,实现图的DFS 和BFS 遍历。 基本要求:建立一个图的邻接矩阵表示,输出顶点的一种DFS 和BFS 序列。 测试数据:如图所示 题目2:对以邻接表为存储结构的图进行DFS 和BFS 遍历 问题描述:以邻接表为图的存储结构,实现图的DFS 和BFS 遍历。 基本要求:建立一个图的邻接表存贮,输出顶点的一种DFS 和BFS 序列。 测试数据:如图所示 V0 V1 V2 V3 V4 三、附录: 在此贴上调试好的程序。 #include #include #include V0 V1 V4 V3 V2 ??? ? ??? ? ????????=010000000101010 1000100010A 1 0 1 0 3 3 4

#define M 100 typedef struct node { char vex[M][2]; int edge[M ][ M ]; int n,e; }Graph; int visited[M]; Graph *Create_Graph() { Graph *GA; int i,j,k,w; GA=(Graph*)malloc(sizeof(Graph)); printf ("请输入矩阵的顶点数和边数(用逗号隔开):\n"); scanf("%d,%d",&GA->n,&GA->e); printf ("请输入矩阵顶点信息:\n"); for(i = 0;in;i++) scanf("%s",&(GA->vex[i][0]),&(GA->vex[i][1])); for (i = 0;in;i++) for (j = 0;jn;j++) GA->edge[i][j] = 0; for (k = 0;ke;k++) { printf ("请输入第%d条边的顶点位置(i,j)和权值(用逗号隔开):",k+1); scanf ("%d,%d,%d",&i,&j,&w); GA->edge[i][j] = w; } return(GA); } void dfs(Graph *GA, int v) { int i; printf("%c%c\n",GA->vex[v][0],GA->vex[v][1]); visited[v]=1;

数据流图实验报告

数据流图实验报告 篇一:软件工程实验报告 篇二:需求分析实验报告 软件工程实践报告 计科12—1班 杨光敏 08123234 (一)软件需求分析 1.实验目的 学习图形工具软件VISIO,掌握结构化需求分析方法,熟练绘制数据流图;学习快速原型工具的使用。 2.基本要求 (1)针对银行ATM系统进行需求分析工作,了解银行ATM系统的功能、流程;(2)安装VISIOXX以上版本软件,熟练应用Visio绘制DFD图,绘制银行ATM系统数据流图,完成系统的软件逻辑模型; (3)安装Axure RP Pro 或者Balsamiq Mockups快速原型软件,学习绘制软件原型,完成银行ATM系统的软件原型。 3.系统概述 (1)ATM系统为银行提供一套高效稳定可靠的终端服务平台,为储户登录,

存款,取款,查询,打印凭条,转账,修改密码等操作提供便利。 图1 ATM工作流程 (2).用户特点 本软件的用户主要是银行的广大持卡人,大多都具有使用ATM经验。另外,我们的系统要实现的一个重要目标就是当储户取钱出现故障时能在下笔业务进行之前自动恢复。以此来方便用户和保障用户的利益。本系统还为用户提供了足够的界面友好性和易操作性。即使是一个对ATM系统完全陌生的客户,也可以在交易界面的提示下顺利完成交易。 另外一部分的用户是银行工作人员,本系统不予考虑。 4需求说明 (1) 基本描述 ATM终端可以接受一张可识别的银行储蓄卡,通过储户身份验证后,同储户进行各种交互,例如:查询、存款、取款、打印凭条等;处理储户相应的要求,执行对应操作,为储户服务。该系统要求须保持一定时间内的交易记录,系统应每天自动汇总各种交易数据与服务器进行对账。同时,在通讯失败或其他交易结果不确定的情况下,ATM要自动发起冲正交易,以保证账务的完整性。 本系统的实现需要记录一些相关信息,其中包括的信息有:用户信息和交易信息。

数字测图实习心得体会3篇

数字测图实习心得体会3篇 数字测图系统是以计算机及其软件为核心在外接输入输出设备的支持下,对地形空间数据进行采集、输入、成图、绘图、输出、管理的测绘系统。下面是数字测图实习心得体会,希望可以帮到大家。 篇一:数字测图实习心得体会 这次实习,相比于以往的教学型实习,这次实习,相比于以往的教学型实习,真正的工程(实习)显然能够更好的体会所学到的知识。事实也确实是如此,通过这次实习,我真正的体会到了理论联系实际的重要性。测区属于山西的一部分,动植物种类较少,地势不是太,地貌比较复杂,但在这实习的一年里还是体会到了从未有过的艰辛。现在细细想来,这一年的经历,虽然艰苦,但却学到了很多,不仅仅是测量的实际能力,更有面对困难的忍耐。 我明白了扎实的专业知识是提高工作水平的坚实基础.在学校学习专业知识时,可 能感觉枯燥无味,但当你工作以后,你才会发现专业知识是多么的重要.如我学的工程测量.在学校我们只学了些皮毛, 通过毕业测量实习,我学到了很多,比如对软件的操作更加熟练,加强了对所学知识的理解和掌握,很大程度上提高了动手和动脑的能力。书上得来终觉浅,绝知此事要躬行。在实习中,面对的是实实在在的任务,来不得半点推委和逃避。因此,这让我深深明白理论知识的重要,在学校余下的时间里,我要安心把所学的理论知识进行梳理和回顾,做到胸中有沟壑,一目了然。为以后实际的工作打下坚实的基础。 测量学首先是一项精确的工作,通过在学校期间在课堂上对测量学的学习,使我在脑海中形成了一个基本的、理论的测量学轮廓,而实习的目的,就是要将这些理论与实际工程联系起来,这就是工科的特点。测量学是研究地球的形状和大小以及地面点位的科学,从本质上讲,测量学主要完成的任务就是确定地面目标在三维空间的位置以及随时间的变化。在信息社会里,测量学的作用日益重要,测量成果做为地球信息系统的基础,提供了最基本的空间位置信息。构建信息高速公路、基础地理信息系统及各种专题的和专业的地理信息系统,均迫切要求建立具有统一标准,可共享的测量数据库和测量成果信息系统。因此测量成为获取和更新基础地理信息最可靠,最准确的手段。测量学的分类有很多种,如普通测量学、大地测量学、摄影测量学、工程测量学。作为测绘工程专业的跑棱镜的,我们要学习测量的各个方面。测绘学基础就是这些专业知识的基础。

数据结构实验报告图实验

邻接矩阵的实现 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; } }

实验分析数据流和绘制数据流图

实验报告课程名称_软件工程导论__________ 学院____计算机工程学院_________班级14软件1班 学号2014144141 姓名秦川 2016年11月8日

批阅教师时间实验成绩 课程名称软件工程 学号2014144141姓名秦川实验日期2016.11.8实验名称实验2分析数据流和绘制数据流图 实验目的: 1、掌握数据流的分析方法 2、掌握数据流图的绘制 实验内容: 任务一绘制数据流图 任务二分析数据流和绘制数据流图 案例一:总务办公管理系统 案例二:火车票预订系统 实验原理: 数据流图(DFD)是软件系统系统的逻辑模型,仅仅描绘数据在软件中流动(从输入移动到输出)的过程中所经受的变换(即加工处理)。 数据流图的绘制方法:根据数据流图的四种成分:源点或终点,处理,数据存储和数据流,从问题描述中提取数据流图的四种成分;然后依据“自顶向下、从左到右、由粗到细、逐步求精”的基本原则进行绘制。 基本符号如下:

实验过程与结果: 1.运行Microsoft Office Visio2007 运行Microsoft Office Visio2007 2.选择“软件和数据库”中的“数据流模型图”模板 选中数据流模型图模板

3.用鼠标选拉图标进行绘图 任务一绘制数据流图 试绘制工资管理系统的数据流图,根据数据流图的符号说明仔细理解下图含义: 这是学校教职工工资管理系统,教师根据课时表,职工根据任务表来确定个人工资情况,数据按以下方向传递: 首先,对课时表或任务表进行审核,审核后的数据经排序形成专用表格; 再进行一系列额外计算,包括个人所得说、住房公积金、保险费得出具体所发工资,并将工资表发给银行; 然后,向教职工展示工资所得明细; 最后,形成编制报表,更新分类表后,交于会计。 其中,人事科负责人事数据,教师与职工的工资由银行发放,会计做好报表的统计。

数据结构实验

实验1 (C语言补充实验) 有顺序表A和B,其元素值均按从小到大的升序排列,要求将它们合并成一 个顺序表C,且C的元素也是从小到大的升序排列。 #include main() { intn,m,i=0,j=0,k=0,a[5],b[5],c[10];/* 必须设个m做为数组的输入的计数器,不能用i ,不然进行到while 时i 直接为5*/ for(m=0;m<=4;m++)scanf("%d",&a[m]);// 输入数组a for(m=0;m<=4;m++)scanf("%d",&b[m]);// 输入数组b while(i<5&&j<5) {if(a[i]b[j]){c[k]=b[j];k++;j++;} else{c[k]=a[i];k++;i++;j++;}// 使输入的两组数组中相同的数只输出一 个 } if(i<5) for(n=i;n<5;n++) {c[k]=a[n];k++;} elseif(j<5) for(n=j;n<5;n++) {c[k]=b[n];k++;} for(i=0;i

求A QB #include main() { inti,j,k=0,a[5],b[5],c[5];//A=a[5],B=b[5],A n B=c[5] for(i=0;i<5;i++)scanf("%d",&a[i]);// 输入a 数组 for(i=0;i<5;i++)scanf("%d",&b[i]);〃输入b 数组 for(i=0;i<5;i++) {for(j=0;j<5;j++) if(a[i]==b[j]){c[k]=a[i];k++;}// 当有元素重复时,只取一个放入 c 中} for(i=0;i #defineN4 main() { inti,j,m,k,a[N+1];//k 为最后输出数组的长度变量

工程结构试验与检测实验报告

实验一静态应变测量原理 在电阻应测量中,如在电桥中仅接入一个电阻应变片,则实际测量值中含有由于温度变化时构件产生的应变,这是实验中所不希望的,通过适当的接线方式,可消除温度的影响,在课本中有许多不同的接线方式,主要分为两大类,一是设置专门温度补偿片,这种方式又可分为公共补偿与单片补偿两种,二是通过工作片间互相补偿,称为互相补偿或自补偿,接线要有一定的技巧。掌握电阻应变测量中的温度补偿方式及不同接线方式的测量结果的区别是很重要的。 一、实验目的 1、熟悉电阻应变仪的操作规程; 2、掌握电阻应变仪测量的基本原理; 3、学会用电阻应变片作半桥测量的方法; 4、掌握温度补偿的基本原理。 二、实验设备及仪表 1、DH3819型静态电阻应变仪; 2、等强度梁; 3、电阻应变片,导线。 三、实验内容 进行两种电阻应变测量接线方法的实验,掌握电阻应变测量的不同接线基本原理,以及消除温度影响的方法,根据实验结果分析两种接线不同测量数值理论依据。 四、试验方法 1、1/4桥接线+公共补偿:

单片补偿接线方法:将应变片R1接于应变仪1组,Eg、接线柱,温度补偿片R2接于、0接线柱,则构成外半桥,另内半桥由应变仪内部两个标准电阻构成。输入应变片灵敏度系数,导线电阻,应变片电阻。 公共补偿接线方法:断开补偿组的连线,将公共补偿接线连接于该组,将等强度梁的上侧应变片R1接于1组的Eg、接线柱,将等强度梁下侧应变片R3接、0接线柱。 2、半桥接线 按应变仪的设计原理更换公共补偿端的接线方式,然后在每个测量桥路中接入两个电阻应变片。本试验中,在一个测量桥路中按半桥方式接入等强度梁的上下测应变片。 五、实验步骤 1、接上述接桥方法分别接通桥路; 2、将电阻应变仪调平衡; 3、作预加载1公斤,检查仪表和装置; 4、正式试验,每级加载1公斤,加三级,记取读数,重复三次。 六、试验报告 1、实验方案; 2、实验过程; 3、整理出实验数据,试验数据填入应变记录表。(表格见下表) 4、比较两种接线方法,分析原因,给出结论。 5、写出试验操作方法和体会。 6、回答后面的思考题。

数字测图实习分析方案(完整)

数字测图实习报告 专业 班级 组号 姓名 学号 指导教师 2018 年 11 月 1 日至 2018 年 11 月12 日 目录

一、实习目的及意义1 二、实习内容及要求1 三、数字地形图测绘基本原理2 四、数字地图测绘过程2 五、参考资料7 六、实习心得8

数字测图实习报告 2018-11-1至2018-11-12我们工程测量技术专业学生在校进行了为期两个星期的数字化测图实习。 一、实习目的及意义 通过这次实习,使我们对《数字化测图》这门课程有一个系统的了解和掌握,进一步加深我们对数字化测图的基本理论和基本知识的理解,提高我们实际操作的能力。本次实习培养了我们理论联系实际,分析问题以及实地解决问题的能力,更要求我们在工作中要实事求是,严谨认真,吃苦耐劳,同时还要团结协作,相互配合,共同完成好小组的实习任务。从各方面锻炼自己,为以后的测量工作打下良好的基础。 二、实习内容及要求 1、实习的具体内容如下: 1、数字地图测绘 <1)练习和掌握全站仪的使用方法; <2)每组测绘一幅1:1000的数字地图; <3)熟悉和掌握南方CASS地形测图软件编辑地形图的基本方法。 2、数字地图的工程应用 <1)完成测站改正; <2)完成设计路线的断面图绘制; <3)用DTM和断面法计算土方量。 3、MAPGIS扫描矢量化 熟悉MAPGIS软件进行扫描矢量化的步骤和方法。 2、实习的具体要求如下 (1)掌握数字化测图的基本过程和基本方法。 (2)掌握并熟练全站仪的使用。 (3)掌握使用数字成图软件<南方CASS)进行数字地图编绘的 方法。

(4)掌握矢量化软件进行地图的扫描矢量化操作步骤和方法。 三、数字地形图测绘基本原理 采用草图法进行数字化测图,主要作业过程分为三个步骤:数据采集,数据处理及地形图的数据输出。在本次实习中利用中纬全站仪进行外业数据采集,在内业计算机上采用南方CASS软件进行数据处理成图。 四、数字地图测绘过程 1、踏勘,选点 本次实习地点是杨凌职业技术学院南校区,地形十分熟悉。 老师带领我们在校区大门口选择一点作为已知点,根据一份小比例尺图,选出一条闭合导线,现场选出导线点,并均匀分布在校内,共计6个点。导线点的选择应注意是否相互通视,架设仪器是否安全方便。 2、控制测量 全站仪测角、测边: 在已知导线点上架设全站仪,对中整平后量取仪器高、开机。同时将棱镜架设在待测点出对中整平。 在全站仪中创建一个文件CL24-02,用来保存测量数据.。 在当前文件下,按照提示输入测站点点号和给定的坐标、仪器高、目标高<取至毫M位),设置EDM,并瞄准后视点,进行后视置零定向。 定向完后仪器照准目标点棱镜,盘左盘右观测并测存,将屏幕显示结果记录在导线坐标记录表上。 导线边长、水平角施测要求及精度要求: ①观测:水平角观测一个测回,起始点采用全圆方向法观 测,内角采用测回法观测;距离测量往测一测回<瞄准目 标一次,读数4次),直接读记平距; ②取位:角度取至秒,距离取至mm,坐标取至mm;

数据结构实验报告图实验

图实验 一,邻接矩阵的实现 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;

软件工程实验报告

软 件 工 程 实 验 报 告 班级:计算机科学与技术1102班 学号:1108030209 姓名:蒙雨茹

实验一:使用Microsoft Visio 1.1实验目的: (1)熟悉Visio的工作环境及组成。 (2)掌握Visio软件绘制图表的基本操作。 (3)掌握基本流程图的设计方法。 1.2实验内容: 绘制基本流程图 1.3实验步骤: (1)打开一个模板,,在主菜单中依次选择【文件】->【新建】->【选 择绘图类型】,出现“选择绘图类型”窗口,在【类别】下,单击 【流程图】,在【模板】下,单击【基本流程图】。 (2)添加形状,将【形状】窗口中模具上的自己需要的形状拖到绘图页 面中合适的位置。并添加文本、连接不同形状,使流程图完整的显 现出来。 1.4实验结果:

实验二:数据流图 2.1 实验目的 (1)熟悉Visio的工作环境及组成。 ⑵掌握Visio软件绘制图表的基本操作。 ⑶掌握数据流图的设计方法。 2.2 实验内容 习题3-3,3-4,3-5 2.3 实验步骤 (1)打开模板 ①在主菜单中,依次选择【文件】——【新建】——【选择绘图类型】,出现“选择绘图类型”窗口。 ②在左侧【类别】下,单击【软件】。 ③在右侧【模板】下,单击【数据流模型图】。 (2)绘制顶层图 ①在顶层进程页面中添加、移动图形元素并调整其大小。将所需要元素用鼠标拖动到模板里,添加所需的元素符号。 接口:输入源点或输出终点,其中注明源点或终点的名称。 进程:即处理,输入数据在此进行变换产生输出数据,其中注明进程的名称。数据存储:用于代表系统中存储的信息,其中注明信息的名称。 数据流:被加工的数据及其流向。流线上注明数据名称,箭头代表数据流动方向。 ②向图形元素中添加文本,并修改数据流图中的文字和格式。 连接图形元素。 ③使用“数据流”连接线将“接口”、“进程”和“数据存储”等形状互相连接起来。 逻辑连接:将数据流起点、终点拖拽到进程或接口中央位置,进程或接口被红色框包围时松开鼠标,这时可看到数据流符号相应端点为红色方框。拖动进程或接口,可看到流据流的端点随着进程或接口的移动而移动。

软件设计与体系结构实验报告

福建农林大学计算机与信息学院 实验报告 课程名称:软件设计与体系结构 姓名:陈宇翔 系:软件工程系 专业:软件工程 年级:2007 学号:070481024 指导教师:王李进 职称:讲师 2009年12月16日

实验项目列表

福建农林大学计算机与信息学院实验报告 学院:计算机与信息学院专业:软件工程系年级:2007 姓名:陈宇翔 学号:070481024 课程名称:软件设计与体系结构实验时间:2009-10-28 实验室田实验室312、313计算机号024 指导教师签字:成绩: 实验1:ACME软件体系结构描述语言应用 一、实验目的 1)掌握软件体系结构描述的概念 2)掌握应用ACMESTUDIO工具描述软件体系结构的基本操作 二、实验学时 2学时。 三、实验方法 由老师提供软件体系结构图形样板供学生参考,学生在样板的指导下修改图形,在老师的指导下进行软件体系结构描述。 四、实验环境 计算机及ACMESTUDIO。 五、实验内容 利用ACME语言定义软件体系结构风格,修改ACME代码,并进行风格测试。 六、实验操作步骤 一、导入Zip文档 建立的一个Acme Project,并且命名为AcmeLab2。如下图:

接着导入ZIP文档,导入完ZIP文档后显示的如下图: 二、修改风格 在AcmeLab2项目中,打开families下的TieredFam.acme.如下图: 修改组件外观 1. 在组件类型中,双击DataNodeT; 在其右边的编辑器中,将产生预览;选择Modify 按钮,将打开外观编辑器对话框。 2. 首先改变图形:找到Basic shape section,在Stock image dropdown menu中选 择Repository类型. 3. 在Color/Line Properties section修改填充颜色为深蓝色。 4. 在颜色对话框中选择深蓝色,并单击 [OK]. 5. 修改图形的边框颜色为绿色 7. 单击Label tab,在Font Settings section, 设置字体颜色为白色,单击[OK] 产生的图形如下图:

相关文档