JAVA实验报告册范文合集

时间:2019-05-12 15:02:10下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《JAVA实验报告册》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《JAVA实验报告册》。

第一篇:JAVA实验报告册

《面向对象程序设计》

实验报告与习题册

2013 / 2014 学年 第1学期

系 别 计算机科学与技术系 专 业 班 级 姓 名

计算机软件 软件一班 罗晓薇

朱强 指导教师 目 录

实验一 开发环境的搭建及使用

一 实验目的与要求

1、进行java开发环境的配置;

2、熟悉eclipse集成开发环境;

3、编写简单的java application 和 java applet程序,并在eclipse中编辑、编译并运行这两种程序。

二 实验内容

1、安装jdk并配置环境变量,在下面写出如何判断环境变量是否配置成功;安装eclipse集成开发环境。

答:安装过程 双击jdk图标,点击新窗口中的“接受”按钮,选择安装位置再点击“下一步”,最后“完成”。

设置环境变量并测试 右击“我的电脑”,选择“属性”项,在新窗口选择“高级”选项,再选择“环境变量”选项,在“系统变量”栏选择“path”栏,双击此栏,在编辑系统变量窗口中修改“变量值”,输入“c:javajdk1.6.0_18bin;”,再新建环境变量“classpath”在变量值中输入“.;c:javajdk1.6.0_18bin”。点击“开始”中的“运行”,输入命令“cmd”,输入“java

”回车,如果出现了代码,就说明已经设置好环境变量了。

