武汉理工大学学 生 实 验 报 告 书实验课程名称 《软件工具与环境》 开 课 学 院 计算机科学与技术学院 指导老师姓名 张能立 学 生 姓 名 曹旭磊 学生专业班级 软件0804班2010 — 2011 学年 第 一 学期学生学号 0120810680426 实验课成绩实验课程名称:软件工具与环境实验项目名称Eclipse平台及程序调试技术实验成绩实验者曹旭磊专业班级软件0804 组别同组者实验日期年月日第一部分:实验分析与设计(可加页)一、实验内容描述(问题域描述)实验目的及要求1、掌握Eclispe平台的工作台(Workbench)、透视图(Perspectives)、视图(Views)、首选项(Preferences)概念。
2、掌握透视图切换的方法。
3、编写一个简单的Java程序,并能正确运行4.、掌握设置断点及调试跟踪程序的方法。
二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)实验内容及步骤1、启动Eclispe,在Java透视图、Java Debug透视图、MyEclipse Database Explorer透视图以及MyEclipse Java Enterprise透视图之间来回切换,与同学或老师讨论一下这些透视图的作用。
2、编写一个在控制台输出“Hello World!”的程序和一个在控制台输出1+2+3+…+100之和的程序。
3、设置断点,调试1+2+3+…+100之和这个程序,观察循环自变量和求和变量值的变化。
三、主要仪器设备及耗材装有java开发环境及eclipseIDE的PC机一台。
第二部分:实验调试与结果分析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)实验一:package com.caoxulei.HelloWorld;/*** @author caoxulei caoxulei921@:*/public class HelloWorld {public static void main(String[] args) {// TODO自动生成方法存根System.out.print("Hello World!");}}实验二:package com.caoxulei.add1to100;/*** @author caoxulei caoxulei921@:*/public class Add {public static void main(String[] args) {// TODO 自动生成方法存根int i;int sum=0 ;for (i = 1; i <= 100; i++) {sum += i;}System.out.println("The sum 1 to 100 is:" + sum);}}二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)第一个实验:第二个实验调试实验观察变量:三、实验小结、建议及体会由于以前接触过在eclipse环境下的java开发,但是通过本次实验认识了Eclispe 平台的工作台,透视图和视图首选项等概念,掌握了透视图切换的方法(java透视图和debug透视图),掌握了设置断点及调试跟踪程序的方法,这在今后的java程序编写中能够起到很好的帮助作用,能够节省很多调试的时间,对java程序也有了进一步的理解,收获颇丰。
通过实验让我意识到了很多在理论上的不足,在今后的学习中需要进一步加强自己的理论学习,锻炼自己的动手能力和实战能力。
实验课程名称:软件工具与环境实验项目名称用TDD模式开发求N的阶乘程序实验成绩实验者曹旭磊专业班级软件0804 组别同组者实验日期年月日第一部分:实验分析与设计(可加页)一、实验内容描述(问题域描述)实验目的及要求1、了解单元测试的重要意义2、初步掌握JUnit的用法3、了解TDD(测试驱动开发)的理念,初步掌握TDD模式程序开发方法二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)实验内容及步骤1、建立Java项目:TDDDemoProject2、建立包com.whut,com.whut.unittest3、在包com.whut.unittest建立一个单元测试类TestCalcFact4、在类TestCalcFact中新建一个方法testCalc()5、对该方法做相应修改:三、主要仪器设备及耗材装有java开发环境及eclipseIDE的PC机一台。
第二部分:实验调试与结果分析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)1、对该方法做相应修改:public class TestCalcFact extends TestCase {CalcFact calcFact;protected void setUp() throws Exception {super.setUp();calcFact = new CalcFact();}protected void tearDown() throws Exception {super.tearDown();}public void testCalc() {assertTrue(0 == calcFact.calc(-1));}}2、在包com.whut内建立CalcFact类及方法public long calc(int n)public long calc(int n) {long result = 0;if (n < 0) {result = 0;}return result;}3、运行测试类TestCalcFact,测试通过OK4、在testCalc中增加断言:assertTrue (1 == calcFact.calc(0));assertTrue (1 == calcFact.calc(1));5、运行测试类TestCalcFact,测试不通过。
6、修改类CalcFact方法calc:if (n < 0) {result = 0;} else if (n == 0 || n == 1) {result = 1;}7、在testCalc中增加断言:assertTrue (3628800 == calcFact.calc(10));8、运行测试类TestCalcFact,测试不通过。
9、修改类CalcFact方法calc:if (n < 0) {result = 0;} else if (n == 0 || n == 1) {result = 1;} else {result = 1;for (int i = 1; i <= n; i++) {result = result * i;}}10、在testCalc中增加断言:assertTrue (0 == calcFact.calc(21));11、运行测试类TestCalcFact,测试不通过。
12、修改类CalcFact方法calc:public long calc(int n) {long result = 0; //0表示没有定义if (n < 0 || n > 20) {result = 0;} else if (n == 0 || n == 1) {result = 1;} else {result = 1;for (int i = 1; i <= n; i++) {result = result * i;}}return result;}二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)三、实验小结、建议及体会通过本次试验让我了解到了TDD(测试驱动开发)的主要理念:在编写程序代码之前,必须首先编写好与之对应的自动测试。
甚至程序代码并不存在,那也会看见一个失败的测试结果。
作为一名程序员,应该在编写代码之前编写测试,然后只编写足以让测试通过的代码即可。
同时通过实践初步掌握了JUnit是用于Java的源代码单元测试框架以及Juint 的用法,了解了TDD的理念及开发方法,和断言机制的初步使用方法,这对以后写更加复杂的程序奠定了基础,也在头脑里形成一种新的程序开发方法,作为一门新学的思想和方法需要在今后多加使用和锻炼。
实验课程名称:软件工具与环境实验项目名称SWT程序开发实验成绩实验者曹旭磊专业班级软件0804 组别同组者实验日期年月日第一部分:实验分析与设计(可加页)一、实验内容描述(问题域描述)实验目的及要求1、了解SWT的历史2、掌握SWT程序开发基本步骤3、掌握SWT组件的事件处理机制及方法4、掌握SWT中的Label、Text、List、Combo、Table、Tree、Composite、Group、Tabfolder、Menus组件的用法。
二、基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)实验内容及步骤1、新建一Java工程项目:SWTDemoProject2、设置项目的建构路径,右单击项目名,Build Path->Configure Build Path,单击Add External JARs,3、定位到C:\Program Files\MyEclipse 6.5\eclipse\plugins,选中org.eclipse.swt.win32.win32.x86_3.3.3.v3349.jar和org.eclipse.swt_3.3.2.v3349d.jar,单击“打开”按钮4、在包com.whut中新建一个类LabelDemo:三、主要仪器设备及耗材装有java开发环境及eclipseIDE的PC机一台。
第二部分:实验调试与结果分析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)public class LabelDemo {public static void main(String[] args) {//Display连接底层平台和SWT,负责管理SWT事件循环,以及提供访问SWT所需的底层平台资源。
Display display = new Display();Shell shell = new Shell(display); //shell是程序的主窗口shell.setText("Hello World"); //设置主窗口的标题shell.setBounds(100, 100, 200, 50); //设置主窗口的大小(长200像//素,高50像素)和位置(窗口的左角离显示器左角顶点100,100像素处)shell.setLayout(new FillLayout()); //设置主窗口的布局Label label = new Label(shell, SWT.CENTER); //创建标签组件label.setText("Hello World"); //设置组件的标题Color red = new Color(display, 255, 0, 0); //创建颜色对象label.setForeground(red); //改变标签的前景色shell.open(); //打开主窗口while (!shell.isDisposed()) {if (!display.readAndDispatch()) //得到事件并且调用对应的监听器进行处理display.sleep(); //等待事件发生}red.dispose(); //析构对象reddisplay.dispose(); //析构对象display}}在包com.whut中新建一个类ButtonDemo:public class ButtonDemo {public static void main(String[] args) {Display display = new Display();Shell shell = new Shell(display);shell.setText("Button Example");shell.setBounds(100, 100, 200, 100);shell.setLayout(new FillLayout());final Button button = new Button(shell, SWT.PUSH);button.setText("Click Me Now");button.addSelectionListener(new SelectionAdapter() {public void widgetSelected(SelectionEvent event) { button.setText("I Was Clicked");}});shell.open();while (!shell.isDisposed()) {if (!display.readAndDispatch()) display.sleep();}display.dispose();}}1、在包com.whut中新建一个类TextDemo:2、在包com.whut中新建一个类ListDemo:3、在包com.whut中新建一个类ComboDemo:4、在包com.whut中新建一个类TableDemo:5、在包com.whut中新建一个类TreeDemo:10、在包com.whut中新建一个类CompositeDemo:11、在包com.whut中新建一个类GroupDemo:12、在包com.whut中新建一个类TableFolderDemo:13、在包com.whut中新建一个类MenuDemo:二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)LabelDemoTreeDemo CompositeDemoTableDemo:MenuDemo:ListDemoTreeDemo三、实验小结、建议及体会通过本次试验我了解到SWT是比Swing更紧密地映射到底层操作系统的本机图形技术,这不仅使得SWT更快速,而且使得Java程序具有更像本机应用程序的外观和感觉。