位示图实验报告

位示图实验报告
位示图实验报告

合肥学院

计算机科学与技术系

实验报告

2014 ~2015 学年第一学期

课程操作系统原理

实验名称编写用位示图法管理文件存储

空间的分配与回收程序学生姓名侯康康13

章涛15

张德天32

何天龙10

专业班级12计本(3)

指导教师屠菁

2014 年11 月

1实验目的(字体四号,宋体,行距倍,段前段后行)

理解文件存储空间的分配与回收的基本概念,掌握产生文件存储空间的分配与回收的几种方法,体会位示图算法是管理文件存储空间的分配与回收的一种行之有效的方法。

通过编写程序实现位示图算法,进一步理解位示图算法的原理和执行过程,掌握位示图算法的描述和应用,进一步熟练掌握文件存储空间的分配与回收的方法。

2 实验内容

程序首先要给出位示图初态。分配时,参数为文件名及需要分配的块数。回收时,参数为文件名。

回答信息:分配时,能够分配时,给出文件名和分配的具体块号。否则,给出无法分配的信息。显示位示图。

回收时:给出回收的具体块号。显示位示图。

3 实验步骤

位示图说明

位示图算法是利用二进制的一位来表示磁盘中的一个盘块的使用情况。在外存上建立一张位示图(bitmap),记录文件存储器的使用情况。每一位仅对应文件存储器上的一个物理块,取值0和1分别表示空闲和占用。文件存储器上的物理块依次编号为:0、1、2、…。通常可用m*n个位数来构成位示图,并使m*n 等于磁盘的总块数。位示图也可描述为一个二维数组map[m*n],如图(1)所示:

概要设计

封装属性

在新建作业时,我们需要知道的是作业名和作业块数。所以新建一个,里面封装两个属性,一个是作业名id;一个是作业块数,我们定义成一位数组ye.用来记录输入作业块数输入时在位示图中的位置。

各功能的实现

存储空间的分配算法

首先要输入作业名和大小,若作业名已存在则报错;若没有,则比较空闲区中空闲块数是否大于欲分配的块数。有的话分配;没有的话报错;分配的时候该作业要记录下自己所占盘块的其实盘号和所占用的盘快数。并修改对应盘块的位示图的值。程序中对应的是从获取id(作业名)和num(块数),再进行分配操作,分配算法如下:

String id=("id");

int num=("num"));

boolean flag=false;

int n=0;

int[][] q=new int[8][8];

LinkedList list = new LinkedList(); q=(int[][])("a");

list=(LinkedList)("list");

StoreClass sc=new StoreClass();

Store s=new Store();

n=(q);

if(n

("/").forward(

request, response);

}

else{

for(int i=0;i<();i++){

if(((StoreClass) (i)).getId().equals(id)){

flag =true ;

break;

}

}

if(flag){

("/").forward(request, response);

}

else{

(id);

int k=0;

int[] temp = new int[64];

for (int i = 0; i < 64; i++) {

temp[i] = -1;

}

(temp);

for (int i = 0; i <= 7; i++) {

for (int j = 0; j <= 7; j++) {

if (q[i][j] == 0) {

q[i][j] = 1;

()[k] = i * 8 + j;

k++;

}

if (k == num) {orward(request, response);

}

}

分配成功后跳转到页面,即主界面。

、回收空间算法

回收时首先要输入作业名,判断是否存在该作业,若该作业不存在则报错;回收的时候要将作业占用的内存块归还,简单来说就是将分配时的作业块收回,体现在位示图上就是状态由“1”变成“0”。程序中对应的是从获取id(作业名),再进回收操作,回收算法如下:

String id=("id");

boolean flag=false;

int tempi = -1, tempj = -1;

int[][] q=new int[8][8];

q=(int[][])("a");

LinkedList list = new LinkedList();

list=(LinkedList)("list");

StoreClass store=new StoreClass();

for(int i=0;i<();i++){

if(((StoreClass) (i)).getId().equals(id)){

store = (StoreClass) (i);

flag =true ;

break;

}

}

if(!flag){

("/").forward(request, response);

}

else{

(store);

for(int i = 0; i <= 63; i++) { if ()[i] != -1) { orward(request, response);

}

回收成功后跳转到页面,即主界面。

、查看位示图信息

输入作业名即可查看作业在位示图中的信息,若不存在该作业则报错;主要查看作业的页号(即作业在位示图中的位置)和块号,块号的计算公式也一并给出。程序中对应的是从获取id(作业名),再进行查看位示图信息操作,查看算法如下:

String id=("id");

boolean flag=false;

int x = 0, y = 0;

int[][] q=new int[8][8];

q=(int[][])("a");

LinkedList list = new LinkedList();

list=(LinkedList)("list");

StoreClass store=new StoreClass();

for(int i=0;i<();i++){

if (i).getId().equals(id)) {

flag =true ;

store = (StoreClass) (i);

break;

}

}

if(!flag){

("/").forward(request, response);

}

else{

%>

该作业的页表情况为

页号-----------块号---------- 详细

<%

for (int i = 0; i <= 63; i++) {

if ()[i] != -1) {

x = ()[i] / 8;

y = ()[i] % 8;

(i + "---------------" + ()[i] + "-------------- 8 *" + x + "+" + y);%>

<%}

}

}

%>

返回主界面

查看成功后可选择返回到页面,即主界面。

各算法流程图

盘块的分配如下流程图(2):

图(2)分配流程图盘块的回收如下流程图(3):

图(3)回收流程图查看作业信息如下流程图(4)

图(4)作业流程图

调试分析以及运行结果

主界面

通过网页我们看到的如下所示,这是程序初始化时出现的界面图(5):

图(5)主界面

测试添加

添加数据作业名os,块数6;如图(6)

添加数据作业o,块数9:如图(7)

图(6)添加数据1页面

图(7)添加数据2页面运行结果如图(8)图(9)

图(8)添加结果1

图(9)添加结果2

测试查看

查看数据作业名o;图(10)

图(10)查看数据运行结果为图(11)

图(11)查看结果

测试删除

测试数据:作业名o如图(12)

图(12)删除作业

运行结果如图(13)

图(13)删除运行结果

小结:运行结果和理论结果相同并符合实验要求,结果满足位示图法基本原理。四实验总结

在做实验前,一定要将课本上的知识吃透,因为这是做实验的基础,否则,在老师讲解时就会听不懂,这将使你在做实验时的难度加大,浪费做实验的宝贵时间。如果你不清楚,在做实验时才去摸索,这将使你极大地浪费时间,使你事倍功半。做实验时,一定要亲力亲为,务必要将每个步骤,每个细节弄清楚,弄明白,实验后,还要复习,思考,这样,你的印象才深刻,记得才牢固,否则,过后不久你就会忘得一干二净,这还不如不做。做实验时,老师还会根据自己的亲身体会,将一些课本上没有的知识教给我们,拓宽我们的眼界,使我们认识到这门课程在生活中的应用是那么的广泛。

实验的过程全是我们学生自己动手来完成的,这样,我们就必须要弄懂实验的原理。在这里我深深体会到理论对实践的指导作用:懂实验原理,而且体会到了实验的操作能力是靠自己亲自动手,亲自开动脑筋,亲自去请教别人才能得到提高的。

我们做实验绝对不能人云亦云,要有自己的看法,这样我们就要有充分的准备,若是做了也不知道是个什么实验,那么做了也是白做。

五附录

主要源代码

package ;

import class LoginServlet extends HttpServlet {

private static final long serialVersionUID = -827730L;

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

(req, resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

orward(req, resp);

}

}

package ;

public class StoreClass {

String id;

int[] ye = new int[64];

public String getId() {

return id;

}

public void setId(String id) {

= id;

}

public int[] getYe() {

return ye;

}

public void setYe(int[] ye) {

= ye;

}

}

<%@page language="java"import=".*,.*"pageEncoding="UTF-8"%> <%

String path = ();

String basePath = ()+":orward(

request, response);

}