2、使用eclipse编写java application其功能是显示字符串“hello world!”,请将源代码和运行结果截图写在下面的空白处。答:源代码 public class helloworld { /** * @param args*/ public static void main(string[] args){ // todo auto-generated method stub system.out.println(hello world!);} } 运行结果

三 实验内容中遇到的问题、解决方法和体会。

答:问题 在安装java软件包时设置环境变量时,对path变量的变量值不知道用什么,还有新建classpath变量时也不知道怎么设置变量值; 在检测环境变量是否设置好时,也不知道怎么检测。

解决办法 查书本上的安装步骤,和询问同学,开始也不知道怎么检测环境变量已经设好了,后来看同学演示并解释了一下,知道软件已经安装成功,可以直接使用了。

体会 安装java软件并投入使用时,需要设置环境变量,而这些环境变量可以使我们的一些功能得以实现和利用;

在不知道怎么安装和使用一个新的软件时,可以查询书籍,也可以询问同学。

实验二 java程序设计基本语法

一 实验目的与要求

1、java常见数据类型、运算符和各种控制结构的简单应用;

2、理解递归原理;

3、实现数组的简单应用。

二 实验内容

1、编程输出0~100间所有能被3或5整除的数,每行输出不多于5个数。答: public class testcontinue { public static void main(string[] args){ int n=0;int i=0;for(n=0;n<=100;n++){ if(n % 3!=0 && n % 5!=0)//不能被3或5整除,结束本次循环 continue;i++;system.out.print(n+);if(i % 5==0){ //每五个数一行system.out.println();} } } } 运行结果

2、编写功能要求:按照考试成绩的等级输出百分制分数段,a等为85分以上,b等为70~84分,c等为60~69分,d等为 60分以下。成绩的等级由键盘输入。

运行结果

3、运用java二维数组打印“魔方阵”。所谓魔方阵是指这样的矩阵,它的每一行、每一列和对角线之和均相等,要求打印1~25之间由自然数构成的魔方阵。

答:

public class magics { public static void main(string[] args){ int i=0;int j=0;int m=0;int n=5;j=(n+1)/2-1;int[][]a=new int[n][n];a[i][j]=++m;while(m1){ } if(i<0)} for(i=0;i(n-1))a[i][j]=++m;i=i+2;j=j-1;运行结果

三 实验内容中遇到的问题、解决方法和体会。

实验二 方法与递归

一 实验目的与要求

1、理解递归原理;

2、掌握递归方法的设计与调用。

二 实验内容

1、输入两个整数m和n,求其最大公约数和最小公倍数。public static void main(string[] args){ int m,n,r,gcd,lcm=0;m = integer.parseint(args[0]);//把字符串转换整型

n = integer.parseint(args[1]);lcm = m*n;while((r=m%n)!=0){ m=n;n=r;} gcd=n;lcm=lcm/gcd;system.out.println(最大公约数:+gcd);//打印出最大公倍数system.out.println(最小公倍数:+lcm);//打印出最小公倍数 } } 运行结果

输入6,21

2、设计一个递归程序,计算n!。

答:public class factorial { } static int f(int n){ return n==0?1:n*f(n-1);} public static void main(string[] args){ system.out.println(10!是:+f(10));} 运行结果

三 实验内容中遇到的问题、解决方法和体会。

问题 进行实验内容1时,编写代码处没有显示错误,运行程序时出现了下面的情况。

体会 后来听老师讲到包时,才知道java.lang是一个包,想到可能是我用到的方法在包中,但没有引入它。

实验三 面向对象程序设计

一 实验目的与要求

1、编写java应用程序,完成类、对象的创建及使用;完成成员方法和构造方法的创建及使用。

2、掌握权限访问控制符public和private的用法;实现类的继承;实现变量的隐藏和方法的重写;实现成员方法和构造方法的重载;掌握多态的意义,学会多态在程序设计中的应用。

3、编写java应用程序,完成接口的实现;体会抽象类和接口的区别;体会接口的继承原理;将接口和类分别定义在不同的包中,掌握包的使用。

二 实验内容

1、定义一个学生类,为其添加成员变量为学号、年龄、姓名、班级和学校,其中学号为最终变量,学校为类变量;为其添加构造方法以完成对学生对象的初始化;为其添加成员方法getinfo(),作用是获取学生的所有信息;在main中创建一个学生对象,并验证学生类中所有方法。

class student { public final int id;public int age;public string name;public string remove;public static string school;student(){ id=0;age=20;name=小明;remove=一班;school=师范;} public string getinfo(){ return id=:+id+n+age=:+age+n+name=:+name+n+remove=:+remove+n+school=:+school;} public static void setschool(string school){ } public static void main(string[] args){ student student=new student();student.school = school;system.out.println(student.getinfo());} }

2、在第一题的基础上,添加三个成员方法以用来改变年龄、姓名、班级的值;添加五个成员方法以用来分别获取学号、年龄、姓名、班级和学校的值;在main中创建一个学生对象,并验证这些方法。class student { public final int id;public int age;public string name;public string remove;public static string school;student(){} id=0;age=20;name=小明;remove=一班;school=师范;public int getage(){ } public void setage(int age){ } public string getname(){ } public void setname(string name){ } public string getremove(){ } public string setremove(string remove){ return this.remove = remove;} public int getid(){ } public static string getschool(){ } public string getinfo(){ return return school;return id;return remove;this.name = name;return name;this.age = age;return age;id=:+id+n+age=:+age+n+name=:+name+n+remove=:+remove+n+school=:+school;} } public static void main(string[] args){ student student=new student();system.out.println(student.getinfo());}

3、修改学生类中成员的访问权限,体会public和private两种访问权限的用法。

答: 类中成员的访问权限:继承有关 public 此成员都可公开调用

private 只有本类实例成员方法才可调用

如果子类继承了父类,而基类中成员变量或成员方法有private的,子类就不能访问那个成员。

4、定义一个people类,它包含属性有姓名name和性别sex,为people类派生出一个子类employee类,为其增加两个属性年龄age和工资等级grade,工资等级分a、b、c三个等级,在子类中增加用于打印出员工的姓名、性别、年龄和工资等级的方法print,编写一个应用程序,测试定义的类。class people { public string name;public string sex;} enum grade{a,b,c;} class employee extends people{ public int age;public string grade;this.name=name;employee(string name,string sex,int age,string grade){ } } this.sex=sex;this.age=age;this.grade=grade;void print(){ system.out.println(输出职工信息:);system.out.println(姓名:+name);system.out.println(性别:+sex);

system.out.println(年龄:+age);system.out.println(工资等级:+grade);} public class test{ }

public static void main(string[] args){ } employee employee=new employee(mary,f,19,a);employee.print();

5、定义一个people类,它包含属性有姓名name和性别sex和年龄age,一个构造方法,用来初始化这三个属性;定义一个people类的子类student,添加一个属性学号number,添加两个构造方法,一个有参构造方法,一个无参构造方法,他们都要调用父类的构造方法或本类的构造方法来完成对象的初始化,添加两个成员方法,一个是选课choose(),用来输出“我没有选课”,另一个是选课choose(string),用来选择由参数指定的课程。class people{ public string name;public string sex;public int age;people(){} people(string name,string sex,int age){ this.name = name;this.sex = sex;this.age = age;} } class student extends people{ public int id;student(){ super();} public student(int id,string name,string sex,int age){ super(name,sex,age);this.id = id;} void choosing(){ system.out.println(我没有选课);} void choosing(string n){ system.out.println(我选的课程是:+n);} public string getinfo(){ return 学号:+id+n+姓名:+name+n+性别:+sex+n+年龄:+age;} } public class choose { public static void main(string[] args){ student student = new student(123456,rose,f,18);system.out.println(student.getinfo());student.choosing();student.choosing(java);} }

6、创建一个接口shape,其中有抽象方法area,类circle、rectangle实现area方法计算其面积并返回,又有star类实现shape的area方法,其返回值是0,star类另有一返回值boolean型的方法isstar;在main方法中创建一个数组,根据随机数向其中加入shape的不同子类对象,然后将数组元素依次取出,判断其是否为star类,如是返回其个数,否则返回其面积。

interface shape { double area();} class circle implements shape { private double radius;public circle(double radius){ this.radius = radius;} public double area(){ return 3.14*radius*radius;} } class rectangle implements shape { private double wide;private double length;rectangle(double length,double wide){ this.length = length;this.wide = wide;} public double area(){ return wide*length;} } class star implements shape { public double area(){ return 0.0;} public static boolean isstar(shape s){ return(s instanceof star)? true: false;} } public class test { public static void main(string[] args){ circle c = new circle(3);rectangle r = new rectangle(3,6);star star = new star();shape[] array = new shape[]{c,r,star,star,star,c };

for(int i=0,j=1;i

三 实验内容中遇到的问题、解决方法和体会。

遇到的问题:在实验中,在类中设置构造方法时遇到了问题和困难,不知道怎样设置参数,还有创建接口时对它的继承不是很了解,用类来实现抽象方法也不是很熟练。

解决办法:参考书上创建类和接口的例子进行操作,问同学和老师,查询书本。

体会:要创建好一个类,不仅要熟悉创建类的方法,对接口、静态方法、抽象方法的运用更要熟练才行。在创建一个对象时,要对需要调用的方法中的参数、类型都要有一个了解,不然创建的对象就会不伦不类了。实验四 输入和输出流

一 实验目的与要求

1、掌握java常用i/o输入流和输出流;

2、掌握各种类型数据写入文件或读出文件的操作。

二 实验内容

1、编程利用文件流和缓冲流把一个文本文件中的内容复制到另外一个文件中。

运行结果

2、定义一个类,把这个类所生成的若干对象写入到文件中,然后从文件

中读出对象,测试读出对象的正确性。

运行结果

三 实验内容中遇到的问题、解决方法和体会。

实验五 gui图形界面设计

一 实验目的与要求

1、掌握awt与swing的区别与联系;掌握swing常用图像组件的使用;掌握主要的布局管理器的使用方法;

2、了解事件处理机制;掌握swing常用图像组件的使用;掌握固定菜单和弹出式菜单的创建和使用;

二 实验内容

1、设计并实现一个类似于windows操作系统附件中自带的计算器的一款简单的计算器,要求界面美观,设计合理;带有常用的菜单并实现其功能;能完成加、减、乘、除等简单的计算,在下面写出其核心代码。

实验时间:实验地点: 实验学时:

运行结果

三 实验内容中遇到的问题、解决方法和体会。

习题一

1.java源文件中最多只能有一个 类,其他类的个数不限。2.java应用程序的执行入口是 方法。

3.在jdk环境下,用什么命令编译java程序?用什么命令执行java程序?

习题二

1.数组对象中的哪个成员变量可以测得数组中的元素个数?

2.如果定义“int[] b=new b[10];”,b数组中的个元素值是多少? 3.同一个数组中可否存放不同类型的数据?

习题三

1.简述this引用的作用。

2.类的成员初始化的顺序如何?

3.什么是接口?什么是抽象类?二者有何区别? 4.简述java运行多态时的含义。5.简述java继承的主要内容。

习题四

1.什么是异常?java中的异常对象分为哪两类? 2.简述try-catch-finally语句的执行过程 3.throws子句与throw语句的区别和联系。

习题五

1.字符输出流类都是 抽象类的子类。2.对java对象读、写的过程被称为。

3.什么是流?什么是输入/输出流?什么是字节流和字符流,它们对应的基础

抽象类分别是什么?

第二篇:JAVA实验报告

学 生 实 验 报 告 册

(理工类)

课程名称:面向对象程序设计 专业班级:16计算机科学与技术(专转本)

学生学号: 1613203022 学生姓名: 张义丹

所属院部: 计算机工程 指导教师: 刘 晶 16 ——20 17 学年 第 2 学期

金陵科技学院教务处制 实验报告书写要求

实验报告上交电子稿,标题采用四号黑体,正文采用小四号宋体,单倍行距。

实验报告书写说明

实验报告中实验目的和要求、实验仪器和设备、实验内容与过程、实验结果与分析这四项内容为必需项。教师可根据学科特点和实验具体要求增加项目。

填写注意事项

(1)细致观察,及时、准确、如实记录。(2)准确说明,层次清晰。

(3)尽量采用专用术语来说明事物。

(4)外文、符号、公式要准确,应使用统一规定的名词和符号。(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。

实验报告批改说明

实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用五级记分制或百分制,按《金陵科技学院课堂教学实施细则》中作业批阅成绩评定要求执行。

实验项目名称:Java编程基础 实验学时: 6 同组学生姓名: ———— 实验地点: 工科楼A101 实验日期: 17.3.21~17.4.4 实验成绩: 批改教师: 刘晶 批改时间:

实验1 Java编程基础

一、实验目的和要求

(1)熟练掌握JDK1.6及Eclipse4.2编写调试Java应用程序及Java小程序的方法;(2)熟练掌握Java应用程序的结构;

(3)了解Java语言的特点,基本语句、运算符及表达式的使用方法;(4)熟练掌握常见数据类型的使用;

(5)熟练掌握if-else、switch、while、do-while、for、continue、break、return语句的使用方法;

(6)熟练掌握数组和字符串的使用;

(7)调试程序要记录调试过程中出现的问题及解决办法;

(8)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验;

(9)做完实验后给出本实验的实验报告。

二、实验仪器和设备

奔腾以上计算机,Windows 操作系统,装有JDK1.6和Eclipse4.2软件。

三、实验过程

(1)分别使用JDK命令行和Eclipse编译运行Java应用程序;适当添加注释信息,通过javadoc生成注释文档;为主方法传递参数“Hello world”字符串,并输出,记录操作过程。

public class Hello { public static void main(String args[]){ System.out.println(“Hello!”);} }(2)分别使用JDK命令行和Eclipse编译Java Applet,并建立HTML文档运行该Applet。压缩生成“.jar”文件。记录操作过程。import java.awt.*;import java.applet.Applet;public class HelloApplet extends Applet { public void paint(Graphics g){ g.setColor(Color.red);g.drawString(“Hello!”,20,20);}

} (3)根据变量score中存放的考试分数,输出对应的等级。要求从键盘输入学生成绩,60分以下为D等;60~69为C等;70~89为B等;90~100为A等。(4)编写一个Java Application程序,输出区间[200,300]上的所有素数,将其用数组prime[]保存,并以每10个一行的形式显示运行结果。(5)输出下列数字形式,要求用二维数组完成。①n=4 0 0 0 0 0 1 1 1 0 1 2 2 0 1 2 3 ② n=4 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1(6)求二维数组的鞍点,即该位置上的元素在该行上最大,在列上最小。也可能无鞍点。(7)分析下列程序的输出结果,掌握equals()方法和“= =”的区别。class StringTest2{ public static void main(String args[]){

String s1 = “This is the second string.”;

String s2 = “This is the second string.”;

String s3 = new String(“This is the second string.”);

String s4 = new String(s1);

String s5 = s1;

boolean result121 = s1.equals(s2);

boolean result122 = s1 == s2;

boolean result131 = s1.equals(s3);

boolean result132 = s1 == s3;

boolean result141 = s1.equals(s4);

boolean result142 = s1 == s4;

boolean result151 = s1.equals(s5);

boolean result152 = s1 == s5;

System.out.println(“s1 equals s2= ” +result121);

System.out.println(“s1 == s2= ” +result122);

System.out.println(“s1 equals s3= ” +result131);

System.out.println(“s1 == s3= ” +result132);

System.out.println(“s1 equals s4= ” +result141);

System.out.println(“s1 == s4= ” +result142);

System.out.println(“s1 equals s5= ” +result151);

System.out.println(“s1 == s5= ” +result152);} }(8)判断回文字符串

回文是一种“从前向后读”和“从后向前读”都相同的字符串。如“rotor”是一个回文字符串。

程序中使用了两种算法来判断回文字符串:

算法一:分别从前向后和从后向前依次获得原串str的一个字符ch1、ch2,比较ch1和ch2,如果不相等,则str肯定不是回文串,yes=false,立即退出循环:否则继续比较,直到字符全部比较完,yes的值仍为true,才能肯定str是回文串。

算法二:将原串str反转成temp串,再比较两串,如果相等则是回文字符串。(9)使用String类的compareTo(String s)方法,对以下字符串从小到大排序:“melon”, “apple”, “pear”, “banana”,显示输出排序结果。

要求:

(1)编译调试程序之前应配置好环境变量;

(2)要分别掌握用JDK命令行和Eclipse集成开发环境调试Java程序;(3)注意Java两大类程序:应用程序和小程序的区别。

程序清单:

(建议程序中适当添加注释信息,增强可读性;较长程序可分栏书写,保证报告排版整洁美观。)

(1)主方法传递参数“Hello world”字符串,并输出

public class Hello { public Hello(){

System.out.println(“HelloWorld!”);} public static void main(String args[]){

new Hello();} }(2)Eclipse编译Java Applet import java.awt.*;import java.applet.Applet;public class HelloApplet extends Applet { int height,width;public void init(){

this.height=100;

this.width=300;}

public void paint(Graphics g){

g.setColor(Color.red);

g.drawString(“Hello!”, 20, 20);} }(3)

package b;import java.util.Scanner;public class Test { public static void main(String args[]){

int score;

//char grade;

System.out.println(“请输入分数按回车”);

Scanner reader=new Scanner(System.in);

score=reader.nextInt();

if(score>=90&&score<=100){

System.out.println(“A”);

}

else if(score>=70&&score<=89){

System.out.println(“B”);

}

else if(score>=60&&score<=69){

System.out.println(“C”);

}

else if(score<60){

System.out.println(“D”);

}

else{

System.out.println(“数据错误”);

} } }(4)

public class Lim { public static void main(String[] args){

int[] prime = calculation(20, 200, 300);

for(int i = 0;i < prime.length;i++){

if(prime[i]!= 0){

if(i % 10 == 0 && i!= 0)

System.out.println();

System.out.print(prime[i] + “ ”);// 打印数据

}

}

} public static int[] calculation(int length, int start, int end){

int j;

int step = 0;

int[] prime = new int[length];

for(int i = start;i <= end;i++)

{

j = 2;

while(i % j!= 0){

j++;

}

if(j == i)

{

prime[step] = i;

step++;

}

}

return prime;

} }(5)① public class shuzu { public static void main(String args[]){

int i,j;

int arr[][]=new int[4][];

for(i=0;i

arr[i]=new int[arr.length];for(i=0;i<4;i++)

for(j=3;j>=i;j--){

arr[i][j]=i;

} for(j=0;j<4;j++){

for(i=3;i>=j;i--){

arr[i][j]=j;

} }

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

for(j=0;j<=3;j++){

System.out.print(arr[i][j]);

System.out.print(“ ”);

}

System.out.println();

}

} } ②public class Shuzu { public static void main(String args[]){ int num[][]=new int[4][];for(int i=0;i

num[i]=new int[2*i+1];

for(int m=0;m

System.out.print(“ ”);

}

int k=i+1;

for(int j=0;j

if(j<=i)

num[i][j]=j+1;

else{

k--;

num[i][j]=k;

}

System.out.print(num[i][j]+“ ”);

}

System.out.println();} } }(6)public class test { public static void main(String[] args){

// TODO Auto-generated method stub

int[][] mat = {{11,12,13},{4,5,6},{7,8,9}};

for(int i=0;i

{

for(int j=0;j

System.out.print(mat[i][j]+“ ”);

System.out.println();

}

boolean find = false;//找到鞍点标记

int row=0;//第1行下标

int max=0;//记录当前行最大值的列下标

while(!find && row

{

max=0;//初始设每行第1列值最大

for(int j=1;j

if(mat[row][j]>mat[row][max])//mat[row][max]为该行最大值

max = j;

boolean yes = true;//再判断mat[row][max]是否在列上最小

int j=0;

while(yes && j

{

if(mat[j][max]

yes=false;

j++;

}

if(yes)

find = true;

else

row++;

}

if(find)

System.out.println(“The dort: ”+mat[row][max]);

else

System.out.println(“The dort: null”);} }(8)import java.util.Scanner;public class HuiWenTest { public static void main(String[] args){

// TODO Auto-generated method stub

System.out.println(“请输入一个字符串”);@SuppressWarnings(“resource”)

Scanner input = new Scanner(System.in);String str = input.next();StringBuilder sb=new StringBuilder(str);sb.reverse();//将Sr倒置的方法 String newStr=new String(sb);if(str.equals(newStr)){ System.out.println(str+“是回文字符串”);}else{ System.out.println(str+“不是回文字符串”);} } }(9)import java.util.*;public class SortString { public static void main(String[] args){

// TODO Auto-generated method stub

String [ ] a={“melon”,“apple”,“pear”,“banana”};

String [ ] b=Arrays.copyOf(a,a.length);System.out.println(“使用用户编写的SortString类,按字典序排列数组a:”);SortString.sort(a);System.out.println(“排序结果是:”);for(String s:a){ System.out.print(“ ”+s);} System.out.println(“");System.out.println(”使用类库中的Arrays类,按字典序排列数组b:“);Arrays.sort(b);System.out.println(”排序结果是:“);for(String s:b){ System.out.print(” “+s);} }

四、实验结果与分析(程序运行结果及其分析)

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

五、实验体会(遇到问题及解决办法,编程后的心得体会)

在这次实验中,我知道了eclipse和jdk运行程序的区别,jdk比较麻烦一些,需要配置变量。在实验中,配置jdk的环境变量要注意它的path和 classpath,如果classpath本身就有,可以在后面加分号,这样不影响其它的classpath的使用。学会了如何生成注释文档,主函数传递参数的方法,还有压缩文件,实验中还对数组的创建和使用进行了练习,还有一些类的应用。

实验项目名称: 面向对象编程 实验学时: 8 同组学生姓名: ———— 实验地点: 工科楼A101 实验日期: 17.4.11~17.5.2 实验成绩: 批改教师: 刘晶 批改时间:

实验2 面向对象编程

一、实验目的和要求

(1)熟练掌握Java语言类定义的基本语法;(2)熟练掌握类成员的访问控制,对象建立的方法;(3)熟练掌握类构造方法、成员方法的定义和重载;(4)熟练掌握类继承、多态和抽象性;(5)熟练掌握接口的定义和实现方法;(6)掌握基本的异常处理方法;

(7)调试程序要记录调试过程中出现的问题及解决办法;

(8)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验;

(9)做完实验后给出本实验的实验报告。

二、实验仪器和设备

奔腾以上计算机,Windows 操作系统,装有JDK1.6和Eclipse4.2软件。

三、实验过程

(1)定义一个Man类,保存在Man.java文件中,类中包含说话方法如下: public class Man

{

public void say()

{

System.out.println(“我是中国人!”);

}

} 为此类打包为cn.edu.jit.chinese;再在Man.java文件所在路径下,创建一个China.java文件,其中定义China类如下: public class China

{

public static void main(String[] args)

{

Man lihua = new Man();

lihua.say();

}

}

在China类中引用Man类,输出显示“我是中国人!”。试着去掉Man类的public修饰,看看会发生什么情况?

(2)设计复数类,成员变量包括实部和虚部,成员方法包括实现复数加法、减法、字符串描述、比较是否相等等操作。

(3)包的建立与使用:设计计算器类Calculator,计算加、减、乘、除和立方体体积,并且打包为mypackage。观察源文件目录下是否生成了mypackage文件夹,在该文件夹中是否有Calculate.class文件。编辑PackageDemo.java,保存在Calculator.java同一目录下,引用计算器类的各方法显示计算结果。

(4)试编码实现简单的银行业务:处理简单帐户存取款、查询。编写银行帐户类BankAccount,包含数据成员:余额(balance)、利率(interest);操作方法:查询余额、存款、取款、查询利率、设置利率。再编写主类UseAccount,包含main()方法,创建BankAccount类的对象,并完成相应操作。

(5)假定根据学生的3门学位课程的分数决定其是否可以拿到学位,对于本科生,如果3门课程的平均分数超过60分即表示通过,而对于研究生,则需要平均超过80分才能够通过。根据上述要求,请完成以下Java类的设计: 1)设计一个基类Student描述学生的共同特征。

2)设计一个描述本科生的类Undergraduate,该类继承并扩展Student类。3)设计一个描述研究生的类Graduate,该类继承并扩展Student类。

4)设计一个测试类StudentDemo,分别创建本科生和研究生这两个类的对象,并输出相关信息。

(6)设计三角形类,继承图形抽象类,计算三角形面积和周长。

(7)试编码实现多态在工资系统中的应用:给出一个根据雇员类型利用abstract方法和多态性完成工资单计算的程序。Employee是抽象类,Employee的子类有Boss(每星期发给他固定工资,而不计工作时间)、CommissionWorker(除基本工资外还根据销售额发放浮动工资)、PieceWorker(按其生产的产品数发放工资)、HourlyWorker(根据工作时间长短发放工资)。该例的Employee的每个子类都声明为final,因为不需要再继承它们生成子类。在主测试类Test中测试各类雇员工资计算结果。

提示:对所有雇员类型都使用earnings()方法,但每个人挣的工资按他所属的雇员类计算,所有雇员类都是从超类Employee派生出的。在超类中声明earnings()为抽象方法,并且对于每个子类都提供恰当的earnings()的实现方法。为了计算雇员的工资,程序仅仅使用雇员对象的一个超类引用并调用earnings()方法。在一个实际的工资系统中,各种Employee对象的引用可以通过一个Employee引用数组来实现。程序依次使用数组的每个元素(Employee引用)调用每个对象的earnings()方法。Employee类定义如下: abstract class Employee { private String firstName;private String lastName;public Employee(String first,String last){

firstName=first;lastName=last;} public String getEmployeeName(){ return firstName;} public String getLastName(){ return lastName;} public String toString(){ return firstName+lastName;} public abstract String earnings();}(8)设计圆柱体类和圆椎体类,继承圆类Circle并实现体积接口Volume,计算表面积和体积。

(9)定义一个接口CanFly,描述会飞的方法public void fly();分别定义飞机类和鸟类,实现CanFly接口。定义一个测试类,测试飞机和鸟。测试类中定义一个makeFly(CanFly obj)方法,让会飞的事物飞起来(即调用相应类的fly()方法)。然后在main方法中创建飞机对象和鸟对象,并在main方法中调用makeFly(CanFly obj)方法,让飞机和鸟起飞。

(10)异常的捕获:计算两数相除并输出结果。使用三个catch子句,分别捕捉输入输出异常、除数为0的异常和参数输入有误异常。import java.io.*;class Ex1 { public static void main(String args[ ]){ try{ BufferedReader strin=new BufferedReader(new InputStreamReader(System.in));//建立输入流缓冲区 System.out.print(”请输入除数:“);String cl=strin.readLine();//键盘输入 int a=Integer.parseInt(cl);System.out.print(”请输入被除数:“);cl=strin.readLine();int b=Integer.parseInt(cl);int c=b/a;System.out.println(”商为:“+c);} //捕获与I/O有关的异常(空白处补全捕获语句)

//捕获数值转化时的异常,如不能将字符转化成数值

//捕获除数为0的异常

} } 编译并运行,当产生输入输出异常时显示异常信息;当输入除数为0时,出现算术异常,提示除数为0,并要求重新输入;当输入的不是整数时,如将30输成了3o,出现数值格式异常,提示输入整数。

(11)编写程序包含自定义异常MyException,当100被13和4除时抛出该异常,其余除数显示商值。

要求:

(1)注意选用适当的类成员修饰符(private、protected、public等),比较它们的使用情况;

(2)养成良好的编程习惯,严格按照命名规则为包、类及类成员命名,将每个程序打包,包的命名方式如two.num1表示实验二的第一题;

(3)学会使用Eclipse的各种调试方法;

(4)学会查阅Java API文档,如查找异常类的使用方法。

程序清单:

(建议程序中适当添加注释信息,增强可读性;较长程序可分栏书写,保证报告排版整洁美观。)(1)package cn.edu.jit.chinese;// 为Man类打包为cn.edu.jit.chinese public class Man { public void say(){

System.out.println(”我是中国人!“);} } package cn.edu.jit.chinese;

import cn.edu.jit.chinese.*;//导入包

public class China { public static void main(String[] args){

Man lihua = new Man();//主方法先创建类然后调用类

lihua.say();} }(2)public class Complex { private double real,image;//定义私有的real,image public Complex(double real,double image)

{this.real=real;//赋值

this.image=image;} public Complex(double real){this(real,0);} public Complex(){this(0,0);} public Complex(Complex c){this(c.real,c.image);} public double getReal(){return real;} public void setReal(double real){

this.real = real;} public double getImage(){

return image;} public void setImage(double image){

this.image = image;} public Complex add(Complex c1,Complex c2)//写方法

{Complex C=new Complex(c1.real+c2.real,c1.image+c2.image);return C;} public Complex add(Complex c1){Complex C=new Complex(this.real+c1.real,this.image+c1.image);return C;} public Complex jian(Complex c1,Complex c2){Complex C=new Complex(c1.real-c2.real,c1.image-c2.image);return C;} public Complex jian(Complex c1){Complex C=new Complex(this.real-c1.real,this.image-c1.image);return C;} public boolean bijiao(Complex c1,Complex c2){return(c1.real==c2.real&&c1.image==c2.image);} public boolean bijiao(Complex c1){return(c1.real==this.real&&c1.image==this.image);} public String toString(){return this.real+”+“+this.image+”i“;} } public class ComplexText { public static void main(String[] args){

Complex c1=new Complex(2,5);//创建类,调用类里面的方法

Complex c2=new Complex(5,2);

Complex c3=new Complex();

System.out.println(c3.add(c1,c2));

System.out.println(c3.jian(c1,c2));

System.out.println(c3.bijiao(c1,c2));} }(3)public class Calculate { double i,j, t;public Calculate(int i,int j){this.i=i;this.j=j;} public Calculate(int i,int j,int t){this.i=i;this.j=j;this.t=t;} public double add(){return i+j;} public double jian(){return i-j;} public double cheng(){return i*j;} public double chu(){return i/j;} public double tiji(){return i*i*i+j*j*j+t*t*t;} } public class PackageDemo {//测试

public static void main(String[] args){

Calculate c1=new Calculate(8,4);

Calculate c2=new Calculate(8,4,2);

System.out.println(”相加=“+c1.add());

System.out.println(”相减=“+c1.jian());

System.out.println(”相乘=“+c1.cheng());

System.out.println(”相除 =“+c1.chu());

System.out.println(”立方体体积=“+c2.tiji());} }(4)public class BankAccount { double balance,interest,cunkuan;public BankAccount(double cunkuan,double balance)//写方法

{this.balance=balance;

this.cunkuan=cunkuan;} public void set(double cunkuan)

{if(cunkuan<10000)interest=0.1;

else if(cunkuan<50000)interest=0.25;

else if(cunkuan<100000)interest=0.035;

else interest=0.5;} public double get()

{ return interest;} public void chaxun(double balance,double cunkuan)

{System.out.println(”存款为:“+cunkuan);

System.out.println(”余额为:“+balance);} public void qu(double qukuan)

{System.out.println(”取款为:“+qukuan);System.out.println(”得到的利润率:“+(this.cunkuan-qukuan)*this.interest);} } public class UseAccount {//测试

public static void main(String[] args){

BankAccount c1=new BankAccount(40000,40000);

c1.chaxun(40000,20000);

c1.set(20000);

System.out.println(”利率为“+c1.get());

c1.qu(10000);} }(5)public class Student { String name;int age;float average,chainese;float math,Enghish;public Student(String name,int age){this.name=name;this.age=age;System.out.println(name+”:“+age+”岁“+” “);} public void set(float chinese,float math,float Enghish){average=(chinese+math+Enghish)/3;} public float get(){return average;} }

class Undergraduate extends Student// Student继承Undergraduate {public Undergraduate(String name,int age){ super(name,age);}

public void hege(float average){

this.average=average;

if(average>=60)System.out.println(”本科生成绩合格“);else System.out.println(”本科生成绩不合格“);}}

class Graduate extends Student// Student继承Graduate {public Graduate(String name,int age){ super(name,age);//调用

} public void hege(float average){ this.average=average;if(average>=80)System.out.println(”研究生生成绩合格“);else System.out.println(”研究生成绩不合格“);} } public class StudentDemo {//测试

public static void main(String[] args){

Undergraduate c1=new Undergraduate(”小明 “,22);

System.out.println(”本科生三门成绩分别为:“+”59,“+”85,“+”90“);

c1.set(65,75,60);

System.out.println(”本科生平均分=“+c1.get());

c1.hege(c1.get());

System.out.println();

Graduate c2=new Graduate(”小红 “,18);

System.out.println(”研究生生三门成绩分别为“+”90,“+”84,“+”88“);

c2.set(80,86,79);

System.out.println(”研究生生平均分=“+c2.get());

c2.hege(c2.get());}(6)public abstract class ClosedFigure {//定义抽象类

String shape;public ClosedFigure(String newShape){this.shape=newShape;} public abstract double perimeter();//定义抽象类,里面不能写方法

public abstract double area();} public class Triangle extends ClosedFigure {// ClosedFigure继承Triangle double a,b,c;public Triangle(String newShape,double a,double b,double c){super(”newShape“);this.a=a;this.b=b;

this.c=c;} public double perimeter(){return a+b+c;} public double area(){double s;s=(a+b+c)/2;return Math.sqrt(s*(s-a)*(s-b)*(s-c));} public String toString(){return(”三角形三边长:“+a+” “+b+” “+c+” “+”周长:“+perimeter()+”面积:“+area());} public class Test { public static void main(String[] args){

Triangle c1=new Triangle(”三角形“,3,4,5);

c1.perimeter();

c1.area();

System.out.println(c1.toString());} } }(7)public abstract class Employee { private String firstName;private String lastName;public Employee(String first,String last)

{firstName=first;

lastName=last;} public String getEmployeeName()

{return firstName;} public String getLastName()

{ return lastName;} public String toString()

{return firstName+lastName;} public abstract String earnings();} public final class Boss extends Employee{ double salary;public Boss(String first, String last, double salary){ super(first, last);

this.salary = salary;} public String earnings(){return(salary+”“);} } public final class CommissionWorker extends Employee { double salary;

double sale;double price;public CommissionWorker(String first, String last, double salary, double sale,double price){

super(first, last);

this.salary = salary;

this.sale = sale;

this.price = price;} public String earnings(){return(salary+sale*price+”“);} } public final class PieceWorker extends Employee{

double number;

double price;

public PieceWorker(String first, String last, double number,double price){

super(first, last);

this.number = number;

this.price=price;

}

public String earnings()

{return(number*price+”“);}

} public final class HourlyWorker extends Employee {double time;double money;public HourlyWorker(String first, String last, double time, double money){ super(first, last);this.time = time;this.money = money;} public String earnings(){ return(time*money+”“);} } public class Test { public static void main(String[] args){

Employee c1=new Boss(”张“,”三“,10000);

System.out.println(”张三月工资:“+c1.earnings());

Employee c2=new CommissionWorker(”李“,”四“,4000,1500,2);

System.out.println(”李四月工资:“+c2.earnings());

Employee c3=new PieceWorker(”王“,”五“,1000,3);

System.out.println(”王五月工资:“+c3.earnings());

Employee c4=new HourlyWorker(”刘“,”三“,600,30);

System.out.println(”刘三月工资:“+c4.earnings());} }(8)public class Circle { String shape;double r;double height;double pi;public Circle(String shape,double r,double height,double pi){this.shape=shape;this.height=height;this.r=r;this.pi=pi;} } public interface Volume { public abstract double area();public abstract double NewVolume();} public class Yuanzhu extends Circle implements Volume { public Yuanzhu(String shape, double r, double height, double pi){ super(shape, r, height, pi);} public double area(){ return pi*r*r;} public double NewVolume(){return area()*height;} } public class Yuanzhui extends Yuanzhu implements Volume { public Yuanzhui(String shape, double r, double height, double pi){

super(shape, r, height, pi);

// TODO Auto-generated constructor stub } double s;public double area(){s=Math.sqrt(height*height+r*r);return pi*r*s+pi*r*r;} public double NewVolum(){return 1.0/3*pi*r*pi*r*height;} } public class Test { public static void main(String[] args){

Yuanzhu c1=new Yuanzhu(”圆柱“,4,6,3.14);

Yuanzhui c2=new Yuanzhui(”圆锥“,2,3,3.14);

System.out.println(”圆柱表面积:“+c1.area());

System.out.println(”圆柱体积:“+c1.NewVolume());

System.out.println(”圆锥表面积:“+c2.area());

System.out.println(”圆锥体积:“+c2.NewVolume());} }(9)public interface CanFly {//定义接口CanFly public void fly();} public class Plane implements CanFly{//使用接口 @Override public void fly(){

// TODO Auto-generated method stub

System.out.println(”飞机借助螺旋桨飞上天空“);} } public class Bird implements CanFly{ @Override public void fly(){

// TODO Auto-generated method stub

System.out.println(”小鸟 借助翅膀飞上天空“);} } public class Test { static void makeFly(CanFly obj){

obj.fly();} public static void main(String[] args){

// TODO Auto-generated method stub

CanFly p =new Plane();

makeFly(p);

CanFly b =new Bird();

makeFly(b);} }(10)import java.io.*;public class Ex1 { public static void main(String args[ ]){ try{ BufferedReader strin=new BufferedReader(new InputStreamReader(System.in));//建立输入流缓冲区

System.out.print(”请输入除数:“);String cl=strin.readLine();//键盘输入

int a=Integer.parseInt(cl);System.out.print(”请输入被除数:“);cl=strin.readLine();int b=Integer.parseInt(cl);int c=b/a;System.out.println(”商为:“+c);} //捕获与I/O有关的异常(空白处补全捕获语句)

catch(IOException e){System.out.println(”输入输出异常“);} //捕获数值转化时的异常,如不能将字符转化成数值

catch(NumberFormatException e){System.out.println(”数值格式异常,重新输入“);

} //捕获除数为0的异常

catch(ArithmeticException e){System.out.println(”除数为0,重新输入“);} } }(11)(1)MyException类: package exp2_11;public class MyException extends Exception{ MyException(String msg){

super(msg);} }(2)Div主类: package exp2_11;import java.io.*;public class Div { public static void main(String args[])throws MyException{

try{

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

System.out.print(”请输入实数除法运算的被除数:“);

String str = in.readLine();

double a = Double.parseDouble(str);

System.out.print(”请输入除数:“);

str = in.readLine();

double b = Double.parseDouble(str);

System.out.println(”商结果:“+division(a,b));

}

catch(ArithmeticException e1){

System.out.println(”商结果:Infinity“+e1);

System.out.println(”商结果:NaN“+e1);

}

catch(NumberFormatException e2){

System.out.println(”异常:字符串不能转换成整数!“+e2);

}

catch(IOException e3){

System.out.println(”异常:IO异常“+e3);

}

finally{

System.out.println(”程序结束!“);

} } static double division(double a,double b)throws MyException{

if(a==100 &&(b==4 || b==13))

throw new MyException(”不符规范“);

else return(a/b);} }

四、实验结果与分析(程序运行结果及其分析)

(1)

去掉Man类的public修饰,程序运行不出来,提示缺少Man的公开方法。(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

(10)

(11)

五、实验体会(遇到问题及解决办法,编程后的心得体会)

学习程序设计的基本目的就是培养描述实际问题的程序化解决方案的关键技能Java面向对象程序设计是一门实践性比较强的课程在实际中我们必须把理论和实践结合起来。在实验中我们对照课本的知识然后进行实际的操作而后发现实际的运用比课本提到的要多很多理论总是来源于实践我们必须在现有的理论的基础上进行有效地实践。而这次实验也让我看到了现在学习的一个很大弱点就是实践的实践往往很少。在现实社会中我们必须懂得实际的操作才能更好的服务于社会。所以我必须在以后的学习中多动手多实际操作争取能在实践中找到属于自己新的感悟,终于在学习Java时达到了事半功倍的效果。

实验项目名称: 图形用户界面 实验学时: 6 同组学生姓名: ———— 实验地点: 工科楼A101 实验日期: 17.5.9~17.5.23 实验成绩: 批改教师: 刘晶 批改时间:

实验3 图形用户界面

一、实验目的和要求

(1)掌握Swing组件的使用方法;

(2)熟练掌握Swing中常用布局管理器的使用方法;(3)掌握用户界面动作与事件的处理程序的编写方法;(4)熟练掌握构造用户界面的方法和常见界面元素的使用;(5)熟练掌握Java绘图的主要方法。

(6)调试程序要记录调试过程中出现的问题及解决办法;

(7)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验;

(8)做完实验后给出本实验的实验报告。

二、实验仪器和设备

奔腾以上计算机,Windows 操作系统,装有JDK1.6和Eclipse4.2软件。

三、实验过程

1.计算器设计

2.整数进制转换

将一个十进制整数分别转换成二进制、八进制和十六进制整数。

3.模拟裁判评分。

设计如图所示图形界面,显示n个裁判的评分,根据制定规则计算出最后得分。要求:图形界面采用表格显示裁判评分,随裁判人数变化而变化;指定分数范围,若超出,则异常处理;

得分规则有指定接口约定,由多个接口对象给出多种得分规则,如求平均数值,或去掉一个最高分和一个最低分后,再求平均值。

4.编译运行下例,然后修改程序,当使用鼠标单击后在另一位置重新绘制月亮。【例】 在Applet中画月亮。import java.awt.*;import java.applet.Applet;public class MoonApplet extends Applet { public void paint(Graphics g)//在Applet上绘图 { g.setColor(Color.red);g.drawString(”The Moon“,100,20);int x=0,y=0;//圆外切矩形左上角坐标 x = this.getWidth()/4;y = this.getHeight()/4;int diameter = Math.min(this.getWidth()/2, this.getHeight()/2);//圆的直径

g.setColor(Color.yellow);g.fillOval(x,y,diameter,diameter);//画圆

g.setColor(this.getBackground());//设置为背景色 g.fillOval(x-20,y-20,diameter,diameter);//画圆 } } 5.根据阿基米德螺线的极坐标方程:r=aθ画出相应图形。

要求:

(1)注意选用适当的布局管理器设计图形用户界面,比较它们的布局情况;

(2)养成良好的编程习惯,严格按照命名规则为包、类及类成员命名,将每个程序打包,包的命名方式如three.num1表示实验三的第一题;(3)学会使用Eclipse的各种调试方法;

(4)学会查阅Java API文档,如查找事件类的处理里方法。

程序清单:

(建议程序中适当添加注释信息,增强可读性;较长程序可分栏书写,保证报告排版整洁美观。)

1.import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.event.*;import javax.swing.*;

public class Calulator implements ActionListener { JTextField t1;JPanel p1;JFrame f;static int count=1;static float value=0;int p2=0;String p;public Calulator(){f=new JFrame(”Calulator“);f.setSize(400,200);p1=new JPanel();t1=new JTextField(30);t1.setHorizontalAlignment(JTextField.RIGHT);p1.setLayout(new GridLayout(5,4));f.add(t1);String str[]= {”开根“,”+“,”-“,”清零“,”7“,”8“,”9“,”/“,”4“,”5“,”6“,”*“,”1“,”2“,”3“,”负“,”0“,”.“,”正“,”=“};for(int i=0;i<20;i++){JButton b=new JButton(str[i]);p1.add(b);b.addActionListener(this);} f.add(t1,BorderLayout.CENTER);f.add(p1,BorderLayout.SOUTH);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setVisible(true);}

public void actionPerformed(ActionEvent e){ String c = e.getActionCommand();if(c==”0“||c==”1“||c==”2“||c==”3“||c==”4“||c==”5“||c==”6“||c==”7“||c==”8“||c==”9“||c==”.“){if(p2==0){t1.setText(c);p2++;} else {t1.setText(t1.getText()+c);p2++;}} else if(p==”清零“){value=0;t1.setText(String.valueOf(value));} else {count++;p2=0;if(count==2){p=c;value=Float.parseFloat(t1.getText());} if(c==”=“){ if(p==”开根“){value=(float)Math.sqrt(Float.parseFloat(t1.getText()));t1.setText(String.valueOf(value));count-=2;} else if(p==”+“){value+=Float.parseFloat(t1.getText());count-=2;} else if(p==”-“){ value-=Float.parseFloat(t1.getText());count-=2;}

else if(p==”*“){value*=Float.parseFloat(t1.getText());count-=2;} else if(p==”/“){ value/=Float.parseFloat(t1.getText());count-=2;} else if(p==”正”){value=Math.abs(Float.parseFloat(t1.getText()));t1.setText(String.valueOf(value));count-=2;} else if(p==”负“){value=-1*Float.parseFloat(t1.getText());t1.setText(String.valueOf(value));count-=2;} t1.setText(String.valueOf(value));value=0;}} } public static void main(String[] args){ new Calulator();}}

2.import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ZhuanH extends JFrame implements ActionListener{ TextField t1,t2,t3,t4;public ZhuanH(){super(”十进制整数转换“);this.setBackground(Color.BLUE);t1=new TextField(5);t2=new TextField(5);t3=new TextField(5);t4=new TextField(5);t1.setText(null);this.setSize(400,200);this.setLayout(new GridLayout(4,2));this.add(new Label(”十进制“));this.add(t1);t1.addActionListener(this);this.add(new Label(”二进制“));this.add(t2);this.add(new Label(”八进制“));this.add(t3);this.add(new Label(”十六进制“));this.add(t4);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);}

public void actionPerformed(ActionEvent e){ String c = t1.getText();t2.setText(Integer.toBinaryString(Integer.parseInt(c)));t3.setText(Integer.toOctalString(Integer.parseInt(c)));

t4.setText(Integer.toHexString(Integer.parseInt(c)));} public static void main(String[] args){ new ZhuanH();}} 3.import java.awt.*;import java.awt.event.*;import javax.swing.*;public class PingFen extends JFrame implements ActionListener{ JPanel p,p1;JTextField t;JTextField t1[]=new JTextField[10];JButton b;float s=0,k;int t2,t3;public PingFen(){ super(”模拟裁判评分“);this.setSize(300,120);p1=new JPanel(new GridLayout(2,5));this.add(p1,”North“);p=new JPanel(new FlowLayout(FlowLayout.RIGHT));this.add(p,”South“);b=new JButton(”平均分“);t=new JTextField(10);p.add(b);p.add(t);for(int i=0;i<10;i++){ t1[i]=new JTextField(6);t1[i].setText(null);p1.add(t1[i]);} b.addActionListener(this);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);} public void actionPerformed(ActionEvent e){float max,min;for(int i=0;i<10;i++){ try{ if(Float.parseFloat(t1[i].getText())>10.0)throw new Exception();

else continue;} catch(Exception ev){JOptionPane.showMessageDialog(this,t1[i].getText()+”超出范围“+”,“+”

请重新输入“);t1[i].setText(null);} } max=Float.parseFloat(String.valueOf(t1[0].getText()));min=Float.parseFloat(String.valueOf(t1[0].getText()));for(int i=1;i<10;i++){ if((k=Float.parseFloat(String.valueOf(t1[i].getText())))>max){max=k;t2=i;} else if((k=Float.parseFloat(String.valueOf(t1[i].getText())))

new PingFen();}} 4.import java.awt.*;import java.applet.Applet;import java.awt.event.*;public class MoonApplet extends Applet implements MouseListener { int x,y;public void init(){

x=this.getWidth()/4;

y=this.getHeight()/4;

addMouseListener(this);}

public void paint(Graphics g)//在Applet上绘图 { g.setColor(Color.red);g.drawString(”The Moon“,100,20);int diameter = Math.min(this.getWidth()/2, this.getHeight()/2);//圆的直径

g.setColor(Color.yellow);g.fillOval(x,y,diameter,diameter);//画圆

g.setColor(this.getBackground());//设置为背景色 g.fillOval(x-20,y-20,diameter,diameter);//画圆 } public void mouseClicked(MouseEvent e){

x=e.getX();y=e.getY();repaint();} 5.package package2;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class LuoXuan extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L;private LuoXuanCanvas canvas;//自定义画布组件 public LuoXuan(){super(”阿基米德螺线“);Dimension dim=getToolkit().getScreenSize();this.setBounds(dim.width/4,dim.height/4,dim.width/2,dim.height/2);JPanel p=new JPanel();this.add(p,”North“);JButton b=new JButton(”选择颜色“);p.add(b);b.addActionListener(this);this.canvas=new LuoXuanCanvas();this.getContentPane().add(this.canvas, ”Center“);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);}

public void actionPerformed(ActionEvent e){Color c=JColorChooser.showDialog(this, ”选择颜色“, Color.BLUE);this.canvas.setColor(c);this.canvas.repaint();}

public static void main(String[] args){

new LuoXuan();} } class LuoXuanCanvas extends Canvas {private Color color;public void LuoXuan(Color color){this.setColor(color);} public void setColor(Color color){this.color=color;} public void paint(Graphics g){int x0=this.getWidth()/2;int y0 = this.getHeight()/2;g.setColor(this.color);g.drawLine(x0, 0, x0, y0*2);g.drawLine(0, y0, x0*2, y0);

for(int i=0;i<4000;i++){double angle=i*Math.PI/512;double radius=angle*0.5;int x=(int)Math.round(radius*angle*Math.cos(angle));int y=(int)Math.round(radius*angle*Math.sin(angle));g.drawOval(x0+x, y0+y, 1, 1);} }}

四、实验结果与分析(程序运行结果及其分析)

(分析每题采用的布局管理器、事件处理类和主要功能实现方法)1.2.3.4.38

5.五、实验体会(遇到问题及解决办法,编程后的心得体会)

这次实验主要是对图形用户界面的设计,这里有鼠标触发的事件,就要让类实现MouseListener,在类里面实现MouseListener的方法,这里是选择单击时(mouseClicked()),这个方法,在方法体内用getX(),getY()方法来获取当前坐标。

实验项目名称:Java高级编程 实验学时: 4 同组学生姓名: ———— 实验地点: 工科楼A101 实验日期: 17.5.30~17.6.6 实验成绩: 批改教师: 刘晶 批改时间:

实验4 Java高级编程

一、实验目的和要求

(1)了解文件的概念和文件对象的创建方法;(2)掌握使用文件输入输出流读写文件的方法;(3)了解线程的基本概念和多线程程序设计的基本方法;(4)掌握数据库连接的方法;

(5)创建SQL查询并更新数据库中的信息;

(6)调试程序要记录调试过程中出现的问题及解决办法;

(7)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验;

(8)做完实验后给出本实验的实验报告。

二、实验仪器和设备

奔腾以上计算机,Windows 操作系统,装有JDK1.6和Eclipse4.2软件,MySQL数据库。

三、实验过程

(1)使用文件字节输入/输出流,合并两个指定文件;当文件中的数据已排序时,合并后的数据也要求是已排序的。

(2)将Java的关键字保存在一个文本文件中,判断一个字符串是否为Java的关键字。(3)编写在构造方法中产生一个1-5之间的随机数的继承Thread类的线程类DelayPrintThread,使得线程体每休眠此随机数时间就打印输出线程号和休眠时间;另外编写应用DelayPrintThread类的Java应用程序TwoThread.java,在main()方法中创建两个线程,并应用sleep()控制主应用程序延迟一段时间。

(4)编写继承Runnable接口的Applet多线程小程序类MultiThreadApplet,编写继承该类的Applet小程序类Clock,在Clock中重新构造父类的run()方法,实现数字时钟的功能,要求不断刷新显示时、分、秒。

(5)为学生信息表stuinfo设计数据库应用程序,包括数据的输入、删除和查询功能。

要求:

(1)注意选用适当的文件流进行文件读写;

(2)学会两种创建线程的方法,并比较使用场合;

(3)养成良好的编程习惯,严格按照命名规则为包、类及类成员命名,将每个程序打包,包的命名方式如four.num1表示实验四的第一题;(4)学会查阅Java API文档,如查找常用工具类。

程序清单:

(建议程序中适当添加注释信息,增强可读性;较长程序可分栏书写,保证报告排版整洁美观。)1.import java.io.*;import java.util.Arrays;public class File { private String Filename;static int s=0,t=0;public File(String Filename){this.Filename=Filename;} public void writeToFile(byte[] buffer)throws IOException {if(s==0){FileOutputStream fout = new FileOutputStream(this.Filename);s++;Arrays.sort(buffer);fout.write(buffer);this.readFromFile();fout.close();} else { FileOutputStream fout1 = new FileOutputStream(this.Filename,true);Arrays.sort(buffer);fout1.write(buffer);fout1.close();} }

public void readFromFile()throws IOException { FileInputStream fin = new FileInputStream(this.Filename);if(t==0){System.out.println(”文件名“+”:“+this.Filename+”:“);t++;} else System.out.println(”合并两个文件后“+”:“+this.Filename+”:“);byte[] buffer = new byte[512];int count = fin.read(buffer);while(count!=-1){ for(int i=0;i

byte[] buffer = {0,1,4,3,2,5,6,9,8,7};byte[] buffer1 = {10,11,12,14,15,17,16,19,20,13,18};File afile = new File(”ByteFile.dat“);afile.writeToFile(buffer);afile.writeToFile(buffer1);afile.readFromFile();} } 2.import java.io.*;public class File { private String Filename;public File(String Filename){this.Filename=Filename;} public void writerLine(String[] s)throws IOException {FileWriter f = new FileWriter(this.Filename);System.out.println(this.Filename+”文件中的java关键字有“+”:“);for(int i=0;i

public void Text(String[] s,String[] s1){int i,j;for(i=0;i

if(s1[i]==s[j])

{System.out.println(s1[i]+”是java中的关键字“);break;}

else continue;if(j==s.length)System.out.println(s1[i]+”不是java中的关键字“);} } public static void main(String[] args)throws IOException { String[]s={”public“,”class“,”static“,”void“,”String“,”print“,”byte“,”boolean“,”int“,”short“,”long“,”throw“,”cath“,”continue“,”private“,”abstract“,”Interface“,”Exception“};String[] s1={”pblic“,”class“,”string“};File a=new File(”myfile.dat“);a.writerLine(s);a.Text(s,s1);} } 3.public class DelayPrintThread extends Thread{ private int number,time;public DelayPrintThread(int number)

{this.number=number;

time=(int)(Math.random()*5);} public void run(){ try { Thread.sleep(this.time);} catch(InterruptedException e){} System.out.println(”线程“+this.number+”:“+”休眠时间“+this.time);} public class TwoThread {

public static void main(String[] args){

DelayPrintThread a=new DelayPrintThread(1);DelayPrintThread b=new DelayPrintThread(2);a.start();b.start();} } 4.import java.applet.Applet;import java.awt.*;import java.util.Date;import java.text.SimpleDateFormat;public class MultiThreadApplet extends Applet implements Runnable { Thread a;public void start(){ if(a==null){a=new Thread(this);

a.start();}

} public void stop(){ if(a!=null){ a.stop();

a=null;} } public void run(){} public void paint(Graphics g){SimpleDateFormat sdf=new SimpleDateFormat(”yyyy年MM月dd日E a hh时 mm分ss秒“);g.drawString(sdf.format(new Date()),50,100);} }

public class Clock extends MultiThreadApplet{ public void run(){

repaint();try{a.sleep(1000);} catch(InterruptedException e){} }} 5.import java.sql.*;public class Statement{ public static void main(String args[])throws Exception { Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);Connection conn=DriverManager.getConnection(”jdbc:odbc:student“);Statement stmt=conn.createStatement();String Sql=”SELECT stu_id,stu_name,city FROM student WHERE stu_id=5“;String Sql=”INSERT INTO student(stu_id,stu_name,city)VALUES('5','小红','徐州')“;String Sql=”DELETE FROM student WHERE stu_id=5“;int count=stmt.executeUpdate(Sql);System.out.println(”插入“+count+”行“);ResultSet rs=stmt.executeQuery(Sql);if(rs.next()){System.out.println(”行“+rs.getRow()+”:“+rs.getString(1)+”,“+rs.getString(2)+”,“+rs.getString(3));} else System.out.println(”没有数据“);count=stmt.executeUpdate(Sql);rs=stmt.executeQuery(Sql);if(rs.next()){System.out.println(”行“+rs.getRow()+”:“+rs.getString(1)+”,“+rs.getString(2)+”,“+rs.getString(5));} else System.out.println(”没有数据");} }

四、实验结果与分析(程序运行结果及其分析)1.45

2.3.4.五、实验体会(遇到问题及解决办法,编程后的心得体会)

通过这次实验,我基本能够理解线程的运行了,学会调用Thread类中的系统函数以及掌握这些函数的作用是难点,start()是开辟一条新线程。子类重写父类的run()方法,里面用sleep,来控制每个线程的休眠时间,但是得注意这里应该要用try-catch语句来捕获中断异常。

第三篇:JAVA实验报告

河北北方学院信息科学与工程学院

《Java程序设计》

实 验 报 告

实验学期 2014 至 2015 学年 第 2 学期

学生所在系部 信息科学与工程学院 年级 2012 专业班级 电子三班 学生姓名 冯洋 学号 201242220 任课教师 实验成绩

实验七 GUI标准组件及事件处理

一、课程设计目的: 《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。

二、实验要求:

设计一个简单的文本编辑器,具有如下基本功能: 1)所见即所得的文本输入;

2)能方便地选中文本、复制、删除和插入文本; 3)具有一般编辑器所具有的查找和替换功能;

4)简单的排版,如设置字体和字号等。

三、课程设计说明:

1、需求分析:简单文本编辑器提供给用户基本的纯文本编辑功能,能够将用户录入的文本存储到本地磁盘中。能够读取磁盘中现有的纯文本文件,以及方便用户进行需要的编辑功能。文件操作能够实现新建、保存、打开文档等,编辑操作能过实现文本的剪贴、复制、粘贴等,格式操作能过实现字体设置、背景等,帮助操作能够实现关于主题的查看等功能

2、概要设计:

(一)其基本功能包括:

① 基本的文本操作功能。包括新建,保存,打开,保存。

② 基本的编辑功能。包括复制,剪贴,粘贴。③ 基本的格式功能,字体。④ 简单的帮助,关于主题。

(二)主要的组件包括:

① 基本的Frame框架; ② 菜单;

③ 打开文件对话框; ④ 保存文件对话框; ⑤ 颜色对话框; ⑥ 简单的帮助框架。

3、程序说明:

整个记事本分成:Jframe程序主体框架,Jmenu菜单栏、JtextArea文本输入区、PopupMenu右键菜单、JscrollPane滚动条、FonDialog字体类等。

本程序中首先定义一个Java Yang类继承JFrame作为最底层容器。要想记事本完成需求分析中相应的功能,还必须添加事件监听器。事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。本程序中ActListener实现了ActionListener接口,用来监听并处理所有菜单项和内容输入区为事件源的事件。另外,还用来WindowListener来监听处理容器关闭触发的事件,WindowListener继承了WindowsAdapter类并覆盖了WindowsClosing方法。

四、程序调试:

1、调试分析:

(1)关于打开、保存和退出我运用了文件对话框, openFileDialog、saveFileDialog和System.exit()以及文件输入输出流来实现,新建功能我选用了 textArea.setText()方法.(2)对于剪贴,粘贴,复制的实现则用 复制

String text = textArea.getSelectedText();StringSelection selection= new StringSelection(text);clipboard.setContents(selection,null);粘贴

Transferable contents = clipboard.getContents(this);if(contents==null)return;String text;text=“";try { text =(String)contents.getTransferData(DataFlavor.stringFlavor);} catch(Exception ex){ } textArea.replaceRange(text,textArea.getSelectionStart(),textArea.getSelectionEnd());(3)至于字体功能的实现,则是新建了一个字体类,在这个类中设置了字形,字体以及大小并且有字体样式可预览用户当前的设置。FlowLayout()设置布局,setSize()设置大小add()添加需要用的原件。

添加监听器获取选择用户的字号大小

public void itemStateChanged(ItemEvent event){ size =(new Integer((String)event.getItem()).intValue());setCustomFont(new Font(name, type, size));} 设置字体

private void setCustomFont(Font customFont){ this.customFont = customFont;area.setFont(customFont);area.revalidate();} 获取字体

public Font getCustomFont(){ return(this.customFont);}

附录:源代码

//记事本主体类 import java.awt.event.*;import java.awt.*;import java.io.*;import java.awt.datatransfer.*;import javax.swing.*;

import java.awt.print.PrinterException;

public class MiniNote extends JFrame implements ActionListener {

JMenuBar menuBar = new JMenuBar();JMenu file = new JMenu(”文件(F)“), //菜单 edit = new JMenu(”编辑(E)“), format = new JMenu(”格式(O)“), view = new JMenu(”查看(V)“), help = new JMenu(”帮助(H)“);

JMenuItem[] menuItem ={ //菜单下拉项 new JMenuItem(”新建(N)“), new JMenuItem(”打开(O)“), new JMenuItem(”保存(S)“), new JMenuItem(”打印(P)“), new JMenuItem(”全选(A)“), new JMenuItem(”复制(C)“), new JMenuItem(”剪切(T)“), new JMenuItem(”粘贴(P)“), new JMenuItem(”自动换行(W)“), new JMenuItem(”字体(F)“), new JMenuItem(”状态栏(S)“), new JMenuItem(”帮助主题(H)“), new JMenuItem(”关于记事本(A)“), new JMenuItem(”页面设置(U)“), new JMenuItem(”退出(X)“), new JMenuItem(”查找(F)“), new JMenuItem(”查找下一个(N)“), new JMenuItem(”替换(R)“)};

JPopupMenu popupMenu = new JPopupMenu();;//右键菜单 JMenuItem [] menuItem1 ={ new JMenuItem(”撤销(Z)“), new JMenuItem(”剪切(X)“), new JMenuItem(”复制(C)“), new JMenuItem(”粘贴(V)“), new JMenuItem(”删除(D)“), new JMenuItem(”全选(A)“), };

private JTextArea textArea;//文本区域 private JScrollPane js;//滚动条 private JPanel jp;private FileDialog openFileDialog;//打开保存对话框 private FileDialog saveFileDialog;private Toolkit toolKit;//获取默认工具包。private Clipboard clipboard;//获取系统剪切板 private String fileName;//设置默认的文件名

/** * MiniEdit 方法定义 * * 实现记事本初始化 * **/ public MiniNote(){

fileName = ”无标题“;toolKit = Toolkit.getDefaultToolkit();clipboard = toolKit.getSystemClipboard();textArea =new JTextArea();js = new JScrollPane(textArea);jp = new JPanel();openFileDialog = new FileDialog(this,”打开“,FileDialog.LOAD);saveFileDialog = new FileDialog(this,”另存为“,FileDialog.SAVE);

js.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);jp.setLayout(new GridLayout(1,1));jp.add(js);textArea.setComponentPopupMenu(popupMenu);//文本区域添加右键 textArea.add(popupMenu);add(jp);setTitle(”迷你记事本“);setFont(new Font(”Times New Roman“,Font.PLAIN,15));setBackground(Color.white);setSize(800,600);setJMenuBar(menuBar);menuBar.add(file);menuBar.add(edit);menuBar.add(format);menuBar.add(view);menuBar.add(help);for(int i=0;i<4;i++){ file.add(menuItem[i]);edit.add(menuItem[i+4]);} for(int i=0;i<3;++i){ edit.add(menuItem[i+15]);} for(int i=0;i<2;++i){ format.add(menuItem[i+8]);help.add(menuItem[i+11]);} view.add(menuItem[10]);file.add(menuItem[14]);for(int i=0;i<6;++i){ popupMenu.add(menuItem1[i]);}

//窗口监听

addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ e.getWindow().dispose();System.exit(0);} });//注册各个菜单项的事件监听器

for(int i=0;i

Object eventSource = e.getSource();if(eventSource == menuItem[0])//新建动作 { textArea.setText(”“);} else if(eventSource == menuItem[1])//打开动作 { openFileDialog.setVisible(true);fileName = openFileDialog.getDirectory()+openFileDialog.getFile();if(fileName!= null){ openFile(fileName);} } else if(eventSource ==menuItem[2])//保存动作 { saveFileDialog.setVisible(true);fileName = saveFileDialog.getDirectory()+saveFileDialog.getFile();if(fileName!=null){ writeFile(fileName);} } else if(eventSource==menuItem[14])//退出动作 { System.exit(0);} else if(eventSource == menuItem[4]||eventSource == menuItem1[5])//全选动作 { textArea.selectAll();} else if(eventSource == menuItem[5]||eventSource == menuItem1[2])//复制动作 { String text = textArea.getSelectedText();StringSelection selection= new StringSelection(text);clipboard.setContents(selection,null);} else if(eventSource == menuItem[6]||eventSource == menuItem1[1])//剪切动作 { String text = textArea.getSelectedText();StringSelection selection = new StringSelection(text);clipboard.setContents(selection,null);textArea.replaceRange(”“, textArea.getSelectionStart(), textArea.getSelectionEnd());}

else if(eventSource == menuItem[7]||eventSource == menuItem1[3])//粘贴动作 { Transferable contents = clipboard.getContents(this);if(contents==null)return;String text;text=”“;try { text =(String)contents.getTransferData(DataFlavor.stringFlavor);} catch(Exception ex){

} textArea.replaceRange(text, textArea.getSelectionStart(),textArea.getSelectionEnd());} else if(eventSource == menuItem[8])//自动换行 { if(textArea.getLineWrap())textArea.setLineWrap(false);else textArea.setLineWrap(true);

} else if(eventSource == menuItem[9])//字体 {//实例化字体类

FontDialog fontdialog = new FontDialog(new JFrame(),”字体“,true);textArea.setFont(fontdialog.showFontDialog());//设置字体 }

else if(eventSource == menuItem[11])//帮助 { try { String filePath = ”C:/WINDOWS/Help/notepad.hlp“;Runtime.getRuntime().exec(”cmd.exe /c “+filePath);} catch(Exception ee){ JOptionPane.showMessageDialog(this,”打开系统的记事本帮助文件出错!“,”错误信息“,JOptionPane.INFORMATION_MESSAGE);} } else if(eventSource == menuItem[12])//关于记事本 { String help = ”记事本 版本1.0n操作系统:WIN 8 n编译器:eclipsen版权“ + ”所有: ESTON YANG n最终解释权归本人所有“ + ”“ + ”nBuild By 冯洋“ + ”n课程设计:JAVA“;JOptionPane.showConfirmDialog(null, help, ”关于记事本“, JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE);

} else if(eventSource == menuItem[15]||eventSource == menuItem[16])//查找下一个 { search();

} else if(eventSource == menuItem[17])//替换 { substitude();} else if(eventSource == menuItem[3])//打印 { try { textArea.print();} catch(PrinterException e1){ e1.printStackTrace();}

} } /** * openFile方法 * * 从TXT读进数据到记事本 * **/ public void openFile(String fileName){

try {

File file = new File(fileName);FileReader readIn = new FileReader(file);int size =(int)file.length();int charsRead = 0;char[] content = new char[size];while(readIn.ready()){ charsRead += readIn.read(content,charsRead,size-charsRead);} readIn.close();textArea.setText(new String(content,0,charsRead));} catch(Exception e){ System.out.println(”Error opening file!“);} } /** * saveFile方法 * * 从记事本写进数据到TXT * **/ public void writeFile(String fileName){ try { File file = new File(fileName);FileWriter write = new FileWriter(file);write.write(textArea.getText());write.close();} catch(Exception e){ System.out.println(”Error closing file!“);} } /** * substitude方法 * * 实现替换功能 * */ public void substitude(){

final JDialog findDialog = new JDialog(this, ”查找与替换“, true);Container con = findDialog.getContentPane();con.setLayout(new FlowLayout(FlowLayout.LEFT));JLabel searchContentLabel = new JLabel(”查找内容(N):“);JLabel replaceContentLabel = new JLabel(”替换为(P):“);final JTextField findText = new JTextField(30);final JTextField replaceText = new JTextField(30);final JCheckBox matchcase = new JCheckBox(”区分大小写(C)“);ButtonGroup bGroup = new ButtonGroup();final JRadioButton up = new JRadioButton(”向上(U)“);final JRadioButton down = new JRadioButton(”向下(D)“);down.setSelected(true);//默认向下搜索

bGroup.add(up);bGroup.add(down);

JButton searchNext = new JButton(”查找下一个(F)“);JButton replace = new JButton(”替换(R)“);final JButton replaceAll = new JButton(”全部替换(A)“);

//”替换“按钮的事件处理

replace.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ if(replaceText.getText().length()== 0 && textArea.getSelectedText()!= null)

textArea.replaceSelection(”“);if(replaceText.getText().length()> 0 && textArea.getSelectedText()!= null)

textArea.replaceSelection(replaceText.getText());} });

//”替换全部“按钮的事件处理

replaceAll.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ textArea.setCaretPosition(0);//将光标放到编辑区开头 int a = 0, b = 0, replaceCount = 0;if(findText.getText().length()== 0){ JOptionPane.showMessageDialog(findDialog, ”请填写查找内容!“, ”提示“,JOptionPane.WARNING_MESSAGE);findText.requestFocus(true);return;} while(a >-1){ int FindStartPos = textArea.getCaretPosition();//获取光标位置

String str1, str2, str3, str4, strA, strB;str1 = textArea.getText();str2 = str1.toLowerCase();str3 = findText.getText();str4 = str3.toLowerCase();if(matchcase.isSelected())//大小写区分 { strA = str1;strB = str3;} else { strA = str2;strB = str4;}

if(up.isSelected())//向上搜索

{ if(textArea.getSelectedText()== null){ a = strA.lastIndexOf(strB, FindStartPos1);} } else //向下搜索

{ if(textArea.getSelectedText()== null){ a = strA.indexOf(strB, FindStartPos);

} else { a = strA.indexOf(strB, FindStartPos-findText.getText().length()+ 1);} }

if(a >-1){ if(up.isSelected()){

textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} else if(down.isSelected()){

textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} } else { if(replaceCount == 0){ JOptionPane.showMessageDialog(findDialog,”找不到您查找的内容!“, ”记事本“,JOptionPane.INFORMATION_MESSAGE);} else { JOptionPane.showMessageDialog(findDialog, ”成功替换“+ replaceCount + ”个匹配内容!“, ”替换成功“,JOptionPane.INFORMATION_MESSAGE);} } if(replaceText.getText().length()== 0&& textArea.getSelectedText()!= null)//用空字符代替选定内容

{

textArea.replaceSelection(”“);replaceCount++;} if(replaceText.getText().length()> 0&& textArea.getSelectedText()!= null)//用指定字符代替选定内容 {

textArea.replaceSelection(replaceText.getText());replaceCount++;} }//end while } });

//”查找下一个“按钮事件处理

searchNext.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){ int a = 0, b = 0;int FindStartPos = textArea.getCaretPosition();String str1, str2, str3, str4, strA, strB;str1 = textArea.getText();str2 = str1.toLowerCase();str3 = findText.getText();str4 = str3.toLowerCase();

//”区分大小写“的CheckBox被选中

if(matchcase.isSelected())//区分大小写

{ strA = str1;strB = str3;} else //不区分大小写 { strA = str2;strB = str4;} if(up.isSelected())//向上搜索

{ if(textArea.getSelectedText()== null){

a = strA.lastIndexOf(strB, FindStartPosfindText.getText().length()findText.getText().length()+ 1);} } if(a >-1){ if(up.isSelected()){

textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} else if(down.isSelected()){

textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} } else { JOptionPane.showMessageDialog(null, ”找不到您查找的内容!“, ”记事本“, JOptionPane.INFORMATION_MESSAGE);} } });

//”取消“按钮及事件处理

JButton cancel = new JButton(”取消“);cancel.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ findDialog.dispose();} });//创建”查找与替换“对话框的界面

