《java程序设计》实验指导书(完整) 下载本文

XX学院java实验报告 实验一 Java实验环境的建立

一、实验目的

1.掌握Java编程环境的搭建过程; 2.掌握Jcreator pro软件的使用方法; 3.能使用Java doc文档。 二、实验内容

1.下载并安装JDK1.6,配置JDK环境变量;

2.下载Javadoc压缩包并解压在JDK安装路径下; 3.下载Jcreator pro 4.0并安装和配置使用环境;

4.使用实验环境运行书中实例代码,在屏幕上输出“Hello Java”字符串。 ①Java application程序代码如下: public class HelloJava {

public static void main(String args[]) {

System.out.println(\ } }

②Java applet程序代码如下: import java.awt.*;

public class Hello extends java.applet.Applet {

public void paint(Graphics g)

{

g.drawString(\ }

}

三、试验要求

1、预习试验内容并写出上机报告。 2、实验中出现的问题及实验体会。

1

XX学院java实验报告 实验二 Java语言程序设计训练

一、实验目的:

1.输入、输出操作实现原理和方法 2.掌握程序流程控制的实现方法 3.掌握数组的定义和操作方法 二、实验内容

1.计算 Result=1!+2!+3!+?+10!

public class TestJieC{ }

2.计算1---50之间所有素数的和。

public class Test{

public static void main(String arg[]){ }

long result=1; for(int i=1;i<=10;i++) { result=i*result; }

System.out.println(\

result+=result;

public static void main(String args[]){

int count = 0;

for(int i = 2;i<=50;i++){

for(int j = 2;j<=i;j++){ }

if(count==0){

2

if(i>j){ }

if(i%j == 0){ }

count++;

XX学院java实验报告

} }

}

}

}

count = 0;

System.out.println(i);

3. 产生10个100之内的随机整数输出,并把这10个数按从小到大的顺序输出。 public class TestMath{

public static void main(String args[]){ }

3

int math[] = new int[10]; for(int i = 0;i<10;i++){ }

System.out.println(); for(int i = 0;i<10;i++){ }

for(int i = 0;i<10;i++){ }

System.out.print(math[i]+\for(int j = 0;j<10;j++){ }

if(math[i]

int l = math[i]; math[i] = math[j]; math[j] = l;

math[i] = (int)(Math.random()*100); System.out.print(math[i]+\

XX学院java实验报告

}

4. 随机产生20个50~100间的整数,输出这20个数并找出最大数及最小数输出。 public class TestMath{ }

5.试编写程序,实现求几何形状(长方形、正方形、圆形)的周长、面积。(可任选其一)

import java.util.Scanner; public class Test{

public static void main(String args[]){ }

int math[] = new int[20]; int max = 0;int min = 100; for(int i = 0;i<20;i++){ }

System.out.println(); for(int i = 0;i<20;i++){ }

System.out.println(\System.out.println(\

max = max>math[i] ? max : math[i]; min = min

public static void main(String args[]) throws Exception{

Scanner is = new Scanner(System.in); System.out.println(\请输入长方形的宽\); int a = is.nextInt();

System.out.println(\请输入长方形的高\); int b = is.nextInt();

System.out.println(\输入1求出周长,输入2求出面积,输入三求出周长与面积\); int c = is.nextInt(); if(c == 1){

System.out.println(\周长\+(a+b)*2); }else if(c == 2){

System.out.println(\面积\+a*b); }else if(c == 3){

4

XX学院java实验报告

}

}

System.out.println(\周长\+(a+b)*2+\面积\+a*b); }else{

System.out.println(\输入有误,退出\); }

6.验证书中的例题。 三、试验要求

1、预习试验内容并写出上机报告。 2、实验中出现的问题及实验体会。

实验三 面向对象的程序设计(一)

一、实验目的

1. 熟悉类的创建方法。 2. 掌握对象的声明与创建。

3. 能利用面向对象的思想解决一般问题。 二、实验内容

1. 以下程序能否通过编译?上机验证并指明错误原因与改正方法 Class Location{ Private int x,y;

Public void Location(int a,int b) { X=a; y=b;}

Public int getX(){return x;} Public int getY(){return y;}

Public static void main(String args[]){ Location loc=new Location(12,20); System.out.println(loc.getX()); System.out.println(loc.getY()); }

2. 创建一个图书类,类中包含的属性有:书名、作者、出版社;包含的方法有:设置书籍状态,查看书籍状态。书籍状态有在馆和外借两种。

public class Lib{ //创建一个图书类,类中包含的属性有:书名、作者、出版社;包含的方法有:设置书籍

5

XX学院java实验报告

状态,查看书籍状态。书籍状态有在馆和外借两种。 //

private String Bname; private String Aname; private String Baddress; //书籍状态

private boolean zt; //包含方法set get

public void setzt(boolean zt){ this.zt=zt; }

public boolean getzt(boolean zt){ return zt; }

public static void main(String[] args){ }

}3. 设计一个Birthday类,其成员变量有:year,month,day;提供构造方法、输出Birthday对象值的方法和计算年龄的方法。编写程序测试这个类。

public class Birthday{

//设计一个Birthday类,其成员变量有:year,month,day;提供构造方法、输出Birthday对象值的方法和计算年龄的方法。编写程序测试这个类。 private int year; private int month; private int day;

public Birthday(int year,int month,int day){ this.year=year; this.month=month; this.day=day; }

public void printBirthDay(){

System.out.println(year+\ }

public int printAge(){ return 2012-year; }

public static void main(String[] args){ } }4.(选作)编写一个学生和教师数据输入和显示程序,学生数据有编号、姓名、班号和成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名输入和显示设计成一个类Person,并作为学生数据操作类Student和教师数据操作类Teacher的基类。

public class Person { //定义Person类 public int bianhao;

public String name;

public Person(int biaohao,String name){

6

XX学院java实验报告

}

class Student extends Person{ //定义学生类 int banhao; }

class Teacher extends Person{ //定义教师类 String zhicheng; }

String bumen;

private Teacher(int bianhao,String name,String zhicheng,String bumen){ }

super(bianhao,name); this.bianhao=bianhao; this.name=name;

this.zhicheng=zhicheng; this.bumen=bumen; int chengji;

private Student(int bianhao,String name,int banhao,int cj){ }

super(bianhao,name); this.banhao=banhao; this.chengji=cj; }

public void input(int bianhao,String name){ }

public void printXS(){ //定义显示(这边有点疑问)

System.out.println(bianhao+\+name); }

public static void main(String[] args) { }

this.bianhao=bianhao; this.name=name; this.bianhao=bianhao; this.name=name;

5.验证书中的例题。 三、实验要求

1. 事先预习,写出预习报告 2. 上机后写出实验报告

7

XX学院java实验报告

实验四 面向对象的程序设计(二)

一、实验目的 1.熟悉类的定义

2.掌握对象的声明、实例化及成员的引用 3.掌握构造方法及实例方法的区别与用法 二、实验内容

1.编写一个类,描述汽车,其中用字符型描述车的牌号,用浮点型描述车的价格。编写一个测试类,其中有一个修改价格的方法,对汽车对象进行操作,根据折扣数修改汽车的价格,最后在main()方法中输出修改后的汽车信息。

class Car{ }

public class TestCar{ }

public static void main(String[] args){ }

Car c=new Car(\奔驰S6OO\,50000); c.dismessage(); String chePai; float price; float price1;

Car(String chePai,float price){ }

void dismessage(){

System.out.println(\这辆车的品牌是\+chePai+\原价是\+price+\打折后为\+price1); }

this.chePai=chePai; this.price1=price*4/5; this.price=price;

2. 设计一个银行帐户类,成员变量包括账号、储户姓名、开户时间、身份证号码、存款余额等帐户信息,成员方法包括存款、取款操作。

public class Test {

public static void main(String args[]){

Bank b1 = new Bank(\鹿鹿\鹿容\ b1.cun(100000.00);b1.qu(10000.00);b1.info(); } }

class Bank{

private String user; private String name; private String time; private int id;

private double money;

Bank(String user,String name,String time,int id,double money){

this.user = user;this.name = name;this.time = time;this.id = id;this.money = money; }

public void cun(double inMoney){ money = money+inMoney;

8

XX学院java实验报告

}

}

public void qu(double outMoney){ if(money-outMoney>=0){

money = money-outMoney; } }

public void info(){

System.out.println(\余额还有\}

3. 编写一个java程序,设计一个汽车类Vehicle,包含的属性有车轮的个数wheels和车重weight。小汽车类Car是Vehicle的子类,包含的属性有载人数loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个类都有构造方法和输出相关数据的方法。

public class Vehicle { }

class smallCar extends Vehicle{ }

class Truck extends smallCar{

int wheels; double weights;

Vehicle(int wheels,double weights){ this.wheels=wheels; }

void disMessage(){

System.out.println(\这个车车轮个数是\+wheels+\重量是\+weights+\斤\); }

public static void main(String[] args){ }

Vehicle v=new Vehicle(8,10.00); smallCar c=new smallCar(6); Truck t=new Truck(10); v.disMessage(); c.disM(); t.disM2(); t.disM3();

this.weights=weights;

//这是构造方法

int loader;

smallCar(int loader){ }

void disM(){

System.out.println(\这个小汽车可载\+loader+\人\); }

super(8,10.00); this.loader=loader;

int payload;

Truck(int payload){

9

XX学院java实验报告

}

void disM2(){

System.out.println(\这卡车载重为\+payload+\); }

void disM3(){

System.out.println(\这卡车有\+wheels+\个轮子\+\车重有\+weights+\斤\+\可载super(6);

this.payload=payload;

\+loader+\人\+\载重为\+payload+\斤\); } }

4. 验证书中的例题。 三、实验要求

1.事先预习,写出预习报告 2.上机后写出实验报告

10

XX学院java实验报告 实验五 面向对象综合实验

一、实验目的

1.熟悉类的定义;

2.掌握对象的声明、实例化及成员的引用; 3.掌握构造方法及实例方法的区别与用法。 二、实验内容

多数用户对去银行办理存款、取款等业务并不默生,用户自然感觉到了通过计算机办理业务的方便、快捷,也自然对编写出银行系统程序的程序员发出由衷的敬意。实际上,当我们具备了面向对象编程的知识以后,我们也能编写出相应的程序。

程序框架如下,将代码补充完整:

2. 设计一个银行帐户类,成员变量包括账号、储户姓名、开户时间、身份证号码、存款余额等帐户信息,成员方法包括存款、取款操作。

package bank; //创建程序包

import java.util.*; class BankCount { int id;

String name,date; float money;

public BankCount(int id,String name,String date,float money) //构造方法

//引入程序包 //定义类

{//方法体 this.id=id; }

class BCOption

{ Vector vec=new Vector(); //对象声明与实例化 static int count=0; //类中静态变量的定义

public void kaihu(BankCount bc) //方法体,实现开户功能 //实例方法 {

count++;

vec.add(bc); }

public void moneyOut(int id, float outmoney) //方法体,实现取钱功能 {

BankCount bc = (BankCount)vec.get(id);

11

}

this.name=name; this.date=date; this.money=money;

XX学院java实验报告

bc.money -=outmoney; vec.set(id, bc); }

public void moneyIn(int id, float inmoney) {//方法体,实现存钱功能

BankCount bc = (BankCount)vec.get(id); bc.money +=inmoney; vec.set(id, bc);

}

public void query(int id)

{//方法体,查询并输出账户信息 BankCount bc = (BankCount)vec.get(id);

System.out.println(bc.id+\+bc.name+\+bc.date+\+bc.money); }

public static void main(String args[]) {//实现账户的相关操作

BCOption bco = new BCOption();

bco.kaihu(new BankCount(1,\,\,12)); bco.query(0);

12

XX学院java实验报告

} }

三、实验要求

1、根据题目要求完成程序中没有完成的模块。 2、写好上机报告。

实验六 异常处理

一、实验目的

1.熟悉异常的抛出与捕获的含义; 2.掌握异常捕获与处理的方法; 3.能自定义异常。 二、实验内容

现在多数学校的成绩管理都由计算机进行管理,这就需要有相应的应用程序。编写成绩管理应用程序,其中有成绩录入模块,成绩录入过程中,难免出现录入数据的类型出现错误,或录入的成绩不在合理的范围。在成绩录入过程中,若出现上述错误,程序应该如何处理。 程序框架如下,将代码补充完整:

import javax.swing.JOptionPane;

class 负分异常 extends Exception //当录入了负分时。此处应用了自定义异常 { }

class 高分异常 extends Exception //当录入分超过100时。应用了自定义异常 { }

public class ExceptionDemo {

负分异常(int i){

System.out.println(\分数为负数\); }

高分异常(int i ){

System.out.println(\分数过高\); }

static final int number=2; int score[]=new int[number];

public void 检查分数(int 分数) throws 负分异常,高分异常 //下面方法中判断如果录入的成绩不合{ if(分数 >100) throw new 高分异常(分数); //通过throw,人工抛出异常 if(分数 <0) throw new 负分异常(分数); }

public void 录入成绩()

13

理,则抛出异常,但本方法并不处理异常,仅声明了异常

XX学院java实验报告

{ int i;

for(i=0;i

score[i]=Integer.parseInt(JOptionPane.showInputDialog(\请输入第\+(i+1)

+\个同学的成绩\));

}catch(NumberFormatException e) //在try{…….}catch间的语句中若产生异常,则捕获

异常,直接进行异常处理 { } }

14

try{ 检查分数(score[i]); //在检查分数模块中,可能产生高分异常对象,也可能产生低分异}catch(高分异常 e){

System.out.println(e);

常对象,根据不同情况,进行不同处理

}catch(负分异常 e){

System.out.println(e);

}

}

}

public void 输出成绩() {

System.out.println(score[0]); System.out.println(score[1]);

}

public static void main(String arg[]) {

ExceptionDemo demo = new ExceptionDemo(); demo.录入成绩();

demo.输出成绩(); }

XX学院java实验报告

三、实验要求

1、根据题目要求完成程序中没有完成的模块。 2、写好上机报告。

实验七:图形用户界面设计(一)

一、 实验目的:

1. 巩固图形用户界面设计的方法 2. 掌握事件处理的设计方法 二、 实验内容:

1.绘制如下形式的图形界面,要求:窗体背景为蓝色,中间为黄色方格。

import java.awt.*; public class Test{ }

class F extends Frame{

public static void main(String args[]){ }

new F();

F(){

int x,y,w,h;

x = 200;y = 200;w = 200;h = 200; setBounds(x,y,w,h);

setBackground(Color.yellow); Panel p = new Panel();

p.setBounds(x/4,y/4,w/2,h/2); p.setBackground(Color.blue); setLayout(null);

15

XX学院java实验报告

} }

add(p);

setVisible(true);

2. 编写程序,绘制如下格式的界面:

import java.awt.*;

public class Test{

public static void main(String args[]){

Frame f = new Frame();

f.setLayout(new GridLayout(2,1)); f.setBounds(300,300,300,300);

Panel p1 = new Panel(new BorderLayout()); Panel p2 = new Panel(new BorderLayout()); Panel p11 = new Panel(new GridLayout(2,1)); Panel p21 = new Panel(new GridLayout(2,2)); p1.add(new Button(\),BorderLayout.WEST); p1.add(new Button(\),BorderLayout.EAST); p11.add(new Button(\)); p11.add(new Button(\)); p1.add(p11,BorderLayout.CENTER);

p2.add(new Button(\),BorderLayout.WEST); p2.add(new Button(\),BorderLayout.EAST); for(int i = 0;i<4;i++){

p21.add(new Button(\));

16

XX学院java实验报告

}

}

}

p2.add(p21,BorderLayout.CENTER); f.add(p1);f.add(p2); f.setVisible(true);

3.编写程序,创建如下图所示的图形界面(不必为组件提供功能)。

import java.awt.*; import java.awt.event.*;

public class Test{

public static void main(String args[]){

Frame f = new Frame();

f.setBounds(300,300,300,300); f.setLayout(new BorderLayout()); Panel p1 = new Panel();

p1.setLayout(new GridLayout(1,0)); p1.add(new TextField());

17

XX学院java实验报告

}

}

Panel p2 = new Panel();

p2.setLayout(new GridLayout(4,4)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); f.add(p1,BorderLayout.NORTH); f.add(p2,BorderLayout.CENTER);

f.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){ }

System.exit(0);

});

f.setVisible(true);

18

XX学院java实验报告

4.验证书中例题。 三、 实验要求:

1. 事先预习,写出预习报告 2. 上机验证后写出实验报告

实验八 图形用户界面设计(二)

一、实验目的

1.掌握各种组件的用法;

2.掌握布局管理器的布局方式; 3.掌握事件处理机制。 二、实验内容

1.验证书中例题。

2.试创建如下图所示的图形用户界面,颜色列表框为红色、绿色和蓝色。

import java.awt.*;

public class Test{

public static void main(String args[]){

Frame f = new Frame();

f.setBounds(300,300,300,300); f.setLayout(new BorderLayout());

Panel p1 = new Panel();Panel p2 = new Panel();Panel p21 = new Panel();Panel p22 p1.setLayout(new GridLayout(1,0)); Choice c = new Choice();

c.add(\红色\);c.add(\绿色\);c.add(\蓝色\); p1.add(c);

p2.setLayout(new GridLayout(2,1));

p21.setLayout(new FlowLayout(FlowLayout.CENTER));p22.setLayout(new p21.add(new Checkbox(\背景\)); p21.add(new Checkbox(\前景\)); p22.add(new Button(\确定\)); p22.add(new Button(\取消\)); p2.add(p21);p2.add(p22);

19

= new Panel();

FlowLayout(FlowLayout.CENTER));

XX学院java实验报告

} }

f.add(p1,BorderLayout.NORTH); f.add(p2,BorderLayout.CENTER);

f.setVisible(true);

3.编写程序,创建如下图所示的图形界面。(要求实现功能)

import java.awt.*; import java.awt.event.*;

public class Test extends Frame{

static TextField tf1 = new TextField(); static TextField tf2 = new TextField(); static TextField tf3 = new TextField();

static Button b1 = new Button(\求和\);static Button b2 = new Button(\清除\); public static void main(String args[]){ }

20

Test f = new Test();

f.setBounds(300,300,300,300); f.setLayout(new GridLayout(3,3)); f.add(new Label(\加数1:\));

f.add(tf1);

f.add(new Label()); tf1.getText();

f.add(new Label(\加数2:\));

f.add(tf2);f.add(new Label());

b1.addActionListener(new Test().new T()); b2.addActionListener(new Test().new T()); f.add(b1);f.add(tf3);f.add(b2); f.setVisible(true);

XX学院java实验报告

class T implements ActionListener{ } }

public void actionPerformed(ActionEvent e) { }

// TODO 自动生成方法存根 if(e.getSource() == b1){ }

int a = Integer.parseInt((tf1.getText())); int b = Integer.parseInt((tf2.getText())); tf3.setText(\+(a+b)); tf1.setText(\); tf2.setText(\); tf3.setText(\);

}else if(e.getSource() == b2){

三、实验要求

1、根据题目要求完成各程序。 2、写好上机报告。

实验九 图形用户界面设计(三)

一、实验目的

1.掌握各种组件的用法;

2.掌握布局管理器的布局方式; 3.掌握事件处理机制。 4. 熟悉绘图类的基本用法

5.掌握绘图类中常用的绘图方法 二、实验内容

1.验证书中例题:P200页 例6.5、P209页 例6.6。

2.设计一个程序,程序执行时,随机产生一条直线、一个矩形、一个椭圆,并且每个图形的颜色不同。(说明:可利用系统类Math中的静态方法random(),该方法产生一个0~1间的小数)

import javax.swing.*;

21

XX学院java实验报告

import java.awt.*; import java.awt.event.*; import java.util.Random;

public class FFrame extends JFrame{ }

public class Test { }

public static void main(String args[]){ }

new FFrame().lauchFFrame(); /** * */

private static final long serialVersionUID = -3229434935585351686L; public void lauchFFrame(){ }

public void paint(Graphics g){ }

Random r = new Random(); int i = r.nextInt(3); if(i == 0){ }

g.setColor(Color.BLACK); g.fillOval(50, 50, 100, 100); g.setColor(Color.blue); g.fillRect(50, 50, 100, 100); g.setColor(Color.CYAN); g.drawLine(50, 50, 100, 100); setBounds(300,300,300,300);

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){ }

setVisible(false); System.exit(0);

});

setVisible(true);

}else if(i == 1){

}else{

22

XX学院java实验报告

3.设计如下形式的窗口,并实现窗口的关闭功能:

import javax.swing.*;

import java.awt.*; import java.awt.event.*;

public class FFrame extends JFrame{

/** * */

private static final long serialVersionUID = -3229434935585351686L; public void lauchFFrame(){ }

public void paint(Graphics g){

g.drawString(\五星\, 200, 200); g.drawLine(81,55,37,190);

23

setBounds(300,300,300,300);

addWindowListener(new WindowAdapter(){

addMouseListener(new MouseAdapter(){

setVisible(true);

public void mousePressed(MouseEvent e){ }

int x = e.getX(); int y = e.getY();

System.out.println(\+x+\+y); public void windowClosing(WindowEvent e){ }

setVisible(false); System.exit(0);

});

});

XX学院java实验报告

}

}

g.drawLine(37,190,159,93); g.drawLine(159,93,32,96); g.drawLine(32,96,155,188); g.drawLine(155,188,81,55);

4. 设计如下形式的窗口,并实现窗口的关闭功能:

package paint;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class FFrame extends JFrame{ /** * */

private static final long serialVersionUID = -3229434935585351686L; public void lauchFFrame(){

setBounds(300,300,500,400);

addWindowListener(new WindowAdapter(){

24

XX学院java实验报告

}

public void windowClosing(WindowEvent e){ setVisible(false); System.exit(0); } });

addMouseListener(new MouseAdapter(){

public void mousePressed(MouseEvent e){ int x = e.getX(); int y = e.getY();

System.out.println(\ } });

setVisible(true); }

public void paint(Graphics g){ g.setColor(Color.BLUE);

g.fillRect((500-100)/2, 80, 100, 100); g.drawOval((500-150)/2, 60, 150, 150); g.setColor(Color.RED);

g.fillRect((500-300)/2,150,300,100); g.fillOval(90, 140, 20, 20); g.fillOval(390, 140, 20, 20); g.fillOval(90, 240, 20, 20); g.fillOval(390, 240, 20, 20); g.fillRect(90, 150, 10, 100); g.fillRect(400, 150, 10, 100); g.fillRect(100,140,300,10); g.fillRect(100,250,300,10); g.fillOval(140, 240, 60, 60); g.fillOval(300, 240, 60, 60); g.setColor(Color.BLACK);

g.drawLine(50, 300, 450, 300); }

25

XX学院java实验报告

三、实验要求

1、根据题目要求完成各程序。 2、写好上机报告。

实验十:图形用户界面综合设计

一、 实验目的:

1、 巩固图形用户界面设计的方法 2、 掌握事件处理的设计方法 二、 实验内容:

案例 学生信息注册界面设计解析

多数学校的学生档案信息都由计算机进行管理,在编写的档案管理应用程序中,有档案信息录入模块,该模块的功能是在图形化的界面下,用户把信息输入到计算机中。录入界面的大致样式及组件名称如图。

26

XX学院java实验报告

框架标签文本行面板单选钮复选框选择框按钮文本区图5-1 信息录入界面

设计上述程序界面并实现相应的功能,程序框架如下,补全代码:

import java.awt.*; import java.awt.event.*;

public class InputData implements ActionListener {

Frame f; //声明框架对象 Label l1,l2,l3,l4; //声明标签对象 TextField t; //声明文本行对象 Checkbox r1,r2; //声明单选钮对象 CheckboxGroup g; //声明组对象 Checkbox c1,c2,c3;

Choice ch; //声明选择框对象 Button b; //声明按钮对象 TextArea ta; //声明文本区对象 Panel p1,p2,p3,p4,p5; //声明面板对象 int i=0;

public InputData() {//对象实例化;

f=new Frame(\信息录入\);

f.setBounds(200,200,500,500); ch = new Choice();

l1 = new Label(\姓名:\);l2 = new Label(\性别:\);l3 = new Label(\爱好:\);l4 = new

Label(\籍贯:\); t = new TextField();

t.setSize(200, 10);g = new CheckboxGroup();

r1 = new Checkbox(\男\,g,false);r2 = new Checkbox(\女\,g,true);

c1 = new Checkbox(\体育\);c2 = new Checkbox(\音乐\);c3 = new Checkbox(\美术\); b = new Button(\确定\);

b.addActionListener(this); ta = new TextArea();

27

XX学院java实验报告

p2 = new Panel();p3 = new Panel();p4 = new Panel();p5 = new Panel();

ch.add(\济南\); //添加选择项 ch.add(\潍坊\); ch.add(\济宁\);

Panel p = new Panel();

p.setLayout(new GridLayout(5,1)); p1=new Panel();

p1.setLayout(new FlowLayout(FlowLayout.LEFT)); //设定面板布局样式 p2.setLayout(new FlowLayout(FlowLayout.LEFT)); p3.setLayout(new FlowLayout(FlowLayout.LEFT)); p4.setLayout(new FlowLayout(FlowLayout.LEFT)); p.add(p1);

p.add(p2);p.add(p3);p.add(p4);p.add(p5);

p1.add(l1); //面板中加入组件 p1.add(t);

p2.add(l2);p2.add(r1);p2.add(r2);

p3.add(l3);p3.add(c1);p3.add(c2);p3.add(c3); p4.add(l4);p4.add(ch);

p5.setLayout(new FlowLayout(FlowLayout.CENTER)); p5.add(b);

f.setLayout(new GridLayout(2,1)); //设定框架布局样式 f.add(p);

28

XX学院java实验报告

}

public void actionPerformed(ActionEvent e) //事件处理接口实现 { //把输入内容显示到文本区中; i++;

String n = \第\+i+\名同学的输入信息为:\\n\ ;

n+= \姓名:\+t.getText()+\;

String xingbie = \+g.getSelectedCheckbox().getLabel();

String aihao = \+(c1.getSelectedObjects()==null?\:c1.getLabel())+

\+(c2.getSelectedObjects()==null?\:c2.getLabel())+

\+(c3.getSelectedObjects()==null?\:c3.getLabel());

f.addWindowListener(new WindowAdapter(){ //注册事件监听器,匿名类实现接口 public void windowClosing(WindowEvent e){

}

f.setVisible(false); System.exit(0);

f.add(ta);

});

f.setVisible(true);

n+= \性别:\+xingbie+\+\爱好:\+aihao;

n+= \籍贯:\+(ch.getSelectedIndex()==0?\济南\:(ch.getSelectedIndex()==1?\潍坊\:\

济宁\));

ta.append(n+\); }

}

public static void main(String args[]) { }

new InputData();

三、 实验要求:

1、 事先预习,写出预习报告 2、 上机验证后写出实验报告

实验十一 多线程技术

一、实验目的

1.理解多线程编程技术的概念; 2.掌握多线程创建的方法;

3.掌握多线程在实际应用开发程序中的使用。 二、实验内容

案例 动画显示解析

29

XX学院java实验报告

动画显示是多媒体技术的一个主要方面,如今动画制作也是日常工作中经常要用到的,实现动画技术的方法也非常多,利用多线程的技术方法可以解决动画显示的一些实现问题,

动画原理:

在Applet中加载若干幅表现不同状态的图片,利用线程按顺序切换图片实现动画效果。下载图片时,使用了图像跟踪技术。

尝试实现功能,补全代码。 1、程序代码: import java.awt.*;

import java.applet.Applet;

public class Animation extends Applet implements Runnable { Image images[]; //图像数组 MediaTracker tracker; //图像跟踪对象变量 int index=0; //图像索引 Thread animator; //线程变量 Image offScrImage; //用于图像缓冲的图像对象变量 Graphics offScrGC; //图像对象变量 int total=5; //图片总数 public void init()

{ tracker=new MediaTracker(this); //建立图像跟踪对象 images=new Image[total]; //建立数组 try{ offScrImage=createImage(getWidth(),getHeight()); //建立用于缓冲的对象 offScrGC=offScrImage.getGraphics(); //取出图像对象 offScrGC.setColor(getBackground()); offScrGC.fillRect(0,0,getWidth(),getHeight()); //用背景色画矩形 }catch(Exception e){e.printStackTrace();} for(int i=0;i

{

} try{ tracker.waitForAll(); //等待全部图像载入完 }catch(InterruptedException e){} } public void start() //在缓冲区准备好第一幅图并建立线程、启动线程

{

} public void run()

{

30

XX学院java实验报告

} try{ animator.sleep(200); //休眠等待200毫秒 }catch(InterruptedException e){ } repaint(); //调用重画方法 } }

public void paint(Graphics g) { }

public void update(Graphics g) //重写update()方法防止闪烁 {

}

2、Applet程序运行,编写Html文件:

三、实验要求:

1、事先预习,写出预习报告 2、上机验证后写出实验报告

}

public void stop() { if(animator!=null) animator=null; //清除对象,停止线程 }

实验十二:Applet程序设计

一.实验目的:

1.熟悉Applet程序的编写与运行

2.掌握HTML文件与Applet间参数的传递 3.掌握在Applet中输出图像与声音 二.实验内容:

1.设计用户邮箱登录界面。(如下所示)

31

XX学院java实验报告

2.请编写一个Applet,用它的HTML文件中给出的两个整型参数作加数,求它们的和,并显示结果。

3.准备好几个音乐文件和一幅图像,编写一个Applet,显示一幅图像并添加“播放”、“循环”、“停止”三个按钮,用于控制音乐文件的播放。

32

XX学院java实验报告

4.验证书中例题。 三、试验要求

1、预习试验内容并写出上机报告。 2、实验中出现的问题及实验体会。

实验十三 输入输出(一)

一、实验目的:

1.理解Java输入输出的实现机制;

2.掌握常用的输入输出类的功能及方法;

3.掌握常用数据类型针对文件的输入输出方式。 二、实验内容:

1. double型数组中保存有如下数据:1.23,69.88,34.45,67.98,2345.67。将数据以二进制形式保存到文件中去。

33

XX学院java实验报告

public class Test { }

}

FileOutputStream fos = new FileOutputStream(f); for(int i = 0;i

fos.write((char)q[i]);

/**

* @param args

* @throws FileNotFoundException */

public static void main(String[] args) throws Exception {

// TODO 自动生成方法存根 String f = \;

double q[] = {1.23,69.88,34.45,67.98,2345.67};

2.编程将以上数据以可打印形式保存到文件中去。

import java.io.*; public class Test { }

public static void main(String args[]) throws Exception{ }

String n = \;

BufferedWriter bw = new BufferedWriter(new FileWriter(\)); bw.write(n); bw.close();

34

XX学院java实验报告

3.读入http://www.sina.com..cn网页的内容,并以可读形式将其输出到一个文件中去。

import java.net.URL; import java.io.*;

public class Test {

Reader r = new InputStreamReader(is);

FileOutputStream fos = new FileOutputStream(\); int c = 0;

while((c = r.read())!=-1){ fos.write(c); } }

} /**

* @param args

* @throws Exception */

public static void main(String[] args) throws Exception {

URL u = new URL(\); InputStream is = u.openStream(); is = new BufferedInputStream(is);

三、试验要求:

1、预习试验内容并写出上机报告。 2、实验中出现的问题及实验体会。

35

XX学院java实验报告 实验十四 输入输出(二)

一、实验目的

1.理解Java输入输出的实现机制;

2.掌握常用的输入输出类的功能及方法;

3.掌握常用数据类型针对文件的输入输出方式。 二、实验内容

案例 记事本程序设计解析

我们经常使用记事本来记录、保存一些数据、文字,或者打开以前创建的文件进行操作。把我们编辑好的内容存入文件就是输出。而打开原有的文件的内容则是输入。程序主界面如图1所示。当点击打开按钮则弹出打开文件对话框如图2所示。当选择文本文件后,将文本文档的内容显示在文本区中如图3所示。同理,当在文本区中编辑好内容后,点击保存按钮,则弹出文本保存对话框,选择保存位置后可将内容保存到文件中去。

试尝试实现此功能。

图1 记事本界面 图2 打开文件对话框 图3 显示文件内容 源代码如下,补全代码: 1.界面程序: import java.awt.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*;

public class Frame1 extends JFrame implements ActionListener {

JPanel contentPane;

JScrollPane jScrollPane1 = new JScrollPane(); BorderLayout borderLayout1 = new BorderLayout(); JPanel jPanel1 = new JPanel();

JTextArea jTextArea1 = new JTextArea(); JButton jButton1 = new JButton(\保存\ JButton jButton2 = new JButton(\打开\//窗口的构造方法

36

XX学院java实验报告

public Frame1() { }

//jbInit()方法完成界面的初始化设置 private void jbInit() throws Exception {

37

setLayout(borderLayout1); jButton1.addActionListener(this); jButton2.addActionListener(this);

add(jTextArea1,borderLayout1.CENTER); add(jPanel1,borderLayout1.SOUTH); jPanel1.setLayout(new FlowLayout()); jPanel1.add(jButton1); jPanel1.add(jButton2); setBounds(200,200,600,600);

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){ }

setVisible(false); System.exit(0);

});

XX学院java实验报告

}

//保存、打开两个按钮的事件处理方法 public void actionPerformed(ActionEvent e) { //如果用户点击保存按钮

if(e.getSource()==jButton1){ JFileChooser fc1=new JFileChooser();

int option = fc1.showSaveDialog(null); // 显示文件对话框

if(option == JFileChooser.APPROVE_OPTION) // 如果确认选取文件 {

File file = fc1.getSelectedFile(); // 取得选择的文件 setTitle(file.toString()); // 在标题栏上设定文件名称 try {

file.createNewFile(); // 建立文件 }

catch(IOException e1) {

JOptionPane.showMessageDialog(null, e1.toString(),

\无法建立新文件\ } } }

//如果用户点击打开按钮 if(e.getSource()==jButton2) {

jTextArea1.setText(\

JFileChooser fc=new JFileChooser();

38

XX学院java实验报告

int option1 = fc.showDialog(null, null);

39

// 使用者按下确认键

if(option1 == JFileChooser.APPROVE_OPTION) { try {

// 开启选取的文件 BufferedReader buf = new BufferedReader( new FileReader( fc.getSelectedFile()));

setTitle(fc.getSelectedFile().toString());// 设定文件标题 jTextArea1.setText(\清除前一次文件

String lineSeparator = System.getProperty(\ // 取得系统相依的换行字符 String text;// 读取文件并附加至文字编辑区 while((text = buf.readLine()) != null) { }

jTextArea1.append(text); jTextArea1.append(lineSeparator);

buf.close(); }

catch(IOException ee) {

JOptionPane.showMessageDialog(null, ee.toString(), \开启文件失败\ }

XX学院java实验报告

catch(Exception ex){

System.out.print(ex.toString());

} } } }

2.主程序:

}

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

public class Application1 {

public Application1( ) {

Frame1 frame = new Frame1(); // 使窗口居中

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize(); if (frameSize.height > screenSize.height)

{ frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width)

{ frameSize.width = screenSize.width; }

frame.setLocation( (screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);

frame.setVisible(true); }

//主程序的main()方法

public static void main(String[] args) { new Application1( ); } }

三、试验要求

1、预习试验内容并写出上机报告。 2、实验中出现的问题及实验体会。

实验十五 网络通信

一、实验目的

1.理解网络通信的原理和常用通信技术的概念; 2.掌握基于TCP协议的套接字的网络编程方法 3.掌握网络通信在实际应用开发程序中的应用。 二、实验内容

案例 聊天程序解析

通过建立一个Socket客户端和一个ServerSocket服务端进行实时数据交换。运行时先打开服务器端,然后

40

XX学院java实验报告

再打开客户端,单击客户端的“连接服务器”按钮将与服务器建立连接;连接之后,双方在各自图形界面的文本框中填写要发送的信息,然后单击 “Send”按钮,就可以进行通信了。程序运行结果如图1所示。整个程序分成客户端和服务器端两大部分,分别保存成Client.java和Server.java两个文件。

图1 聊天程序运行界面(客户端和服务器端)

1.客户端程序代码:

import java.net.*; import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*;

class Client extends JFrame implements ActionListener { Socket sock; //定义套接字对象 JTextArea t1=new JTextArea(); {

41

JTextField t2=new JTextField(20); JButton b1=new JButton(\); JButton b2=new JButton(\连接服务器\);

DataOutputStream out; //定义数据输出流 DataInputStream in; //定义数据输出流 public Client()

this.getContentPane().add(jsp,\); JPanel p1=new JPanel(); p1.add(t2); p1.add(b1); JPanel p2=new JPanel(); p2.add(b2);

this.getContentPane().add(p2,\); this.getContentPane().add(p1,\);

b1.addActionListener(this); b2.addActionListener(this); setTitle(\客户端\); setSize(340,200); setVisible(true); addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e)

setVisible(false); System.exit(0);

{ JScrollPane jsp=new JScrollPane(t1);

XX学院java实验报告

{ {

42

}

}

});

public void actionPerformed(ActionEvent e)

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

try { }

out = new DataOutputStream(sock.getOutputStream()); String n = t2.getText(); out.writeUTF(n); t2.setText(\);

// TODO 自动生成 catch 块 e1.printStackTrace();

} catch (IOException e1) {

}

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

try { }

new Communnion(this).start();

sock = new Socket(\,7777); // TODO 自动生成 catch 块 e1.printStackTrace(); // TODO 自动生成 catch 块 e1.printStackTrace();

} catch (UnknownHostException e1) {

} catch (IOException e1) {

XX学院java实验报告

{ }

class Communnion extends Thread { { { { }

}

}

try { } try{

fp.out.close(); //关闭Socket输出流 fp.in.close(); //关闭Socket输入流

fp.in = new DataInputStream(fp.sock.getInputStream()); msg = fp.in.readUTF(); if(msg!=null){ }

// TODO 自动生成 catch 块 e.printStackTrace();

fp.t1.append(msg+\);

String msg=null; while(true) }

public void run()

this.fp=fp; Client fp;

Communnion(Client fp) }

Client mainFrame=new Client(); }

public static void main(String agrs[])

}

} catch (IOException e) {

fp.sock.close(); //关闭Socket }catch(Exception ee){}

2.服务器端代码:

43

XX学院java实验报告

package server;

import java.net.*; import java.io.*; import java.awt.*; import java.awt.event.*;

import javax.swing.*;

class Server extends JFrame implements ActionListener { {

ServerSocket serverSock ; //定义服务器套接字 Socket sock; //定义客户套接字 JTextArea t1=new JTextArea(); JTextField t2=new JTextField(20); JButton b1=new JButton(\);

DataOutputStream out; //定义数据输出流 DataInputStream in; //定义数据输入流 String cname=null;

public Server() throws IOException

serverSock = new ServerSocket(7777); JScrollPane jsp=new JScrollPane(t1); this.getContentPane().add(jsp,\); JPanel p1=new JPanel(); p1.add(t2); p1.add(b1);

this.getContentPane().add(p1,\); b1.addActionListener(this);

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){ }

setVisible(false); System.exit(0);

});

setTitle(\服务器\); setSize(340,200); setVisible(true); try{

sock=serverSock.accept(); //使用accept()阻塞等待客户请求,

44

XX学院java实验报告

{ }

class Communnion extends Thread { {

}

//有客户请求到来则产生一个Socket对象,并继续执行 System.out.println(\);

out=new DataOutputStream(sock.getOutputStream()); //由Socket对象得到输入流,并构造相应的DataOutputStream对象 in=new DataInputStream(sock.getInputStream()); out.writeUTF(\你连接服务器成功\); // 给客户反馈信息

Communnion th=new Communnion(this); //建立与客户端交互的线程

//由socket对象得到输出流,并构造DataInputStream对象

th.start(); // 启动线程 }catch(Exception e){}

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e)

out.writeUTF(\); //退出时告诉客户端 }catch(Exception ee){} dispose(); System.exit(0);

{ try{

} });

public void actionPerformed(ActionEvent e)

String n = t2.getText(); try { }

out.writeUTF(n); t2.setText(\);

// TODO 自动生成 catch 块 e1.printStackTrace();

} catch (IOException e1) {

}

public static void main(String agrs[]) throws IOException

{ Server mainFrame=new Server(); }

Server fp;

Communnion(Server fp)

this.fp=fp;

45

XX学院java实验报告

{ {

} try{

fp.out.close(); //关闭socket输出流 fp.in.close(); //关闭socket输入流 fp.sock.close(); //关闭socket }catch(Exception ee){break; }

try{

msg = fp.in.readUTF(); if(msg!=null){ }

fp.t1.append(msg+\);

String msg=null; while(true) }

public void run()

fp.serverSock.close(); //关闭ServerSocket }catch(Exception ee){}

} }

三、实验要求:

1、事先预习,写出预习报告 2、上机验证后写出实验报告

实验十六 数据库设计

一、实验目的

1.理解JDBC的功能及体系结构;

2.掌握利用JDBC实现数据库的查询更新等操作的方法; 3.掌握基本的Java数据库程序设计。 二、实验内容

案例 成绩查询系统分析

设计一个小程序可以实现各种单科考试、竞赛等成绩的各种查询。将操作与图形用户界面相结合,则很容易实现绩查询系统。程序包括三个类,除了主程序及窗体程序外,数据库连接的功能单独由一个类来完成。程序主界面如图1所示。当输入考号后点击按考生查询按钮,则显示该生成绩如图2所示。

46

XX学院java实验报告

图1 成绩查询系统界面 图2 按照考号查询成

点击“成绩名次”按钮可以查看考试排名如图3所示。点击“未通过名单”按钮可以查看学生不及格的情况如图4所示。

图3 查询成绩名次 图4 查询未通过名单

在上面的案例框架中,我们需要利用JDBC连接数据库进行访问。 试尝试实现此功能,补全代码。 1.数据库连接类: import java.sql.*;

public class DbConnect //静态方法提高数据库的连接 { } }

2.窗体程序: import java.awt.*; import javax.swing.*; import java.sql.*;

import java.awt.event.*;

public class ScoreInquirementFrame extends JFrame implements ActionListener {

JPanel contentPane;

47

XX学院java实验报告

Connection con; Statement st;

JSplitPane jSplitPane1 = new JSplitPane();

BorderLayout borderLayout1 = new BorderLayout(); JPanel jPanel1 = new JPanel();

JScrollPane jScrollPane1 = new JScrollPane(); JTextArea jTextArea1 = new JTextArea(); JLabel jLabel1 = new JLabel(\考号\

JButton jButton1 = new JButton(\成绩名次\ JButton jButton2 = new JButton(\未通过名单\ JTextField jTextField1 = new JTextField();

JButton jButton3 = new JButton(\按考生查询\ //构造方法

public ScoreInquirementFrame() {

}/进行窗口的初始化

private void jbInit() throws Exception {

contentPane = (JPanel) getContentPane(); contentPane.setLayout(borderLayout1); setSize(new Dimension(400, 300)); setTitle(\成绩查询系统\ con=DbConnect.getConn(); st=con.createStatement();

jSplitPane1.setOrientation(JSplitPane.VERTICAL_SPLIT); jPanel1.setLayout(null);

jLabel1.setBounds(new Rectangle(24, 15, 49, 25)); jButton1.setBounds(new Rectangle(79, 58, 181, 29)); jButton1.addActionListener(this);

jButton2.setBounds(new Rectangle(80, 100, 178, 28)); jButton2.addActionListener(this);

jTextField1.setBounds(new Rectangle(79, 15, 180, 25)); jButton3.setBounds(new Rectangle(268, 15, 96, 24)); jButton3.addActionListener(this);

contentPane.add(jSplitPane1, java.awt.BorderLayout.CENTER); jSplitPane1.add(jPanel1, JSplitPane.TOP); jPanel1.add(jButton1); jPanel1.add(jButton2); jPanel1.add(jTextField1); jPanel1.add(jButton3); jPanel1.add(jLabel1);

jSplitPane1.add(jScrollPane1, JSplitPane.BOTTOM);

48

XX学院java实验报告

jScrollPane1.getViewport().add(jTextArea1); jSplitPane1.setDividerLocation(135); }

//按钮的事件处理方法

public void actionPerformed(ActionEvent e) {//“按考生查询”按钮的事件处理方法 }

//“未通过名单”按钮的事件处理方法 if(e.getSource()= =jButton2) {

49

XX学院java实验报告

}

//“成绩名次”按钮的事件处理方法 if(e.getSource()= =jButton1) { } } }

3.主程序: import java.awt.*; import javax.swing.*;

public class ScoreInquirement {

public ScoreInquirement() {

ScoreInquirementFrame frame = new ScoreInquirementFrame(); //令窗体对象居中显示

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize();

50