else{

for(int i=0;i<();i++){

if(((StoreClass) (i)).getId().equals(id)){

flag =true ;

break;

}

}

if(flag){

("/").forward(request, response);

}

else{

(id);

int k=0;

int[] temp = new int[64];

for (int i = 0; i < 64; i++) {

temp[i] = -1;

}

(temp);

for (int i = 0; i <= 7; i++) {

for (int j = 0; j <= 7; j++) {

if (q[i][j] == 0) {

q[i][j] = 1;

()[k] = i * 8 + j;

k++;

}

if (k == num) {orward(request, response);

}

}

%>

<%@page language="java"import=".*,.*"pageEncoding="UTF-8"%> <%

String path = ();

String basePath = ()+":etId().equals(id)){

store = (StoreClass) (i);

flag =true ;

break;

}

}

if(!flag){

("/").forward(request, response);

}

else{

(store);

for(int i = 0; i <= 63; i++) { if()[i] != -1) { orward(request, response);

}

%>

<%@page language="java"import=".*,.*"pageEncoding="UTF-8"%>

<%

String path = ();

String basePath = ()+":etId().equals(id)) {

flag =true ;

store = (StoreClass) (i);

break;

}

}

if(!flag){

("/").forward(request, response);

}

else{

%>

该作业的页表情况为

页号-----------块号---------- 详细

<%

for (int i = 0; i <= 63; i++) {

if ()[i] != -1) {

x = ()[i] / 8;

y = ()[i] % 8;

(i + "---------------" + ()[i] + "-------------- 8 *" + x + "+" + y);%>

<%}

}

}

%>

返回主界面

计算机图形学实验报告

《计算机图形学》实验报告姓名:郭子玉 学号:2012211632 班级:计算机12-2班 实验地点:逸夫楼507 实验时间:15.04.10 15.04.17

实验一 1 实验目的和要求 理解直线生成的原理;掌握典型直线生成算法;掌握步处理、分析实验数据的能力; 编程实现DDA 算法、Bresenham 中点算法;对于给定起点和终点的直线,分别调用DDA 算法和Bresenham 中点算法进行批量绘制,并记录两种算法的绘制时间;利用excel 等数据分析软件,将试验结果编制成表格,并绘制折线图比较两种算法的性能。 2 实验环境和工具 开发环境:Visual C++ 6.0 实验平台:Experiment_Frame_One (自制平台) 3 实验结果 3.1 程序流程图 (1)DDA 算法 是 否 否 是 是 开始 计算k ,b K<=1 x=x+1;y=y+k; 绘点 x<=X1 y<=Y1 绘点 y=y+1;x=x+1/k; 结束

(2)Mid_Bresenham 算法 是 否 否 是 是 是 否 是 否 开始 计算dx,dy dx>dy D=dx-2*dy 绘点 D<0 y=y+1;D = D + 2*dx - 2*dy; x=x+1; D = D - 2*dy; x=x+1; x