JPanel bottomPanel = new JPanel();JPanel centerPanel = new JPanel();JPanel topPanel = new JPanel();JPanel direction = new JPanel();

direction.setBorder(BorderFactory.createTitledBorder(”方向“));direction.add(up);direction.add(down);

JPanel replacePanel = new JPanel();replacePanel.setLayout(new GridLayout(1, 2));replacePanel.add(searchNext);replacePanel.add(replace);replacePanel.add(replaceAll);replacePanel.add(cancel);

topPanel.add(searchContentLabel);topPanel.add(findText);

centerPanel.add(replaceContentLabel);centerPanel.add(replaceText);centerPanel.add(replacePanel);

bottomPanel.add(matchcase);bottomPanel.add(direction);

con.add(replacePanel);con.add(topPanel);con.add(centerPanel);con.add(bottomPanel);

//设置”查找与替换“对话框的大小、可更改大小(否)、位置和可见性

findDialog.setSize(550, 240);findDialog.setResizable(true);findDialog.setLocation(230, 280);findDialog.setVisible(true);}//方法mySearch()结束 /** * search方法 * * 实现查找功能 * */ public void search(){

final JDialog findDialog = new JDialog(this, ”查找下一个“, true);Container con = findDialog.getContentPane();con.setLayout(new FlowLayout(FlowLayout.LEFT));JLabel searchContentLabel = new JLabel(” 查找内容(N):“);

