Java程序设计课程实验代码及答案

时间:2019-05-12 21:09:37下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《Java程序设计课程实验代码及答案》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《Java程序设计课程实验代码及答案》。

第一篇:Java程序设计课程实验代码及答案

Java程序设计课程实验

上机实践1 初识JAVA.................................................................................................................3 实验

1一个简单的应用程序....................................................................................................3 实验

2一个简单的JAVA APPLET程序......................................................................................3 实验

3联合编译........................................................................................................................4 上机实践2 基本数据类型与控制语句........................................................................................5 实验1

输出希腊字母表............................................................................................................5 实验2

回文数............................................................................................................................6 实验3

猜数字游戏....................................................................................................................8 上机实践3 类与对象....................................................................................................................9 实验1

三角形、梯形和圆形的类封装.....................................................................................9 实验

2实例成员与类成员......................................................................................................12 实验

3使用PACKAGE语句与IMPORT语句............................................................................14 上机实践4 继承与接口..............................................................................................................16 实验

1继承..............................................................................................................................16 实验2

上转型对象..................................................................................................................19 实验3 接口回调.....................................................................................................................21 上机实践5 字符串、时间与数字..............................................................................................23 实验

1STRING类的常用方法..................................................................................................23 实验

2比较日期的大小..........................................................................................................24 实验

3处理大整数..................................................................................................................25 上机实践6 组件及事件处理......................................................................................................26 实验1

算术测试......................................................................................................................26 实验2

信号灯..........................................................................................................................29 实验3

布局与日历..................................................................................................................31 上机实践7 组件及事件处理2...................................................................................................35 实验1

方程求根......................................................................................................................35 实验2

字体对话框..................................................................................................................38 实验3

英语单词拼写训练......................................................................................................41 上机实践8 多线程.....................................................................................................................45 实验1

汉字打字练习..............................................................................................................45 实验2

旋转的行星..................................................................................................................47 实验3

双线程接力..................................................................................................................51 上机实践9 输入输出流..............................................................................................................54 实验1

学读汉字......................................................................................................................54 实验2

统计英文单词字..........................................................................................................57 实验2

读取ZIP文件...............................................................................................................61 上机实践10 JAVA 中的网络编程............................................................................................62 实验1

读取服务器端文件......................................................................................................62 实验2

使用套接字读取服务器端对象...................................................................................64 实验3

基于UDP的图像传输................................................................................................67 上机实践11 数据结构................................................................................................................71 实验1

扫雷小游戏..................................................................................................................71 实验2

排序与查找..................................................................................................................76 实验3

使用TREESET排序......................................................................................................77 上机实践12 JAVA SWING.......................................................................................................79 实验1

JLAYEREDPANE分层窗格............................................................................................79 实验2

使用表格显示日历......................................................................................................80 实验3

多文档界面(MDI)...................................................................................................83 2

上机实践1 初识Java 实验1 一个简单的应用程序

1.答案:

【代码1】:

System.out.println(“你好,很高兴学习Java”);【代码2】:

System.out.println(“We are students”);2.模板代码

Hello.java public class Hello {

public static void main(String args[ ])

{

【代码1】

//命令行窗口输出“你好,很高兴学习Java”

A a=new A();

a.fA();

} } class A {

void fA()

{

【代码2】

//命令行窗口输出“We are students”

} } 实验2 一个简单的Java Applet程序

1.答案:

【代码1】:

g.drawString(“这是一个Java Applet 程序”,10,30);【代码2】:

g.drawString(“我改变了字体”,20,50);2.模板代码