3.2程序代码 //-------------------------算法实现------------------------------// //绘制像素的函数DrawPixel(x, y); (1)DDA算法 void CExperiment_Frame_OneView::DDA(int X0, int Y0, int X1, int Y1) { //----------请实现DDA算法------------// float k, b; float d; k = float(Y1 - Y0)/float(X1 - X0); b = float(X1*Y0 - X0*Y1)/float(X1 - X0); if(fabs(k)<= 1) { if(X0 > X1) { int temp = X0; X0 = X1; X1 = temp; }

数据库和数据结构实验报告

. 西华大学实验报告(计算机类) 开课学院及实验室:实验时间:年月日 一、实验目的 通过练习让学生对数据库、数据库和表的关系、数据词典、参照完整性和视图有较好的理解和掌握。 二、内容与设计思想 实验内容: 1.数据库设计器 2.数据库的创建 3.设定数据词典 4.参照完整性的设置 5.视图的创建和修改 三、使用环境 Windos XP操作系统;Visual ProFox 6.0 四、核心代码及调试过程 例3-27创建项目管理器SBGL,要求添入数据库sbsj,并查看该数据库。 图一 图二、“项目管理器”的数据选项卡 图三、“项目管理器”中的数据库与数据库表 例3-28从sbsj数据库所属的sb和zz两个表中抽取编号、名称和增值3个字段。,组成名称 为“我的视图”的SQL视图。 open database sbsj create sql view 我的视图; as select sb.编号,sb.名称,zz.增值from sb,zz where sb.编号=zz.编号

如有你有帮助,请购买下载,谢谢! 例3-29根据例3-28的查询要求,用视图设计器建立视图1,然后修改其中车床的增值来更新zz表原来的增值 图一、视图设计器-视图1 图二、视图设计器-视图1 图三、增值表 图四 图五、视图设计器更新源表数据 19.根据图3.30所示数据库sbsj的永久关系,若利用参照完整性生成器来删除sb。dbf的第一个记录,对其他3个表会否产生影响,是分级、限制和忽略3中情况来说明。 图一、数据库设计器 图二、sbsj.dbc“永久关系的参照完整性生成器” 级联:相关子表中的记录将自动删除 限制:子表有相关记录,在父表中删除记录就会产生“触发器失败”的提示信息 忽略:父表删除记录,与子表记录无关 五、总结 (自己写一些收获和体会) 通过这次上机练习让我学会了怎样在数据库中添加项目管理器、表的数据完整性的概念以及视图的各种操作,让我更容易的掌握理论知识的难点和一些基本命令的使用方法,以及一些平时在课堂上不注意的问题。在上机练习的过程中需要对每个细节都要留心,认真做好每一步这样才不至于出错,这就加强了平时不注意的问题得到回应,从而加深了细节问题的处理方式。在上机的学习之后更加了解了数据库表及其数据完整性是vfp重要的一个对象,命令熟练操作直接关系到数据库的成败。 第三次的上机操作,我了解了命令的使用方式对于建立数据库表及其数据完整性很重要,要学好各种命令以及数据库表及其数据完整性的使用方法,还需在多做习题加强学习。 六、附录

图像处理实验报告

重庆交通大学 学生实验报告 实验课程名称数字图像处理 开课实验室数学实验室 学院理学院年级信息与计算科学专业 2 班学生姓名李伟凯学号631122020203 开课时间2014 至2015 学年第 1 学期

实验(一)图像处理基础 ?实验目的 学习Matlab软件的图像处理工具箱,掌握常用的一些图像处理命令;通过编程实现几种简单的图像增强算法,加强对图像增强的理解。 ?实验内容 题目A.打开Matlab软件帮助,学习了解Matlab中图像处理工具箱的基本功能;题目B.掌握以下常见图像处理函数的使用: imread( ) imageinfo( ) imwrite( ) imopen( ) imclose( ) imshow( ) impixel( ) imresize( ) imadjust( ) imnoise( ) imrotate( ) im2bw( ) rgb2gray( ) 题目C.编程实现对图像的线性灰度拉伸y = ax + b,函数形式为:imstrech(I, a, b); 题目D.编程实现对图像进行直方图均衡化处理,并将实验结果与Matab中imhist 命令结果比较。 三、实验结果 1).基本图像处理函数的使用: I=imread('rice.png'); se = strel('disk',1); I_opened = imopen(I,se); %对边缘进行平滑 subplot(1,2,1), imshow(I), title('原始图像') subplot(1,2,2), imshow(I_opened), title('平滑图像') 原始图像平滑图像

实验报告

高级过程控制实验 ——PLC实验 姓名:王珠 学号:2011200811 班级:信研1101班 指导教师:赵众(教授)

实验一交通信号灯控制的编程实验 实验目的:进一步熟悉可编程序控制器的指令系统,熟悉时序控制程序的设计和调试方法。 实验装置:S7-300可编程序控制器 实验内容: 十字路口交通灯控制实验 (1)控制开关 信号灯受一个启动开关控制,当开关接通时,信号灯系统开始工作;当开关断开时,所有信号灯都熄灭。 (2)控制要求 南北红灯亮维持40s,同时东西绿灯也亮,维持50s。东西绿灯熄灭的同时东西红灯亮,南北绿灯亮,且东西红灯维持40s,南北绿灯维持50s。依次循环。 根据控制要求,画出交通灯的状态图,设计出红、绿灯的梯形图,将程序写入可编程序控制器,检查无误后运行程序。 新建项目“交通灯”,选择LAD语言,在OB1中输入下列程序:

