当前位置:文档之家› 设计模式实验报告

设计模式实验报告

设计模式实验报告
设计模式实验报告

实验二 设计模式实验一

一、实验目的

熟练使用面向对象设计原则对系统进行重构;熟练使用PowerDesigner 和任意一种面向对象编程语言实现几种常见的设计模式,包括简单工厂模式、工厂方法模式、抽象工厂模式、单例模式、适配器模式、桥接模式和组合模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式,并学会分析这些模式的使用效果。

二、实验内容

使用面向对象设计原则对系统进行重构;使用PowerDesigner 和任意一种面向对象编程语言实现简单工厂模式、工厂方法模式、抽象工厂模式、单例模式、适配器模式、桥接模式和组合模式,包括根据实例绘制模式结构图、编写模式实例模拟实现代码,运行并测试所编写代码。

(1) 面向对象设计原则

在某图形库API 中提供了多种矢量图模板,用户可以基于这些矢量图创建不同的显示图形,图形库设计人员设计的初始类图如下所示:

在该图形库中,每个图形类(如Circle 、Triangle 等)的init()方法用于初始化所创建的

图形, setColor()方法用于给图形设置边框颜色,fill()方法用于给图形设置填充颜色,setSize()方法用于设置图形的大小,display()方法用于显示图形。

客户类(Client)在使用该图形库时发现存在如下问题:

① 由于在创建窗口时每次只需要使用图形库中的一种图形,因此在更换图形时需要修改客户类源代码;

② 在图形库中增加并使用新的图形时需要修改客户类源代码;

③ 客户类在每次使用图形对象之前需要先创建图形对象,有些图形的创建过程较为复

Circle

+

++++

init ()setColor ()fill ()setSize ()display ()...: void : void : void : void : void Triangle +++++init ()setColor ()fill ()setSize ()display ()...: void : void : void : void : void Rectangle

+++++init ()setColor ()fill ()setSize ()display ()...

: void : void : void : void : void Client

杂,导致客户类代码冗长且难以维护。

现需要根据面向对象设计原则对该系统进行重构,要求如下:

①隔离图形的创建和使用,将图形的创建过程封装在专门的类中,客户类在使用图形时无须直接创建图形对象,甚至不需要关心具体图形类类名;

②客户类能够方便地更换图形或使用新增图形,无须针对具体图形类编程,符合开闭原则。

绘制重构之后的类图并说明在重构过程中所运用的面向对象设计原则。

(2) 简单工厂模式

使用简单工厂模式设计一个可以创建不同几何形状(Shape),如圆形(Circle)、矩形(Rectangle)和三角形(Triangle)等的绘图工具类,每个几何图形均具有绘制Draw()和擦除Erase()两个方法,要求在绘制不支持的几何图形时,抛出一个UnsupportedShapeException 异常,绘制类图并编程模拟实现。

(3) 工厂方法模式

现需要设计一个程序来读取多种不同类型的图片格式,针对每一种图片格式都设计一个图片读取器(ImageReader),如GIF图片读取器(GifReader)用于读取GIF格式的图片、JPG图片读取器(JpgReader)用于读取JPG格式的图片。图片读取器对象通过图片读取器工厂ImageReaderFactory来创建,ImageReaderFactory是一个抽象类,用于定义创建图片读取器的工厂方法,其子类GifReaderFactory和JpgReaderFactory用于创建具体的图片读取器对象。试使用工厂方法模式设计该程序,绘制类图并编程模拟实现。

(4) 抽象工厂模式

某软件公司欲开发一套界面皮肤库,可以对桌面软件进行界面美化。不同的皮肤将提供视觉效果不同的按钮、文本框、组合框等界面元素,其结构如下图所示:

该皮肤库需要具备良好的灵活性和可扩展性,用户可以自由选择不同的皮肤,开发人员

可以在不修改既有代码的基础上增加新的皮肤。试使用抽象工厂模式设计该皮肤库,绘制类图并编程模拟实现。

(5) 单例模式

使用单例模式的思想实现多例模式,确保系统中某个类的对象只能存在有限个,例如两个或三个,设计并编写代码实现一个多例类。

(6) 单例模式

使用单例模式设计一个多文档窗口(注:在Java AWT/Swing开发中可使用JDesktopPane 和JInternalFrame来实现),要求在主窗体中某个内部子窗体只能实例化一次,即只能弹出一个相同的子窗体,如下图所示,编程实现该功能。

