状态模式实验报告
班级:学号:姓名:
指导教师:成绩:
实验题目:状态模式实验时间:
一、实验目的
练习并掌握状态模式,理解它的适用场景,掌握如何在实际开发过程中使用这个模式,并学会分析这个模式的使用效果。
二、实验内容
图书管理系统中的图书有两种状态:在馆和借出;请用状态模式来实现两种状态的转换。
(1)、类图
(2)、时序图
(3)、实现代码
(4)、测试代码
1、类图
2、时序图
Client Library I nLibrary OutLibrary
1: Loan()
2: SetSate()
3: Loan()
4:
5:
6: Return()
7: SetSate()
8: Return()
9:
10:
3、实现代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
public interface State
{
void Loan(); //借¨¨出?的ì?方¤?法¤?§
void Return(); //归¨|还1的ì?方¤?法¤?§
}
//在¨2馆Y状á??态??类¤¨¤
public class InLibraryState:State
{
Library library;
public InLibraryState(Library library)
{
this.library = library;
}
public InLibraryState()
{ }
public void Loan()
{
Console.WriteLine("借¨¨书o¨|成¨|功|了¢?!");
library.bookloan();
library.setState(library .getOutLibrary ());
}
public void Return()
{
Console.WriteLine("图a?书o¨|如¨?今?还1在¨2馆Y中D,ê?操¨′作á??有?D误¨?"); }
}
//借¨¨出?状á??态??类¤¨¤
public class OutLibraryState:State
{
Library library;
public OutLibraryState(Library library)
{
this.library = library;
}
public OutLibraryState()
{ }
public void Loan()
{
Console.WriteLine("图a?书o¨|如¨?今?借¨¨出?了¢?,ê?操¨′作á??有?D误¨?"); }
public void Return()
{
Console.WriteLine("还1书o¨|成¨|功|了¢?");
library.bookreturn();
library.setState(library .getInLibrary ());
}
}
//图a?书o¨|馆Y类¤¨¤
public class Library
{
State inlibrary;
State outlibrary;
State state ;
int Count = 0;
public Library(int bookCount)
{
inlibrary = new InLibraryState(this);
outlibrary = new OutLibraryState(this);
this.Count = bookCount;
if (bookCount > 0)
{
state = inlibrary;
}
}
public void Loan()
{
state.Loan();
}
public void Return()
{
state.Return();
}
public void setState(State state)
{
this.state =state;
}
public State getInLibrary()
{
return inlibrary ;
}
public State getOutLibrary()
{
return outlibrary;
}
public int getbookCount()
{
return Count;
}
public void bookloan()
{
if (Count != 0)
{
Count = Count-1;
}
}
public void bookreturn()
{
Count = Count + 1;
}
public void print(Library library)
{
if (library.getbookCount() > 0)
{
Console.WriteLine("图a?书o¨|如¨?今?在¨2图a?书o¨|馆Y中D"); }
else
{
Console.WriteLine("图a?书o¨|已°?被à?借¨¨出?");
Console.ReadKey();
}
}
}
4、测试代码
class test
{
static void Main(string[] args)
{
Library library = new Library(1);
library.Loan();
library.print(library);
library.Return();
library.print(library);
Console.WriteLine("**************************************");
library.Loan();
library.Loan();
library.print(library); library.Return();
library.Return();
library.print(library); }
}
5、测试显示结果图
计算机图形学实验报告
《计算机图形学》实验报告姓名:郭子玉 学号: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; } 【精品实验报告】软件体系结构设计模式实验报告软件体系结构 设计模式实验报告 学生姓名: 所在学院: 学生学号: 学生班级: 指导老师: 完成日期: 一、实验目的 熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的设计模式,包括组合模式、外观模式、代理模式、观察者模式和策略模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式,并学会分析这些模式的使用效果。 二、实验内容 使用PowerDesigner和任意一种面向对象编程语言实现组合模式、外观模式、代理模式、观察者模式和策略模式,包括根据实例绘制模式结构图、编写模式实例实现代码,运行并测试模式实例代码。 (1) 组合模式 使用组合模式设计一个杀毒软件(AntiVirus)的框架,该软件既可以对某个文件夹(Folder)杀毒,也可以对某个指定的文件(File)进行杀毒,文件种类包括文本文件TextFile、图片文件ImageFile、视频文件VideoFile。绘制类图并编程模拟实现。 (2) 组合模式 某教育机构组织结构如下图所示: 北京总部 教务办公室湖南分校行政办公室 教务办公室长沙教学点湘潭教学点行政办公室 教务办公室行政办公室教务办公室行政办公室 在该教育机构的OA系统中可以给各级办公室下发公文,现采用 组合模式设计该机构的组织结构,绘制相应的类图并编程模拟实现,在客户端代码中模拟下发公文。(注:可以定义一个办公室类为抽象叶子构件类,再将教务办公室和行政办公室作为其子类;可以定义一个教学机构类为抽象容器构件类,将总部、分校和教学点作为其子类。) (3) 外观模式 某系统需要提供一个文件加密模块,加密流程包括三个操作,分别是读取源文件、加密、保存加密之后的文件。读取文件和保存文件使用流来实现,这三个操作相对独立,其业务代码封装在三个不同的类中。现在需要提供一个统一的加密外观类,用户可以直接使用该加密外观类完成文件的读取、加密和保存三个操作,而不需要与每一个类进行交互,使用外观模式设计该加密模块,要求编程模拟实现。参考类图如下: reader = new FileReader();EncryptFacadecipher = new CipherMachine();writer = new FileWriter();-reader: FileReader-cipher: CipherMachine-writer: FileWriter +EncryptFacade () +fileEncrypt (String fileNameSrc,: voidString plainStr=reader.read(fileNameSrc); String fileNameDes)String 《Linux操作系统》实验日志 班级: 姓名: 学号: 指导老师: 实验一:Linux常用命令实验日志 指导教师刘锐实验时间:2009 年10 月13 日学院计算机科学与技术学院专业信息安全 班级学号姓名实验室S308 实验题目: Linux常用命令 实验目的: ●练习并掌握Linux的常用命令 ●使用命令方式对用户,用户组及文件使用进行管理 ●使用图形界面方式对用户,用户组及文件使用进行管理 ●编写一个简单的C语言程序,并在linux环境下调试并运行 实验内容: 1.在命令交互方式下完成添加一个用户AA和一个用户组AAteam,并在AA用 户下建立一个名为test的文件,同时改变对该文件的访问权限。 2.在图形交互方式下添加一个用户BB和一个用户组BBteam,并建立一个名为 test文件,同时设置它的访问权限。 3.用C语言编写一个最简单的hello world程序 实验主要步骤: 1.练习Linux初学者需要掌握的常用50条命令 2.helloworld程序用vi或vim编辑器先编写源代码取名为hello.c 1)退出源文件编辑状态到命令行模式, 2)在命令行模式下输入gcc –o hello hello.c,其中hello是经编译过后生成的可执 行文件 3)用chmod命令修改hello文件的权限 4)在命令行模式下输入./hello 实验结果: 心得体会: 第一次实验课,我们开始接触Linux操作系统,很生疏和平时用的基本不一样。更别说命令方式了。这次实验用户组及文件使用进行管理,使用图形界面方式对用户,用户组及文件使用进行管理编写一个简单的C语言程序,并在linux环境下调试并运行。通过这次试验,我们学习和实践了一些基本命令.这些命令对于linux来说是必须的。-o选项表示我们要求输出的可执行文件名. -c表示只要求编译器输出目标代码,而不必要输出可执行文件. -g 表示要求编译器在编译的时候提供以后对程序进行调试的信息。对于编辑和修改程序我们需要应该运用VI编辑器来修改,而VI编辑器给我们提供了关键字的颜色等等,这使我们能更便捷的找到错误。我想这次实验告诉我如果对于一个陌生的操作系统,不仅要了解其基本理论,对于常用的基本操作也要了解。 重庆交通大学 学生实验报告 实验课程名称数字图像处理 开课实验室数学实验室 学院理学院年级信息与计算科学专业 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('平滑图像') 原始图像平滑图像 实验一单例模式的应用 1 实验目的 1) 掌握单例模式(Singleton)的特点 2) 分析具体问题,使用单例模式进行设计。 2 实验内容和要求 很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据。 通常客户端使用这个类是通过new一个AppConfig的实例来得到一个操作配置文件内容的对象。如果在系统运行中,有很多地方都需要使用配置文件的内容,系统中会同时存在多份配置文件的内容,这会严重浪费内存资源。 事实上,对于AppConfig类,在运行期间,只需要一个对象实例就够了。那么应该怎么实现呢?用C#控制台应用程序实现该单例模式。绘制该模式的UML 图。 3 实验代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AppConfig { publicclass Singleton { privatestatic Singleton instance; private Singleton() { } publicstatic Singleton GetInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } class Program { staticvoid Main(string[] args) { Singleton singletonOne = Singleton.GetInstance(); Singleton singletonTwo = Singleton.GetInstance(); if (singletonOne.Equals(singletonTwo)) { Console.WriteLine("singletonOne 和 singletonTwo 代表的是同一个实例"); } else { Console.WriteLine("singletonOne 和 singletonTwo 代表的是不同实例"); } Console.ReadKey(); } } } 4 实验结果 工图实验报告 ————————————————————————————————作者: ————————————————————————————————日期: ? 实验一 一.实验目的 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)用直线命令画出立体图下方的凹槽的轮廓线。 四.实验结果 第一题: 《软件体系结构》大作业(1) 学院:软件学院 课程名称:软件体系结构 专业班级: 学生姓名:学号: 学生姓名:学号: 指导教师: 完成时间:年月日 评分表 1、叙述各小组成员完成本题目的分工协作情况。 小组中的每个成员都先理解题目要求及涉及的设计模式,并一起完成代码编写。另外,组长负责文档制作。 2、评分表 序号姓名评分是否组长 1 2 作业正文需要包括以下内容: 1、作业题目内容的详细描述。 2、完成本题目所采用的软件设计模式名称及画出相应的类图,或者是所采用的 软件体系结构名称及画出相应的体系结构图。 3、画出完成本题目所设计程序的设计类图;如还有其他图,也一并画出。 4、完成本题目所设计的程序代码。 5、程序运行的典型界面截图 1、作业题目内容的详细描述。 【作业2.1-1】例2.3为使用工厂方法模式设计的汽车保险管理应用程序实例。现在需要 扩展例2.3的设计图,添加一个名为LuxuryCarInsurance的类,并且需要编写此类和其他需要添加的类的代码,详细要求参见光盘的相应作业部分。 【作业2.1-1】在例2.4中,设计并且实现了豪华(Super)和中等(Medium)别墅(House)与公寓(Condo)的查询。要求在该设计的基础上,增加一个新的类SemiDetacher(半独立式楼宇),并且编写代码,实现相应的查询功能,详细要求参见光盘的相应作业部分。 2、完成本题目所采用的软件设计模式名称及画出相应的类图,或者是所采用的软件体系结构名称及画出相应的体系结构图。 【作业2.1-1】采用的是工厂方法模式 【作业2.1-2】采用的是抽象方法模式 实验报告 实验课程名称:数字图像处理 班级:学号:姓名: 注: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)、改变输入图像中白框的位置,在进行二维傅里叶变换,观察频谱; 实验项目名称: CSS页面布局及样式设计 (所属课程:web系统与技术) 学院:计算机学院专业班级:11级计科信息姓名:学号: 实验日期:实验地点:A06-404 合作者:指导教师:李 本实验项目成绩:教师签字:日期: 一、实验目的 (1)掌握CSS中的定位属性使用方法。 (2)掌握DIV+CSS的页面布局方式。 (3)掌握CSS中的常用属性的使用方法。 (4)理解CSS的样式构造。 二、实验条件 安装Web开发环境的微机。 三、实验内容 (1)重新对聊天室的注册页面、登陆页面和聊天页面进行页面布局。 (1)对聊天室的注册页面、登陆页面和聊天页面进行样式设计。 四、实验步骤 (1)注册页面使用CSS将注册表单居中显示,表单内嵌入表格将文本与输入域格式化显示,表单内使用label标签。 (2)登录页面中添加div层用于显示在线用户数。 (3)登录页面使用div将登录表单,在线用户数,logo图片,超链接等页面元素重新定位布局。 (4)聊天页面改用div标签并使用CSS的position定位属性进行布局,框架内的独立页面使用float属性进行布局。 (5)使用CSS设置三个页面的背景颜色或背景图片。 (6)注册页面使用CSS设计所有输入框和提交按钮的样式。 (7)登录页面使用CSS设置的超链接的字体和下划线、登录表单使用圆顶角、在线用户数使用图片数字,使用CSS设计登录按钮的显示样式。 (8)聊天页面中使用CSS设计信息发送表单和发送按钮的样式,设计用户信息列表和聊天信息段落的的显示样式。 五、实验结果 注册界面效果图及代码: 【精品实验报告】软件体系结构设计模式实验报告
操作实验报告
图像处理实验报告
设计模式实验报告
工图实验报告
软件设计模式与软件体系结构实验报告
图像处理实验报告
CSS页面布局及样式设计实验报告