final JTextField findText = new JTextField(17);final JCheckBox matchcase = new JCheckBox(”区分大小写(C)“);ButtonGroup bGroup = new ButtonGroup();final JRadioButton up = new JRadioButton(”向上(U)“);final JRadioButton down = new JRadioButton(”向下(D)“);down.setSelected(true);//默认向下搜索

bGroup.add(up);bGroup.add(down);

JButton searchNext = new JButton(”查找下一个(F)“);

//”查找下一个“按钮事件处理

searchNext.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){ int a = 0, b = 0;int FindStartPos = textArea.getCaretPosition();String str1, str2, str3, str4, strA, strB;str1 = textArea.getText();str2 = str1.toLowerCase();str3 = findText.getText();str4 = str3.toLowerCase();

//”区分大小写“的CheckBox被选中

if(matchcase.isSelected())//不区分大小写

{ strA = str1;strB = str3;} else //区分大小写 { strA = str2;strB = str4;} if(up.isSelected())//向上搜索

{ if(textArea.getSelectedText()== null){

a = strA.lastIndexOf(strB, FindStartPosfindText.getText().length()findText.getText().length()+ 1);} } if(a >-1){ if(up.isSelected()){

textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} else if(down.isSelected()){

textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} } else { JOptionPane.showMessageDialog(null, ”找不到您查找的内容!“, ”记事本“, JOptionPane.INFORMATION_MESSAGE);} } });