(注:用C#或C++实现类似功能也可以)

(7) 适配器模式

现有一个接口DataOperation定义了排序方法sort(int[]) 和查找方法search(int[], int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法,类BinarySearch 的binarySearch (int[], int)方法实现了二分查找算法。现使用适配器模式设计一个系统,在不修改源代码的情况下将类QuickSort和类BinarySearch的方法适配到DataOperation接口中。绘制类图并编程实现。(要求实现快速排序和二分查找)

(8) 适配器模式

Windows Media Player和RealPlayer是两种常用的媒体播放器,它们的API结构和调用方法存在区别。现在你的应用程序需要支持这两种播放器API,而且在将来可能还需要支持新的媒体播放器,请问如何设计该应用程序?选择一种合适的设计模式,绘制类图并编程模拟实现。

(9) 桥接模式

某软件公司欲开发一个跨平台图像浏览系统,要求该系统能够显示BMP、JPG、GIF、PNG等多种格式的文件,并且能够在Windows、Linux、Unix等多个操作系统上运行。系统首先将各种格式的文件解析为像素矩阵(Matrix),然后将像素矩阵显示在屏幕上,在不同的操作系统中可以调用不同的绘制函数来绘制像素矩阵。系统需具有较好的扩展性,以便在将来支持新的文件格式和操作系统。试使用桥接模式设计该跨平台图像浏览系统,绘制类图并

编程模拟实现。

(10) 组合模式

某教育机构组织结构如下图所示:

在该教育机构的OA系统中可以给各级办公室下发公文,现采用组合模式设计该机构的组织结构,绘制相应的类图并编程模拟实现,在客户端代码中模拟下发公文。

三、实验要求

1. 选择合适的面向对象设计原则对系统进行重构,正确无误绘制重构之后的类图;

2. 正确无误绘制简单工厂模式、工厂方法模式、抽象工厂模式、单例模式、适配器模式、桥接模式和组合模式实例的模式结构图;

3. 使用任意一种面向对象编程语言实现简单工厂模式、工厂方法模式、抽象工厂模式、单例模式、适配器模式、桥接模式和组合模式实例,代码运行正确无误。

四、实验步骤

1. 选择合适的面向对象设计原则对系统进行重构,使用PowerDesigner绘制重构之后的类图;

2. 使用PowerDesigner绘制简单工厂模式实例结构图并用面向对象编程语言实现该模式实例;

3. 使用PowerDesigner绘制工厂方法模式实例结构图并用面向对象编程语言实现该模式实例;

4. 使用PowerDesigner绘制抽象工厂模式实例结构图并用面向对象编程语言实现该模式实例;

5. 使用PowerDesigner绘制单例模式实例结构图并用面向对象编程语言实现该模式实例;

6. 使用PowerDesigner绘制适配器模式结构图并用面向对象编程语言实现该模式;

7. 使用PowerDesigner绘制桥接模式结构图并用面向对象编程语言实现该模式;

8. 使用PowerDesigner绘制组合模式结构图并用面向对象编程语言实现该模式。

五、实验报告要求

1. 提供重构之后的类图,简要说明重构过程中所运用的面向对象设计原则;

2. 提供简单工厂模式实例结构图及实现代码;

3. 提供工厂方法模式实例结构图及实现代码;

4. 提供抽象工厂模式实例结构图及实现代码;

5. 提供单例模式实例结构图及实现代码;

6. 提供适配器模式实例结构图及实现代码;

7. 提供桥接模式实例结构图及实现代码;

8. 提供组合模式实例结构图及实现代码;

9. 注意调整类图中文字的字体及字号,注意图的整体布局和图的大小,避免使用交叉线,注意代码字体和颜色,代码字体需一致,颜色需统一;

10. 认真写好实验总结;

11. 提交电子版实验报告,格式为“学号-姓名-实验2.doc”,如“060102-张三-实验2.doc”,所有材料(包括类图和源代码)均放在一个Word文件中,格式为doc或docx,不需要提交PowerDeigner所保存的oom模型,也无须单独提交源代码。

六、实验结果

1. 重构之后的类图:

Client

TriangleFactory

+produceShape () ...: Shape

ShapeFactory

+produceShape () ...: Shape

Shape

+

+

+

+

+

init ()

setColor ()

fill ()

setSize ()

display ()

...

: void

: void

: void

: void

: void

Circle

+

+

+

+

+

init ()

setColor ()

fill ()

setSize ()

display ()

...

: void

: void

: void

: void

: void

Traingle

+

+

+

+

+

init ()

setColor ()

fill ()

setSize ()

display ()

...

: void

: void

: void

: void

: void

Rectangle

+

+

+

+

+

init ()

setColor ()

fill ()

setSize ()

display ()

...

: void

: void

: void

: void

: void CircleFactory

+produceShape ()

...

: Shape

RectangleFactory

+produceShape ()

...

: Shape

重构过程中所使用的面向对象设计原则及简要说明:

1).重构之后实现了开闭原则:在增加一个新图形时,只需要增加一个新图形类和一个新图形的工厂类,然后将新图形的工厂类放入配置文件,从而使增加新图形时不用修改源代码,完全符合“开闭原则”;

2).还实现了单一职责原则:原先的客户端类,需要创建具体的用户对象,承担了过多的职责,重构之后的客户端只需要创建抽象工厂,由具体的图形工厂创建具体的图形对象,实现了单一职责原则;

3).另外还实现了依赖倒转原则:客户端完全只针对抽象编程,没有依赖于具体的细节,只需要针对ShapeFactory和Shape编程;

2. 类图:

Shape

+ +Draw ()

Erase ()

...

: void

: void

Circle

+ +Draw ()

Erase ()

...

: void

: void

Triangle

+

+

Draw ()

Erase ()

...

: void

: void

Rectangle

+

+

Draw ()

Erase ()

...

: void

: void

ShapeFactory

+produceShape (String arg)

...

: Shape

Client

实现代码:

3. 类图:

实现代码:

<>

<>

ImageReader

+readImage ()...

: void JifReader

+readImage ()...

: void JpgReader

+readImage ()...

: void JifReaderFactory

+produceImageReader ()...

: ImageReader JpgReaderFactory

+produceImageReader ()...

: ImageReader Client

ImageReaderFactory

+produceImageReader ()...

: ImageReader

4. 类图:

实现代码:

Client

SkinFactory

+++createButton ()createText ()createCombox ()...

: AbstractButton : AbstractText : AbstractCombox AbstractButton

+action ()...

: void SpringSkinFactory

+++createButton ()createText ()createCombox ()...

: AbstractButton : AbstractText : AbstractCombox SummerSkinFactory

+++createButton ()createText ()createCombox ()...

: AbstractButton : AbstractText : AbstractCombox AbstractText

+action ()...

: void GreenButton