图1 OB1中的交通灯程序 程序结果: 当电源开关一打开,T1、T2开始计时,T3、T4不计时。当T1计时时间不到时,Q1.2输出为1,即南北绿灯亮,此时Q1.4东西红灯也亮;当T1计时完40s时,Q1.2南北绿灯灭,但T1仍在计时,东西红灯继续亮。当T2计时完50s 后,T3、T4开始计时,当T3开始计时时,Q1.6东西绿灯亮,同时,Q1.0南北红灯亮,当T3计时完40s后,Q1.6东西绿灯灭,但是Q1.0东西红灯依旧亮,直到T4计时完50s。接下来重复电源开关刚开时的动作,这样就完成了交通灯实验的要求。 用PLCSIM模拟运行该程序,点击I1.0使其为1状态。Q1.0代表南北红灯,Q1.2代表南北绿灯,Q1.4代表东西红灯,Q1.6代表东西绿灯。南北绿灯维持40s,灭,东西红灯再维持10s,灭;换为东西绿灯维持40s,灭;南北红灯再维持10s, 灭。依照此规律循环不断。下面是仿真图像:

数据结构实验报告图实验

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

FAT文件系统操作系统课程设计实验报告

操作系统课程设计之三 设计任务:模拟OS文件系统 在任一OS(Window或者Dos;也可以是在Linux下,但要求能将结果演示给老 师看)下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟OS 字 ,第 ⑤、每个目录实际能放下文件或子目录30项。 ⑸、文件系统空间分配: ①、第0个盘块(1k)存放磁盘信息(可以设定为格式说明“FAT32”、盘块大小,盘块数等 内容) ②、第1个盘块起,至125盘块,共125个盘块(125k)存放FAT内容 ③、第126、127(2个)盘块,存放位示图

④、从第128盘块至10000盘块,皆为数据(区)盘块,其逻辑编号从0开始,至 9872号数据盘块,即第0数据盘块为128号盘块,第1数据盘块为129号盘块,… ⑤、第0数据盘块(即128号盘块),存放根目录(同样只用一个盘块作根目录), 由于第0、1目录项为“.”(本目录), “..”(父目录),因此根目录下同样只能存放30个文件或目录,并且从第2个目录项开始。 ⑥、文件或子目录数据,放在第1数据盘块及以后的数据盘块中,由用户按需要使 用。 内容 ⑺、删除文件 #DelFile 文件名.扩展名,在文件所在的目录项中,将第一个字节变为0xE5,并同时修改FAT内容和位示图内容;如果文件不存在,给出出错信息 ⑻、文件拷贝 #CopyFile 老文件,新文件,为新文件创建一个目录项,并将老文件内容复制到新文件中,并同时修改FAT内容和位示图内容 ⑼、显示位示图内容

#ShowBitMP,将位示图内容(已有信息部分),显示在屏幕上(按十六进制)⑽、显示FAT内容 #ShowFAT,将FAT内容(已有信息部分),显示在屏幕上(按十六进制) 4、程序的总体流程为: ⑴、输出提示符#,等待接受命令,分析键入的命令; ⑵、对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令 关于对FAT表和MAP表的用法 1.当要用到数据块是,查询MAP表(因为只做比较查询即可),查询到的未用位置 置1,然后在FAT表上进行相应记录,在本程序做出的规定是,当文件夹FAT 表做-1,若是文件则按照FAT做对应的顺序记录,最后一块同样是-1结束,2.回收的时候,是按照FAT表的首项,做顺序置0,然后MAP也在相应位置置0

UML统一建模语言-实验报告2-活动图及状态图

《UML技术》课程实验报告 专业: 班级: 学号: 姓名: 日期: 2013 年 10 月 11 日

一、实验题目 活动图及状态图 二、实验目的 1.熟悉活动图的基本功能和使用方法。 2.掌握如何使用建模工具绘制活动图方法。 三、实验内容及原理 通过前面内容的学习,完成了对TJKD图书馆的图书馆管理系统的需求的初步分析,得出系统的用例图和相应的活动态。通过这两类图我们可以初步了解系统的业务处理过程,但对业务处理过程的处理状态间转换了解仍不够,这不利于设计人员对系统业务的进一步理解,而状态图能从对象的动态行为的角度去描述系统的业务活动。因此,指派你运用本节所学的状态图,完成如下任务: 1. 完成图书业务模块中还书用例的状态图。 1.业务分析:由前面章节对图书馆管理系统中的还书主要业务的描述和分析可知,还书业务的动态行为是由:空闲(idle)、图书查找(finding)、还书(reversion)、失败(Failure)、归还成功(Success)5种状态及激活相互转换的事件。 2.绘制状态图:请您根据分析运用UML绘制还书用例的状态图。 分析: 还书的状态图,还书的主要业务都是由管理员来完成,首先管理员必须先登录系统,并通过验证后,便可以进行下一步的操作,查找该书的相关信息,如存在,则进行还书操作,如不存在该信息,则给出提示信息; 四、实验步骤 第一个 (1)在用例图中,找到删除的用例,在删除用例上单击右键,在弹出的快捷菜单中选“New”,Rose 工具也会弹出一个菜单,选”Activity Diagram”,选中后单击,便可以新建好一个活动图。 (2)新建好活动图后,双击删除的活动图,然后把在左边的工具栏内点击“Swinlane“,在右边的图添加一个泳道,并命名为administrator.按照此步骤,再添加另一个泳道,并命名为SystemTool (3)接着在左边的工具上选取开始点,并在administrator的泳道上添加;添加完开始结点后,再来为此活动图添加活动,在左边的工具栏上选中Activity这个图标,在administrator这边的泳道上添加一个活动,命名为登录(login),再在开始结点和活动登录(login)之间添加活动关系 (4)完成步骤(2)后,登录输入需要对输入的信息进行验证,则在图中添加一个验证框结束(5)验证后,下一步的操作是查询需要删除的记录,添加一个活动,命名为delete (6)最后,在删除后,系统会返回操作结果给操作者;删除成功或删除失败系统都会有信息返回给操作者。 (7)根据分析设计情况,进一步添加或细化活动图 第二个 (1)在用例图中的还书(revesion)用例,单击右键,新建一个状态图,命名为revesion状态图,(2)双击“receivesion”状态图,展开后,在左边的工具栏上选取一个实心圆点,此结点为开始结点;当还书的时候,操作者先要询问系统的状态,如果系统忙,操作者则必需等待,因此,得到系统的两种状态