//”取消“按钮及事件处理

JButton cancel = new JButton(” 取消 “);cancel.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ findDialog.dispose();} });//创建”替换“对话框的界面

JPanel bottomPanel = new JPanel();JPanel centerPanel = new JPanel();JPanel topPanel = new JPanel();JPanel direction = new JPanel();direction.setBorder(BorderFactory.createTitledBorder(”方向“));direction.add(up);direction.add(down);topPanel.add(searchContentLabel);topPanel.add(findText);topPanel.add(searchNext);bottomPanel.add(matchcase);bottomPanel.add(direction);bottomPanel.add(cancel);con.add(topPanel);con.add(centerPanel);con.add(bottomPanel);//设置”替换“对话框的大小、可更改大小(否)、位置和可见性

findDialog.setSize(425, 200);findDialog.setResizable(true);findDialog.setLocation(230, 280);findDialog.setVisible(true);}

/** * 主函数 * * * **/ public static void main(String[] args){

MiniNote note = new MiniNote();note.setVisible(true);}

} //字体类

import java.awt.Font;import java.awt.GraphicsEnvironment;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.border.*;import java.util.*;public class FontDialog {

private Dialog fontdialog;private JButton okButton, cancelButton;private int width = 480;private int height = 250;private String name = ”Serif“;private int type = 0;private int size = 12;private Font customFont = new Font(”宋体“, Font.ITALIC, 12);private boolean okpressed = false;private boolean cancelpressed = false;private JLabel lbl1 = new JLabel(”字体:“);private JLabel lbl2 = new JLabel(”字形:“);private JLabel lbl3 = new JLabel(”大小:“);private JTextArea area;String[] zx = { ”常规“, ”加粗“, ”斜体“, ”基线“ };String[] dx = {”8“ , ”9“ , ”10“, ”12“, ”14“, ”15“, ”16“, ”18“,”20“, ”21“, ”22“, ”24“, ”26“, ”28“, ”30“, ”36“,”48“, ”54“,”72“ , ”89“};JLabel lbl = new JLabel(”字体样式Style“);private JComboBox cb1, cb3 = new JComboBox(dx), cb2 = new JComboBox(zx);private String[] zt;

public FontDialog(Frame owner, String title, boolean modal){

init();fontdialog = new Dialog(owner, title, modal);fontdialog.setLocation(owner.getLocation());fontdialog.setLayout(new FlowLayout());fontdialog.setSize(getWidth(), getHeight());fontdialog.add(lbl1);fontdialog.add(cb1);fontdialog.add(lbl2);fontdialog.add(cb2);fontdialog.add(lbl3);fontdialog.add(cb3);fontdialog.add(okButton);fontdialog.add(cancelButton);fontdialog.add(area);fontdialog.setResizable(false);fontdialog.setAlwaysOnTop(true);cancelButton.addActionListener(new fontListener());okButton.addActionListener(new fontListener());fontdialog.addWindowListener(new fontListener());

cb1.addItemListener(new ItemListener(){ // public void itemStateChanged(ItemEvent event){ //获取选择用户的字体类型

name =(String)event.getItem();setCustomFont(new Font(name, type, size));} });

cb2.addItemListener(new ItemListener(){ // public void itemStateChanged(ItemEvent event){ //获取选择用户的字形

String s =(String)event.getItem();if(s.equals(”常规“)){ type = Font.PLAIN;setCustomFont(new Font(name, type, size));} else if(s.equals(”加粗“)){ type = Font.BOLD;

字体动作 添加监听器字形动作 添加监听器 setCustomFont(new Font(name, type, size));} else if(s.equals(”斜体“)){ type = Font.ITALIC;setCustomFont(new Font(name, type, size));} else { type = Font.CENTER_BASELINE;setCustomFont(new Font(name, type, size));} } });