FirstApplet.java import java.applet.*;3 import java.awt.*;public class FirstApplet extends Applet { public void paint(Graphics g){ g.setColor(Color.blue);【代码1】//在Java Applet中绘制一行文字:“这是一个Java Applet 程序” g.setColor(Color.red);g.setFont(new Font(“宋体”,Font.BOLD,36));【代码2】//在Java Applet中绘制一行文字:“我改变了字体” } } 实验3 联合编译

1.答案:

【代码1】:

System.out.println(“你好,只需编译我”);【代码2】:

System.out.println(“I am A”);【代码3】:

System.out.println(“I am B”);【代码4】:

System.out.println(“I am C”);2.模板代码

模板1:Hello.java public class MainClass { public static void main(String args[ ]){ 【代码1】 //命令行窗口输出“你好,只需编译我” A a=new A();a.fA();B b=new B();b.fB();} }

模板2 :A.java

public class A { void fA(){ 【代码2】 //命令行窗口输出“I am A” } } 模板3 :B.java

public class B { void fB(){ 【代码3】 //命令行窗口输出“I am B” } } 模板4 :C.java

public class C { void fC(){ 【代码4】 //命令行窗口输出“I am C” } }

上机实践2 基本数据类型与控制语句实验1 输出希腊字母表

1.答案:

【代码1】: startPosition=(int)cStart;

【代码2】: endPosition=(int)cEnd;

【代码3】: c=(char)i;

2.模板代码

GreekAlphabet.java

public class GreekAlphabet {

public static void main(String args[ ])

{

int startPosition=0,endPosition=0;

char cStart='α',cEnd='ω';

【代码1】

//cStart做int型转换据运算,并将结果赋值给startPosition

【代码2】

//cEnd做int型转换运算,并将结果赋值给endPosition

System.out.println(“希腊字母'α'在unicode表中的顺序位置:”+(int)c);

System.out.println(“希腊字母表:”);

for(int i=startPosition;i<=endPosition;i++)

{

char c='';

【代码3】

//i做char型转换运算,并将结果赋值给c

System.out.print(“ ”+c);if((i-startPosition+1)%10==0)

System.out.println(“");

}

} } 实验2 回文数

1.答案:

【代码1】: number<=99999&&number>=1 【代码2】: d5=number/10000;【代码3】: d4=number%10000/1000;【代码4】: d3=number%1000/100;【代码5】: d5!=0 【代码6】: d1==d5&&d2==d4 【代码7】: d4!=0

【代码8】: d1==d4&&d2==d3 【代码9】: d3!=0 【代码10】:d1==d3 2.模板代码

Number.java import javax.swing.JOptionPane;public class Number {

public static void main(String args[])

{

int number=0,d5,d4,d3,d2,d1;

String str=JOptionPane.showInputDialog(”输入一个1至99999之间的数“);

number=Integer.parseInt(str);

if(【代码1】)//判断number在1至99999之间的条件

{

【代码2】

//计算number的最高位(万位)d5

【代码3】

//计算number的千位d4

【代码4】

//计算number的百位d3

d2=number%100/10;

d1=number%10;

if(【代码5】)//判断number是5位数的条件

{

System.out.println(number+”是5位数“);

if(【代码6】)//判断number是回文数的条件

{

System.out.println(number+”是回文数“);

}

else

{

System.out.println(number+”不是回文数“);

}

}

else if(【代码7】)//判断number是4位数的条件

{

System.out.println(number+”是4位数“);

if(【代码8】)//判断number是回文数的条件码

{

System.out.println(number+”是回文数“);

}

else

{

System.out.println(number+”不是回文数“);

}

}

else if(【代码9】)//判断number是3位数的条件

{

System.out.println(number+”是3位数“);

if(【代码10】)//判断number是回文数的条件

{

System.out.println(number+”是回文数“);

}

else

{

System.out.println(number+”不是回文数“);

}

}

else if(d2!=0)

{

System.out.println(number+”是2位数“);

if(d1==d2)

{

System.out.println(number+”是回文数“);

}

else

{

System.out.println(number+”不是回文数“);

}

}

else if(d1!=0)

{

System.out.println(number+”是1位数“);

System.out.println(number+”是回文数“);

}

}

else

{

System.out.printf(”n%d不在1至99999之间“,number);

}

} } 实验3 猜数字游戏

1.答案:

【代码1】: yourGuess!=realNumber 【代码2】: yourGuess>realNumber

【代码3】: yourGuess

2.模板代码

GuessNumber.java import javax.swing.JOptionPane;public class GuessNumber {

public static void main(String args[ ])

{

System.out.println(”给你一个1至100之间的整数,请猜测这个数“);

int realNumber=(int)(Math.random()*100)+1;

int yourGuess=0;

String str=JOptionPane.showInputDialog(”输入您的猜测:“);

yourGuess=Integer.parseInt(str);

while(【代码1】)//循环条件

{

if(【代码2】)//条件代码

{

str=JOptionPane.showInputDialog(”猜大了,再输入你的猜测:“);

yourGuess=Integer.parseInt(str);

}

else if(【代码3】)//条件代码

{

str=JOptionPane.showInputDialog(”猜小了,再输入你的猜测:“);

yourGuess=Integer.parseInt(str);

}

}

System.out.println(”猜对了!“);

} }

上机实践3 类与对象

实验1 三角形、梯形和圆形的类封装

1.答案:

【代码1】:

sideA=a;sideB=b;sideC=c;

【代码2】:

a+b>c&&a+c>b&&c+b>a

【代码3】:

boo=true;

【代码4】:

boo=false;

【代码5】:

if(boo)

{

length=sideA+sideB+sideC;

return length;

}

else

{

System.out.println(”不是一个三角形,不能计算周长“);

return 0;

}

【代码6】:

sideA=a;sideB=b;sideC=c;【代码7】: a+b>c&&a+c>b&&c+b>a 【代码8】: boo=true;【代码9】: boo=false;【代码10】:

above=a;

bottom=b;

height=h;

【代码11】:

area=(above+bottom)/2*height;

return area;【代码12】: radius=r;9 【代码13】: return 3.14*radius*radius;【代码14】: return 3.14*2*radius;【代码15】: circle=new Circle(10);【代码16】: trangle=new Trangle(3,4,5);【代码17】: lader=new Lader(3,4,10);【代码18】: length=circle.getLength();【代码19】: area=circle.getArea();【代码20】: length=trangle.getLength();【代码21】: area=trangle.getArea();【代码22】: area=lader.getArea();【代码23】: trangle.setABC(12,34,1);【代码24】: area=trangle.getArea();【代码25】: length=trangle.getLength();

2.模板代码

AreaAndLength.java

class Trangle

{

double sideA,sideB,sideC,area,length;

boolean boo;

public Trangle(double a,double b,double c)

{

【代码1】 //参数a,b,c分别赋值给sideA,sideB,sideC

if(【代码2】)//a,b,c构成三角形的条件表达式

{

【代码3】 //给boo赋值。

}

else

{

【代码4】 //给boo赋值。

}

}

double getLength()

{

【代码5】 //方法体,要求计算出length的值并返回

}

public double getArea()

{

if(boo)

{

double p=(sideA+sideB+sideC)/2.0;

area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));

return area;

}

else

{

System.out.println(”不是一个三角形,不能计算面积“);

return 0;

}

}

public void setABC(double a,double b,double c)

{

【代码6】 //参数a,b,c分别赋值给sideA,sideB,sideC

if(【代码7】)//a,b,c构成三角形的条件表达式

{

【代码8】 //给boo赋值。

}

else

{

【代码9】 //给boo赋值。

}

} } class Lader {

double above,bottom,height,area;

Lader(double a,double b,double h)

{

【代码10】 //方法体,将参数a,b,c分别赋值给above,bottom,height

}

double getArea()

{

【代码11】 //方法体,,要求计算出area返回

} }

class Circle {

double radius,area;

Circle(double r)

{

【代码12】 //方法体

}

double getArea()

{

【代码13】 //方法体,要求计算出area返回

}

double getLength()

{

【代码14】 //getArea方法体的代码,要求计算出length返回

}

void setRadius(double newRadius)

{

radius=newRadius;

}

double getRadius()

{

return radius;

} } public class AreaAndLength {

public static void main(String args[])

{

double length,area;

Circle circle=null;

Trangle trangle;

Lader lader;

【代码15】 //创建对象circle

【代码16】 //创建对象trangle。

【代码17】 //创建对象lader

【代码18】 // circle调用方法返回周长并赋值给length

System.out.println(”圆的周长:“+length);

【代码19】 // circle调用方法返回面积并赋值给area

System.out.println(”圆的面积:“+area);

【代码20】 // trangle调用方法返回周长并赋值给length

System.out.println(”三角形的周长:“+length);

【代码21】 // trangle调用方法返回面积并赋值给area

System.out.println(”三角形的面积:“+area);

【代码22】 // lader调用方法返回面积并赋值给area

System.out.println(”梯形的面积:“+area);

【代码23】 // trangle调用方法设置三个边,要求将三个边修改为12,34,1。

【代码24】 // trangle调用方法返回面积并赋值给area

System.out.println(”三角形的面积:“+area);

【代码25】 // trangle调用方法返回周长并赋值给length

System.out.println(”三角形的周长:“+length);

} } 实验2 实例成员与类成员

1.答案:

【代码1】: float a;

【代码2】: static float b;

【代码3】: this.a=a;

【代码4】: this.b=b;【代码5】: A.b=100;

【代码6】: A.inputB();

【代码7】: cat.setA(200);【代码8】: cat.setB(400);【代码9】: dog.setA(150);【代码10】:dog.setB(300);【代码11】:cat.inputA();【代码12】:cat.inputB();【代码13】:dog.inputA();【代码14】:dog.inputB();2.模板代码

Example.java class A {

【代码1】

//声明一个float型实例变量a

【代码2】

//声明一个float型类变量b,即static变量b

void setA(float a)

{

【代码3】

//将参数a的值赋值给成员变量a

}

void setB(float b)

{

【代码4】

//将参数b的值赋值给成员变量b

}

float getA()

{

return a;

}

float getB()

{

return b;

}

void inputA()

{

System.out.println(a);

}

static void inputB()

{

System.out.println(b);

} } public class Example {

public static void main(String args[])

{

【代码5】

//通过类名操作类变量b,并赋值100

【代码6】

//通过类名调用方法inputB()

A cat=new A();

A dog=new A();

【代码7】

//cat象调用方法setA(int a)将cat的成员a的值设置为200

【代码8】

//cat调用方法setB(int b)将cat的成员b的值设置为400

【代码9】

//dog象调用方法setA(int a)将dog的成员a的值设置为150

【代码10】

//dog调用方法setB(int b)将dog的成员b的值设置为300

【代码11】

//cat调用inputA()。

【代码12】

//cat调用inputB()。

【代码13】

//dog调用inputA()。

【代码14】

//dog调用inputB()。

} } 实验3 使用package语句与import语句

1.答案:无 2.模板代码

SquareEquation.java package tom.jiafei;public class SquareEquation {

double a,b,c;

double root1,root2;

boolean boo;

public SquareEquation(double a,double b,double c)

{

this.a=a;

this.b=b;

this.c=c;

if(a!=0)

{

boo=true;

}

else

{

boo=false;

}

}

public void getRoots()

{

if(boo)

{

System.out.println(”是一元2次方程“);

double disk=b*b-4*a*c;

if(disk>=0)

{

root1=(-b+Math.sqrt(disk))/(2*a);

root2=(-b-Math.sqrt(disk))/(2*a);

System.out.printf(”方程的根:%f,%fn“,root1,root2);

}

else

{

System.out.printf(”方程没有实根n“);

}

}

else

{

System.out.println(”不是一元2次方程“);

}

}

public void setCoefficient(double a,double b,double c)

{

this.a=a;

this.b=b;

this.c=c;

if(a!=0)

{

boo=true;

}

else

{

boo=false;

}

} } SunRise.java import tom.jiafei.*;class SunRise {

public static void main(String args[ ])

{

SquareEquation equation=new SquareEquation(4,5,1);

equation.getRoots();

equation.setCoefficient(-3,4,5);

equation.getRoots();

} }

上机实践4 继承与接口

实验1 继承

1.答案:

【代码1】:

public void speakHello()

{

System.out.println(”你好,吃饭了吗?“);

}

【代码2】:

public void averageHeight()

{

height=173;

System.out.println(”中国人的平均身高:“+height+”厘米“);

}

【代码3】:

public void averageWeight()

{

weight=67.34;

System.out.println(”中国人的平均体重:“+weight+”公斤“);

}

【代码4】: System.out.println(”坐如钟,站如松,睡如弓“);

【代码5】:

public void speakHello()

{

System.out.println(”How do You do“);

}

【代码6】:

public void averageHeight()

{

height=188;

System.out.println(”Amerian Average height:“+height+” cm“);

}

【代码7】:

public void averageWeight()

{

weight=80.23;

System.out.println(”Amerian Average weight:“+weight+” kg“);

}

【代码8】: System.out.println(”直拳、钩拳“);

【代码9】:

public void speakHello()

{

System.out.println(”您好“);

}

【代码10】:

public void averageHeight()

{

height=16;

System.out.println(”北京人的平均身高:“+height+”厘米“);

}

【代码11】:

public void averageWeight()

{

weight=6;

System.out.println(”北京人的平均体重:“+weight+”公斤“);

}

【代码12】: System.out.println(”京剧术语“);2.模板代码

Example.java class People { protected double weight,height;public void speakHello(){ System.out.println(”yayawawa“);} public void averageHeight(){ height=173;System.out.println(”average height:“+height);} public void averageWeight(){ weight=70;System.out.println(”average weight:“+weight);} } class ChinaPeople extends People { 【代码1】 //重写public void speakHello()方法,要求输出类似“你好,吃了吗”这样的 //汉语信息

【代码2】 //重写public void averageHeight()方法,要求输出类似 //“中国人的平均身高:168.78厘米”这样的汉语信息 【代码3】 //重写public void averageWeight()方法,//要求输出类似“中国人的平均体重:65公斤”这样的汉语信息 public void chinaGongfu(){ 【代码4】//输出中国武术的信息,例如:”坐如钟,站如松,睡如弓“等 } } class AmericanPeople extends People { 【代码5】 //重写public void speakHello()方法,要求输出类似 //“How do you do”这样的英语信息。【代码6】 //重写public void averageHeight()方法 【代码7】 //重写public void averageWeight()方法 public void americanBoxing(){ 【代码8】//输出拳击的信息,例如,“直拳”、“钩拳”等 } } class BeijingPeople extends ChinaPeople { 【代码9】 //重写public void speakHello()方法,要求输出类似“您好”这样的汉语信息

【代码10】 //重写public void averageHeight()方法

【代码11】 //重写public void averageWeight()方法 public void beijingOpera(){ 【代码12】//输出京剧的信息 } } public class Example { public static void main(String args[]){ ChinaPeople chinaPeople=new ChinaPeople();18 AmericanPeople americanPeople=new AmericanPeople();BeijingPeople beijingPeople=new BeijingPeople();chinaPeople.speakHello();americanPeople.speakHello();beijingPeople.speakHello();chinaPeople.averageHeight();americanPeople.averageHeight();beijingPeople.averageHeight();chinaPeople.averageWeight();americanPeople.averageWeight();beijingPeople.averageWeight();chinaPeople.chinaGongfu();americanPeople.americanBoxing();beijingPeople.beijingOpera();beijingPeople.chinaGongfu();} } 实验2 上转型对象

1.答案:

【代码1】:

public double earnings()

{

return 50000.456;

} 【代码2】:

public double earnings()

{

return 12*2300;

}

【代码3】:

public double earnings()

{

return 52*500;

} 【代码4】:

for(int i=0;i

{

salaries=salaries+employee[i].earnings();

} 2.模板代码

HardWork.java abstract class Employee {

public abstract double earnings();} class YearWorker extends Employee {

【代码1】 //重写earnings()方法 } class MonthWorker extends Employee {

【代码2】 //重写earnings()方法。} class WeekWorker extends Employee {

【代码3】 //重写earnings()方法。} class Company {

Employee[] employee;

double salaries=0;

Company(Employee[] employee)

{

this.employee=employee;

}

public double salariesPay()

{

salaries=0;

【代码4】 //计算salaries。

return salaries;

}

} public class HardWork {

public static void main(String args[])

{

Employee[] employee=new Employee[20];

for(int i=0;i

{

if(i%3==0)

employee[i]=new WeekWorker();

else if(i%3==1)

employee[i]=new MonthWorker();

else if(i%3==2)

employee[i]=new YearWorker();

}

Company company=new Company(employee);

System.out.println(”公司年工资总额:“+company.salariesPay());

} }

实验3 接口回调

1.答案:

【代码1】:

public double computeWeight()

{ return 45.5;

} 【代码2】:

public double computeWeight()

{ return 65.5;

}

【代码3】:

public double computeWeight()

{

return 145;

}

【代码4】:

for(int k=0;k

{

totalWeights=totalWeights+goods[k].computeWeight();

}

2.模板代码

Road.java

interface ComputerWeight {

public double computeWeight();} class Television implements ComputerWeight {

【代码1】 //实现computeWeight()方法。} class Computer implements ComputerWeight {

【代码2】 //实现computeWeight()方法。}

class WashMachine implements ComputerWeight { 【代码3】 //实现computeWeight()方法。} class Car { ComputerWeight[] goods;

double totalWeights=0;

Car(ComputerWeight[] goods)

{

this.goods=goods;

}

public double getTotalWeights()

{

totalWeights=0;

【代码4】 //计算totalWeights

return totalWeights;

}

} public class Road {

public static void main(String args[])

{ ComputerWeight[] goodsOne=new ComputerWeight[50],goodsTwo=new ComputerWeight[22];

for(int i=0;i

{

if(i%3==0)

goodsOne[i]=new Television();

else if(i%3==1)

goodsOne[i]=new Computer();

else if(i%3==2)

goodsOne[i]=new WashMachine();

}

for(int i=0;i

{

if(i%3==0)

goodsTwo[i]=new Television();

else if(i%3==1)

goodsTwo[i]=new Computer();

else if(i%3==2)

goodsTwo[i]=new WashMachine();

}

Car 大货车=new Car(goodsOne);

System.out.println(”大货车装载的货物重量:“+大货车.getTotalWeights());

Car 小货车=new Car(goodsTwo);

System.out.println(”小货车装载的货物重量:“+小货车.getTotalWeights());

} } 上机实践5 字符串、时间与数字

实验1 String类的常用方法

模板代码

StringExample.java class StringExample {

public static void main(String args[])

{

String s1=new String(”you are a student“),s2=new String(”how are you“);

if(【代码1】)// 使用equals方法判断s1与s2是否相同

{

System.out.println(”s1与s2相同“);

}

else

{

System.out.println(”s1与s2不相同“);

}

String s3=new String(”***24“);

if(【代码2】)

//判断s3的前缀是否是“220302”。

{

System.out.println(”吉林省的身份证“);

}

String s4=new String(”你“),s5=new String(”我“);

if(【代码3】)//按着字典序s4大于s5的表达式。

{

System.out.println(”按字典序s4大于s5“);

}

else

{

System.out.println(”按字典序s4小于s5“);

}

int position=0;

String path=”c:javajspA.java“;

position=【代码5】 //获取path中最后出现目录分隔符号的位置

System.out.println(”c:javajspA.java中最后出现的位置:“+position);

String fileName=【代码6】//获取path中“A.java”子字符串。

System.out.println(”c:javajspA.java中含有的文件名:“+fileName);

String s6=new String(”100“),s7=new String(”123.678“);

int n1=【代码7】

//将s6转化成int型数据。

double n2=【代码8】

//将s7转化成double型数据。

double m=n1+n2;

System.out.println(m);

String s8=【代码9】 //String调用valuOf(int n)方法将m转化为字符串对象

position=s8.indexOf(”.“);

String temp=s8.substring(position+1);

System.out.println(”数字“+m+”有“+temp.length()+”位小数“);

String s9=new String(”ABCDEF“);

char a[]=【代码10】

//将s8存放到数组a中。

for(int i=a.length-1;i>=0;i--)

{

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

}

} } 实验2 比较日期的大小

模板代码 DateExample import java.util.*;import javax.swing.JOptionPane;public class DateExample {

public static void main(String args[ ])

{

String str=JOptionPane.showInputDialog(”输入第一个日期的年份:“);

int yearOne=Integer.parseInt(str);

str=JOptionPane.showInputDialog(”输入该年的月份:“);

int monthOne=Integer.parseInt(str);

str=JOptionPane.showInputDialog(”输入该月份的日期:“);

int dayOne=Integer.parseInt(str);

str=JOptionPane.showInputDialog(”输入第二个日期的年份:“);

int yearTwo=Integer.parseInt(str);

str=JOptionPane.showInputDialog(”输入该年的月份:“);

int monthTwo=Integer.parseInt(str);

str=JOptionPane.showInputDialog(”输入该月份的日期:“);

int dayTwo=Integer.parseInt(str);

Calendar calendar=【代码1】

//初始化日历对象

【代码2】

//将calendar的时间设置为yearOne年monthOne月dayOne日

long timeOne=【代码3】

//calendar表示的时间转换成毫秒

【代码4】

//将calendar的时间设置为yearTwo年monthTwo月dayTwo日

long timeTwo=【代码5】

//calendar表示的时间转换成毫秒。

Date date1=【代码6】

// 用timeOne做参数构造date1

Date date2=【代码7】

// 用timeTwo做参数构造date2

if(date2.equals(date1))

{

System.out.println(”两个日期的年、月、日完全相同“);

}

else if(date2.after(date1))

{

System.out.println(”您输入的第二个日期大于第一个日期“);

}

else if(date2.before(date1))

{

System.out.println(”您输入的第二个日期小于第一个日期“);

}

long days=【代码8】//计算两个日期相隔天数

System.out.println(yearOne+”年“+monthOne+”月“+dayOne+”日和“

+yearTwo+”年“+monthTwo+”月“+dayTwo+”相隔“+days+”天“);

}

} 实验3 处理大整数

模板代码

BigintegerExample import java.math.*;class BigIntegerExample { public static void main(String args[]){ BigInteger n1=new BigInteger(”***321987654321“), n2=new BigInteger(”***789123456789“), result=null;result=【代码1】//n1和n2做加法运算 System.out.println(”和:“+result.toString());result=【代码2】//n1和n2做减法运算 System.out.println(”差:“+result.toString());result=【代码3】//n1和n2做乘法运算 System.out.println(”积:“+result.toString());result=【代码4】//n1和n2做除法运算 System.out.println(”商:“+result.toString());BigInteger m=new BigInteger(”1968957“), COUNT=new BigInteger(”0“), ONE=new BigInteger(”1“), TWO=new BigInteger(”2“);System.out.println(m.toString()+”的因子有:“);for(BigInteger i=TWO;i.compareTo(m)<0;i=i.add(ONE)){ if((n1.remainder(i).compareTo(BigInteger.ZERO))==0){ COUNT=COUNT.add(ONE);System.out.print(” “+i.toString());} } System.out.println(”“);System.out.println(m.toString()+”一共有“+COUNT.toString()+”个因子“);} } 上机实践6 组件及事件处理

实验1 算术测试

模板代码 Teacher.java public class Teacher { int numberOne,numberTwo;String operator=”“;boolean right;public int giveNumberOne(int n){ numberOne=(int)(Math.random()*n)+1;return numberOne;} public int giveNumberTwo(int n){ numberTwo=(int)(Math.random()*n)+1;return numberTwo;} public String giveOperator(){ double d=Math.random();if(d>=0.5)operator=”+“;else operator=”-“;return operator;} public boolean getRight(int answer){ if(operator.equals(”+“))26 { if(answer==numberOne+numberTwo)right=true;else right=false;} else if(operator.equals(”-“)){ if(answer==numberOne-numberTwo)right=true;else right=false;} return right;} } ComputerFrame.java import java.awt.*;import java.awt.event.*;public class ComputerFrame extends Frame implements ActionListener { TextField textOne,textTwo,textResult;Button getProblem,giveAnwser;Label operatorLabel,message;Teacher teacher;ComputerFrame(String s){ super(s);teacher=new Teacher();setLayout(new FlowLayout());textOne=【代码1】 //创建textOne,其可见字符长是10 textTwo=【代码2】 //创建textTwo,其可见字符长是10 textResult=【代码3】 //创建textResult,其可见字符长是10 operatorLabel=new Label(”+“);message=new Label(”你还没有回答呢“);getProblem=new Button(”获取题目“);giveAnwser=new Button(”确认答案“);add(getProblem);add(textOne);add(operatorLabel);add(textTwo);add(new Label(”=“));add(textResult);add(giveAnwser);add(message);textResult.requestFocus();textOne.setEditable(false);textTwo.setEditable(false);【代码4】//将当前窗口注册为getProblem的ActionEvent事件监视器 【代码5】//将当前窗口注册为giveAnwser的ActionEvent事件监视器

【代码6】//将当前窗口注册为textResult的ActionEvent事件监视器 setBounds(100,100,450,100);setVisible(true);validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);} });} public void actionPerformed(ActionEvent e){ if(【代码7】)//判断事件源是否是getProblem { int number1=teacher.giveNumberOne(100);int number2=teacher.giveNumberTwo(100);String operator=teacher.givetOperator();textOne.setText(”“+number1);textTwo.setText(”“+number2);operatorLabel.setText(operator);message.setText(”请回答“);textResult.setText(null);} if(【代码8】)//判断事件源是否是giveAnwser { String answer=textResult.getText();try{ int result=Integer.parseInt(answer);if(teacher.getRight(result)==true){ message.setText(”你回答正确“);} else { message.setText(”你回答错误“);} } catch(NumberFormatException ex){ message.setText(”请输入数字字符“);} } textResult.requestFocus();validate();} }

MainClass.java public class MainClass { public static void main(String args[]){ ComputerFrame frame;frame=【代码9】//创建窗口,其标题为:算术测试 } } 实验2 信号灯

2.模板代码

SignalCanvas.java import java.awt.*;public class SignalCanvas extends Canvas { int red,green,yellow,x,y,r;SignalCanvas(){ setBackground(Color.white);} public void setRed(int r){ red=r;} public void setGreen(int g){ green=g;} public void setYellow(int y){ yellow=y;} public void setPosition(int x,int y){ this.x=x;this.y=y;} public void setRadius(int r){ this.r=r;} public void paint(Graphics g){ if(red==1){ g.setColor(Color.red);} else if(green==1){ g.setColor(Color.green);} else if(yellow==1){ g.setColor(Color.yellow);} g.fillOval(x,y,2*r,2*r);} } SignalFrame.java import java.awt.*;import java.applet.*;import java.awt.event.*;public class SignalFrame extends Frame implements ItemListener { Choice choice;SignalCanvas signal=null;String itemRed=”红灯“,itemYellow=”黄灯“,itemGreen=”绿灯“;public SignalFrame(){ choice=【代码1】 //创建choice 【代码2】 //创建choice添加itemRed 【代码3】 //创建choice添加itemYellow 【代码4】 //创建choice添加itemGreen 【代码5】

//将当前窗口注册为choice的ItemEvent事件监视器 add(choice,BorderLayout.NORTH);try{ Class cs=Class.forName(”SignalCanvas“);signal=(SignalCanvas)cs.newInstance();add(signal,BorderLayout.CENTER);} catch(Exception e){ add(new Label(”您还没有编写SignalCanvas类“),BorderLayout.CENTER);} setBounds(100,100,360,300);setVisible(true);validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);} });} public void itemStateChanged(ItemEvent e){ String item= 【代码6】

// choice返回被选中的条目 int w=signal.getBounds().width;int h=signal.getBounds().height;int m=Math.min(w,h);signal.setRadius(m/6);if(item.equals(itemRed)){ if(signal!=null){ signal.setRed(1);signal.setYellow(0);signal.setGreen(0);signal.setPosition(w/3,0);signal.repaint();} } else if(item.equals(itemYellow)){ if(signal!=null){ signal.setRed(0);signal.setYellow(1);signal.setGreen(0);signal.setPosition(w/3,h/3);signal.repaint();} } else if(item.equals(itemGreen)){ if(signal!=null){ signal.setRed(0);signal.setYellow(0);signal.setGreen(1);signal.setPosition(w/3,2*h/3);signal.repaint();} } } } SignalMainClass.java public class SignalMainClass { public static void main(String args[]){ SignalFrame frame;frame=new SignalFrame();frame.setTitle(”信号灯“);} } 实验3 布局与日历

1.答案:

【代码1】:

pCenter.setLayout(new GridLayout(7,7));【代码2】:

pCenter.add(titleName[i]);

【代码3】:

pCenter.add(labelDay[i]);

【代码4】:

add(scrollPane,BorderLayout.CENTER);31

【代码5】:

add(pNorth,BorderLayout.NORTH);

【代码6】:

add(pSouth,BorderLayout.SOUTH);

2.模板代码

CalendarBean.java import java.util.Calendar;public class CalendarBean

{

String day[];

int year=2005,month=0;

public void setYear(int year)

{

this.year=year;

}

public int getYear()

{

return year;

}

public void setMonth(int month)

{

this.month=month;

}

public int getMonth()

{

return month;

}

public String[] getCalendar()

{

String a[]=new String[42];

Calendar 日历=Calendar.getInstance();

日历.set(year,month-1,1);

int 星期几=日历.get(Calendar.DAY_OF_WEEK)-1;

int day=0;

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)

{ day=31;

}

if(month==4||month==6||month==9||month==11)

{ day=30;

}

if(month==2)

{ if(((year%4==0)&&(year%100!=0))||(year%400==0))

{

day=29;

}

else

{

day=28;

}

}

for(int i=星期几,n=1;i<星期几+day;i++)

{

a[i]=String.valueOf(n);

n++;

}

return a;

} } CalendarFrame.java import java.util.*;import java.awt.*;import java.awt.event.*;import java.applet.*;public class CalendarFrame extends Frame implements ActionListener {

Label labelDay[]=new Label[42];

Button titleName[]=new Button[7];

String name[]={”日“,”一“,”二“,”三“, ”四“,”五“,”六“};

Button nextMonth,previousMonth;

int year=2006,month=10;

CalendarBean calendar;

Label showMessage=new Label(”“,Label.CENTER);

public CalendarFrame()

{ Panel pCenter=new Panel();

【代码1】 //将pCenter的布局设置为7行7列的GridLayout 布局。

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

{ titleName[i]=new Button(name[i]);

【代码2】//pCenter添加组件titleName[i]。

}

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

{

labelDay[i]=new Label(”“,Label.CENTER);

【代码3】//pCenter添加组件labelDay[i]。

}

calendar=new CalendarBean();

calendar.setYear(year);

calendar.setMonth(month);

String day[]=calendar.getCalendar();

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

{ labelDay[i].setText(day[i]);

}

nextMonth=new Button(”下月“);

previousMonth=new Button(”上月“);

nextMonth.addActionListener(this);

previousMonth.addActionListener(this);

Panel pNorth=new Panel(),pSouth=new Panel();33

pNorth.add(previousMonth);

pNorth.add(nextMonth);

pSouth.add(showMessage);

showMessage.setText(”日历:“+calendar.getYear()+”年“+ calendar.getMonth()+”月“);

ScrollPane scrollPane=new ScrollPane();

scrollPane.add(pCenter);

【代码4】// 窗口添加scrollPane在中心区域

【代码5】// 窗口添加pNorth 在北面区域

【代码6】// 窗口添加pSouth 在南区域。

}

public void actionPerformed(ActionEvent e)

{ if(e.getSource()==nextMonth)

{ month=month+1;

if(month>12)

month=1;

calendar.setMonth(month);

String day[]=calendar.getCalendar();

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

{ labelDay[i].setText(day[i]);

}

}

else if(e.getSource()==previousMonth)

{ month=month-1;

if(month<1)

month=12;

calendar.setMonth(month);

String day[]=calendar.getCalendar();

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

{ labelDay[i].setText(day[i]);

}

}

showMessage.setText(”日历:“+calendar.getYear()+”年“+calendar.getMonth()+”月“);

} }

CalendarMainClass.java public class CalendarMainClass { public static void main(String args[])

{

CalendarFrame frame=new CalendarFrame();

frame.setBounds(100,100,360,300);

frame.setVisible(true);

frame.validate();

frame.addWindowListener(new java.awt.event.WindowAdapter()34

{ public void windowClosing(java.awt.event.WindowEvent e)

{ System.exit(0);

}

});

} }

上机实践7 组件及事件处理2 实验1 方程求根

1.答案:

【代码1】:

controlButton.addActionListener(this);;【代码2】:

textA.getText()

【代码3】:

textB.getText()

【代码4】:

textC.getText()

2.模板代码

SquareEquation.java public class SquareEquation { double a,b,c;double root1,root2;public void setA(double a){ this.a=a;} public void setB(double b){ this.b=b;} public void setC(double c){ this.c=c;} public double getRootOne()throws NoRealRootException,NoSquareEquationException { if(a!=0){ double disk=b*b-4*a*c;if(disk>=0){ root1=(-b+Math.sqrt(disk))/(2*a);} else { throw new NoRealRootException(”没有实根“);35 } } else { throw new NoRealRootException(”不是二次方程“);} return root1;} public double getRootTwo()throws NoRealRootException,NoSquareEquationException { if(a!=0){ double disk=b*b-4*a*c;if(disk>=0){ root2=(-b-Math.sqrt(disk))/(2*a);} else { throw new NoRealRootException(”没有实根“);} } else { throw new NoRealRootException(”不是二次方程“);} return root2;} } class NoRealRootException extends Exception { String message;NoRealRootException(String s){ message=s;} public String getMessage(){ return message;} } class NoSquareEquationException extends Exception { String message;NoSquareEquationException(String s){ message=s;} public String getMessage(){ return message;} } EquationFrame.java

import java.awt.*;import java.awt.event.*;public class EquationFrame extends Frame implements ActionListener { SquareEquation equation;TextField textA,textB,textC;TextArea showRoots;Button controlButton;public EquationFrame(){ equation=new SquareEquation();textA=new TextField(8);textB=new TextField(8);textC=new TextField(8);showRoots=new TextArea();controlButton=new Button(”确定“);Panel pNorth=new Panel();pNorth.add(new Label(”二次项系数:“));pNorth.add(textA);pNorth.add(new Label(”一次项系数:“));pNorth.add(textB);pNorth.add(new Label(”常数项系数:“));pNorth.add(textC);pNorth.add(controlButton);【代码1】 //当前窗口作为controlButton的ActionEvent事件的监视器 add(pNorth,BorderLayout.NORTH);add(showRoots,BorderLayout.CENTER);setBounds(100,100,630,160);setVisible(true);validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);} });} public void actionPerformed(ActionEvent e){ try{ double a=Double.parseDouble(【代码2】);//textA调用方法获取其中的文本

double b=Double.parseDouble(【代码3】);//textB调用方法获取其中的文本

double c=Double.parseDouble(【代码4】);// textC调用方法获取其中的文本

equation.setA(a);equation.setB(b);equation.setC(c);textA.setText(”“+a);37 textB.setText(”“+b);textC.setText(”“+c);showRoots.append(”n 根:“+equation.getRootOne());showRoots.append(” 根:“+equation.getRootTwo());} catch(Exception ex){ showRoots.append(”n“+ex+”n“);} } } EquationMainClass.java public class EquationMainClass { public static void main(String args[]){ EquationFrame frame=new EquationFrame();} } 实验2 字体对话框

1.答案:

【代码1】:

setModal(true);

【代码2】:

setVisible(false);

【代码3】:

setVisible(false);

【代码4】:

new FontDialog(this);【代码5】:

setVisible(true);【代码6】:

dialog.setTitle(”字体对话框“);

2.模板代码

FontFamilyNames.java import java.awt.GraphicsEnvironment;public class FontFamilyNames { String fontName[];public String [] getFontName(){ GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();fontName=ge.getAvailableFontFamilyNames();return fontName;} } FontDialog.java import java.awt.event.*;import java.awt.*;import javax.swing.JLabel;

public class FontDialog extends Dialog implements ItemListener,ActionListener { FontFamilyNames fontFamilyNames;int fontSize=38;String fontName;Choice fontNameList;JLabel label;Font font;Button yes,cancel;static int YES=1,NO=0;int state=-1;FontDialog(Frame f){ super(f);fontFamilyNames=new FontFamilyNames();【代码1】 //对话框设置为有模式 yes=new Button(”Yes“);cancel=new Button(”cancel“);yes.addActionListener(this);cancel.addActionListener(this);label=new JLabel(”hello,奥运“,JLabel.CENTER);fontNameList=new Choice();String name[]=fontFamilyNames.getFontName();for(int k=0;k

label.setFont(font);label.repaint();validate();} public void actionPerformed(ActionEvent e){ if(e.getSource()==yes){ state=YES;【代码2】 //对话框设置为不可见 } else if(e.getSource()==cancel){ state=NO;【代码3】 //对话框设置为不可见 } } public int getState(){ return state;} public Font getFont(){ return font;} }

FrameHaveDialog.java import java.awt.event.*;import java.awt.*;import javax.swing.JTextArea;public class FrameHaveDialog extends Frame implements ActionListener { JTextArea text;Button buttonFont;FrameHaveDialog(){ buttonFont=new Button(”设置字体“);text=new JTextArea(”Java 2实用教程(第三版)“);buttonFont.addActionListener(this);add(buttonFont,BorderLayout.NORTH);add(text);setBounds(60,60,300,300);setVisible(true);validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);} });} 40 public void actionPerformed(ActionEvent e){ if(e.getSource()==buttonFont){ FontDialog dialog=【代码4】 //创建对话框

【代码5】 //对话框设置为可见

【代码6】 //对话框设置设置标题为“字体对话框” if(dialog.getState()==FontDialog.YES){ text.setFont(dialog.getFont());text.repaint();} if(dialog.getState()==FontDialog.NO){ text.repaint();} } } } FontDialogMainClass.java public class FontDialogMainClass { public static void main(String args[]){ new FrameHaveDialog();} } 实验3 英语单词拼写训练

1.答案:

【代码1】: addFocusListener(this);

【代码2】:

addMouseListener(this);

【代码3】:

label[k].addKeyListener(this);

【代码4】:

e.getKeyCode()==KeyEvent.VK_LEFT 【代码5】:

e.getKeyCode()==KeyEvent.VK_RIGHT 2.模板代码

RondomString.java public class RondomString { String str=”“;public String getRondomString(String s){ StringBuffer strBuffer=new StringBuffer(s);int m=strBuffer.length();for(int k=0;k

strBuffer=strBuffer.deleteCharAt(index);} return str;} } LetterLabel.java

import java.awt.*;import java.awt.event.*;public class LetterLabel extends Button implements FocusListener,MouseListener { LetterLabel(){ 【代码1】 //将当前对象注册为自身的焦点视器 【代码2】 //将当前对象注册为自身的标监视器 setBackground(Color.cyan);setFont(new Font(”“,Font.BOLD,30));} public static LetterLabel[] getLetterLabel(int n){ LetterLabel a[]=new LetterLabel[n];for(int k=0;k

import java.awt.*;import java.awt.event.*;import javax.swing.Box;

public class SpellingWordFrame extends Frame implements KeyListener,ActionListener { TextField inputWord;Button button;LetterLabel label[];Panel northP,centerP;Box wordBox;String hintMessage=”用鼠标单击字母,按左右箭头交换字母,将其排列成所输入的单词“;Label messaageLabel=new Label(hintMessage);String word=”“;SpellingWordFrame(){ inputWord=new TextField(12);button=new Button(”确定“);button.addActionListener(this);inputWord.addActionListener(this);northP=new Panel();northP.add(new Label(”输入一个英文单词:“));northP.add(inputWord);northP.add(button);centerP=new Panel();wordBox=Box.createHorizontalBox();centerP.add(wordBox);add(northP,BorderLayout.NORTH);add(centerP,BorderLayout.CENTER);add(messaageLabel,BorderLayout.SOUTH);setBounds(100,100,350,180);setVisible(true);validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);} });} public void actionPerformed(ActionEvent e){ word=inputWord.getText();int n=word.length();RondomString rondom=new RondomString();String randomWord=rondom.getRondomString(word);wordBox.removeAll();messaageLabel.setText(hintMessage);if(n>0){ label=LetterLabel.getLetterLabel(n);for(int k=0;k

{ 【代码3】 //将当前窗口注册为label[k]的键盘监视器 label[k].setText(”“+randomWord.charAt(k));wordBox.add(label[k]);} validate();inputWord.setText(null);label[0].requestFocus();} } public void keyPressed(KeyEvent e){ LetterLabel sourceLabel=(LetterLabel)e.getSource();int index=-1;if(【代码4】)//判断按下的是否是←键){ for(int k=0;k

{ String success=”“;for(int k=0;k

WordMainClass.java public class WordMainClass { public static void main(String args[]){ new SpellingWordFrame();} } 上机实践8 多线程

实验1 汉字打字练习

1.答案:

【代码1】:

sleep(6000);

【代码2】:

WordThread giveWord;

【代码3】:

giveWord=new WordThread(wordLabel);

【代码4】:

giveWord.isAlive()

【代码5】:

giveWord.start();

2.模板代码

WordThread.java

import java.awt.*;public class WordThread extends Thread { char word;int k=19968;45

Label com;WordThread(Label com){ this.com=com;} public void run(){ k=19968;while(true){ word=(char)k;com.setText(”“+word);try{ 【代码1】//调用sleep方法使得线程中断6000豪秒 } catch(InterruptedException e){} k++;if(k>=29968)k=19968;} } } ThreadFrame.java

import java.awt.*;import java.awt.event.*;public class ThreadFrame extends Frame implements ActionListener { Label wordLabel;Button button;TextField inputText,scoreText;【代码2】//用WordThread声明一个giveWord对象 int score=0;ThreadFrame(){ wordLabel=new Label(” “,Label.CENTER);wordLabel.setFont(new Font(”“,Font.BOLD,72));button=new Button(”开始“);inputText=new TextField(3);scoreText=new TextField(5);scoreText.setEditable(false);【代码3】//创建giveWord,将wordLabel传递给WordThread构造方法的参数 button.addActionListener(this);inputText.addActionListener(this);add(button,BorderLayout.NORTH);add(wordLabel,BorderLayout.CENTER);Panel southP=new Panel();southP.add(new Label(”输入标签所显示的汉字后回车:“));southP.add(inputText);southP.add(scoreText);

add(southP,BorderLayout.SOUTH);setBounds(100,100,350,180);setVisible(true);validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);} });} public void actionPerformed(ActionEvent e){ if(e.getSource()==button){ if(!(【代码4】))//giveWord调用方法isAlive(){ giveWord=new WordThread(wordLabel);} try { 【代码5】//giveWord调用方法start()} catch(Exception exe){} } else if(e.getSource()==inputText){ if(inputText.getText().equals(wordLabel.getText())){ score++;} scoreText.setText(”得分:"+score);inputText.setText(null);} } } WordThread.java

public class ThreadWordMainClass { public static void main(String args[]){ new ThreadFrame();}

实验2 旋转的行星

1.答案:

【代码1】:

Thread moon;

【代码2】:

thread=new Thread(this);

【代码3】:

Thread.sleep(10);

【代码4】:

Thread rotate;【代码5】:

rotate.start();

2.模板代码

Mycanvas.java

import java.awt.*;public class Mycanvas extends Canvas { int r;Color c;public void setColor(Color c){ this.c=c;} public void setR(int r){ this.r=r;} public void paint(Graphics g){ g.setColor(c);g.fillOval(0,0,2*r,2*r);} public int getR(){ return r;} } Planet.java

import java.awt.*;public class Planet extends Panel implements Runnable { 【代码1】 //用Thread类声明一个moon对象 Mycanvas yellowBall;double pointX[]=new double[360], pointY[]=new double[360];//用来表示画布左上角端点坐标的数组 int w=100,h=100;int radius=30;Planet(){ setSize(w,h);setLayout(null);yellowBall=new Mycanvas();yellowBall.setColor(Color.yellow);add(yellowBall);yellowBall.setSize(12,12);yellowBall.setR(12/2);pointX[0]=0;48 pointY[0]=-radius;double angle=1*Math.PI/180;//刻度为1度

for(int i=0;i<359;i++)//计算出数组中各个元素的值

{ pointX[i+1]=pointX[i]*Math.cos(angle)-Math.sin(angle)*pointY[i];pointY[i+1]=pointY[i]*Math.cos(angle)+pointX[i]*Math.sin(angle);

} for(int i=0;i<360;i++){ pointX[i]=pointX[i]+w/2;//坐标平移 pointY[i]=pointY[i]+h/2;} yellowBall.setLocation((int)pointX[0]-yellowBall.getR(),(int)pointY[0]-yellowBall.getR());【代码2】 //创建 moon线程,当前面板做为该线程的目标对象 } public void start(){ try{ moon.start();}

catch(Exception exe){} } public void paint(Graphics g){ g.setColor(Color.blue);g.fillOval(w/2-9,h/2-9,18,18);} public void run(){ int i=0;while(true){ i=(i+1)%360;yellowBall.setLocation((int)pointX[i]-yellowBall.getR(),(int)pointY[i]-yellowBall.getR());try{ 【代码3】 // Thread类调用类方法sleep使得线程中断10豪秒 } catch(InterruptedException e){} } } } HaveThreadFrame.java

import java.awt.*;import java.awt.event.*;public class HaveThreadFrame extends Frame implements Runnable { 【代码4】 //用Thread类声明一个rotate对象 Planet earth;double pointX[]=new double[360], pointY[]=new double[360];int width,height;

int radius=120;HaveThreadFrame(){ rotate=new Thread(this);earth=new Planet();setBounds(0,0,360,400);width=getBounds().width;height=getBounds().height;pointX[0]=0;pointY[0]=-radius;double angle=1*Math.PI/180;for(int i=0;i<359;i++){ pointX[i+1]=pointX[i]*Math.cos(angle)-Math.sin(angle)*pointY[i];pointY[i+1]=pointY[i]*Math.cos(angle)+pointX[i]*Math.sin(angle);} for(int i=0;i<360;i++){ pointX[i]=pointX[i]+width/2;pointY[i]=pointY[i]+height/2;} setLayout(null);setVisible(true);validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);} });add(earth);earth.setLocation((int)pointX[0]-earth.getSize().width/2,(int)pointY[0]-earth.getSize().height/2);earth.start();【代码5】 //用rotate调用start方法 } public void run(){ int i=0;while(true){ i=(i+1)%360;earth.setLocation((int)pointX[i]-earth.getSize().width/2,(int)pointY[i]-earth.getSize().height/2);try{ Thread.sleep(100);} catch(InterruptedException e){} } }

第二篇:《Java程序设计》课程实验指导书

...《Java程序设计》课程实验指导书

合肥学院计算机系

实验一 Java开发环境的安装与配置,熟悉Java程序

结构

一、实验目的:

1.掌握JDK的安装步骤。

2.理解环境变量PATH, CLASSPATH的作用,以及它们的设置方法。3.熟悉Editplus 或Eclipse(或TextPad,JCreator)编辑环境,编写简单的Application程序和Applet程序,并编译和执行。

二、实验内容:

熟悉JDK的安装和配置,学习如何编写并运行简单的Application程序和Applet程序(能输出一条简单的问候信息);

三、实验要求:

1.能正确地安装JDK 2.熟悉环境变量PATH, CLASSPATH设置方法,熟悉编辑环境 3.调试程序、编译,运行后得到正确的结果

4.写出实验报告,要求记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。

四、实验步骤:

1.从http://java.sun.com 上下载最新版本的JDK,并安装。

2.设置环境变量PATH, CLASSPATH, 使得Java程序能正确编译和执行。3.在Eclipse(或JCreator,Textpad)环境下编写一个HelloWorld.java程序,(1)在主方法static public void main(String[ ] args)中调用System.out.println()方法,使程序输出一条问候信息;

(2)编译运行程序,观察运行情况和输出结果。(使用JDK环境,调用javac.exe和java.exe编译和执行程序)

4.在Eclipse(或JCreator,Textpad)环境下编写一个HelloWorldApplet.java程序。

(1)在public void paint(Graphics g)方法中调用g.drawString()方法,使 程序输出一条问候信息;

(2)编译运行程序,观察运行情况和输出结果。(使用JDK环境,调用javac.exe编译和浏览器解释执行Applet程序)

实验二 Java语言基础

一、实验目的:

熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。

二、实验内容:

1.编写Java Application程序,输出1900年到2000年之间的所有润年。(闰年的判断条件:能被4整除且不能被100整除,或能被400整除); 2.编写Java Appet 程序打印 “水仙花” 数(它的个、十、百位数字的立方的和等于该数本身,如:153=1^3+5^3+3^3)3.编写Java Application程序,分别用do-while和for循环计算1+1/2!+1/3!+1/4!...的前20项和

三、实验要求:

1.正确使用Java语言的选择语句,循环语句; 2.调试程序、编译,运行后得到正确的结果

3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提成示,并给出解决办法。

四、实验步骤:

1.编写主类;

2.在static public void main(String[ ] args)方法中加入实现要求功能的代码,主要步骤如下:

(第一题)从1900到2000循环,按照闰年的判断条件是则输出1900年到2000年之间的所有润年。

(第二题)编写Java Applet, 在public void paint(Graphics g)方法中加入实现要求功能的代码, 主要步骤是:从100到1000循环,判断每个数是否符合水仙花数的特点,是则输出之。3.编译运行程序,观察输出结果是否正确。

五、自做实验

1.输出100以内的所有素数。提示: 逐个判断小于a的每个正整数x,第二重循环针对x,判断其是否是质数。

2.将所输入之正整数,以二、八、十六进制表示出来。提示: 可写三个方法分别计算输出二、八、十六进制表示。

实验三 类和对象

一、实验目的:

掌握Java类的结构、类的定义、方法和属性的定义以及对象的实现; 掌握类及其成员修饰符的使用;掌握构造函数的使用;方法的参数传递和返回值的用法;

掌握类变量与实例变量,以及类方法与实例方法的区别。

三、实验内容:

1.定义一个学生类(Student),属性有private的名字(name), public的年龄(age),专业(specialty)和封装name属性的方法:setName(),getName(),getspecialty()编写Application,创建一个学生对象,设置name和age属性值,然后调用一个方法(此方法将对象作为参数传递,在方法中打印出学生的名字name和年龄age)。(学生类仅包含静态成员变量和方法。)2.定义一个类Point,代表一个点,public属性有x和y,方法有显示点坐标 show(),构造函数有两个参数分别给x,y赋值,在main方法中构造两个对象,再创建一方法(getMiddle)为取两个点构成线段的中点的坐标,参数为2个点对象,调用此方法后得到一个新的点,编写Application,显示该对象的坐标值。

3.定义一个复数(z=x+iy)类Complex,包含:

两个属性:实部x和虚部y 默认构造函数 Complex(),设置x=0,y=0 构造函数:Complex(int i,int j)显示复数的方法:showComp()将其显示为如: 5+8i或5-8i 的形式。求两个复数的和的方法:(参数是两个复数类对象,返回值是复数类对象)public Complex addComp(Complex C1,Complex C2)求两个复数的差的方法:(参数是两个复数类对象,返回值是复数类对象)public Complex subComp(Complex C1,Complex C2)求两个复数的乘积的方法:(参数是两个复数类对象,返回值是复数类对象,新复数实部=两复数实部乘积-两复数虚部乘积,新复数虚部=两复数实部与虚部 交叉乘积之和,)public Complex multiComp(Complex C1,Complex C2)比较两个复数是否相等的方法(参数是两个复数类对象,返回值是boolean类型)public boolean equalComp(Complex C1,Complex C2)在Application中测试该类的方法,实部x和虚部y可由main方法参数提供输入。

三、实验要求:

1.正确地定义类、方法和属性;2.学会方法的参数传递和返回值的用法; 3.熟练使用类及其成员修饰符 4.使用构造函数创建类的对象;

5.类变量与实例变量,以及类方法与实例方法的使用 6.程序应包括各个被调用方法的执行结果的显示。

7.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。(附运行界面、源代码)。

四、实验步骤:

1.(第1题)定义一个学生类(Student)及它的属性和方法;定义主类和main(),在main()方法中创建学生对象,并通过对象调用它的方法setName(),getName(),输出学生的名字name和年龄age。

2.(第2题)定义类Point及它的属性、方法和构造函数,定义主类和main(),在main()方法中创建两个坐标对象,,并通过对象调用getMiddle方法后得到一个新的点坐标,调用show()显示该对象的坐标值。3.(第3题)定义一个复数(z=x+iy)类Complex,及它的属性、方法和构造函数;定义主类和main()方法,在main()方法中创建两个复数类Complex对象,并通过复数类对象调用它们的属性和方法,输出方法执行结果。

五、自做实验

1.构造一个类来描述屏幕上的一个点,该类的构成包括点的x和y两个坐标,以及一些对点进行的操作,包括:取得点的坐标值,对点的坐标进行赋值,编写应用程序生成该类的对象并对其进行操作。

2.编写实现:有一个三角形类Triangle,成员变量有底边x和另一条边y,和两边的夹角a(0

3.编写实现: 构造函数为 Triangle(int xx,int yy,int aa)参数分别为x,y,a赋值 在main方法中构造两个对象,求出其面积,然后使用修改角度的方法,修改两边的夹角,再求出面积值。(提示:求高的方法 h=y*Math.sin(a))注意:构造方法用于对成员变量初始化,无参数的构造方法将成员变量初始化为0值。

实验四 java继承与多态

一、实验目的:

掌握继承、多态的概念与实现方法;

掌握包和接口的定义和使用方法;

了解JAVA语言实现多继承的途径;

二、实验内容:

1.分别编写两个类Point2D,Point3D来表示二维空间和三维空间的点,使之满足下列要求:

(1)Point2D有两个整型成员变量x, y(分别为二维空间的X,Y方向坐标),Point2D的构造方法要实现对其成员变量x, y的初始化。

(2)Point2D有一个void型成员方法offset(int a, int b),它可以实现Point2D的平移。

(3)Point3D是Point2D的直接子类,它有有三个整型成员变量x,y,z(分别为三维空间的X,Y,Z方向坐标),Point3D有两个构造方法:Point3D(int x,int y,int z)和Point3D(Point2D p,int z),两者均可实现对Point3D的成员变量x, y,z的初始化。

(4)Point3D有一个void型成员方法offset(int a, int b,int c),该方法可以实现Point3D的平移。

(5)在Point3D中的主函数main()中实例化两个Point2D的对象p2d1,p2d2,打印出它们之间的距离,再实例化两个Point2D的对象p3d1,p3d2,打印出他们之间的距离。

2.定义抽象类Shape,抽象方法为showArea(),求出面积并显示,定义矩形类Rectangle,正方形类Square,圆类 Circle,根据各自的属性,用showArea方法求出各自的面积,在main方法中构造3个对象,调用showArea方法。

定义接口DiagArea,其中包含方法double getDiagonal()求对角线长, double getArea()求面积,定义一个矩形类,实现此接口,并自行扩充成 员变量和方法,定义一个正方形类继承矩形类(如矩形有长w和宽h,正方形有边x,并有相应的构造函数,有一个方法中一次直接显示边长、面积和对角线长),在另一类中的主方法里使用测试该类。

三、实验要求:

1.能实现类的继承关系;

2.用多种方法创建各个类的对象;

3.程序应包括各个被调用方法的执行结果的显示。

4.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。(附运行界面、源代码)。

四、实验步骤:

1.(第1题)定义Point2D,及定义它的属性和方法;

定义子类Point3D,及定义它的属性和方法;在Point3D中的主函数main()中实例化两个Point2D的对象,并通过这两个对象调用它们的属性和方法,输出方法执行结果。

2.(第2题)定义抽象类Shape,抽象方法为showArea(),再定义矩形类Rectangle,正方形类Square,圆类 Circle,和各自的属性。定义主类、主方法,在main方法中构造3个对象,调用showArea方法;定义接口DiagArea,其中包含方法double getDiagonal(),在主main方法中输出方法执行结果。

六、自做作实验

1.定义一个描述人的基本类,该类包括人的性别和出生日期两个数据成员,以及设置和获取这些属性值的方法成员;再定义一个大学生类,使大学生类具有人的所有属性外,还具有姓名、学号,大学入学成绩,籍贯属性以及设置和获取这些属性值的方法成员;编写完整的程序,完成一个具有班级学生信息管理功能的程序。

2创建一个接口Shape,其中有抽象方法area,类Circle、Rectangle实现area方法计算其面积并返回。又有Star实现Shape的area方法,其返回值是0,Star类另有一返回值boolean型方法isStar;在main方法里创建一个Vector,根据随机数的不同向其中加入Shape的不同子类对象(如是1,生成Circle 10 对象;如是2,生成Rectangle对象;如是3,生成Star对象)。然后将Vector中元素依次取出,判断其是否为Star类。如是返回其是个Star。否则返回其面积。

3..学校中有老师和学生两类人,而在职研究生既是老师又是学生,对学生的管理和对教师的管理在他们身上都有体现。

1)设计两个信息管理接口StudentManageInterface和TeacherManageInterface。其中,StudentInterface接口包括setFee()方法和getFee()方法,分别用于设置和获取学生的学费;TeacherInterface接口包括setPay()方法和getPay()方法,分别用于设置和获取教师的工资

2)定义一个研究生类Graduate,实现StudentInterface接口和TeacherInterface接口,它定义的成员变量有name(姓名)、sex(性别)、age(年龄)、fee(每学期学费)、pay(月工资)。

3)创建一个姓名为“zhangsan”的研究生,统计他的年收入和学费,如果收入减去学费不足2000元,则输出“provide a loan”(需要贷款)信息。提示:

1)定义两个接口,分别在其中申明两个方法。2)定义主类Graduate,实现这两个接口。3)定义主类的成员变量,和构造方法。

4)给出四个接口方法的实现。5)给出一个计算是否需要贷款的方法,在里面统计年收入和学费,并输出是否需要贷款的信息。

6)写main方法。在其中创建一个姓名为“zhangsan”的研究生,调用计算是否需要贷款的方法。4.书后练习

实验五 Java的异常处理

一、实验目的:

理解 java 语言中独特的异常处理机制;掌握异常处理方法;正确地使用捕获异常和声明抛弃异常的两种异常处理的方法;了解自定义异常类的使用;理解抛出异常和声明抛出异常的区别与联系;

二、实验内容:

1. 从命令行得到5个整数,放入一整型数组,然后打印输出,要求:如果输入数据不为整数,要捕获Integer.parseInt()产生的异常,显示“请输入整数”,捕获输入参数不足5个的异常(数组越界),显示“请输入至少5个整数”。

2.写一个方法void sanjiao(int a,int b,int c),判断三个参数是否能构成一个三角形,如果不能则抛出异常IllegalArgumentException,显示异常信息a,b,c+”不能构成三角形”,如果可以构成则显示三角形三个边长,在主方法中得到命令行输入的三个整数,调用此方法,并捕获异常。

3.自定义类Sanj,其中有成员 x,y,z,作为三边长,构造方法Sanj(a,b,c)分别给x,y,z赋值,方法求面积getArea和显示三角形信息(三个边长)showInfo,这2个方法中当三条边不能构成一个三角形时要抛出自定义异常NotSanjiaoException,否则显示正确信息。在另外一个类中的主方法中构造一个Sanj对象(三边为命令行输入的三个整数),显示三角形信息和面积,要求捕获异常。

三、实验要求:

1.通过实验掌握捕获异常和声明抛弃异常的两种异常处理的方法; 2.程序必须能够捕获Integer.parseInt()产生的异常并作相应的处理; 3.程序必须能够将处理的相应的信息输出出来;

4.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提材示,并给出解决办法。(附运行界面、源代码)。

四、实验步骤:

1.(第1题)使用try„..catch„.finally语句对Integer.parseInt()产生的异常进行捕获处理;2.(第2题)定义方法void sanjiao(int a,int b,int c)中,不符合条件则抛出异常(if a+b<=c(或a+c<=b,b+c<=a)then throw new IllegalArgumentException(),),再定义main方法,调用此方法,用try„..catch„.finally语句并捕获异常;3.(第3题)定义三角形类及相应的方法, 在定义的方法中对不符合条件则抛出异常(如上题),再定义main方法,对正确的数据输出正确信息,否则捕获异常;

五、自做实验

1.参考下面的程序,试修改程序,捕获相关异常,使得程序能正常运行。[提示:用错误数据测试,即可得到异常类名,运行时主方法参数输入 abc 测试] public class StringIndexOutOf{ public static void main(String args[]){ System.out.println(“字符串索引越界异常”);String str=args[0];System.out.println(“第四个字符为 ”+str.charAt(3));int aa=Integer.parseInt(args[0]);

System.out.println(“

方为 ”+aa*aa);} }

实验六 Java数组、字符串及常用类应用

一、实验目的:

掌握数组的定义和使用方法;熟悉数组的排序、查找等算法。掌握字符串的使用方法。

二、实验内容:

1.编写Application程序, 从命令行参数输入10个整数并保存在数组中,求数组中最大、最小、数据的和、平均值。

2.从命令行参数一日期,如“2005-5-6”,计算与今日之间的天数间隔。3.将命令行第一个参数每个字符放入一字符数组,然后逆序输出

4.编写Application程序,接受用户输入一段英文文字后,输出其中的字符数、单词数和句子数(设句子以“?”、“!”、“.”结束)。5.打印杨辉三角的前10层。

6.编写Applet程序,使用 *画一条正弦曲线(提示:y=a* sin(x),坐标要取整)

三、实验要求:

1.熟练对象数组及创建初始化和未初始化的数组的方法;2.熟悉从命令行参数的使用;3.熟悉String 和StringBUFFER的使用方法 4.熟悉常用类库的使用;5.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。(附运行界面、源代码)。

四、实验步骤:

1(第1题).从命令行输入10个数到数组,用循环语句分别求最大、最小、数据的和、平均值。

2.(第2题)利用String类的各种方法,分别判断字符是否为“?”、“!”、“.”,用3个计数器分别计数。

3(第3题)将命令行第一个参数字符串中的每个字符作为数组元素放入一字符数组,再循环语句逆序数组元素。

4.(第4题)定义一个二维数组,第一维的长度为所打印杨辉三角的层数(即 10),第二维为每一层的数据个数(也就是其所在的层数)。(第5题)利用Math类中sin函数,在Paint()方法中用Graphics类drawString()画一条正弦曲线.五、自做实验

1.求Fibonacci序列的前n项,要求:

在main方法中定义一数组,数组的长度n为一final定义的常量,使用一单独方法,无返回值,参数为一数组,在方法中给数组赋予序列的值,在main方法中调用该方法,然后打印结果数组的内容

2.声明一个矩阵类Matrix,成员变量是一个二维数组,设数组元素类型为int,请设计方法:(1)构造方法:

Matrix()//构造一个10X10个元素的矩阵,没有数据

Matrix(int n,int m)//构造一个nXm个元素的矩阵,数据由随机数产生 Matrix(int table[][])//以一个整型的二维数组构造一个矩阵 要求使用 this(2)实例方法:

public void output()//输出Matrix类中数组的元素值 public void transpose()//输出一个矩阵的转置矩阵 2.随机数求法:

Math.random()返回0-1的小数,由上题中的Matrix类派生出正方形Square类,在构造方法中调用父类的构造方法(使用super)。

3.编写一个Java程序,完成以下功能:

(1)声明一个名为s的String对象,并使它的内容是“My name is Carrol”;(2)打印整个字符串;(3)打印字符串的长度;(4)打印字符串的第一个字符;(5)打印最后一个字符;(6)打印字符串的第一个单词。

*4.编写一个程序,用散列表实现学生成绩单的存储和查询,并将若干个查 15 询结果存放到一个向量中,通过循环将向量对象内容逐个输出。*5.从命令行读入一浮点数值,将其转化为中文金额的大写方式,如123.45,转化为:壹佰贰拾叁元肆角伍分,中间有多个0只要一个零。*6.利用Vector对象改写上面的程序,输入元素个数由用户自由确定。

实验七 图形用户界面与事件处理机制

(一)一、实验目的:

掌握Java图形组件和布局管理器的使用; 掌握使用Java事件处理机制的使用。

掌握图形界面的各种控件的使用,如:标签、文本框、按钮、复选框、列表框、窗框等。

二、实验内容:

1.编写Application程序,在Frame中加入2个按钮(Button)和1个标签(Label),单击两个按钮,显示按钮的标签于Label。

2.在Applet中加入1个文本框,1个文本区,每次在文本框中输入文本,回车后将文本添加到文本区的最后一行。

3.在Applet中加入2个复选框,显示标题为“学习”和“玩耍”,根据选择的情况,分别显示“玩耍”、“学习”、“劳逸结合”。

4.在Applet中加入1个滚 动列表框List、1个下拉列表框Choice和1个按钮,点击按钮将List中的项目移到Choice组件中,5.编写Application程序,在Frame中加入80个按钮,分20行4列,用GridLayout布局方式,按钮背景为黄色(Color.yellow),按钮文字颜色为红色(Color.red)。

6.设计一个简单计算器,如下图所示。在“操作数”标签右侧的两个文本框输入操作数,当单击操作符+,-,×,÷按钮时,对两个操作数进行运算并将结果填入到“结果”标签右侧的文本框中。

三、实验要求:

1.采用布局管理器进行界面的布局; 2.学会对不同的事件用相应的事件处理器;

3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提材示,并给出解决办法。(附运行界面、源代码)。

四、实验步骤:

1.运用一种或多种布局管理器,绘制出一个简单的计算器;

2.为按钮注册事件监听器,使其点击按钮,并在显示区域同步显示当前输入或运算结果;

3.编译运行程序,检查计算器的正确性;

五、自做实验

1.学生可以视个人情况完成更复杂更完善的计算器功能,通过多种布局管理方法实现更美观的界面布局。

2.编写Applet程序,在控制按钮程序中,实现播放音乐,显示图片等操作。3.编写Java Applet程序,使它在浏览器中通过响应功能按钮的点击事件绘制各种简单的几何图形(矩形、圆形、扇形、多边形和他们的填充效果),并且能够通过接收传递参数控制图形的绘制。

4.在Applet中做2个按钮,点击它们,分别画一个填充的蓝矩形和粉红色圆,位置随机,并统计每个按钮点击的次数

实验七 图形用户界面与事件处理机制

(二)一、实验目的:

掌握菜单、弹出式菜单设计。会处理事件以及设置输入对话框。

了解对文本域JTextArea中字符进行复制和粘贴的操作。

二、实验内容:

1.在窗口中建立菜单和弹出式菜单,”文件”中有”打开”项目,点击后弹出文件对话框,在界面中的1个文本框中显示打开的文件名。

*2.设计一个JAVA程序模仿记事本(NotePad)的部分功能,界面如下图。

三、实验要求:

1.学会建立菜单和弹出式菜单;

2.学会文件对话框的使用;对不同的事件用相应的事件处理器; 3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提材示,并给出解决办法。(附运行界面、源代码)。

四、实验步骤:

1.(第1题)从打开文件对话框中获取文件名,将文件名放入文本框。2.(第2题)新建文件时,文本域为空;打开文件和保存文件时要给出输入对话框,输入相应文件名后进行操作;选择退出菜单将退出整个程序。

再对文本域中选中的字符能够进行复制和粘贴操作。3.编译运行以上程序

五、自做实验:

1.利用所学的Java语言知识,完成一个实现秒表功能的Applet程序。它的GUI界面如下所示: 利用所学的Java语言知识,完成一个实现秒表功能的Applet程序。它的GUI界面如下所示:

要求该程序能够完成以下功能:

(1)在界面上方的文本框中,按照“小时:分钟:秒”的顺序实时显示系统时间;

(2)当按下界面中间的“Current Time:”按钮时,当前系统时间能够在界面下方的文本框中显示出来。

提示:可以通过调用java.util.Data类的方法,获得系统时间。Data类的接口如下所示,public class Date {

// 返回当前系统时间的小时值

public String getHours(){ „}

// 返回当前系统时间的分钟值

public String getMintues(){ „ }

// 返回当前系统时间的秒钟值

public String getSeconds(){ „}

} 2.编写一个计算器程序,只有加减乘除功能,当作Applet运行。

3.编写一个Applet程序:画图

要求:界面上有2个按钮,一个为标签为“椭圆”,另一个为“矩形”,点击后分别画红色的椭圆和蓝色的矩形,其宽度为100、高度为60,左上角顶点坐标为(50,50),试写出完整程序,并且要写出其对应的HTML文件代码。

实验八 Applet类及应用

一、实验目的:

掌握applet的程序结构和运行方式;掌握从html文档向Java Applet传递参数的方法;了解applet程序的生命周期;掌握在Applet中对字体、颜色、播放声音、显示图像和动画控制方法;

二、实验内容:

1.编写Applet程序,改变applet窗口大小,使其最大化、最小化,查看init()、start()、paint()、和destroy()方法的执行情况(执行顺序和执行次数)。2. 编写Applet显示字符串,显示字符串及其显示位置,字体、字体大小和颜色通过HTML文件中的参数来传递。

3.编写Applet(大小140*60),其背景色为蓝色,画一个长方形(其填充色为pink,各边离边小于10像素)和一个在填充的长方形中左右移动的小球(半径15)。

4.实现一个Applet,显示一幅图片。不停地运行一个动画。

三、实验要求:

1.必须编写成Java Applet程序;

2.能够通过传递参数控制一种或者几种图形的绘制;

3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。(附运行界面、源代码)。

四、实验步骤:

1.(第1题)在paint()方法中,绘制init()、start()、paint()、和destroy()方法的执行次数的直方图。

2.(第2题)在HTML文件中添加参数传递的代码:

„„

在init()方法中,调用getParameter()获取由HTML传递的参数,再按照要求,在paint()方法中调用Graphics类中drawString()函数显示 字符串。

3.(第3题)在paint()方法中调用Graphics类中drawString()函数时,X坐标定义成变量(10〈=X〈=120),4.(第4题)在init()方法中,根据指定的位置获取一系列图片类对象放入数组,再循环显示系列图片就形成动画。5.运行、检查和调试 以上各程序。

五、自做实验

1.编写Applet,访问并显示指定URL地址处的图像和声音资源。2.编写Applet,访问并显示指定URL地址处的一组图像构成的动画。3.编写Applet,接收用户输入的网页地址,并与程序中事先保存的地址相比较,若存在则打开网页,并在新打开的浏览器窗口显示*编写一个Applet程序,显示一个圆心在Applet的中心,半径从0到100像素不断变大的绿色球的动画。

4.在Applet中画矩形,要求矩形做上角点坐标(20,20),高度为400*200,上下左右边设为蓝色、矩形填充色为绿色,并在居中的位置写上文字“面向对象程序设计”,字体为楷体_gb2312,大小自定。

5.自定义椭圆(或圆)的方法,画一组椭圆(最大半径200),以圆心处为参考点,半径依次增加2个像素,圆周的颜色随机。

6.给定数组data[]={1,2,3,4}分别画出圆饼图、条形图(宽随意给定,高代表所占百分比),颜色任意。

7.找一幅图像,显示在Applet中,要求按原图大小显示,再放大或缩小一倍显示,或者放大显示右下部的1/4块

实验九 Java多线程

一、实验目的:

熟悉利用Thread类建立多线程方法。熟悉利用Thread接口建立多线程方法。

二、实验内容:

1.阅读下列程序,分析并上机检验其功能。class DelayThread exends Thread{ private static int count=0;private int no;private int delay;public DelayThread(){ count++;no=count;} public void run(){ try{ for(int i=0;i<10;i++){ delay=(int)(Math.random()*5000);sleep(delay);System.out.println(“Thread ”+no+” with a delay ”+delay);} }catch(InterruptedException e){}}} public class MyThread{ public static void main(String args[]){ DelayThread thread1=new DelayThread();DelayThread thread2=new DelayThread();thread1.start();thread2.start();try{ Thread.sleep(1000);}catch(InterruptedException e){ System.out.println(“Thread wrong”);}}} 2.讲上列程序利用Runnable接口改写,并上机检验。

3.利用多线程 编写一个模拟时钟(AWT程序、Runnable接口),有时分秒 针 编写一个应用程序,创建三个线程分别显示各自的时间。

三、实验要求:

1.通过实验掌握Thread、Runnable使用方法; 2.程序必须能够实现多线程; 3.程序必须能够完成题目要求; 4.写出实验报告。

四、实验步骤:

首先分析程序功能,再通过上机运行验证自己的分析,从而掌握通过Thread类建立多线程的方法。

通过将扩展Thread类建立多线程的方法改为利用Runnable接口的方法,掌握通过Runnable接口建立多线程的方法。

四、自做实验

课本:P262 12,13,14 25

实验十 输入输出流

一、实验目的:

熟悉Java的文件读写机制,练习输入输出流的使用。

二、实验内容:

1、键盘输入10个整数,从小到大进行排序。

2、接收键盘输入的字符串,用FileInputStream类将字符串写入文件,用FileOutputStream类读出文件内容显示在屏幕上。

3、将一个文本文件的内容按行读出,每读出一行就顺序加上行号,并写入到另一个文件中。

三、实验要求:

1.通过实验掌握文件输入输出流的使用方法; 2.程序必须能够从键盘接收字符串并保存在文件中; 3.程序必须能够读出文件内容显示在屏幕上; 4.写出实验报告。

四、实验步骤:

1.(第1题)接收键盘输入字符串,再转化整数;

2.(第2、3题)编写主方法main(),其中实现接收键盘输入功能、文件操作功能和文件内容输出功能; 3.调试运行程序,观察输出结果。

五、自做实验

课本:P300,7、10

实验十一

Java网络编程

一、实验目的:

1、熟悉掌握Java的相对高级别(简单的)网络通讯

2、熟悉掌握URL类访问Web页面的操作流程

3、学会JAVA的Socket类和ServerSocket类的使用

二、实验内容:

1、编程实现同一Web页面两个Applet之间的通讯

2、编程实现显示URL中的Html文件

*

3、参照例程编写一个简单的聊天室程序(P411,2)

三、实验要求:

1.通过实验掌握的URL类、Socket类和ServerSocket类的使用方法; 2.程序必须完成题目要求的功能; 3.写出实验报告。

四、实验步骤:

1.(第1题)参照例程两个Applet分别加上按钮,互相控制对方的线程 2.(第2题)通过URL类中方法,实现通讯,获取Html文件 3.(第3题)参照例程增加多客户端,实现聊天室 4.调试运行程序,观察输出结果。

五、自做实验 P411,8

实验十二

Java与数据库连接

一、实验目的:

熟悉SQL命令集。

学会编写加载数据库驱动和连接数据库的JAVA程序。应用Java.sql包中的类和接口编写操作数据库的应用程序。

二、实验内容:

编程实现如下功能:在数据库中建立一个表,表名为学生,其结构为:编号、姓名、性别、年龄、JAVA语言、数据结构、微机原理、总分。在表中输入多条记录。将表每条记录按照总分大到小的顺序显示在屏幕上。查找并显示姓名为“张三”的记录。(要求图形界面)

三、实验要求:

1.通过实验掌握SQL命令的使用;

2.使用J2SDK中提供的JDBC-ODBC桥连接数据库; 3.使用的数据库系统不受限制,比如可以用Access。4.调试运行程序,观察输出结果。5.写出实验报告。

四、实验步骤:

1、首先设计一个图形界面

2、首先建立一个数据库,在此基础上通过编程实现一下功能:

在数据库中建立一个表,表名为职工,其结构为:编号、姓名、性别、年龄、JAVA语言、数据结构、微机原理、总分。1)在表中输入多条记录。

2)将每条记录按照总分大到小的顺序显示在屏幕上。

3)查找并显示姓名为“张三”的记录

五、自做实验

课本:P411,2

实验十三

实现C/S应用

一、实验目的:

熟悉综合运用图形用户界面与事件处理机制、Java的文件读写机制、输入输出流的使用、多线程、Java的异常处理、Java网络编程知识,编写一个综合程序

二、实验内容:

利用Socket编程实现C/S应用。其中,Client端为GUI程序,用于提供界面输入两个数,并有1个“发送”按钮,另外还有一个 TextField用于显示传来的计算结果;Server端用于监听连接请求、计算发送过来的两数的和、送回数据结果。

三、实验要求:

1.有良好的图形用户界面; 2.多个用户能同时操作; 3.要有异常处理机制

4.调试运行程序,观察输出结果。5.写出实验报告。

四、实验步骤:

1、编写服务器端程序

2、客户端首先设计一个图形界面

3、实现客户端程序

五、自做实验

在此程序的基础上,增加相应的功能。

第三篇:Java程序设计实验2

学 生 实 验 报 告 册

课程名称:

学生学号:

所属院部:

(理工类)

专业班级:

学生姓名:

指导教师: ——20 学年 第 学期

金陵科技学院教务处制

实验报告书写要求

实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,标题采用四号黑体,正文采用小四号宋体,单倍行距。纸张一律采用A4的纸张。

实验报告书写说明

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

填写注意事项

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

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

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

实验报告批改说明

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

实验报告装订要求

实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。

金陵科技学院实验报告

实验项目名称: 面向对象编程实验 实验学时: 8 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:

金陵科技学院实验报告

实验1 面向对象编程实验

一、实验目的和要求

(1)理解Java概念、掌握JDK环境配置(2)熟悉Java开发过程

(3)掌握Java面向对象编程基础:封装、继承、多态(4)掌握Java接口编程,理解开发模式

二、实验仪器和设备

奔腾以上个人计算机,windows操作系统。

配置好JDK环境,安装集成开发环境(Eclipse)

三、实验内容与过程

1、JDK环境配置

2、面向对象的封装性

范例:设计一个表示学生的类,里面有学生的三项成绩:计算机成绩、数学成绩、英语成绩。要求可以求总分、平均分、最高分、最低分,并且可以输出一个学生的完整信息。代码如下: class Student{ private String name;private int age;private float english;private float computer;private float math;public Student(){} public Student(String n,int a,float e,float c,float m){

this.setName(n);

this.setAge(a);

this.setEnglish(e);

this.setComputer(c);

this.setMath(m);} public float sum(){

return english + computer + math;} public float avg(){

return this.sum()/ 3;} public float max(){

float max = computer>math?computer:math;

max = max>english?max:english;

return max;} public float min(){

float min = computer

min = min

return min;

金陵科技学院实验报告

} public String getInfo(){

return “学生信息: n” +

“t|-姓名:” + this.getName()+ “n” +

“t|-年龄:” + this.getAge()+ “n” +

“t|-数学成绩:” + this.getMath()+ “n” +

“t|-英语成绩:” + this.getEnglish()+ “n” +

“t|-计算机成绩:” + this.getComputer();} public void setName(String n){

name = n;} public void setAge(int a){

age = a;} public void setEnglish(float e){

english = e;} public void setComputer(float c){

computer = c;} public void setMath(float m){

math = m;} public String getName(){

return name;} public int getAge(){

return age;} public float getEnglish(){

return english;} public float getComputer(){

return computer;} public float getMath(){

return math;} } public class ExecDemo{ public static void main(String args[]){

Student stu = new Student(“张三”,30,89.0f,91.0f,87.0f);

System.out.println(“总分:” + stu.sum());

金陵科技学院实验报告

}

} System.out.println(“平均分:” + stu.avg());System.out.println(“最高分:” + stu.max());System.out.println(“最低分:” + stu.min());System.out.println(stu.getInfo());对照范例写出如下题目:

(1)编写并测试一个代表地址的Address类,包括以下的属性:国家、省份、城市、街道、邮编。

可以从此地址类中得到一个完整的地址信息。

(2)定义并测试一个代表员工的Employee类。它的属性包括“员工姓名”、“员工号码”、“员工基本薪水”,它的方法包括“构造方法”、“获取员工姓名”、“获取员工号码”、“获取员工基本薪水”、“设置员工姓名”、“设置员工号码”、“设置员工基本薪水”、所有员工信息的输出getInfo。(3)、定义一个圆形类,可以返回圆的面积与周长。

class Circle{

成员变量 半径 r

构造方法

成员函数 设置和获取 半径

计算周长

计算面积

所有信息输出 } 定义一个矩形类,返回矩形的面积与周长(4)、思考设计:一个人有一本书,一本书属于一个人。//一个人有一本书,一本书属于一个人 //类 新的类别、类型 定义新的数据类型 //两个类的关系 独立的两个类 使用 class Person{ private String name;private int age;private Book book;//一个人有一本书 public Person(){

} public Person(String name,int age){ this.name=name;this.age=age;} public void setBook(Book book){ this.book=book;} public Book getBook(){ return this.book;

金陵科技学院实验报告

} } class Book{ private String name;private float price;private Person person;//一本书属于一个人 public Book(){ } public Book(String name,float price){ this.name=name;this.price=price;} public void setPerson(Person person){ this.person=person;} public Person getPerson(){ return this.person;} } public class TestBP{ public static void main(String args[]){ Person per=new Person(“zhangsan”,20);Book bok=new Book(“Java program”,20.0f);per.setBook(bok);//一个人有一本书

bok.setPerson(per);//一本书属于一个人

per.getBook().getPrice();bok.getPerson().getName();} }

3、面向对象的继承性

范例:要求定义一个数组类Array,里面定义了一个整型数组,但是此整型数组属于动态分配大小,即:所有的大小由程序指定,并在此基础上实现以下的两个子类:

反转类:可以将数组的内容反转排列

排序类:可以对数组进行排序的操作 class Array{ private int temp[] = null;// 只是声明数组,但是大小未知

private int foot = 0;// 用于保存下一个的记录点

public Array(int len){

if(len>0){

this.temp = new int[len];// 此时大小由外部决定

}else{

this.temp = new int[1];// 至少开辟一个空间

} }

金陵科技学院实验报告

public boolean add(int i){ // 加入数据操作

if(this.foot

this.temp[this.foot] = i;// 加入内容

this.foot++;// 改变长度

return true;// 加入成功返回true

}else{

return false;// 加入失败

} } public int[] getArray(){ // 返回全部的数组

return this.temp;} } class SortArray extends Array{ public SortArray(int len){

super(len);} public int[] getArray(){

java.util.Arrays.sort(super.getArray());// 排序操作

return super.getArray();// 返回的是排序后的内容

} } class ReverseArray extends Array{ public ReverseArray(int len){

super(len);} public int[] getArray(){

int rt[] = new int[super.getArray().length];// 根据大小开辟新数组

int count = rt.length-1;

for(int x=0;x

rt[count] = super.getArray()[x];

count--;

}

return rt;} } public class ArrayDemo{ public static void main(String args[]){

ReverseArray arr = new ReverseArray(6);

System.out.println(arr.add(3));

System.out.println(arr.add(23));

System.out.println(arr.add(1));

System.out.println(arr.add(5));

金陵科技学院实验报告

System.out.println(arr.add(6));

System.out.println(arr.add(8));

System.out.println(arr.add(11));

System.out.println(arr.add(16));

print(arr.getArray());} public static void print(int i[]){

for(int x=0;x

System.out.print(i[x] + “、”);

} } } 对照范例写出如下题目:

(1).创建GrandFather类,其中包括

a)属性:姓名(name),年龄(age)

b)方法getGrandFather():显示爷爷的信息

c)构造方法:给爷爷的姓名,年龄赋值(2).创建Father类,继承Grandfather类 a)属性:除了继承爷爷的属性以外,还要增加自己的属性:“职业”(occupation)b)构造方法:显式调用父类的构造方法,为Father类的姓名和年龄赋初始值。再为职业输入初始值。

c)方法getFather(): 显示父亲的相关信息

(3).创建ClassMain()类,定义main()方法,构造GrandFather类的对象和Father类的对象,并分别显示详细信息。

3、面向对象多态性

范例:计算柱体的体积。柱体体积计算公式是:底部面积乘以高度 柱体底部分为 圆形和矩形 要求:通过抽象类和多态实现 package cn.jit.demo;abstract class Bottom { //父类抽象类 底部

public abstract double calculatorArea();} class CircleBottom extends Bottom{ //圆形底

/** * 半径

*/ private double radius;

@Override public double calculatorArea(){

return Math.PI * radius * radius;} public double getRadius(){

金陵科技学院实验报告

return radius;} public void setRadius(double radius){

this.radius = radius;} public CircleBottom(double radius){

super();

this.radius = radius;} } class SquareBottom extends Bottom{ //矩形底

private double sideA;

private double sideB;public double getSideA(){

return sideA;} public void setSideA(double sideA){

this.sideA = sideA;} public double getSideB(){

return sideB;} public void setSideB(double sideB){

this.sideB = sideB;} @Override public double calculatorArea(){

return sideA * sideB;} public SquareBottom(double sideA, double sideB){

super();

this.sideA = sideA;

this.sideB = sideB;} } class ZhuTi { //柱体类,完成形状的拼装

/** * 底

*/ private Bottom bottom;/** * 高

*/

金陵科技学院实验报告

private double height;/** * 计算体积

* @return */ public double calculatorVolumn(){

return bottom.calculatorArea()* height;} public ZhuTi(Bottom bottom, double height){

super();

this.bottom = bottom;

this.height = height;} public Bottom getBottom(){

return bottom;} public void setBottom(Bottom bottom){

this.bottom = bottom;} public double getHeight(){

return height;} public void setHeight(double height){

this.height = height;} public void changeBottom(Bottom bottom){

this.bottom = bottom;} } public class VolumnTest { //测试类

public static void main(String[] args){

Bottom bottom = new CircleBottom(1.0);

double height = 1.0;

ZhuTi zhuTi = new ZhuTi(bottom,height);

double result = zhuTi.calculatorVolumn();

System.out.println(“圆柱体的体积是:” + result);

bottom = new SquareBottom(1.0,1.0);

zhuTi.changeBottom(bottom);

result = zhuTi.calculatorVolumn();

System.out.println(“立方体的体积是:” + result);} } 范例:接口和多态的应用,例如:电脑上实现了USB接口,U盘,打印机等等也都实现了此标准。

金陵科技学院实验报告

interface USB{ public void start();// 开始工作

public void stop();// 结束工作 } class Computer{ public static void plugin(USB usb){

usb.start();

usb.stop();} };class Flash implements USB{ public void start(){

System.out.println(“U盘开始工作。”);} public void stop(){

System.out.println(“U盘停止工作。”);} };class Print implements USB{ public void start(){

System.out.println(“打印机开始工作。”);} public void stop(){

System.out.println(“打印机停止工作。”);} };public class InterPolDemo02{ public static void main(String args[]){

Computer.plugin(new Flash());

Computer.plugin(new Print());} };对照范例,写出以下程序:(1)乐器(Instrument)的标准为弹奏(play),而乐器类型分为:钢琴(Piano)和小提琴(Violin),各种乐器的弹奏方法各不同。编写代码实现不同乐器的弹奏。(2)计算机模拟

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

五、实验体会

金陵科技学院实验报告

实验项目名称: 类集

实验学时: 4 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:

金陵科技学院实验报告

实验2 类集

一、实验目的和要求(1)理解类集概念

(2)熟悉Collection接口、List接口、Set接口和Map接口(3)掌握ArrayList类、HashSet类和TreeSet类(4)理解TreeMap、HashMap

二、实验仪器和设备

奔腾以上个人计算机,windows操作系统。

配置好JDK环境,安装集成开发环境(Eclipse)

三、实验内容与过程

1、类集应用

范例:实现一个超市管理系统,要求可以添加货物,删除货物和查询货物:

。代码如下:

public interface Goods { public String getName();// 得到商品名称

public int getCount();// 得到商品数量

public float getPrice();// 得到商品价格 }

public class Book implements Goods {

private String name;private int count;private float price;

public Book(){ }

public Book(String name, int count, float price){

this.name = name;

this.count = count;

this.price = price;}

public String getName(){

return name;}

public void setName(String name){

this.name = name;

金陵科技学院实验报告

}

public int getCount(){

return count;}

public void setCount(int count){

this.count = count;}

public float getPrice(){

return price;}

public void setPrice(float price){

this.price = price;}

public boolean equals(Object obj){

if(this == obj){

return true;

}

if(!(obj instanceof Book)){

return false;

}

Book b =(Book)obj;

if(b.name.equals(this.name)&& b.count == this.count

&& b.price == this.price){

return true;

} else {

return false;

} }

public int hashCode(){

return this.name.hashCode()+ new Integer(this.count).hashCode()

+ new Float(this.price).hashCode();}

public String toString(){

return “书名:” + this.name + “;书的价格:” + this.price + “;书的数量:”

+ this.count;}

金陵科技学院实验报告

}

import java.util.ArrayList;import java.util.Iterator;import java.util.List;

public class SuperMarket { private List allGoods;

public SuperMarket(){

this.allGoods = new ArrayList();}

public void add(Goods goods){

this.allGoods.add(goods);}

public void remove(Goods goods){

this.allGoods.remove(goods);}

public List search(String keyWord){

List temp = new ArrayList();

Iterator iter = this.allGoods.iterator();

while(iter.hasNext()){

Goods g = iter.next();

if(g.getName().indexOf(keyWord)!=-1){

temp.add(g);

}

}

return temp;}

public List getAllGoods(){

return this.allGoods;} }

import java.util.Iterator;import java.util.List;

public class Test {

金陵科技学院实验报告

public static void main(String[] args){

SuperMarket mak = new SuperMarket();

mak.add(new Book(“Java”, 2, 30.9f));

mak.add(new Book(“C++”, 3, 10.9f));

mak.add(new Book(“JSP”, 5, 80.9f));

print(mak.search(“J”));

mak.remove(new Book(“Java”, 2, 30.9f));

print(mak.search(“J”));}

public static void print(List all){

Iterator iter = all.iterator();

while(iter.hasNext()){

System.out.println(iter.next());

} } } 对照范例写出如下题目:

(1)宠物商店,要求可以添加、删除和查找宠物(2)实现以下两个关系

A、一个学校可以有多个学生,所有学生属于一个学校

B、一门课程可以有多个学生选,一个学生可以选多门课程

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

五、实验体会

金陵科技学院实验报告

实验项目名称: Java IO操作

实验学时: 6 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:

金陵科技学院实验报告

实验3 Java IO操作

一、实验目的和要求

(1)理解输入输出流概念(2)掌握文件输入输出流

(3)掌握键盘的输入、显示器的输出(4)理解其他输入输出流

二、实验仪器和设备

奔腾以上个人计算机,windows操作系统。

配置好JDK环境,安装集成开发环境(Eclipse)

三、实验内容与过程

1、编写类模拟命令Copy

范例:实现文件的复制代码。参考代码如下:

File file1 = new File(“d:”+File.seperator +”demo.txt”);

// 找到第一个文件的File对象

File file2 = new File(“d:”+File.seperator +”cemo.txt”);// 找到目标文件路径 InputStream input = new FileInputStream(file1);// 输入流 OutputStream output = new FileOutputStream(file2);// 输出流 int temp = 0;// 定义一个整数表示接收的内容

while((temp = input.read())!=-1){ // 表示还有内容可以继续读

output.write(temp);// 写入数据 } input.close();// 关闭 output.close();// 关闭

2、通过键盘的输入,实现简单的选项操作。

*********XXXX管理系统***********

[1]添加

[2]删除

[3]修改

[4]查询

[5]退出

3、编写一个简单管理系统,实现真实的操作。

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

五、实验体会

金陵科技学院实验报告

实验项目名称: JDBC

实验学时: 6 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:

金陵科技学院实验报告

实验4 JDBC

一、实验目的和要求(1)理解JDBC分类

(2)掌握JDBC数据库连接步骤

(3)掌握JDBC连接MySQL数据库代码(4)理解JDBC连接其他数据库方式

二、实验仪器和设备

奔腾以上个人计算机,windows操作系统。

配置好JDK环境,安装集成开发环境(Eclipse)

三、实验内容与过程

1、安装MySQL数据库,配置好数据库

创建一个数据库表,按要求给出详细的字段设计

pid name age birthday salary

主要操作:

2、创建Eclipse项目,配置驱动包

每个数据库厂商都会提供对Java开发技术的支持,即都会提供对应的Java驱动,也就是一个jar包

主要操作:

3、项目中建立一个详细例子,按照要求连接、操作、关闭数据库

按照标准的步骤完成对MySQL数据库的操作

主要代码:(添加、修改、删除和查询)

金陵科技学院实验报告

4、试着连接其他类型数据库。

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

五、实验体会

第四篇:Java程序设计实验

学 生 实 验 报 告 册

课程名称:

学生学号:

所属院部:

(理工类)

专业班级:

学生姓名:

指导教师: ——20 学年 第 学期

金陵科技学院教务处制

实验报告书写要求

实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,标题采用四号黑体,正文采用小四号宋体,单倍行距。纸张一律采用A4的纸张。

实验报告书写说明

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

填写注意事项

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

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

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

实验报告批改说明

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

实验报告装订要求

实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。

金陵科技学院实验报告

实验项目名称: 面向对象编程实验 实验学时: 8 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:

金陵科技学院实验报告

实验1 面向对象编程实验

一、实验目的和要求

(1)理解Java概念、掌握JDK环境配置(2)熟悉Java开发过程

(3)掌握Java面向对象编程基础:封装、继承、多态(4)掌握Java接口编程,理解开发模式

二、实验仪器和设备

奔腾以上个人计算机,windows操作系统。

配置好JDK环境,安装集成开发环境(Eclipse)

三、实验内容与过程

1、JDK环境配置

2、面向对象的封装性

范例:设计一个表示学生的类,里面有学生的三项成绩:计算机成绩、数学成绩、英语成绩。要求可以求总分、平均分、最高分、最低分,并且可以输出一个学生的完整信息。代码如下: class Student{ private String name;private int age;private float english;private float computer;private float math;public Student(){} public Student(String n,int a,float e,float c,float m){

this.setName(n);

this.setAge(a);

this.setEnglish(e);

this.setComputer(c);

this.setMath(m);} public float sum(){

return english + computer + math;} public float avg(){

return this.sum()/ 3;} public float max(){

float max = computer>math?computer:math;

max = max>english?max:english;

return max;} public float min(){

float min = computer

min = min

return min;

金陵科技学院实验报告

} public String getInfo(){

return “学生信息: n” +

“t|-姓名:” + this.getName()+ “n” +

“t|-年龄:” + this.getAge()+ “n” +

“t|-数学成绩:” + this.getMath()+ “n” +

“t|-英语成绩:” + this.getEnglish()+ “n” +

“t|-计算机成绩:” + this.getComputer();} public void setName(String n){

name = n;} public void setAge(int a){

age = a;} public void setEnglish(float e){

english = e;} public void setComputer(float c){

computer = c;} public void setMath(float m){

math = m;} public String getName(){

return name;} public int getAge(){

return age;} public float getEnglish(){

return english;} public float getComputer(){

return computer;} public float getMath(){

return math;} } public class ExecDemo{ public static void main(String args[]){

Student stu = new Student(“张三”,30,89.0f,91.0f,87.0f);

System.out.println(“总分:” + stu.sum());

金陵科技学院实验报告

}

} System.out.println(“平均分:” + stu.avg());System.out.println(“最高分:” + stu.max());System.out.println(“最低分:” + stu.min());System.out.println(stu.getInfo());对照范例写出如下题目:

(1)编写并测试一个代表地址的Address类,包括以下的属性:国家、省份、城市、街道、邮编。注意:

1、体现封装

2、构造方法(最少2个)

3、要有输出(可以从此地址类中得到一个完整的地址信息)。

4、测试 主类 main

(2)定义并测试一个代表员工的Employee类。它的属性包括“员工姓名”、“员工号码”、“员工基本薪水”;它的方法包括“构造方法”、“获取员工姓名”、“获取员工号码”、“获取员工基本薪水”、“设置姓名”、“设置员工号码”、“设置基本薪水”。测试(3)、定义一个圆形类(半径属性),封装、构造、整个输出、可以返回圆的面积与周长。测试

(4)、思考设计:一个人有一本书,一本书属于一个人。

3、面向对象的继承性

范例:要求定义一个数组类Array,里面定义了一个整型数组,但是此整型数组属于动态分配大小,即:所有的大小由程序指定,并在此基础上实现以下的两个子类:

反转类:可以将数组的内容反转排列

排序类:可以对数组进行排序的操作 class Array{ private int temp[] = null;// 只是声明数组,但是大小未知

private int foot = 0;// 用于保存下一个的记录点

public Array(int len){

if(len>0){

this.temp = new int[len];// 此时大小由外部决定

}else{

this.temp = new int[1];// 至少开辟一个空间

} } public boolean add(int i){ // 加入数据操作

if(this.foot

this.temp[this.foot] = i;// 加入内容

this.foot++;// 改变长度

return true;// 加入成功返回true

}else{

return false;// 加入失败

} } public int[] getArray(){ // 返回全部的数组

return this.temp;}

金陵科技学院实验报告

} class SortArray extends Array{ public SortArray(int len){

super(len);} public int[] getArray(){

java.util.Arrays.sort(super.getArray());// 排序操作

return super.getArray();// 返回的是排序后的内容

} } class ReverseArray extends Array{ public ReverseArray(int len){

super(len);} public int[] getArray(){

int rt[] = new int[super.getArray().length];// 根据大小开辟新数组

int count = rt.length-1;

for(int x=0;x

rt[count] = super.getArray()[x];

count--;

}

return rt;} } public class ArrayDemo{ public static void main(String args[]){

ReverseArray arr = new ReverseArray(6);

System.out.println(arr.add(3));

System.out.println(arr.add(23));

System.out.println(arr.add(1));

System.out.println(arr.add(5));

System.out.println(arr.add(6));

System.out.println(arr.add(8));

System.out.println(arr.add(11));

System.out.println(arr.add(16));

print(arr.getArray());} public static void print(int i[]){

for(int x=0;x

System.out.print(i[x] + “、”);

} } }

金陵科技学院实验报告

对照范例写出如下题目:

(1).创建GrandFather类,其中包括

a)属性:姓名(name),年龄(age)

b)方法getGrandFather():显示爷爷的信息

c)构造方法:给爷爷的姓名,年龄赋值(2).创建Father类,继承Grandfather类 a)属性:除了继承爷爷的属性以外,还要增加自己的属性:“职业”(occupation)b)构造方法:显式调用父类的构造方法,为Father类的姓名和年龄赋初始值。再为职业输入初始值。

c)方法getFather(): 显示父亲的相关信息

(3).创建ClassMain()类,定义main()方法,构造GrandFather类的对象和Father类的对象,并分别显示详细信息。

3、面向对象多态性

范例:计算柱体的体积。柱体体积计算公式是:底部面积乘以高度 柱体底部分为 圆形和矩形 要求:通过抽象类和多态实现 package cn.jit.demo;abstract class Bottom { //父类抽象类 底部

public abstract double calculatorArea();} class CircleBottom extends Bottom{ //圆形底

/** * 半径

*/ private double radius;

@Override public double calculatorArea(){

return Math.PI * radius * radius;} public double getRadius(){

return radius;} public void setRadius(double radius){

this.radius = radius;} public CircleBottom(double radius){

super();

this.radius = radius;} } class SquareBottom extends Bottom{ //矩形底

private double sideA;

金陵科技学院实验报告

private double sideB;public double getSideA(){

return sideA;} public void setSideA(double sideA){

this.sideA = sideA;} public double getSideB(){

return sideB;} public void setSideB(double sideB){

this.sideB = sideB;} @Override public double calculatorArea(){

return sideA * sideB;} public SquareBottom(double sideA, double sideB){

super();

this.sideA = sideA;

this.sideB = sideB;} } class ZhuTi { //柱体类,完成形状的拼装

/** * 底

*/ private Bottom bottom;/** * 高

*/ private double height;/** * 计算体积

* @return */ public double calculatorVolumn(){

return bottom.calculatorArea()* height;} public ZhuTi(Bottom bottom, double height){

super();

this.bottom = bottom;

this.height = height;

金陵科技学院实验报告

} public Bottom getBottom(){

return bottom;} public void setBottom(Bottom bottom){

this.bottom = bottom;} public double getHeight(){

return height;} public void setHeight(double height){

this.height = height;} public void changeBottom(Bottom bottom){

this.bottom = bottom;} } public class VolumnTest { //测试类

public static void main(String[] args){

Bottom bottom = new CircleBottom(1.0);

double height = 1.0;

ZhuTi zhuTi = new ZhuTi(bottom,height);

double result = zhuTi.calculatorVolumn();

System.out.println(“圆柱体的体积是:” + result);

bottom = new SquareBottom(1.0,1.0);

zhuTi.changeBottom(bottom);

result = zhuTi.calculatorVolumn();

System.out.println(“立方体的体积是:” + result);} } 范例:接口和多态的应用,例如:电脑上实现了USB接口,U盘,打印机等等也都实现了此标准。interface USB{ public void start();// 开始工作

public void stop();// 结束工作 } class Computer{ public static void plugin(USB usb){

usb.start();

usb.stop();} };class Flash implements USB{ public void start(){

金陵科技学院实验报告

System.out.println(“U盘开始工作。”);} public void stop(){

System.out.println(“U盘停止工作。”);} };class Print implements USB{ public void start(){

System.out.println(“打印机开始工作。”);} public void stop(){

System.out.println(“打印机停止工作。”);} };public class InterPolDemo02{ public static void main(String args[]){

Computer.plugin(new Flash());

Computer.plugin(new Print());} };对照范例,写出以下程序:(1)乐器(Instrument)的标准为弹奏(play),而乐器类型分为:钢琴(Piano)和小提琴(Violin),各种乐器的弹奏方法各不同。编写代码实现不同乐器的弹奏。(2)计算机模拟

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

五、实验体会

金陵科技学院实验报告

实验项目名称: 类集

实验学时: 4 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:

金陵科技学院实验报告

实验2 类集

一、实验目的和要求(1)理解类集概念

(2)熟悉Collection接口、List接口、Set接口和Map接口(3)掌握ArrayList类、HashSet类和TreeSet类(4)理解TreeMap、HashMap

二、实验仪器和设备

奔腾以上个人计算机,windows操作系统。

配置好JDK环境,安装集成开发环境(Eclipse)

三、实验内容与过程

1、类集应用

范例:实现一个超市管理系统,要求可以添加货物,删除货物和查询货物:

。代码如下:

public interface Goods { public String getName();// 得到商品名称

public int getCount();// 得到商品数量

public float getPrice();// 得到商品价格 }

public class Book implements Goods {

private String name;private int count;private float price;

public Book(){ }

public Book(String name, int count, float price){

this.name = name;

this.count = count;

this.price = price;}

public String getName(){

return name;}

public void setName(String name){

this.name = name;

金陵科技学院实验报告

}

public int getCount(){

return count;}

public void setCount(int count){

this.count = count;}

public float getPrice(){

return price;}

public void setPrice(float price){

this.price = price;}

public boolean equals(Object obj){

if(this == obj){

return true;

}

if(!(obj instanceof Book)){

return false;

}

Book b =(Book)obj;

if(b.name.equals(this.name)&& b.count == this.count

&& b.price == this.price){

return true;

} else {

return false;

} }

public int hashCode(){

return this.name.hashCode()+ new Integer(this.count).hashCode()

+ new Float(this.price).hashCode();}

public String toString(){

return “书名:” + this.name + “;书的价格:” + this.price + “;书的数量:”

+ this.count;}

金陵科技学院实验报告

}

import java.util.ArrayList;import java.util.Iterator;import java.util.List;

public class SuperMarket { private List allGoods;

public SuperMarket(){

this.allGoods = new ArrayList();}

public void add(Goods goods){

this.allGoods.add(goods);}

public void remove(Goods goods){

this.allGoods.remove(goods);}

public List search(String keyWord){

List temp = new ArrayList();

Iterator iter = this.allGoods.iterator();

while(iter.hasNext()){

Goods g = iter.next();

if(g.getName().indexOf(keyWord)!=-1){

temp.add(g);

}

}

return temp;}

public List getAllGoods(){

return this.allGoods;} }

import java.util.Iterator;import java.util.List;

public class Test {

金陵科技学院实验报告

public static void main(String[] args){

SuperMarket mak = new SuperMarket();

mak.add(new Book(“Java”, 2, 30.9f));

mak.add(new Book(“C++”, 3, 10.9f));

mak.add(new Book(“JSP”, 5, 80.9f));

print(mak.search(“J”));

mak.remove(new Book(“Java”, 2, 30.9f));

print(mak.search(“J”));}

public static void print(List all){

Iterator iter = all.iterator();

while(iter.hasNext()){

System.out.println(iter.next());

} } } 对照范例写出如下题目:

(1)宠物商店,要求可以添加、删除和查找宠物(2)实现以下两个关系

A、一个学校可以有多个学生,所有学生属于一个学校

B、一门课程可以有多个学生选,一个学生可以选多门课程

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

五、实验体会

金陵科技学院实验报告

实验项目名称: Java IO操作

实验学时: 6 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:

金陵科技学院实验报告

实验3 Java IO操作

一、实验目的和要求

(1)理解输入输出流概念(2)掌握文件输入输出流

(3)掌握键盘的输入、显示器的输出(4)理解其他输入输出流

二、实验仪器和设备

奔腾以上个人计算机,windows操作系统。

配置好JDK环境,安装集成开发环境(Eclipse)

三、实验内容与过程

1、编写类模拟命令Copy

范例:实现文件的复制代码。参考代码如下:

File file1 = new File(“d:”+File.seperator +”demo.txt”);

// 找到第一个文件的File对象

File file2 = new File(“d:”+File.seperator +”cemo.txt”);// 找到目标文件路径 InputStream input = new FileInputStream(file1);// 输入流 OutputStream output = new FileOutputStream(file2);// 输出流 int temp = 0;// 定义一个整数表示接收的内容

while((temp = input.read())!=-1){ // 表示还有内容可以继续读

output.write(temp);// 写入数据 } input.close();// 关闭 output.close();// 关闭

2、通过键盘的输入,实现简单的选项操作。

*********XXXX管理系统***********

[1]添加

[2]删除

[3]修改

[4]查询

[5]退出

3、编写一个简单管理系统,实现真实的操作。

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

五、实验体会

金陵科技学院实验报告

实验项目名称: JDBC

实验学时: 6 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:

金陵科技学院实验报告

实验4 JDBC

一、实验目的和要求(1)理解JDBC分类

(2)掌握JDBC数据库连接步骤

(3)掌握JDBC连接MySQL数据库代码(4)理解JDBC连接其他数据库方式

二、实验仪器和设备

奔腾以上个人计算机,windows操作系统。

配置好JDK环境,安装集成开发环境(Eclipse)

三、实验内容与过程

1、安装MySQL数据库,配置好数据库

创建一个数据库表,按要求给出详细的字段设计

pid name age birthday salary

主要操作:

2、创建Eclipse项目,配置驱动包

每个数据库厂商都会提供对Java开发技术的支持,即都会提供对应的Java驱动,也就是一个jar包

主要操作:

3、项目中建立一个详细例子,按照要求连接、操作、关闭数据库

按照标准的步骤完成对MySQL数据库的操作

主要代码:(添加、修改、删除和查询)

金陵科技学院实验报告

4、试着连接其他类型数据库。

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

五、实验体会

第五篇:Java程序设计课程教案

Java使用教材:

程序设计课程教案(普通版)

Java程序设计教程,雍俊海主编,清华大学出版社,2007,国家十一五规划教材 主要参考书:

《Java语言程序设计》,郎波,清华大学出版社,2005年5月。《Java程序设计教程》,施霞萍等.机械工业出版社,2006 《Java编程思想第3版》,[美]埃克尔(Eckel,B.)著,陈昊鹏等译.机械工业出版社,2005J 《JAVA软件开发(第二版)》,Russel Winder&Graham Roberts著,窦巍 译,人民邮电出版社,2004.2 课程总体目标

本课程是软件工程专业开设的学科基础课。本课程的教学任务是通过Java程序设计的课堂讲授、课内实验,课外自主试验等教学环节,培养学生程序设计使用Java语言进行程序设计的基本能力,并且养成学生良好的编程习惯和规范的编程风格。使学生掌握较扎实的 Java 语言基础,理解面向对象程序设计的思想,为Java后续课程的学习打下坚实的基础。

课程的主要内容如下:

1、绪论

2、Java程序设计基础

3、Java面向对象程序设计

4、数组、字符串、向量和哈希表

5、泛型、枚举与for语句的简化写法

6、Java异常处理与递归

7、文件与数据流

8、Java图形用户界面程序设计

9、多线程程序设计

10、网络程序设计

第1章 绪论

一、教学目的和要求

了解Java语言的发展历史,Java语言的特点,学会安装配置Java开发环境,能够编译和运行Java程序。

二、讲授的内容提要和重点、难点及其解决方法,学时分配

1、教学内容

Java语言的发展历史 Java语言的特点

Java开发环境的安装与配置

Java程序开发过程以及命令行状态下编译与运行过程介绍

2、教学重点

Java语言的特点,开发环境配置,编译运行方法

3、教学难点

理解Java程序为什么能够一次编译到处运行;为什么要配置Path环境变量;编译与运行的注意事项。

4、解决办法

原理讲解,操作演示

5、学时分配

发展历史:0.5课时 Java语言的特点:0.5课时

Java开发环境的安装与配置:0.5课时

Java程序开发过程以及命令行状态下编译与运行过程介绍:0.5课时

三、教学过程(教学方法、实施步骤)

使用PPT讲解,运行环境配置,编译运行Java程序则现场操作演示。

四、课外学习要求和作业要求

课外作业:要求下载JDK,自行安装配置并编译运行HelloWorld.java程序

第2章 Java程序设计基础

一、教学目的和要求

了解Java中数据的类型,表示方法,变量的声明,掌握使用标识符命名Java中各种成分的规定和规范;正确掌握表达式的书写方法;能够使用各种控制结构实现程序的逻辑;掌握结构化程序设计的思想和算法描述工具的使用。

二、讲授的内容提要和重点、难点及其解决方法,学时分配

1、教学内容

标识符和关键字 基本数据类型 常量和变量 数据类型转换 运算符:算术运算符、关系运算符、布尔逻辑运算符、位运算符、赋值类运算符、条件运算符等 表达式

程序流程控制语句:if和switch语句;for、while、do~while循环语句;break、Continue和return语句 结构化程序设计

2、教学重点

基本数据类型和类型转换,常量和变量,运算符与表达式,程序流程控制语句。

3、教学难点

数据类型转换;前缀自增、自减运算符与后缀自增、自减运算符的区别;程序流程控制语句。分支语句的嵌套;循环语句的嵌套;标号的概念与使用。

4、解决办法

原理讲解,操作演示

5、学时分配

标识符和关键字,基本数据类型,常量和变量:2学时 数据类型转换,运算符,表达式:1学时

程序流程控制语句,break、Continue和return语句:2学时 结构化程序设计:1学时

三、教学过程(教学方法、实施步骤)

使用PPT讲解,对每一个编程知识点编写Java程序进行运行演示。

四、课外学习要求和作业要求 课外作业:要求复习课堂教学内容,对主要知识点布置作业,要求编写程序并条试运行。要求学会使用算法描述工具表示和设计程序的算法。

第3章 面向对象程序设计

一、教学目的和要求

了解面向对象程序设计基本思想,掌握类的设计方法、实例对象的创建与使用。了解变量作用域范围与参数传递方式。了解并能运用Java中面向对象的封装性、继承性、多态性;

掌握访问权限的控制方法,修饰词abstract、static和final的使用;掌握包、抽象类、接口、内部类的概念和使用方法。

二、讲授的内容提要和重点、难点及其解决方法,学时分配

1、教学内容

类和对象的基本概念。面向对象程序设计基本思想。

类的设计、构造方法、类的成员变量和成员方法。实例对象的创建与使用。

变量作用域范围与参数传递方式。继承性。

多态性:静态多态性和动态多态性。封装性和访问权限控制。

修饰词abstract、static和final。包的概念和使用 抽象类和接口。内部类。

2、教学重点

类的定义,对象的创建,构造方法的定义与使用,方法的重载与覆盖,类的继承,包,抽象类和接口。

3、教学难点

类与对象的概念、创建和使用;方法重载的规则;类的继承与运行时多态,类继承时对构造方法的处理问题,访问控制权限的使用;方法覆盖的规则;抽象类的应用,接口的应用;抽象类与接口的异同。

4、解决办法

原理讲解,操作演示

5、学时分配

类和对象的基本概念,面向对象程序设计基本思想:2学时

类的设计、构造方法、类的成员变量和成员方法,实例对象的创建与使用,变量作用域范围与参数传递方式:2学时

继承性,方法覆盖,多态性:静态多态性和动态多态性:2学时 封装性和访问权限控制,修饰词abstract、static和final,包的概念和使用:2学时

抽象类和接口,内部类:2学时

三、教学过程(教学方法、实施步骤)

使用PPT讲解,对每一个编程知识点编写Java程序进行运行演示。

四、课外学习要求和作业要求

课外作业:要求复习课堂教学内容,对主要知识点布置作业,要求编写程序并条试运行。安排4个学时的课内上机实验。

第4章 数组、字符串、向量与哈希表

一、教学目的和要求

了解一维数据和多维数组的声明与使用,掌握遍历数组的方法,了解并能够使用字符串String的常用方法,掌握StringBuffer的用法,了解并掌握向量Vector,哈希表Hashtable、HashMap和WeakHashMap的用法。

二、讲授的内容提要和重点、难点及其解决方法,学时分配

1、教学内容

数组:一维数据和多维数组。字符串:String和StringBuffer。向量:Vector。

哈希表:Hashtable、HashMap和WeakHashMap。

2、教学重点

一维数组的使用,String和StringBuffer的构造方法和常见方法的使用,Vector类的使用,哈希表类的创建和使用。

3、教学难点

多维数组的声明和使用,数组的初始化方法,String和StringBuffer的使用方法的区别,哈希表类的使用。

4、解决办法

原理讲解,操作演示

5、学时分配

数组:一维数据和多维数组:1.5学时 字符串:String和StringBuffer:1学时 向量:Vector,哈希表:1.5学时

三、教学过程(教学方法、实施步骤)

使用PPT讲解,对每一个编程知识点编写Java程序进行运行演示。

四、课外学习要求和作业要求

课外作业:要求复习课堂教学内容,对主要知识点布置作业,要求编写程序并条试运行。要求作业必须进行上机调试。

第5章 异常处理

一、教学目的和要求

了解异常的概念,异常类的层次结构;掌握异常的抛出、捕获和处理方法;能够自定义异常类并且使用自定义异常类。

二、讲授的内容提要和重点、难点及其解决方法,学时分配

1、教学内容

异常的概念。异常类的层次结构。异常的抛出、捕获和处理。自定义异常类

2、教学重点

异常的基本概念,异常的抛出捕获和处理,自定义异常类。

3、教学难点

异常的处理机制;Try-catch-finallly异常处理结构的执行流程特点;自定义异常类。

4、解决办法

原理讲解,操作演示

5、学时分配

异常的概念,异常类的层次结构:0.5学时 异常的抛出、捕获和处理:1学时 自定义异常类:0.5学时

三、教学过程(教学方法、实施步骤)

使用PPT讲解,对每一个编程知识点编写Java程序进行运行演示。

四、课外学习要求和作业要求

课外作业:要求复习课堂教学内容,对主要知识点布置作业,要求编写程序并条试运行。安排一次课内上机实验。

第6章 文件与数据流

一、教学目的和要求

了解输入流与输出流的基本概念,掌握常见输入和输出流类的使用,掌握文件和随机存取文件的操作,了解读写器的使用方法,掌握对象序列化的概念。能够编写从键盘输入数据以及对磁盘文件进行读写的程序

二、讲授的内容提要和重点、难点及其解决方法,学时分配

1、教学内容

输入流与输出流的基本概念。

常见输入和输出流类:InputStream和OutputStream,DataInputStream和DataOutputStream,FileInputStream和FileOutputStream,PrintStream, 带缓存的输入流和输出流。文件和随机存取文件。

读写器:Reader和Writer,FileReader和FileWriter,带缓存的读写器,PrintWriter。

对象序列化。

2、教学重点

输入输出流的基本概念,文件输入流和文件输出流,文件与目录管理,随机存取文件。

3、教学难点

字节流与字符流的选用,节点流与过滤流的配合使用,随机读写文件,对象序列化。

4、解决办法

原理讲解,操作演示

5、学时分配

输入流与输出流的基本概念,常见输入和输出流类的使用,过滤流的使用:2学时

文件和随机存取文件,读写器:Reader和Writer,FileReader和FileWriter,带缓存的读写器,PrintWriter,对象序列化:2学时

三、教学过程(教学方法、实施步骤)

使用PPT讲解,对每一个编程知识点编写Java程序进行运行演示。

四、课外学习要求和作业要求

课外作业:要求复习课堂教学内容,对主要知识点布置作业,要求编写程序并条试运行。安排一次课内上机实验。

第7章 图形用户界面程序设计

一、教学目的和要求

了解基本组件和容器组件,掌握主要布局管理器的概念和使用方法,掌握事件处理机制及其实现方法,了解Swing的特点和类的层次结构,Swing常见组件和容器;掌握键盘和鼠标事件处理方法,了解高级图形用户界面:菜单、树、表格和多文档界面的编程方法;掌握Java的图形程序设计。

二、讲授的内容提要和重点、难点及其解决方法,学时分配

1、教学内容

AWT功能和类的层次结构。(选讲)AWT的基本组件和容器组件。(选讲)布局管理器。事件处理机制。

Swing的特点和类的层次结构。Swing常见组件和容器。键盘和鼠标事件处理。

高级图形用户界面:菜单、树、表格和多文档界面。

小应用程序:Applet的基本工作原理, Applet生命周期, Applet类中的重要方法, Applet编写方法和Applet与浏览器的参数传递。(选讲)Java的图形程序设计。

2、教学重点

常用的GUI组件和容器,布局管理器,事件处理机制,菜单和表格。

3、教学难点:

布局管理器的灵活应用,事件处理机制,表格处理。

4、解决办法 原理讲解,操作演示

5、学时分配

常用图形控件,基本组件和容器组件,布局管理器:2学时 事件处理机制:2学时

Swing的特点和类的层次结构,Swing常见组件和容器:2学时 键盘和鼠标事件处理:2学时

高级图形用户界面:菜单、树、表格和多文档界面:2学时

小应用程序:Applet的基本工作原理, Applet生命周期, Applet类中的重要方法, Applet编写方法和Applet与浏览器的参数传递。:2学时

Java的图形程序设计:2学时

三、教学过程(教学方法、实施步骤)

使用PPT讲解,对每一个编程知识点编写Java程序进行运行演示。

四、课外学习要求和作业要求

课外作业:要求复习课堂教学内容,对主要知识点布置作业,要求编写程序并条试运行。安排4学时课内上机实验。

第8章 多线程程序设计

一、教学目的和要求

了解基本组件和容器组件,掌握主要布局管理器的概念和使用方法,掌握事件处理机制及其实现方法,了解Swing的特点和类的层次结构,Swing常见组件和容器;掌握键盘和鼠标事件处理方法,了解高级图形用户界面:菜单、树、表格和多文档界面的编程方法;掌握Java的图形程序设计。

二、讲授的内容提要和重点、难点及其解决方法,学时分配

1、教学内容

程序、进程、线程的概念。线程的创建。

线程的状态与线程的控制。线程优先级与线程调度。多线程的同步问题和处理方法。

2、教学重点

线程的创建、线程的控制与调度,多线程同步问题。

3、教学难点

两种创建线程的方法的区别,启动线程的start()方法与直接调用run()方法的区别,多线程同步问题和处理方法。

4、解决办法

原理讲解,操作演示

5、学时分配

程序、进程、线程的概念,线程的创建,线程的状态与线程的控制:2学时 线程优先级与线程调度,多线程的同步问题和处理方法:2学时

三、教学过程(教学方法、实施步骤)

使用PPT讲解,对每一个编程知识点编写Java程序进行运行演示。

四、课外学习要求和作业要求

课外作业:要求复习课堂教学内容,对主要知识点布置作业,要求编写程序并条试运行。安排2学时课内上机实验。第9章 网络程序设计

一、教学目的和要求

了解基本组件和容器组件,掌握主要布局管理器的概念和使用方法,掌握事件处理机制及其实现方法,了解Swing的特点和类的层次结构,Swing常见组件和容器;掌握键盘和鼠标事件处理方法,了解高级图形用户界面:菜单、树、表格和多文档界面的编程方法;掌握Java的图形程序设计。

二、讲授的内容提要和重点、难点及其解决方法,学时分配

1、教学内容

基于URL获取网络资源 基于TCP的网络程序设计 基于UDP的网络程序设计

2、教学重点

基于URL获取网络资源,基于TCP的网络程序设计。

3、教学难点

支持多客户端/服务器端程序的设计与开发。

4、解决办法

原理讲解,操作演示

5、学时分配

基于URL获取网络资源:1学时 基于TCP的网络程序设计:1.5学时 基于UDP的网络程序设计:1.5学时

三、教学过程(教学方法、实施步骤)使用PPT讲解,对每一个编程知识点编写Java程序进行运行演示。

四、课外学习要求和作业要求

课外作业:要求复习课堂教学内容,对主要知识点布置作业,要求编写程序并条试运行。

下载Java程序设计课程实验代码及答案word格式文档
下载Java程序设计课程实验代码及答案.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


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

相关范文推荐

    《Java程序设计》课程总结.

    《Java程序设计》总评成绩分析及课程总结 1、学期授课计划是否符合教学大纲要求 符合。 2、教学内容及进度是否与学期授课计划有出入,是何原因 无出入,完成规定的学习内容。......

    《Java程序设计》课程简介

    《Java程序设计》选修课简介 一、课程基本信息 课程名称:Java程序设计 英文名称:Java programming 课程类别:专业选修课 考核方式:考查 先修课程:离散数学、C语言、数据结构 学时......

    【Java程序设计】课程教学大纲

    【Java程序设计】课程教学大纲 第一部分 课程基本信息 【课程代码】 【学分】 5 【参考学时】 108学时 【讲授学时】 72学时 【实验学时】 36学时 【课程性质】 任选课 【课......

    JAVA程序设计课程总结

    JAVA程序设计课程总结 专业:计算机科学与技术 学号: 姓名:JAVA程序设计课程总结 经过一学期的java学习,我在老师的上课讲解以及自己的课下学习中对java编程有了一定的了解,我深深......

    java流实验内容及代码

    实验7 流(2学时) 一、实验目的 1. 熟悉流类库中各种常用流的使用方法。 2. 能够使用流类实现基本的文件读写。 二、实验内容 1. 编写程序,在控制台窗口提示输入两个整数,然后接......

    Java Web程序设计(04112560)--实验7

    实验项目七1、实验项目名称: 监听和过滤 2、实验项目性质:验证性 3、实验要求:必修 4、计划学时数:2学时 5、实验内容: . 实现网上书店项目后台管理用户的过滤功能。具体要求......

    Java语言程序设计课程知识点总结

    Java语言程序设计课程知识点总结 by wgc 1、构造方法 无返回值,和类名相同 new调用2、方法的重载 (1同3不同)方法名称相同参数个数 类型 顺序不同 与返回值类型无关构造方法......

    基于职业教育的java程序设计课程的教学探讨

    基于职业教育的java程序设计课程的教学探讨 摘 要:java语言是公司常用开发语言,根据近几年的教学实践经验,结合学生职业需求,总结本课程教学实施需要从课程体系着手,从多个方面进......