工图实验报告

工图实验报告

————————————————————————————————作者: ————————————————————————————————日期: ?

实验一 一.实验目的 1.学会打开、关闭和保存图形文件和熟悉AutoCAD的界面。 2.熟悉AutoCAD环境及常用绘图命和编辑命令。 3.学会部分常用绘图命令和编辑命令,掌握工具栏的调用方法。二.实验内容 根据立体图和尺寸,在AutoCAD上画出立体图的三视图。

三.实验步骤 (说明:给出实验内容具体描述,以及具体操作步骤) 第一题: 1.启动AutoCAD。 2.选择新建文件 选择一个样板文件,之后打开创建新文件。 3.系统环境设置 设置背景色,窗口元素配置、靶框大小设置 4.绘图单位格式设置。 设置图形单位:长度和角度,精度 5.构件图层,设计颜色,线型及线宽。 粗实线?黑色实线0.7mm 细实线??黑色?实线0.3mm 粗实线?黑色?虚线?0.7mm 6.首先画主视图。 1)选择粗实线图层。 2)首先使用矩形命令(Rectang):依次输入矩形的第一角点坐标和第二角点坐标。 3)再用直线命令(line)依次画出主视图上的轮廓线,在用打断命令(break)在矩形的下边打断合适的一段。 7.画出左视图 1)按一定的尺寸用直线命令画出左视图的所有最大轮廓线,与主视图的高平齐。 2)在选择虚线图层,将看不到的部分用虚线画出。 8.画出俯视图 1)选择粗实线图层。 2)按一定尺寸,与主视图长对正,与左视图的宽相等。画出俯视图的最大轮廓线。

第二题: 1.启动AutoCAD。 2.选择新建文件。 3.系统环境设置 4.构件图层,设计颜色,线型及线宽。 5.画主视图: 1)选择粗实线的图层 2)用矩形命令画出一个长为100,宽为60的矩形。 3)之后用倒角命令将矩形的上边的两侧各选长为25,两侧的边各选30,之后倒角。 4)在用直线命令画出上面的凹槽。之后打断(break)凹槽上方。 5)之后用同样的方法打断长为65的距离。在画出下方的凹槽。 6)在用直线命令画出矩形里面的两个轮廓线。 6.画左视图: 1)用直线命令先画一个与主视图高平齐的矩形。 2)先将矩形下面的两个直角的两边剪切掉长为15高为12 的小矩形。 3)在用直线命令画出矩形内部的轮廓线。 4)切换虚实线的图层。 5)画出立体图的上下两个凹槽的底边轮廓线。 7.画俯视图。 1)切换粗实线图层。 2)首先画一个与主视图长对正,与左视图的宽相等的矩形。 3)用倒角命令将矩形的四个角各倒掉上面为长25,两边为15的角。 4)再用直线画出立体图上方的凹槽的轮廓线。 5)切换虚线图层。 6)用直线命令画出立体图下方的凹槽的轮廓线。 四.实验结果 第一题:

数字图像处理实验报告 (2)

目录 实验一:数字图像的基本处理操作 (2) 1.1:实验目的 (2) 1.2:实验任务和要求 (2) 1.3:实验步骤和结果 (2) 1.4:结果分析 (6) 实验二:图像的灰度变换和直方图变换 (7) 2.1:实验目的 (7) 2.2:实验任务和要求 (7) 2.3:实验步骤和结果 (7) 2.4:结果分析 (11) 实验三:图像的平滑处理 (11) 3.1:实验目的 (11) 3.2:实验任务和要求 (11) 3.3:实验步骤和结果 (12) 3.4:结果分析 (15) 实验四:图像的锐化处理 (16) 4.1:实验目的 (16) 4.2:实验任务和要求 (16) 4.3:实验步骤和结果 (16) 4.4:结果分析 (18)

实验一:数字图像的基本处理操作 1.1:实验目的 1、熟悉并掌握MATLAB、PHOTOSHOP等工具的使用; 2、实现图像的读取、显示、代数运算和简单变换。 3、熟悉及掌握图像的傅里叶变换原理及性质,实现图像的傅里叶变换。 1.2:实验任务和要求 1.读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分 成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。 2.对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分 别显示,注上文字标题。 3.对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换, 显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。 4.对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里 叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的 对应关系。 1.3:实验步骤和结果 1.对实验任务1的实现代码如下: a=imread('d:\tp.jpg'); i=rgb2gray(a); I=im2bw(a,0.5); subplot(1,3,1);imshow(a);title('原图像'); subplot(1,3,2);imshow(i);title('灰度图像'); subplot(1,3,3);imshow(I);title('二值图像'); subplot(1,3,1);imshow(a);title('原图像'); 结果如图1.1 所示:

数据结构实验报告图实验

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

多用户多目录文件系统(实验报告、完整源代码版)