cb3.addItemListener(new ItemListener(){ //大小动作 public void itemStateChanged(ItemEvent event){ //添加监听器获取选择用户的字号大小

size =(new Integer((String)event.getItem()).intValue());setCustomFont(new Font(name, type, size));} });

}

public Font showFontDialog(){ fontdialog.setVisible(true);if(okpressed){ return getCustomFont();} else { return customFont;} }

private void init(){ //初始化 okButton = new JButton(”确定“);cancelButton = new JButton(”取消“);GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();zt = ge.getAvailableFontFamilyNames();cb1 = new JComboBox(zt);cb1.setMaximumRowCount(6);area = new JTextArea(6, 30);cb3 = new JComboBox(dx);cb3.setMaximumRowCount(6);okButton.setFocusable(true);area.setEditable(false);area.setText(new Date().toString());area.setBorder(new TitledBorder(”字体样式"));}

public void setWidth(int width){ this.width = width;}

public void setHeight(int height){ this.height = height;}

private int getWidth(){ return(this.width);}

private int getHeight(){ return(this.height);}

private void setCustomFont(Font customFont)//{ this.customFont = customFont;area.setFont(customFont);area.revalidate();}

public String toString(){ return FontDialog.class.toString();}

设置字体 public Font getCustomFont()//获取字体 { return(this.customFont);}

private class fontListener extends WindowAdapter implements ActionListener //监听事件类 { public void windowClosing(WindowEvent e){ fontdialog.dispose();}

public void actionPerformed(ActionEvent e){ if(e.getSource()== cancelButton){ fontdialog.dispose();cancelpressed = true;} else if(e.getSource()== okButton){ okpressed = true;setCustomFont(new Font(name, type, size));fontdialog.dispose();} } } }