+action ()...

: void GreenText

+action ()...

: void GreenCombox

+action ()...

: void BlueButton

+action ()...

: void BlueText

+action ()...

: void BlueCombox

+action ()...

: void AbstractCombox

+action ()...

: void

5. 类图:

实现代码: Printer

--instance1instance2: Printer : Printer = null = null -+Nationality ()

getInstance ()...

: Printer Client

6. 类图:

实现代码:

JInternalFrame

-

-

internalFrame

desktopPane

: JInternalFrame

: JDesktopPane

+actionPerformed ()

...

: JInternalFrame

Client

7. 类图:

实现代码:

DataOperation

++sort (int int[])search (int int[], int no): void : int

QuickSort

+quickSort (int int[])...

: void BinarySearch

+binarySearch (int int[], int no)...

: int QBAdapter

--bsearch quicksort : BinarySearch : QuickSort ++sort (int int[])search (int int[], int no): void : int

Client

软件设计过程实验报告

软件开发过程 实验一软件需求分析 一、目的和意义 对本书第二和三章的内容做进一步的掌握,写出软件需求规格说明书。为下面的实习奠定基础。 二、实习内容 xx、确定软件题目(学生可自己拟定,也可在本书附录2中选择); 2、分析软件需求以及人工模式下的工作流程; 3、编写需求规格说明书(需求规格说明书的编写要求参见本节模板参考); 4、完成形式:以文档的形式完成软件的需求规格说明书。纸张型号为A4。 三、实习指导 xx、在磁盘上建立一个软件工程实习文件夹,以自己的姓名命名。 2、提交文档的格式如下: 第一页的格式为: 软件名称:文档编号 版本号 文档名称: 项目名称: 项目负责人: 编写时间 审核时间 批准时间 开发单位 第二页之后的内容为: ●编写目的:阐明编写该文档的目的,指出读者对象 ●项目背景:项目的委托单位、开发单位、该软件系统与其他系统的关系。

●参考资料 软件需求规格说明的书写原则 ①任务概述:软硬件环境、条件和限制(软件的使用条件和限制)。 ②数据描述:输入数据、输出数据、数据库设计和建立数据词典。 ③功能需求:功能划分和功能描述 ④性能需求:数据精度、时间特性、适应性(操作方式、与其他软件的接口、开 发计划变化时,软件应具有的适应能力。)。 ⑤运行要求:用户界面、硬件接口(如:连接打印机)、软件接口(如:是否为 其他项目的子项目)、故障处理。 ⑥其他需求:可使用性、安全保密性、可维护性、可移植性等。 ●模板参考 第一页: 软件名称:教务管理软件文档编号 xxxxxx 版本号 Ver xx.xx 文档名称:需求规格说明书 项目名称:课表编排系统 项目负责人:屈艳 编写: 组 第二页之后的内容: 编写目的:编写该文档是为了分析人工状态下课表编排的工作流程,把人工模式抽象为可在计算机上处理的自动模式。便于开发小组成员对系统整体功能的认识。 项目背景:高校的课表编排一直是一个烦琐的工作,为了解决这个问题,某某高校教务处委托我们开发该软件。该软件是高校教务软件的一个子系统。该子系统与专业规划子系统和教师管理软件有一定的关系。 参 实用软件工程(第二版)北京:清华大学出版社,xxxxxx7 任务概述: 硬件环境:CPU的型号为PentiumIII以上,内存25xxM ,及其兼容机

【精品实验报告】软件体系结构设计模式实验报告

【精品实验报告】软件体系结构设计模式实验报告软件体系结构 设计模式实验报告 学生姓名: 所在学院: 学生学号: 学生班级: 指导老师: 完成日期: 一、实验目的 熟练使用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

java实验报告完整版

实验报告 (计算机与信息工程学院实验中心) 学期: 2014-2015 课程名称:《Java程序设计实验》 班级:信息1202 姓名:方逸梅 学号: 31 指导老师:费玉莲

《Java程序设计》 独立实验教学安排 一、实验的教学方式、安排及实验环境 (一)教学方式 对照本课程的实验教材,实验一至实验十一,由教师提示实验原理、方法、步骤等内容,在教师的指导下,学生独立完成程序设计及调试工作。实验十二的内容由学生自行设计完成。 (二)教学安排 学时数:30课时 学时安排:每次实验3学时,从学期第五周开始,共十次上机实验。 (三)实验环境 实验环境为JDK 。 (四)具体安排 地点:信息大楼实验室。 辅导:每个班次一名辅导老师,原则上由任课老师担任。 登记:实验完成,由辅导老师登记实验纪录。 学生:实验做完,完成实验报告内容,并在学期末上交实验册。 老师:批改实验,成绩与平时成绩一起占期末的30%。 二、实验的具体内容和要求 见实验报告。

浙江工商大学 计算机与信息工程学院实验报告(1)日期:地点:成绩: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 实验目的、实验原理和内容: 一、实验目的:熟悉Java开发环境及简单程序Java设计。 二、实验原理:SDK 的下载与安装,设置环境变量,安装java 虚拟机,使用Eclipse,编译Java 源程序,运行Java 程序。 三、实验内容及要求: 1.下载、安装并设置Java SDK 软件包。 2.熟悉Eclipse 编辑软件。 3.掌握运行Java 程序的步骤。 4.分别编写Application和Applet程序,显示字符串”Hello Java!欢迎使用!”。 要求:请同学把预备知识、步骤、程序框图、调试好的程序及存在的问题写在下面(不够可以附页)。 程序一 public class hello { public static void main(String[] args) { for(int i=0;i<=4;i++) { "Hello java! 欢迎使用!"); } }