广东工业大学课程设计任务书 (源代码在附录) 题目名称多用户多级目录文件系统的实现 学生学院计算机学院 专业班级2008级软件工程2班 姓名锟 学号6900 一、课程设计的内容 本课程设计要求设计一个模拟的多用户多级目录的文件系统。通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。 二、课程设计的要求与数据 1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。 2.文件物理结构可采用显式链接或其他方法。 3.磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。4.文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。目录组织方式可以不使用索引结点的方式,但使用索引结点,则难度系数为1.2。 5.设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:(1)具有login (用户登录) (2)系统初始化(建文件卷、提供登录模块) (3)文件的创建: create (4)文件的打开:open (5)文件的读:read (6)文件的写:write (7)文件关闭:close (8)删除文件:delete (9)创建目录(建立子目录):mkdir (10)改变当前目录:cd (11)列出文件目录:dir (12)退出:logout 6.系统必须可实际演示,选用程序设计语言:C++、C等。

目录 一、设计思想说明 (2) 1.1设计环境 (2) 1.2设计思想 (2) 1.3存储空间管理 (2) 1.4目录结构 (2) 二、数据结构 (3) 2.1虚拟磁盘 (3) 2.2用户的数据文件 (3) 2.3目录文件 (3) 2.4管理目录文件的类 (3) 2.5管理用户的类 (4) 三、功能实现 (4) 3.1登陆系统 (4) 3.2系统初始化 (4) 3.3文件的创建 (5) 3.4文件的打开 (5) 3.5文件删除 (5) 3.6文件的读 (5) 3.7创建目录 (5) 3.8查看当前目录 (5) 3.9删除目录 (5) 3.10返回上一级目录 (5) 3.11退出 (5) 四、操作思想 (5) 五、界面演示 (6) 5.1登陆界面 (6) 5.2管理员登陆成功后的界面 (6) 5.3用户登陆成功后的界面 (6) 六、系统具体运行演示 (7) 6.1文件的创建与查看(读文件) (7) 6.2目录的创建与查看 (7) 6.3文件系统空间的查看 (7) 七、实验体会 (8) 八、收集的资料及主要参考文献 (8)

图像处理实验报告

实验报告 实验课程名称:数字图像处理 班级:学号:姓名: 注:1、每个实验中各项成绩按照10分制评定,每个实验成绩为两项总和20分。 2、平均成绩取三个实验平均成绩。 2016年 4 月18日

实验一 图像的二维离散傅立叶变换 一、实验目的 掌握图像的二维离散傅立叶变换以及性质 二、实验要求 1) 建立输入图像,在64?64的黑色图像矩阵的中心建立16?16的白色矩形图像点阵, 形成图像文件。对输入图像进行二维傅立叶变换,将原始图像及变换图像(三维、中心化)都显示于屏幕上。 2) 调整输入图像中白色矩形的位置,再进行变换,将原始图像及变换图像(三维、中 心化)都显示于屏幕上,比较变换结果。 3) 调整输入图像中白色矩形的尺寸(40?40,4?4),再进行变换,将原始图像及变 换图像(三维、中心化)都显示于屏幕上,比较变换结果。 三、实验仪器设备及软件 HP D538、MATLAB 四、实验原理 傅里叶变换作为分析数字图像的有利工具,因其可分离性、平移性、周期性和共轭对称性可以定量地方分析数字化系统,并且变换后的图像使得时间域和频域间的联系能够方便直观地解决许多问题。实验通过MATLAB 实验该项技能。 设),(y x f 是在空间域上等间隔采样得到的M ×N 的二维离散信号,x 和y 是离散实变量,u 和v 为离散频率变量,则二维离散傅里叶变换对一般地定义为 ∑∑ -=-=+-= 101 )],( 2ex p[),(1 ),(M x N y N yu M xu j y x f MN v u F π,1,0=u …,M-1;y=0,1,…N-1 ∑∑-=-=+=101 )],( 2ex p[),(),(M x N y N uy M ux j v u F y x f π ,1,0=x …,M-1;y=0,1,…N-1 在图像处理中,有事为了讨论上的方便,取M=N ,这样二维离散傅里叶变换对就定义为 ,]) (2ex p[),(1 ),(101 ∑∑ -=-=+- = N x N y N yu xu j y x f N v u F π 1,0,=v u …,N-1 ,]) (2ex p[ ),(1 ),(101 ∑∑-=-=+= N u N v N vy ux j v u F N y x f π 1,0,=y x ,…,N-1 其中,]/)(2exp[N yv xu j +-π是正变换核,]/)(2exp[N vy ux j +π是反变换核。将二维离散傅里叶变换的频谱的平方定义为),(y x f 的功率谱,记为 ),(),(|),(|),(222v u I v u R v u F v u P +== 功率谱反映了二维离散信号的能量在空间频率域上的分布情况。 五、实验步骤、程序及结果: 1、实验步骤: (1)、编写程序建立输入图像; (2)、对上述图像进行二维傅立叶变换,观察其频谱 (3)、改变输入图像中白框的位置,在进行二维傅里叶变换,观察频谱;

信息系统开发与设计实验九活动图、状态图

福建农林大学计算机与信息学院实验报告 1.实验项目名称:面向对象分析与设计–活动图、状态图 2.实验目的 1.熟悉活动图的基本功能和使用方法。 2.熟悉状态图的基本功能和使用方法。 3.掌握如何使用建模工具绘制活动图方法。 4.掌握如何使用建模工具绘制状态图方法。 3.实验器材 1.计算机一台。 2.Rational Rose 工具软件。 4.实验内容 (1)根据学院的图书管理系统开发进度,在完成对系统的需求建模,得到用例模型后,应针对每个用例进行业务分析,说明其具体的业务流程、在删除读者用例描述的基础上,系统分析部指派您完成该项任务。要求:用活动图来描述系统中已知用例的业务过程: 1.描述添加读者用例。 2.描述添加管理员用例。 3.描述新加书籍用例 (2) 通过前面内容的学习,在学院图书馆的图书馆管理系统的需求的初步分析,得出系统的用例图和相应的活动态。通过这两类图我们可以初步了解系统的业务处理过程,但对业务处理过程的处理状态间转换了解仍不够,这不利于设计人员对系统业务的进一步理解,而状态图能从对象的动态行为的角度去描述系统的业务活动。通过还书用例的状态图绘制学习,完成如下任务: 1. 完成图书业务模块中借书用例的状态图。 2. 完成图书业务模块中新加书籍用例的状态图。 绘制“删除读者信息”用例的活动图的实验步骤 删除读者信息一般按照以下步骤进行: (1)管理员在录入界面,输入待删除的读者名; (2)“业务逻辑”组件在数据库中,查找待删除的读者名; (3)如果不存在,则显示出错信息,返回步骤(1),如果存在则继续; (4)“业务逻辑”组件判断“待删除的读者”是否可以删除; (5)如果不可以,则显示出错信息,返回步骤(8),如果可以则继续; (6)在数据库中,删除相关信息; (7)显示删除成功信息; (8)结束。 5. 实验报告要求 1.整理实验结果。

华仔数据结构实验报告

本科实验报告 课程名称:数据结构 实验项目:线性结构、树形结构、图结构、查找、排序实验地点: 专业班级:学号: 学生姓名: 指导教师: 2011年12 月24 日

实验项目:线性结构 实验目的和要求 熟练掌握线性结构的基本操作在顺序表和链式表上的实现。 二、实验内容和原理 设顺序表递增有序,编写一个程序,将x插入,使之仍然有序。 三、主要仪器设备 使用的计算机:Nopated++ 四、操作方法与实验步骤 #include #define maxlen 50 typedef int elemtype; typedef elemtype sqlist[maxlen]; int creat(sqlist A) { int i,n; printf("Please input length:\n"); scanf("%d",&n); for(i=0;i=A[n-1]) {

A[n]=x; } else { while(A[i]=i;j--) A[j+1]=A[j]; A[i]=x; } return n+1; } void main() { sqlist A; int x,n; n=creat(A); disp(A,n); printf("Please input you want to insert:\n"); scanf("%d",&x); n=Insert(A,n,x); disp(A,n); } 五、实验数据记录和处理 六、实验结果与分析 这个程序为比较基础的程序 七、讨论、心得 该程序可以帮助我加深对线性表的理解,引发我对数据结构这门课的兴趣