第四篇:java实验报告

学 生 实 验 报 告 册

2013——2014学年第1学期

项目名称: Java Web 学院: 信电

班级:

11计算机科学与技术一班 学号: 155140007 姓名: 伍振东 指导教师: 李竹林 完成时间: 2013/9/28

一、实验要求

1.用HTML语言编写如下样式的网页

2.可以用Dreamweaver,推荐手动编写HTML带代码

3.图片从清华大学的网站自己取得。http://www.xiexiebang.com“>

第五篇:JAVA实验报告

实验报告

一、实验目的巩固复习课上所讲内容,进一步熟悉面向对象编程。

二、实验内容

编写程序求点到原点的距离

三、程序清单及运行结果

abstractclass Distance

{

abstract int distance();

}

public class Point{

public double x,y;

public Point(double i,double j){

x=i;

y=j;

}

public double distance(){

return Math.sqrt(x*x+y*y);

}

public static void main(String args[]){

Point p=new Point(1,1);

System.out.println(“p.distance()=”+p.distance());p=new Point3d(1,1,1);

System.out.println(“p.distance()=”+p.distance());}

}

class Point3d extends Point{

public double z;

public Point3d(double i,double j,double k){

super(i,j);

z=k;

}

public double distance(){

return Math.sqrt(x*x+y*y+z*z);

}

}

