图的应用的实验报告
类图、对象图实验报告

UML建模课程实验三、UML类图、对象图模型的设计班级:信息0702 组别:指导老师:徐凯波姓名:王姗学号:2007030331205一、实验要求:掌握利用UML建模工具建立类图和对象图的方法。
二、实验内容:利用UML建模工具设计类图和对象图三、实验环境:Windows 2000 Professional以上环境、Rational Rose2003、Sybase Power Designer 10四、操作步骤:五、遇到的问题和解决方法:类图是所有图中比较好画的一种图,就是将角色、系统它们所具有的属性和活动输入到软件中去,我的类图中角色有管理员、学生,管理员的属性有:管理学的账号、管理员的姓名、管理员的性别、管理员的年龄,他所参与的活动有添加课程信息、删除课程信息、修改课程信息、查询课程信息、登录系统、添加学生信息、删除学生信息、修改学生信息、查询学生信息、查询学生信息;学生的属性有:学生账户、学生姓名、学生性别、学生年龄,他所参与的活动有:查询课程信息、选课、查询个人选课信息,登录系统。
系统的包括:学生信息维护系统、课程管理系统、选课管理系统,学生信息维护系统的属性有:学生的账号、姓名、性别、年龄、管理员的账号;选课管理系统:学生账号、课程编号、课程名称、课程地点、课程时间、课程学分、课程学时;课程管理系统:课程编号、课程名称、课程地点、课程时间、课程学分、课程学时。
在画整个类图的过程中,我没有遇到太多的问题。
六、实验心得和体会:在老师的辅导下,我经过前一阶段的练习,基本掌握了UML的要领,类图我基本上没有太费时间,只是想好属性和动作,还有就是个角色之间的关系,类图的难点是角色与角色之间的关系,究竟是一对多、一对一、多对多。
确定好角色与角色的关系,类图就很容易完成了。
图的基本操作 实验报告

图的基本操作实验报告图的基本操作实验报告引言:图是一种常见的数据结构,广泛应用于计算机科学和其他领域。
本实验报告旨在介绍图的基本操作,包括创建图、添加节点和边、遍历图等,并通过实验验证这些操作的正确性和效率。
实验目的:1. 了解图的基本概念和术语;2. 掌握图的创建和修改操作;3. 熟悉图的遍历算法;4. 分析图的操作的时间复杂度。
实验过程:1. 创建图首先,我们需要创建一个图对象。
图可以用邻接矩阵或邻接表来表示。
在本实验中,我们选择使用邻接表来表示图。
通过遍历输入的节点和边信息,我们可以创建一个包含所有节点和边的图。
2. 添加节点和边在创建图对象后,我们可以通过添加节点和边来构建图的结构。
通过输入节点的标识符和边的起始和结束节点,我们可以在图中添加新的节点和边。
添加节点和边的操作可以通过修改邻接表来实现,将节点和边的信息存储在对应的链表中。
3. 遍历图遍历图是图操作中常用的操作之一。
通过遍历图,我们可以访问图中的所有节点和边。
在本实验中,我们选择使用深度优先搜索(DFS)算法来遍历图。
DFS算法通过递归的方式遍历图中的节点,先访问当前节点,然后再递归地访问与当前节点相邻的节点。
4. 分析时间复杂度在实验过程中,我们记录了图的操作所花费的时间,并分析了它们的时间复杂度。
通过对比不同规模的图的操作时间,我们可以评估图操作的效率和可扩展性。
实验结果:通过实验,我们成功创建了一个图对象,并添加了多个节点和边。
我们还通过DFS算法遍历了图,并记录了遍历的顺序。
实验结果表明,我们的图操作实现正确,并且在不同规模的图上都能够高效地工作。
讨论与结论:本实验报告介绍了图的基本操作,并通过实验验证了这些操作的正确性和效率。
通过实验,我们了解到图是一种重要的数据结构,可以用于解决许多实际问题。
同时,我们还深入分析了图操作的时间复杂度,为后续的图算法设计和优化提供了参考。
总结:通过本次实验,我们对图的基本操作有了更深入的了解。
建筑CAD实验报告