实验报告

课程设计 课程名称_____ 操作系统____ 题目名称多用户多级目录文件系统的实现 学生学院____ _计算机学院_______ __ 专业班级_计算机科学与技术04级1班__学号3104006429 学生姓名____ __胡海洪__ ___ 指导教师______ __林穗___ _____ 2007年6月25日

广东工业大学课程设计任务书 题目名称多用户多级目录文件系统的实现 学生学院计算机学院 专业班级计算机科学与技术04级1班 姓名胡海洪 学号3104006429 一、课程设计的内容 本课程设计要求设计一个模拟的多用户多级目录的文件系统。通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。 二、课程设计的要求与数据 1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。 2.文件物理结构可采用显式链接或其他方法。 3.磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。4.文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。目录组织方式可以不使用索引结点的方式,但使用索引结点,则难度系数为1.2。 5.设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:(1)具有login (用户登录) (2)系统初始化(建文件卷、提供登录模块) (3)文件的创建: create (4)文件的打开:open (5)文件的读:read (6)文件的写:write (7)文件关闭:close (8)删除文件:delete (9)创建目录(建立子目录):mkdir (10)改变当前目录:cd (11)列出文件目录:dir (12)退出:logout 6.系统必须可实际演示,选用程序设计语言:C++、C等。

数字图像处理实验报告

数字图像处理实验报告

实验一数字图像处理编程基础 一、实验目的 1. 了解MA TLAB图像处理工具箱; 2. 掌握MA TLAB的基本应用方法; 3. 掌握MA TLAB图像存储/图像数据类型/图像类型; 4. 掌握图像文件的读/写/信息查询; 5. 掌握图像显示--显示多幅图像、4种图像类型的显示方法; 6. 编程实现图像类型间的转换。 二、实验内容 1. 实现对图像文件的读/写/信息查询,图像显示--显示多幅图像、4种图像类型的显示方法、图像类型间的转换。 2. 运行图像处理程序,并保存处理结果图像。 三、源代码 I=imread('cameraman.tif') imshow(I); subplot(221), title('图像1'); imwrite('cameraman.tif') M=imread('pout.tif') imview(M) subplot(222), imshow(M); title('图像2'); imread('pout.bmp') N=imread('eight.tif') imview(N) subplot(223), imshow(N); title('图像3'); V=imread('circuit.tif') imview(V) subplot(224), imshow(V); title('图像4');