运行结果:

p.distance()=1.4142***1

p.distance()=1.***

2四、实验中出现的问题及解决方法

本次实验比较简单,没有出现较大的问题。

五、实验总结

通过本次实验,可以很好的将老师上课讲授的内容进行回顾,更深刻的理解面向对象编程,对以后的学习有很大帮助。实验中需要注意的问题是方法重载的相关概念以及明晰方法重载与方法重写的异同点;对super关键字的正确使用。

下载JAVA实验报告册范文合集word格式文档
下载JAVA实验报告册范文合集.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    JAVA聊天室实验报告

    Java聊天室实验报告 班 级:学 号:姓 名: ****** ******** *** 目录: 一、实验目的.......................................................3 二、所需技术 ......................

    Java实验报告电子稿(汇编)

    课程名称: 学生学号:学生姓名: 所属院部:指导教师: 学生实验报告 (理工类) JAVA程序设计专业班级: 20 15——20 16学年第2学期金陵科技学院教务处制 实验项目名称:JAVA编程基础实验......

    java实验报告4

    实验项目名称:实验4 基于Socket的网络编程 【实验目的】 1、 理解Java的基于套接字的网络通信原理。 2、 理解客户端和服务器的概念。 3、 学习使用套接字实现客户端和服务......

    Java上机实验报告

    Homework3实验报告 一、实验目的与要求 1、掌握Java中类和接口的基本知识; 2、继承的基本知识; 3、集合的基本操作 二、实验内容 1.PIMCollection 类 创建一个可以管理PIMEnti......

    java实验报告(精选五篇)

    中 南 民 族 大 学 实 验 报 告 2010—2011第二学期 课程名称: Java程序设计院系:计算机科学学院年级: 2009 专业:计算机科学与技术大班 学号: 09061060 姓 名: 李亚巧 指......

    java实验报告4

    实验报告_实验4 常用类(学生学号_姓名) 一、实验目的 1.掌握String类的基本构造方法和常用方法的使用; 2.熟悉StringBuffer类的追加、插入、查找、替换、删除等操作; 3.熟悉Math......

    Java EE实验报告

    学 生 实 验 报 告 课程名称: 学生学号: 所属院部: (理工类) J2EE程序设计 专业班级: 学生姓名: 信息技术学院 指导教师: 20 13 ——20 14 学年 第 2 学期 金陵科技学院教务处制......

    JAVA实验报告心得

    北京联合大学 信息学院 “面向对象程序设计”课 程上机实验报告题 目: java上机实验心得体会姓名(学号):专 业: 计算机科学与技术编 制 时 间: 2012年12月19日版 本: 1.0.0 指......