软件项目管理课程设计实验报告精

软件项目管理课程设计报告 学院: 专业: 班级: 学号: 姓名: 指导教师: 时间:2013年 1月 目录 1、项目概述 (1) 2、工作任务 (Statement Of Work,SOW书 (1) (一整体要求 (1) (二系统逻辑模型 (2) (三系统功能描述 (3) (四应达到的技术指标和参数 .................................... 3 3、项目进度计划 .. (4) (一分解项目工作 (4) (二项目工作关系表 (5) (三项目甘特图 (6) (四网络进度计划图 (7) (五里程碑计划 ................................................ 9 4、项目规模成本估算 . (9)

(一分解项目工作 (9) (二项目规模估算表 (11) (三计算开发成本 (12) (四计算管理、质量成本 (12) (五直接成本 (12) (六计算间接成本 (12) (七计算总估算成本 (12) (八项目报价 ................................................. 13 5. 项目质量计划 .. (13) (一项目质量保证组织 (13) (二质量目标 (14) (三质量策略 (15) (四质量保证活动 (15) (五质量控制活动 (17) (六质量保证的报告途径 (17) (七记录的收集、维护和保存 ................................... 17 6、软件项目团队 . (17) (一团队组织及职责 (18) (二项目的沟通计划 ........................................... 19 7、软件项目配置管理计划 .. (19) 学校内部职工工资系统项目管理书 1、项目概述 假设学校共有教职工约 1000人, 10个行政部门和 8个系部。每个月 20日前各部门(包括系、部要将出勤情况上报人事处, 23日前人事处将出勤工资、奖金及扣款清单送财务处。财务处于每月月底将教职工的工资表做好并将数据送银行。每月初(3日前将工

设计性实验报告格式

大学物理设计性实验报告 实验项目名称:万用表设计与组装实验仪 姓名:李双阳学号:131409138 专业:数学与应用数学班级:1314091 指导教师:_王朝勇王新练 上课时间:2010 年12 月 6 日

一、实验设计方案 实验名称:万能表的设计与组装试验仪 实验时间:2010年12月6日 小组合作: 是 小组成员:孙超群 1. 实验目的:掌握数字万用表的工作原理、组成和特性。 2. 掌握数字万用表的校准和使用。 3. 掌握多量程数字万用表分压、分流电路计算和连接;学会设计制作、使用多量程数字万用表 2、实验地点及仪器、设备和材料: 万用表设计与组装实验仪、标准数字万用表。 3、实验思路(实验原理、数据处理方法及实验步骤等): 1. 直流电压测量电路 在数字电压表头前面加一级分压电路(分压电阻),可以扩展直流电压测量的量程。 数字万用表的直流电压档分压电路如图一所示,它能在不降低输入阻抗的情况下,达到准确的分压效果。 例如:其中200 V 档的分压比为: 001.010*********==+++++M K R R R R R R R 其余各档的分压比分别为: 档位 200mV 2V 20V 200V 2000V 分压比 1 0.1 0.01 0.001 0.0001 图一 实用分压器电路 实际设计时是根据各档的分压比和总电阻来确定各分压电阻的,如先确定 M R R R R R R 1054321=++++=总 再计算200V 档的电阻:K R R R 10001.021==+总,依次可计算出3R 、4R 、5R 等各档的分压电阻值。换量程时,多刀量程转换开关可以根据档位调整小数点的位置,使用者可方便地直读出测量结果。 尽管上述最高量程档的理论量程是2000V ,但通常的数字万用表出于耐压和安全考虑,规定最高电压量限为1000V 或750V 。

设计模式实验报告

实验一单例模式的应用 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 实验结果

java设计模式结课论文

论文 2012 — 2013学年第 2 学期 论文题目备忘录模式 学生姓名 学号 专业班级 指导教师 2013 年7 月 1 日

备忘录模式 1.备忘录模式概述 对象的状态依赖于它的变量的取值情况,对象在程序运行期间的各个时刻可能具有不同的状态。在某些应用中,程序可能需要使用一种合理的方式来保存对象在某一时刻的状态,以便在需要时,对象能恢复原先保存的状态。在备忘录模式中,称需要保存状态的对象为“原发者”,称负责保存原发者可以访问备忘录中的细节,即可以访问备忘录中的数据,以便恢复原发者的状态,而负责人只能保存和得到备忘录,但访问备忘录中的数据收到一定的限制。备忘录模式使原发者可以将自己的状态暴露内部数据的同时,又保证了数据的封装性。另外,经过精心设计的备忘录通过保存原发者状态中最本质的数据,就能使原发者根据此备忘录中的数据恢复原始状态。 2.备忘录模式的定义 备忘录模式是关于怎样保存对象状态的成熟模式,其关键是提供一个备忘录对象,该备忘录负责存储一个对象的状态,程序可以在磁盘或内存中保存这个备忘录,这样以后就可将该对象恢复到原先保存的状态。 3. 备忘录模式的结构和使用 3.1备忘录模式包括三种角色:

原发者(Originator):需要在某个时刻保存其状态的对象。原发者负责创建备忘录,比如使用createMemento()方法创建一个备忘录,然后原发者该备忘录记录自己的状态。当原发者需要恢复某个时刻的状态是,它通过获得相应的备忘录中的数据来恢复那个时刻的状态,比如原发者调用restoreFromMemento(Memento mem)方法,并通过参数men制定的备忘录恢复状态。 备忘录(Memento):负责存储原发者状态的对象,创建备忘录的类和创建原发者的类在同一个包中,该类提供的访问数据的方法都是友好方法,是的只有和原发者在同一个包中的类的实例才可以访问备忘录中的数据。 负责人(Caretaker):负责管理保存备忘录的对象。负责人如果不和原发者在同一个包中,就不能对备忘录中的内容进行修改或读取。如果需要将备忘录保存到磁盘,负责人可以使用对象流将备忘录写入文件。 3.2备忘录模式的UML类图 备忘录模式的类图如图所示,备忘录模式中原发者角色,Recoder 类的实例是备忘录(Menmento)角色,SaveRecoder类的实例是负责人(Caretaker)角色。

南京邮电大学软件设计实验报告

软件设计报告 ( 2014 / 2015 学年第二学期) 课程名称软件设计 指导老师赵江实习时间第十八周学生姓名学号 ____学院______专业

软件设计 课程编号:B0465011C 适用专业: 班级: 一、所涉及的课程及知识点 涉及的课程:第6学期之前的专业基础课程。 知识点:专业基础课程中所学的知识点。 二、目的与任务 目的:通过软件设计,培养学生的实践能力和创新精神,加强学生对专业基础课程的理解和掌握,加强学生高级语言编程能力、应用软件以及仿真能力。 任务:选择以下任一模块进行设计:Matlab软件仿真、C语言及应用。

软件设计的内容 题目1:如果给出两个矩阵?? ??? ?????=136782078451220124A ,????? ?????=087654321B ,执行下面的矩阵运算命令。 (1)B A *5+和I B A +-分别是多少(其中I 为单位矩阵) (2)B A *?和B A *将分别给出什么结果,它们是否相同为什么 逻辑功能程序: function [ ] = EXP1() A=[4,12,20;12,45,78;20,78,136]; B=[1,2,3;4,5,6;7,8,0]; I=eye(3); disp('A+5*B='); disp(A+5*B); disp('A-B+I=') disp(A-B+I); disp('A.*B='); disp(A.*B) disp('A*B='); disp(A*B); End 实验过程与结果 打开matlab ,在命令窗口“Command Window ”中键入edit,启动程序编辑器。输入完整程序后利用save as 储存为M 文件,文件名为EXP1。返回主界面,

设计性实验报告

计算机与信息工程学院设计性实验报告 一、 实验目的 1.掌握线性时不变系统的两种描述形式—传递函数描述法、零极点增益描述法。 2.掌握两种描述形式之间的转换。 3.掌握连续和离散系统频率响应的求解 二、 实验仪器或设备 装MATLAB 软件的计算机一台。 三、 实验内容 1. 生成20个点的单位脉冲信号、单位阶跃信号,并记录下函数命令和波形。 2. 生成占空比为30%的矩形波。 3. 将连续系统 4)(s )21)(s (s 3) 1)(s -(s 0.5H(s)++++=转化为传递函数模型的描述形式。 4. 将离散系统 4-3-2-1--2 -10.5z 0.9z -1.3z 1.6z -12z 5z 3H(z)++++=转化为传递函数和零极点增益模型的的描述形式。

四、实验步骤(包括主要步骤、代码分析等) 1. 生成20个点的单位脉冲信号、单位阶跃信号,并记录下函数命令和波 形。 程序: clear,clc,close %清除变量空间变量,清除命令窗口命令,关闭图形窗口 t=-10:9; %取20个点 ft1=(t==0); %单位脉冲信号函数 ft2=(t>=0); %单位阶跃信号函数 subplot(1,2,1),stem(t,ft1,'m-o') %图像窗口1行2列的第1个子图绘制单位脉冲信号图形 title('20个点的单位脉冲信号'); %设置标题为“20个点的单位脉冲信号” subplot(1,2,2),stem(t,ft2) %图像窗口1行2列的第2个子图绘制单位阶跃信号图形 title('20个点的单位阶跃信号'); %设置标题为“20个点的单位阶跃信号” 2. 生成占空比为30%的矩形波。 程序: clear,clc,close %清除变量空间变量,清除命令窗口命令 x=0:0.001:0.6; %设置变量x的值范围 y=square(2*pi*10*x,30); %用square函数得到占空比为30%的矩形波 plot(x,y,'m'); %绘制矩形波的图像

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

《软件体系结构》大作业(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进制数。假设罗马数据中只使用如下7 个“基值”字母:M、D、C、L、X、V、I,分别用来表示 1000、500、100、50、10、5、1。如,罗马数据LXXXVII 表示10 进 制的87。 2.将输入的10进制正整数转换为罗马数据。假设罗马数据中只使用 “基值”字母:M、D、C、L、X、V、I,分别用来表示 1000、500、100、50、10、5、1。 主要界面为:

输入1或2可以选择功能。 输出的形式 如上所示:当输入大写或小写的阿拉伯字母时。 程序能计算出十进制。 程序所能达到的功能 测试的数据:当输入mvii罗马数字时输出十进制 1007 当输入十进制数4535 时相应输出MMMMDXXXV。 二.概要设计 程序中主要在开头用了一个死循环来实现功能的不断循环。通过exit函数退出程序。 主程序的流程以及各程序模块之间的层次(调用)关系。

Convert1() Break; >switch(n) Default; 三.详细设计 实现概要设计中定义的数据类型和操作。以增加程序的可读性,关键算法部分 画出程序流程图。 主函数的流程图如右图示: Switch() Cin>>n Convert1() Break; Case1: Case2:; Convert2(); Break; Default; Exit(1); While(1) Main() Return 0; Main->jiemina->while(1)- Convert2() Break; Exit()

设计模式实验报告

计算机科学与技术学院 实验报告 课程名称:软件设计模式 专业:计算机科学与技术班级:班 学号: 姓名:

实验一单例模式的应用 1 实验目的 1) 掌握单例模式(Singleton)的特点 2) 分析具体问题,使用单例模式进行设计。 2 实验内容和要求 很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据。 通常客户端使用这个类是通过new一个AppConfig的实例来得到一个操作配置文件内容的对象。如果在系统运行中,有很多地方都需要使用配置文件的内容,系统中会同时存在多份配置文件的内容,这会严重浪费内存资源。 事实上,对于AppConfig类,在运行期间,只需要一个对象实例就够了。那么应该怎么实现呢?用C#控制台应用程序实现该单例模式。绘制该模式的UML图。 [代码截图]: namespace实验一_单例模式_ { class Program { static void Main(string[] args) { AppConfig appc1 = AppConfig.GetAppConfig(); AppConfig appc2 = AppConfig.GetAppConfig(); appc1.SetParameterA("hello"); appc2.SetParameterA("hi"); if (appc1.Equals(appc2)){ Console.WriteLine("appc1 和 appc2 代表的是同一个实例"); } else{ Console.WriteLine("appc1 和 appc2 代表的是不同实例"); } Console.WriteLine(appc1.GetParameterA()); Console.WriteLine(appc2.GetParameterA()); Console.ReadKey();

java课程设计实验报告

一实验目的 加深学生对课堂讲授内容的理解,从计算机语言的基本概念、程序设计的基本方法、语法规则等方面加深理解,打好程序设计、开发软件的良好基础。在上机实验中,提高学生对Java语言各部分内容的综合使用能力,逐步掌握Java语言程序设计的规律与技巧。在对Java 程序的调试过程中,提高学生分析程序中出现的错误和排除这些错误的能力。通过上机实践,加深学生对计算机软件运行环境,以及对操作系统与计算机语言支持系统相互关系的了解。 二、实验要求 (1)问题描述准确、规范; (2)程序结构合理,调试数据准确、有代表性; (3)界面布局整齐,人机交互方便; (4)输出结果正确; (5)正确撰写实验报告。 三、设计内容 1、计算器 计算器要有GUI界面,用户可以输入所需计算的数值,可以进行加、减、乘、除四种最基本的运算和混合运算,可以求一个数值的平方及倒数,可以进行阶乘运算,要能运算小数,并且不会产生精度损失,在必要情况下,可以进行四舍五入的运算。允许正负数间的运算。要求使用Applet实现该计算器,当用浏览器运行程序时,点击网页中的按钮,则计算器弹出,浮在网页上,再次点击按钮时,计算器消失。 2、文本编辑器 可以设置文本的字体、大小、颜色等基本参数,可以读取计算机中TXT文件,可以生成一个新的TXT文件。其他功能参照windows的文本编辑器。

四.实验步骤 (1)上机实验之前,为课程设计的内容作好充分准备。对每次上机需要完成的任务进行认真的分析,画出程序流程图,手工写出符合任务要求的程序清单,准备出调试程序使用的数据,以便提高上机实验的效率。 (2)按照实验目的和实验内容进行上机操作。录入程序,编译调试,反复修改,直到使程序正常运行,得出正确的输出结果为止。 (3)根据实验结果,写出实验报告。 五. 源代码及运行结果 1.计算器源代码 import .*; import .*; import .*; public class jisuanqi extends WindowAdapter { , "=", "+","n!" ,"关闭" }; static double a, sum=1; static String s, str ;rame(); } public void frame() { etBackground; txt = new TextField(""); (false);ddActionListener(new buttonlistener());ddActionListener(new close()); (this); (new BorderLayout());.计算器运行界面(1)计算器主界面

软件工程实验报告

1.1 实验一结构化需求分析 一.实验类型 图书馆管理系统 假定校图书馆需要你设计一个图书馆管理系统,要求包括以下功能: ●图书管理员可以管理馆藏图书,包括每本图书的藏书编号、书名、编著者、 ISBN号、出版社、出版时间、入馆时间、馆藏数量(如果馆藏数量为1,则标明为孤本图书)、在馆数量、学科类别等(或其它你认为有用的信息); ●管理员可以查询、统计所有图书、每一类图书或每一本书的借阅记录; ●图书管理员可以管理所有读者的信息,包括读者类型(学生、教师、社会人 士)、姓名、图书证编号、办证时间、证件状态(正常、挂失、冻结)等信息; ●图书管理员可以查询和统计所有读者、每一类读者或每一个读者的借阅记录; ●读者可以通过本系统查询馆藏图书; ●读者可以通过本系统借阅读书。但对于孤本图书或在馆数量为1的图书则不 准外借; ●管理员可以对超期未归还图书的读者发送电子邮件进行提醒,对于超期一年 不归还图书的读者冻结其图书证; ●读者可以通地本系统归还图书。如果图书超期,则自动计算罚款金额。二.实验目的 1.掌握数据流的分析技术 2.掌握软件需求分析的过程和方法。 3.熟悉项目开发计划和需求规格说明书的制定方法。 三.实验内容和要求 1.用结构化数据流分析技术进行软件系统需求分析,得出系统的数据流图和数据字典。 2.正确运用图表工具进行表示。 3.按规范正确编写软件文档。

四.实验步骤 1.理解所承担项目的业务流程和业务内容。 本软件项目是面向中小型学校、单位机构对于图书管理的基于服务的一款便捷式软件。能满足一系列常用图书管理的功能模块,提供简介、准确的操作性,可以很大程度减少人为因素带来的数据错误,统计错误,系统逻辑错误。并且规模小,很容易进行推广。 ●本项目的参与对象有图书管理员及读者。 ●对于读者,能通过该软件浏览馆藏的所有图书。读者在图书馆找到自己喜欢 的书后,能自行通过该软件操作完成借阅操作。若读者是第一次借书,必须通过图书管理员进行添加读者记录,登记读者信息。读者在登陆后方能完成借阅操作,对于孤本图书(即图书馆中馆藏只有一本的图书)则拒绝进行借阅操作。在规定期限内,读者可以通过该软件完成还书操作,对于超期的图书,应将扣除一定罚款金额,对于超期一年不归还图书的读者冻结其图书证。 并且读者能修改个人信息。 ●对于图书管理员,能管理自己和比自己低一级管理权限的管理员。一级管理 员能完成维护管理员的基本信息和二级管理员的一切操作。二级管理员则能维护自己的信息和添加读者、添加图书的功能。管理员可以对超期未归还图书的读者发送电子邮件进行提醒,对于超期一年不归还图书的读者冻结其图书证; 2.按照系统的功能及性能要求,系统的作业范围等,确定软件系统的开发环境(操作系统、开发工具、程序设计语言等)。 根据软件编程经验,本系统将采用面向对象的设计方法,使用Eclipse开发工具,java窗体应用程序,操作系统使用Win8。 3.绘制数据流图、功能分析图等。

苯妥英钠设计性实验报告

设计性实验报告 实验名称:苯妥英钠的制备与分析 姓名:闫洁 班级: 学号:39 日期:2015.11.2

设计性实验报告 一、实验目的 1.学习安息香缩合反应的原理和应用维生素B1及氰化钠为催化剂进行反应的实验方法。 2.学习有害气体的排出方法。 3.学习二苯羟乙酸重排反应机理。 4.掌握用硝酸氧化的实验方法。 二、实验方案一 1、实验原理 1.安息香缩合反应(安息香的制备) 2.氧化反应(二苯乙二酮的制备) 3.二苯羟乙酸重排及缩合反应(苯妥英的制备) 4.成盐反应(苯妥英钠的制备) 2、实验仪器与药品 仪器:烧杯(500 ml 250 ml )量筒、锥形瓶、三颈瓶、抽滤瓶、球形冷凝管、干燥管、水浴锅、布氏漏斗、温度计、玻璃棒、抽滤器、 药品:苯甲醛、盐酸硫胺、氢氧化钠、无水乙醇、硝酸、浓盐酸 CHO VitB 1or NaCN O H HNO 3 O O O O H O O 1.H 2NCO NH 2/NaO H 2.HCl N H O O H 5C 6H 5C 6N H N H N O O Na H 5C 6H 5C 6 N H O OH H 5C 6 H 5C 6N O H 2NaOH

4、实验装置图 5、实验步骤 (一)安息香的制备(盐酸硫胺催化) 1.原料规格及用量配比 名称规格用量摩尔数摩尔比 苯甲醛CP d 1.050 bp179.9℃20 ml0.2 盐酸硫胺原料药 3.5 g 氢氧化钠CP10 ml 2. 操作 在100 ml三口瓶中加入3.5 g盐酸硫胺(Vit.B1)和8 ml水,溶解后加入95%乙醇30 ml。搅拌下滴加2 mol/L NaOH溶液10 m1。再取新蒸苯甲醛20 ml,加入上述反应瓶中。水浴加热至70℃左右反应1.5 h。冷却,抽滤,用少量冷水洗涤。干燥后得粗品。测定熔点,计算收率。mp 136—l37℃ 注:也可采用室温放置的方法制备安息香,即将上述原料依次加入到100 ml三角瓶中,室温放置有结晶析出,抽滤,用冷水洗涤。于燥后得粗品。测定熔点,计算收率。 (二)二苯乙二酮(联苯甲酰)的制备 1.主要原料规格及用量比 名称规格用量摩尔数摩尔比 安息香自制8.5 g0.04 1 硝酸(65%-68%) CP d 1.40 bp122℃25 ml0.379.25 2.操作 取8.5 g粗制的安息香和25 ml硝酸(65%-68%)置于100 ml圆底烧瓶中,安装冷凝器和气体连续吸收装置,低压加热并搅拌,逐渐升高温度,直至二氧化氮逸去(约1.5—2 h)。反应完毕,在搅拌下趁热将反应液倒入盛有150 ml冷水的烧杯中,充分搅拌,直至油状物呈黄色固体全部析出。抽滤,结晶用水充分洗涤至中性,干燥,得粗品。用四氯化碳重结晶(1:2),也可用乙醇重结晶(1:25),mp.94—96℃。 (三)苯妥英的制备

设计模式实验报告-建造者模式

建造者模式 建造者 建造者设计模式定义了处理其他对象的复杂构建的对象设计。 问题:创建复杂对象时候,构造函数的创建会涉及通用体系结构判定。某些编程人员认为任何构造函数都应当执行适当的逻辑以创建整个对象。另外一些编程人员则认识到将某些逻辑分解入其他方法才是有意义的。采用后一种样式设计的构造函数基本上是一系列请求实例化的方法。上述两种解决方案都不是特别灵活。事实上,它们根本就是错误的解决方案。 解决方案:我们可以基于一组业务逻辑的结果来构造对象。在示例中,对象只有特定的部分必须被创建。如果完全定义对象的所有部分,那么可能导致完全预见不能的结果。 多个方法调用的复杂性问题在使用之处似乎并非太严重,但该复杂性却是缓慢增长的。如果需要经常调用这些方法,那么就应当创建一个Builder对象。 UML MyObject MyObjectBuilder -MyObject:MyObect +complexFunctionA() +createInstanceOfMyObject() +complexFunctionB() +buideMyObject(configurationOptions) +getBuiltMyObject() *MyObject类具有能够完全实现对象构造的两个方法。为了具有完整的Myobject对象,需要执行complexFunctionA()和complexFunctionB()方法。 * MyObjectBuilder类包含一个名为createInstanceOfMyObject()的方法。这个类负责创建Myobject类的一个简单实例。需要注意没有用于进一步构造的配置选项。这个类还存储MyObjectBuilder类创建的实例中的私有实例。 *buildMyObject()方法接受参数configurationOption。这个方法用于调用在MyObjectBuilder 对象中存储的MyObject对象的complexFunctionA()和complexFunctionB()方法。 *getBuildObject()方法返回MyObjectBuilder对象内部Myobject对象的私有实例,该实例既是完整的,也是正常构建的。 示例代码演示: _type=$type; } public function setSize($size) {

java实验报告(全)

学生学号0120910680526 实验课成绩 武汉理工大学 学生实验报告书 实验课程名称软件工具与环境 开课学院计算机科学与技术学院 指导老师姓名付国江 学生姓名 学生专业班级软件工程0905 2011— 2012学年第1学期

实验课程名称: java语言程序设计 实验项目名称JDK安装与配置、简单的程序编写实验成绩 实验者专业班级软件0905 组别 同组者实验日期年月日第一部分:实验分析与设计(可加页) 一、实验内容描述(问题域描述) 实验目的: 熟悉JDK的安装、配置和使用,掌握Java Application程序的基本结构。 实验内容: (1)安装JDK,并练习设置JAVA_HOME、path和classpath环境变量; (2)编写一个打印出”HelloWorld”的Java Application程序,并编译运行; 二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或 者算法描述) (1)jdk的安装 (2)”HelloWorld”的编译运行 三、主要仪器设备及耗材 个人计算机,jdk 第二部分:实验调试与结果分析(可加页) 一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)(1)jdk的安装步骤: 1:双击jdk-6u10-windows-i586.exe安装文件 2:点击接受 3:点击下一步 4:选择JRE路径 5:点击下一步 6:完成 配置环境变量: 1:右键我的电脑,找到属性,高级中的环境变量 2:点击环境变量:3:系统变量针对所有用户,这里找到系统变量中的Path 点击编辑: 3:系统变量针对所有用户,这里找到系统变量中的Path 点击编辑: 4:在变量值末尾打上分号分隔,加入JDK库路径。 点击确定,完成! 5:变量配置好后。 6:测试环境是否好 在控制台中 输入javac指令,能显示参数,说明成功。

软件设计实验报告

通达学院 2017/2018 学年第 1 学期 课程设计实验报告 模块名称综合软件设计 专业通信工程 学生班级141301 学生学号14130118 学生姓名陈启朋 指导教师王诚

目录 第一章在线考试系统 (1) 1.1 实验目的 (1) 1.2 实验内容 (1) 1.3.1考试登录模块设计 (1) 1.3.2管理员模块设计 (7) 1.4 实验结果 (12) 第二章学生成绩管理系统 (13) 2.1 实验目的 (13) 2.2 实验内容 (13) 2.3 实验过程 (13) 2.3.1学生成绩管理模块设计 (13) 2.3.2 公共模块设计 (18) 2.4 实验结果 (20) 总结 (21) 参考文献 (21)

第一章在线考试系统 1.1 实验目的 通过本次软件设计,使学生掌握并能熟练运用Java和mysql语言编写程序,掌握面向对象的概念,采用C/S结构,设计数据库模型,能够了解和数据库连接的方法。 1.2 实验内容 本次实验的内容是编辑生成试题库,随机生成本次考试试题,提供在先评分并保存结果;同时,管理员可以添加、修改、删除考题和考生用户。 1.3 实验过程 1.3.1考试登录模块设计 主要程序如下: package com.Exam.Index; import java.awt.Insets; import javax.swing.*; import javax.swing.GroupLayout; import https://www.doczj.com/doc/5d535928.html,youtStyle; import com.Exam.bean.*;

import com.Exam.controller.ControllerFrame; import com.Exam.dao.*; public class MyLand extends javax.swing.JFrame { initComponents(); }@SuppressWarnings("unchecked") private void initComponents() { jTextField3 = new javax.swing.JTextField(); jTextField1 = new javax.swing.JTextField(); jpanel = new MyJPanel(); choicejLabel = new javax.swing.JLabel(); userChoicejComboBox = new javax.swing.JComboBox(); choicejLabel1 = new javax.swing.JLabel(); UserNameTextField = new javax.swing.JTextField(); choicejLabel2 = new javax.swing.JLabel(); PassWordjTextField = new javax.swing.JPasswordField(); enterButton = new javax.swing.JButton(); enterButton.setMargin(new Insets(2, 2, 2, 2)); resButtonjButton = new javax.swing.JButton(); resButtonjButton.setMargin(new Insets(2, 2, 2, 2)); jTextField3.setText("jTextField3"); jTextField1.setText("jTextField1"); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); choicejLabel.setText("选择用户:"); userChoicejComboBox.setModel(newjavax.swing.DefaultComboBoxModel(new String[] { "","考生", "管理员" })); setTitle("考试系统"); choicejLabel1.setText("用户名:"); UserNameTextField.setText(""); choicejLabel2.setText(" 密码:"); PassWordjTextField.setText(""); enterButton.setText("登录"); enterButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { enterButtonActionPerformed(evt); } }); resButtonjButton.setText("重置"); resButtonjButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

相关主题
文本预览
相关文档 最新文档