N=imread('C:\Users\Administrator\Desktop\1.jpg') imshow(N); I=rgb2gary(GRB) [X.map]=gary2ind(N,2) RGB=ind2 rgb(X,map) [X.map]=gary2ind(I,2) I=ind2 gary(X,map) I=imread('C:\Users\dell\Desktop\111.jpg'); subplot(231),imshow(I); title('原图'); M=rgb2gray(I); subplot(232),imshow(M); [X,map]=gray2ind(M,100); subplot(233),imshow(X); RGB=ind2rgb(X,map); subplot(234),imshow(X); [X,map]=rbg2ind(I); subplot(235),imshow(X); 四、实验效果

实验六 状态图

实验六状态图 [实验目的和要求] 1、掌握状态的定义和组成部分。 2、掌握UML中状态的表示方法。 3、掌握转换的定义及转换的5要素。 4、了解触发事件、监护条件、动作的定义。 5、掌握阅读和绘制状态图的方法。 [实验环境] 1、Windows操作系统(XP、Vista等) 2、Rational Rose2003软件(或RSA8.0) [实验内容和步骤] 1、说出下面状态图所表达的信息。 2、说出下面状态图所表达的信息,并指出蓝色部分代表的含义。

3、根据下面状态图回答问题。 、 GFloor UP entry/ CloseDoor do/ E exit/ motor.stop() WaitingForFloorNum entry/ openDoor Return entry/ closeDoor do/ motor.moveDown() exit/ F Dow n entry/ closeDoor do/ D exit/ motor.stop() goToFloor(n) arrive() arrive() request(floor,direction)[ floor>0 ] request(floor,direction)[ floor==0 ] timeout[ getNextFloor()> A ] B[ C ] timeout[ getNextFloor()==-1&¤tFloor==0 ] / closeDoor arrive() 上图是一个表示电梯系统的状态图,该系统中Controller类和Motor类的详细定义如下图所示: 根据类图,完成上面 状态图中 A,B,C,D,E,F处的内 容。

数据结构图及其应用实验报告+代码

附件2: 北京理工大学珠海学院实验报告 ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY 实验题目图及其应用实验时间 2011.5.10 一、实验目的、意义 (1)熟悉图的邻接矩阵(或邻接表)的表示方法; (2)掌握建立图的邻接矩阵(或邻接表)算法; (3)掌握图的基本运算,熟悉对图遍历算法; (4)加深对图的理解,逐步培养解决实际问题的编程能力 二、实验内容及要求 说明1:学生在上机实验时,需要自己设计出所涉及到的函数,同时设计多组输入数据并编写主程序分别调用这些函数,调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果,加深对有关算法的理解。 具体要求: (1)建立图的邻接矩阵(或邻接表); (2)对其进行深度优先及广度优先遍历。 三、实验所涉及的知识点 1.创建一个图: CreateUDN(MGraph &G) 2.查找v顶点的第一个邻接点: FirstAdjVex(MGraph G,int v) 3. 查找基于v顶点的w邻接点的下一个邻接点: NextAdjVex(MGraph G,int v,int w) 4.图的矩阵输出: printArcs(MGraph G) 5:顶点定位: LocateVex(MGraph G,char v) 6. 访问顶点v输出: printAdjVex(MGraph G,int v) 7. 深度优先遍历: DFSTraverse(MGraph G,Status (*Visit)(MGraph G,int v)) 8. 广度优先遍历BFSTraverse(MGraph G,Status (*Visit)(MGraph G,int v)) 9. DFS,从第v个顶点出发递归深度优先遍历图G: DFS(MGraph G,int v) 四、实验记录 1.对顶点的定位其数组下标,利用了找到之后用return立即返回,在当图顶点 多的情况下节省了搜索时间,程序如下 //对顶点v定位,返回该顶点在数组的下标索引,若找不到则返回-1 int LocateVex(MGraph G,char v){ for (int i=0;i

文件系统存储空间管理模拟实验报告

课程名称计算机操作系统实验名称文件系统存储空间管理模拟姓名学号 专业班级实验日期 成绩指导老师 一、实验目的 根据提出的文件分配和释放请求,动态显示磁盘空闲空间的 态以及文件目录的变化,以位示图和索引分配为例:每次执行请求后要求显示或打印位示图的修改位置、分配和回收磁盘的物理块地址、更新的位示图、目录。 二、实验原理 用数组表示位示图,其中的每一位对应磁盘一个物理块的状态,0表示、空闲,1表示分配;当请求分配一个磁盘块时,寻找到数组中为0的位,计算相对磁盘块号,并计算其在磁盘中的物理地址(柱面号、磁道号、物理块号),并将其状态由0变到1。当释放某一物理块时,已知其在磁盘中的物理地址,计算其相对磁盘块号,再找到位示图数组中的相应位,将其状态由1变为0。 三、主要仪器设备 PC机(含有VC) 四、实验容与步骤 实验容:1. 模拟文件空间分配、释放过程,可选择连续分配、链式分配、索引分配法;2. 文件空闲空间管理,可采用空白块链、空白目录、位示图法; 步骤如下: 1. 输入磁盘基本信息参数,计算位示图大小,并随机初始化位示图; (1)磁盘基本信息:磁盘柱面数m, 每柱面磁道数p, 每磁道物理块数q; (2)假设采用整数数组存放位示图,则数组大小为: Size= ceil((柱面数*每柱面磁道数*每磁道物理块数)/(sizeof(int)*8))(3)申请大小为size的整数数组map,并对其进行随机初始化。 例如:假设m=2, p=4, q=8, 共有64个磁盘块,若sizeof(int)=2, 则位示图大小为4,map[4]如下: 地址到高地址位上。即map[0]的第0位到第15位分别对应0号磁盘块到15号磁盘块的状态,map[1]的第0位到第15位对应16号磁盘块到31号磁盘块的状

相关文档
最新文档