建筑cad软件应用实训报告一、实训目的autocad是一种实用性很强的绘图软件,它可以快速,准确,方便的绘制和编辑出个各种工程图样,是工程专业的技术人员必备的基本技能。
通过本次实训,要求学生熟练的掌握各种绘图命令和编辑命令,可以熟练熟练的设置图层,文字样式,尺寸样式标注;按照制图规范进行文字及表格的创建;对部分图形进行图案的填充;对绘制完成的图形进行快速的标注。
学习auto cad的基本知识,掌握auto cad文件的操作与管理、环境设置,掌握坐标的输入方法;掌握对象特征点的捕捉,线型、颜色、图层的设置、图形设置、图形的基本方法。
掌握auto cad的各种绘图命令,能够熟练运用工具进行图形的选择、删除、复制、镜像、矩阵、移动、缩放、拉伸、修剪、延伸、填充等功能准确的绘制图形,并能够正确的进行图形的标注和图形的输出。
掌握auto cad的文字书写,图案填充和块的制作和插入方法。
掌握auto cad的各种尺寸标注,尺寸设置和尺寸编辑命令。
根据教学计划将知识应用于实践。
将在cad软件课程中所学的知识应用于我们建筑装饰工程技术的专业知识上,绘制某房屋的建筑施工图,包括绘制室内平面布置图、室内立面图和室内顶视图。
熟悉并掌握cad软件绘制设计图的方法和技巧。
能够独立完成cad绘图工作,为今后工作打下良好的专业基础。
二、实训过程实训前的准备工作,我选择的是我朋友家的一套三室一厅一卫的房子。
这套房子的特点就是客厅很大,而且户型比较简单。
我对这套房子的首先大致对细部拍了一套照片,这套照片能够清楚的看清楚房屋原来本身的装饰设计。
拍好照片后接下来就是测量。
房屋每个房间的长宽都一一测量并做好记录。
把这些归纳整理好作为实训时的资料。
由于这套房屋客厅较大,所以将客厅靠窗的一部分用安置休闲桌椅来分隔一块休闲区域,休闲区旁安置一书柜,方便闲暇时看看书。
餐厅没有用隔断等隔离,这样可以这餐厅看起来比实际宽敞。
客卧安置电脑桌和书柜,具备书房功能,而有客人来也可当做客房使用。
数据结构图的实验报告

数据结构图的实验报告数据结构图的实验报告引言:数据结构图是计算机科学中重要的概念之一。
它是一种用图形表示数据元素之间关系的数据结构,广泛应用于算法设计、程序开发和系统优化等领域。
本实验报告旨在介绍数据结构图的基本原理、实验过程和结果分析。
一、实验目的本次实验的主要目的是掌握数据结构图的基本概念和操作方法,以及通过实验验证其在解决实际问题中的有效性。
具体而言,我们将通过构建一个社交网络关系图,实现对用户关系的管理和分析。
二、实验方法1. 确定数据结构在本次实验中,我们选择了无向图作为数据结构图的基础。
无向图由顶点集和边集组成,每条边连接两个顶点,且没有方向性。
2. 数据输入为了模拟真实的社交网络,我们首先需要输入一组用户的基本信息,如姓名、年龄、性别等。
然后,根据用户之间的关系建立边,表示用户之间的交流和联系。
3. 数据操作基于构建好的数据结构图,我们可以进行多种操作,如添加用户、删除用户、查询用户关系等。
这些操作将通过图的遍历、搜索和排序等算法实现。
三、实验过程1. 数据输入我们首先创建一个空的无向图,并通过用户输入的方式逐步添加用户和用户关系。
例如,我们可以输入用户A和用户B的姓名、年龄和性别,并建立一条边连接这两个用户。
2. 数据操作在构建好数据结构图后,我们可以进行多种操作。
例如,我们可以通过深度优先搜索算法遍历整个图,查找与某个用户具有特定关系的用户。
我们也可以通过广度优先搜索算法计算某个用户的社交网络影响力,即与该用户直接或间接相连的其他用户数量。
3. 结果分析通过实验,我们可以观察到数据结构图在管理和分析用户关系方面的优势。
它能够快速地找到用户之间的关系,帮助我们了解用户的社交网络结构和影响力。
同时,数据结构图也为我们提供了一种可视化的方式来展示用户之间的关系,使得分析更加直观和易于理解。
四、实验结果通过实验,我们成功构建了一个社交网络关系图,并实现了多种数据操作。
我们可以根据用户的姓名、年龄和性别等信息进行查询,也可以根据用户之间的关系进行遍历和排序。
图的搜索与应用实验报告(附源码)(word文档良心出品)

哈尔滨工业大学计算机科学与技术学院实验报告课程名称:数据结构与算法课程类型:必修实验项目名称:图的搜索与应用实验题目:图的深度和广度搜索与拓扑排序设计成绩报告成绩指导老师一、实验目的1.掌握图的邻接表的存储形式。
2.熟练掌握图的搜索策略,包括深度优先搜索与广度优先搜索算法。
3.掌握有向图的拓扑排序的方法。
二、实验要求及实验环境实验要求:1.以邻接表的形式存储图。
2.给出图的深度优先搜索算法与广度优先搜索算法。
3.应用搜索算法求出有向图的拓扑排序。
实验环境:寝室+机房+编程软件(NetBeans IDE 6.9.1)。
三、设计思想(本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系)数据类型定义:template <class T>class Node {//定义边public:int adjvex;//定义顶点所对应的序号Node *next;//指向下一顶点的指针int weight;//边的权重};template <class T>class Vnode {public:T vertex;Node<T> *firstedge;};template <class T>class Algraph {public:Vnode<T> adjlist[Max];int n;int e;int mark[Max];int Indegree[Max];};template<class T>class Function {public://创建有向图邻接表void CreatNalgraph(Algraph<T>*G);//创建无向图邻接表void CreatAlgraph(Algraph<T> *G);//深度优先递归搜索void DFSM(Algraph<T>*G, int i);void DFS(Algraph<T>* G);//广度优先搜索void BFS(Algraph<T>* G);void BFSM(Algraph<T>* G, int i);//有向图的拓扑排序void Topsort(Algraph<T>*G);/得到某个顶点内容所对应的数组序号int Judge(Algraph<T>* G, T name); };主程序流程图:程序开始调用关系:主函数调用五个函数 CreatNalgraph(G)//创建有向图 DFS(G) //深度优先搜索 BFS(G) //广度优先搜索 Topsort(G) //有向图拓扑排序 CreatAlgraph(G) //创建无向图其中 CreatNalgraph(G) 调用Judge(Algraph<T>* G, T name)函数;DFS(G)调用DFSM(Algraph<T>* G , int i)函数;BFS(G) 调用BFSM(Algraph<T>* G, int k)函数;CreatAlgraph(G) 调选择图的类型无向图有向图深 度 优 先 搜 索广度优先搜索 深 度 优 先 搜 索 广度优先搜索拓 扑 排 序程序结束用Judge(Algraph<T>* G, T name)函数。
平面图实验报告

平面图实验报告
《平面图实验报告》
实验目的:通过平面图的绘制和分析,了解数据的分布规律和趋势。
实验材料:笔、纸、计算机软件
实验步骤:
1. 收集数据:首先我们需要收集一组数据,可以是某个地区的气温变化、某款
产品的销售情况等等。
2. 绘制平面图:根据收集到的数据,我们可以选择合适的平面图类型进行绘制,比如折线图、柱状图、饼状图等。
在绘制过程中,需要注意选择合适的比例尺
和坐标轴标签,以确保图表清晰易懂。
3. 分析数据:通过观察绘制出的平面图,我们可以分析数据的分布规律和趋势,比如是否存在周期性变化、是否有明显的增长或下降趋势等。
实验结论:通过本次实验,我们可以得出对数据的分布规律和趋势的认识,从
而更好地理解数据背后的含义,并为未来的决策提供参考依据。
总结:平面图实验是一种直观、简单且有效的数据分析方法,通过绘制和分析
平面图,我们可以更清晰地了解数据的特点和规律,为后续的决策提供有力支持。
希望通过本次实验,能够对平面图的应用有更深入的了解,并在实际工作
中加以运用。
活动图实验报告

活动图实验报告活动图实验报告引言:活动图是一种用于描述系统行为的图形化工具,它可以帮助我们更好地理解和分析系统中不同对象之间的交互关系。
本文将介绍我们进行的一项关于活动图的实验,以及实验结果和分析。
实验目的:本次实验的目的是探究活动图在软件系统开发中的应用。
通过实际操作和分析,我们希望能够更好地理解活动图的概念和使用方法,并能够熟练地运用活动图来描述系统的行为。
实验过程:在实验开始前,我们首先对活动图的基本概念进行了学习和理解。
然后,我们选择了一个简单的系统案例,即一个在线购物系统,作为实验的对象。
接下来,我们按照以下步骤进行实验:1. 确定系统的参与者:我们首先确定了系统中的参与者,包括用户、商家和管理员。
2. 确定系统的用例:根据系统的功能需求,我们确定了一些典型的用例,如用户注册、商品浏览、购物车管理等。
3. 绘制活动图:根据确定的用例,我们使用UML工具绘制了相应的活动图。
活动图中包括了参与者、用例以及它们之间的交互关系。
4. 分析活动图:通过观察和分析活动图,我们可以更清晰地理解系统的行为逻辑。
我们注意到,活动图中的动作节点、决策节点和合并节点等元素能够帮助我们描述系统中的各种行为和流程。
实验结果:通过实验,我们成功地绘制了在线购物系统的活动图,并对其进行了详细的分析。
我们发现,活动图能够直观地展示系统中不同参与者之间的交互过程,使我们更好地理解系统的行为逻辑。
同时,活动图还能够帮助我们发现系统中的潜在问题和改进空间。
实验分析:在实验过程中,我们发现活动图具有以下优点和应用价值:1. 清晰直观:活动图能够以图形化的方式展示系统的行为逻辑,使人们更容易理解和分析。
2. 易于沟通:活动图可以作为一种通用的语言,用于不同角色之间的沟通和交流。
开发人员、设计师和用户可以通过活动图更好地理解和共享对系统行为的理解。
3. 发现问题:通过观察和分析活动图,我们可以发现系统中的潜在问题和改进空间。
活动图可以帮助我们识别系统中的冗余操作、瓶颈和不必要的复杂性。
类图实验报告

类图实验报告类图实验报告引言:类图是面向对象分析和设计中最常用的工具之一。
通过类图,我们可以清晰地展示系统中的类、属性和方法之间的关系,从而帮助我们更好地理解系统的结构和功能。
本篇实验报告将介绍我在进行类图实验时的设计思路、方法和结果。
一、实验目的本次实验的目的是通过使用类图工具,对一个简单的学生选课系统进行建模。
通过实践操作,我们可以更加熟悉类图的使用方法,掌握类之间的关系表示和类的属性与方法的定义。
二、实验过程1. 确定系统需求在开始实验之前,我们首先需要明确学生选课系统的需求。
该系统主要包括学生、课程和教师三个核心类。
学生类具有学号、姓名和选课列表等属性,以及选课、退课和查询成绩等方法。
课程类具有课程编号、课程名称和授课教师等属性,以及查询选课学生和修改课程信息等方法。
教师类具有教师编号、姓名和授课课程等属性,以及录入成绩和修改学生信息等方法。
2. 绘制类图根据系统需求,我们可以开始绘制类图。
在类图中,我们使用类名、属性和方法来表示类的结构和功能。
通过关联、继承和聚合等关系符号,我们可以清晰地展示类之间的关系。
在绘制类图时,我们需要注意类的可见性、多重性和关联的方向等细节。
3. 完善类图在绘制初步的类图之后,我们需要对其进行完善和优化。
通过仔细检查类之间的关系,我们可以进一步优化类图的结构,使其更加简洁和易于理解。
同时,我们还可以添加必要的注释和说明,以便他人更好地理解和使用该类图。
4. 验证类图完成类图之后,我们需要对其进行验证。
通过使用类图工具提供的功能,我们可以对类图进行语法和语义的检查,确保其符合规范和逻辑。
在验证过程中,我们还可以运行类图生成代码,并进行功能测试,以验证类图的正确性和可用性。
三、实验结果通过以上的实验过程,我们成功地完成了学生选课系统的类图设计。
该类图清晰地展示了学生、课程和教师三个核心类之间的关系,以及类的属性和方法。
经过验证,该类图符合规范和逻辑,能够正常生成代码并实现系统功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
cin>>G.vertices[i].data;
G.vertices[i].firstarc=NULL;
}
cout<<"是否含有权值:(若不含权值请输入0,否则输入1)\n";
cin>>G.Isquan;
if (!G.Isquan)
cout<<"创建图:\n";
CreateGraph(g);
cout<<"输出图的信息:\n";
Display(g);
cout<<"拓扑排序:\n";
ToopologicalSort(g);
cout<<"求关键历经:\n";
ToopologicalOrder(g,T);
CriticalPath(g,T);
Status ToopologicalOrder (MGraph g,Sqstack &T)//拓扑序列
Status CriticalPath(MGraph g,Sqstack T)//关键路径
㈡、函数调用及主函数设计( 可用函数的调用关系图说明)
void main()
{
MGraph g;
Sqstack T;
实验六 图的应用及其实现
一、实验目的
1.进一步功固图常用的存储结构。
2.熟练掌握在图的邻接表实现图的基本操作。
3.理解掌握AOV网、AOE网在邻接表上的实现以及解决简单的应用问题。
二、实验内容
[题目一]:从键盘上输入AOV网的顶点和有向边的信息,建立其邻接表存储结构,然后对该图拓扑排序,并输出拓扑序列. 试设计程序实现上述AOV网的类型定义和基本操作,完成上述功能。
return OK;
}
int Push(Sqstack &s,int &e)
{//向栈输入元素
if(s.top-s.base>=s.stacksize)
{
s.base=(ElemType*)realloc(s.base,(s.stacksize+10)*sizeof(ElemType));
if(!s.base)return 0;
{int data; //存放顶点信息
struct ArcNode *firstarc; //指示第一个邻接点
}VNode,AdjList[MAX_VERTEX_NUM];
typedef struct
{ //图的结构定义
AdjList vertices; //顶点向量
int vexnum, arcnum;
(3)在求关键路径时,需要两次用到拓扑排序(其中一次是逆拓扑排序),在拓扑排序时还需要注意看看是否有环,若有环则输出提示信息。
㈣ 实验总结
通过对拓扑排序和求最小路径的操作,首先加强了对图的存储结构和图的遍历的进一步的熟悉和应用,在拓扑排序中还让我们去应用到以前学习的栈的知识,温故的同时也在实践的新的理论。
int Isquan;//是否含有权值
} MGraph;
int indegree[MAX_VERTEX_NUM];
int ve[MAX_VERTEX_NUM];//e各顶点的最早发生时间
int vl[MAX_VERTEX_NUM];//各顶点发生的最晚发生时间
/*图的邻接表存储(存储结构定义)的基本操作*/
对图的应用是在生活中应用很广泛,同时图的知识点和算法也是我们这学期学习的精华,例如求关键路径,用到栈,拓扑排序等经典算法,让我们受益匪浅。
四、主要算法流程图及程序清单
1、主要算法流程图:
创建图 拓扑排序
2、程序清单 程序过长,可附主要部分)
#include<string.h>
#include<malloc.h> /* malloc()等*/
int stacksize;
}Sqstack;
typedef int ElemType;
Status Initstack(Sqstack &s)
{s.base=(int*)malloc(sizeof(int)*25);
if (!s.base)
return ERROR;
s.top=s.base;
s.stacksize=25;
测试数据:教材图7.28
[题目二]:从键盘上输入AOE网的顶点和有向边的信息,建立其邻接表存储结构,输出其关键路径和关键路径长度。 试设计程序实现上述AOE网类型定义和基本操作,完成上述功能。
测试数据:教材图7.29
三、实验步骤
㈠、数据结构与核心算法的设计描述
基本数据结构:
#define TRUE 1
return i;
return -1;
};
Status CreateGraph(MGraph &G)
{int i,j,k;
InfoType vc;
VertexType va,vb;
ArcNode *p;
cout<<"请输入图的顶点数,边数: ";
cin>>G.vexnum>>G.arcnum;
cout<<"请输入"<<G.vexnum<<"个顶点的值(整数):\n";
int vl[MAX_VERTEX_NUM];//各顶点发生的最晚发生时间
调用的函数
Status Initstack(Sqstack &s)
Status Pop(Sqstack &s,int &e)
//若栈不空,则删除S的栈顶元素,
//用e返回其值,并返回OK;否则返回ERROR
int Push(Sqstack &s,int &e)
else
{s.top=s.base+s.stacksize;
s.stacksize+=10;
}
}
*s.top=e;
s.top++;
return OK;
p=p->nextarc;
}
}
//system("pause");
}
////////////////////////////////////////////////////////////////////
//
//建立栈相关的数据结构和函数//
typedef struct
{
int *top;
int *base;
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等*/
#define INFINITYINT_MAX //定义无穷大∞
#define MAX_VERTEX_NUM20
{
s.base=(int*)malloc(sizeof(int)*25);
if (!s.base)
return ERROR;
s.top=s.base;
s.stacksize=25;
return OK;
}
int indegree[MAX_VERTEX_NUM];
int ve[MAX_VERTEX_NUM];//e各顶点的最早发生时间
int LocateVex(MGraph G,VertexType u)
{
/初始条件:图G存在,u和G中顶点有相同特征*/
/*操作结果:若G中存在顶点u,则返回该顶点在图中位置;否则返回-1 */
int i;
for(i=0;i<G.vexnum;++i)
if(u==G.vertices[i].data)
}
㈢ 程序调试及运行结果分析
(1)在创建图的过程中需要考虑输入的方便,这就需要标记根据用户选择是否需要输入权值,选择不需要权值时就不会有关权值信息的操作。所以这就在图的结构体中加ISquan标记(0表示无权值,其他表示有权值)
(2)FindIndegree()函数调用过程就是一个对邻接表遍历的过程,在遍历过程中需要将弧指向的结点进行入度数组的标记。便定义了一个Indegree『』数组。
typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等*/
#define INFINITYINT_MAX //定义无穷大∞
#define MAX_VERTEX_NUM20
typedef int VertexType;
typedef int InfoType;
cout<<"请顺序输入每条弧的弧尾 弧头"<<endl;
else
cout<<"请顺序输入每条弧的弧尾 弧头以及弧的信息(以空格作为间隔):\n";
for(k=0;k<G.arcnum;++k) /*构造表结点链表*/
{
if(!G.Isquan)
cin>>va>>vb;
else
cin>>va>>vb>>vc;
#include<limits.h> /* INT_MAX等*/
#include<iostream.h>
#include<process.h> /* exit() */