Java程序设计实验指导书(答案)

更新时间:2024-05-22 22:07:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

JAVA实验指导书

实验1:Java开发环境J2SE

一、实验目的

(1)学习从网络上下载并安装J2SE开发工具。 (2)学习编写简单的Java Application程序.

(3)了解Java源代码、字节码文件,掌握Java程序的编辑、编译和运行过程。

二、实验任务

从网络上下载或从CD-ROM直接安装J2SE开发工具,编写简单的Java Application程序,编译并运行这个程序。

三、实验内容

1.安装J2SE开发工具

Sun公司为所有的java程序员提供了一套免费的java开发和运行环境,取名为Java 2 SDK,可以从http://java.sun.com上进行下载。安装的时候可以选择安装到任意的硬盘驱动器上,例如安装到C:\\j2sdk1.4.1_03目录下。教师通过大屏幕演示J2SE的安装过程,以及在Windows98/2000/2003下环境变量的设置方法。

2.安装J2SE源代码编辑工具Edit Plus及JAVA集成开发环境Eclipse

教师通过大屏幕演示Edit Plus的安装过程,以及在Windows98/2000/2003操作系统环境下编辑Java原程序的常用命令的用法。

3.编写并编译、运行一个Java Application程序。

创建一个名为HelloWorldApp的java Application程序,在屏幕上简单的显示一句话\老师,你好!\。 public class HelloWorldApp{ public static void main(String[] args){ System.out.println(\老师,你好!\ } }

- 1 -

4.编译并运行下面的Java Application程序,写出运行结果。

1: public class MyClass { 2: private int day; 3: private int month; 4: private int year; 5: public MyClass() { 6: day = 1; 7: month = 1; 8: year = 1900; 9: } 10: public MyClass(int d,int m,int y) { 11: day = d; 12: month = m; 13: year = y; 14: } 15: public void display(){ 16: System.out.println(day + \

17: } 18: public static void main(String args[ ]) { 19: MyClass m1 = new MyClass(); 20: MyClass m2 = new MyClass(25,12,2001); 21: m1.display(); 22: m2.display(); 23: } 24:}

运行结果: 1-1-1900 25-12-2001

实验2:Java基本数据类型

一、实验目的

(1)掌握javadoc文档化工具的使用方法。 (2)掌握Java语言转义字符的功能。 (3)理解“值传递”的过程。

二、实验任务

- 2 -

(1)利用javadoc文档化工具,将给定的Java Application源代码自动生成一系列说明文档。 (2)输入、运行给定的Java Application程序,写出运行结果,以验证Java语言转义字符的功能。 (3)按照要求编写Java Application程序。

三、实验内容

1.Javadoc文档化工具的使用

Java 2 SDK 1.4.1中提供了一个文档自动生成工具,可以简化程序员编写文档的工作。可以使用javadoc.exe命令启动Java文档化工具,自动生成Java程序文档。

输入下面给出的Java Application程序,利用javadoc命令生成该Java应用程序的文档,并使用浏览器IE显示生成的文档页面内容。

1: /* Java编程技术chapter3,CommentTest.java 2: 版权所有:。 3: 作者:

4: 日期:2001/07/01 5: */ 6: /**

7: 这是一个Java语言入门程序,定义类CommentTest。其中含有main()方法,因此可以作为一 8: 个应用程序单独执行。其功能是在默认的输出设备上输出字符串\你好!\。 9: */ 10: public class CommentTest { 11: //主方法,作为Java应用程序的默认入口。 12: 13: 14: 15:

public static void main(String args[ ]) {

System.out.println(\你好!\输出\你好!\ } }

执行javadoc CommentTest.java指令,生成文件:

CommentTest.html、package-frame.html、package-summary.html、package-tree.html、constant-values.html、overview-tree.html、index-all.html、deprecated-list.html、allclasses-frame.html、allclasses-noframe.html、index.html、help-doc.html。

2.输入下面的Java Application程序,写出运行结果。

1: public class CharSample{

2: public static void main(String args[ ]) { 3: char ch1 = '\\b'; 4: char ch2 = '\\t'; 5: char ch3 = '\\n'; 6: char ch4 = '\\r'; 7: char ch5 = '\\\8: char ch6 = '\\''; 9: char ch7 = '\\\\'; 10: System.out.println(\中南\民族大学\11: System.out.println(\中南\民族大学\

- 3 -

12: 13: 14: 15: 16: 17: 18:}

System.out.println(\中南\民族大学\System.out.println(\中南\民族大学\System.out.println(ch5+\中南\民族大学\System.out.println(ch6+\中南\民族大学\System.out.println(ch7+\中南\民族大学\}

运行结果: 中南民族大学 中南 民族大学 中南 民族大学 中南 民族大学 “中南民族大学” ‘中南民族大学’ \\中南民族大学\\

3.按下面的要求完成Java Application程序,写出程序的运行结果。

(1)定义一个Java类Point,用来描述平面直角坐标系中点的坐标,该类应该能描述点的横、纵坐标信息及一些相关操作,包括获取点的横、纵坐标,修改点的坐标,显示点的当前位置等。

(2)定义一个测试类javaTest,创建Point类的对象并对其进行有关的操作。 class Point{ double x,y; public void setXY(double a,double b){ x=a; y=b; } public double getX(){ return x; } public double getY(){ return y; } public void disp(){ System.out.println(\点的当前坐标为:(\ } };

public class javaTest{ public static void main(String[] args){ Point p1=new Point(); p1.disp();

- 4 -

p1.setXY(3.2,5.6); p1.disp();

}

}

运行结果:

点的当前坐标为:(0.0, 0.0) 点的当前坐标为:(3.2, 5.6)

实验3:Java流程控制

一、实验目的

(1)掌握Java运算符的用法。

(2)掌握表达式的使用和各种运算符的优先级控制。 (3)掌握结构化程序设计的基本结构。

二、实验任务

(1)输入根据给定的Java Application程序,写出运行结果,并说明程序所完成的功能。 (2)按照要求编写Java Application程序。

三、实验内容

1.输入如下所示的Java Application程序,写出运行结果,并说明程序的功能。

1: import java.io.*;

2: public class findNum {

3: public static void main(String args[]) { 4: String s; 5: double d; 6: int i;

7: boolean b = false; 8: do { 9: try { 10: System.out.println(\请输入一个浮点数: \11: BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 12: s = br.readLine(); // 以字符串方式读入 13: i = s.indexOf('.'); //找到小数点的位置 14: d = Double.parseDouble(s); // 将字符串转换成浮点数 15: System.out.println(d + \整数部分为:\

- 5 -

16: if( i == -1 ) //若没有小数点,则没有小数部分 17: System.out.println(d + \小数部分为:0.0\18: else // 若有小数点,则截取小数点后的字符串合成浮点数 19: System.out.println(d + \小数部分为:\\

20: b = false; 21: } 22: catch(NumberFormatException nfe) { 23: System.out.println(\输入浮点数格式有误。\\n\24: b = true; 25: } 26: catch(IOException ioe) { 27: b = false; 28: } 29: } 30: while(b); //浮点格式错误时重新输入 31: } // end of main 32:} // end of class

运行结果:

请输入一个浮点数:

abc

输入浮点数格式有误 请输入一个浮点数:

3.14

3.14的整数部分为:3 3.14的小数部分为:0.14

程序功能:通过IO类从命令行读入一个字符串,如果输入的字符串为非数字字符串,则提示异常,要求重新输入。如果输入的是一个没有小数点的数字字符串(即整数类型),则将其转换为double型浮点数,最后完成将浮点数的小数位和整数位分别输出。

2.编写一个Java Application程序,输出区间[200,300]上的所有素数,要求写出程序的运行结果。

public class Prime{ public static void main(String[] args){ int i,j; outer: for(i=200;i<=300;i++){ for(j=2;j

- 6 -

}

}

运行结果:

211 223 227 229 239 241 251 257 263 269 271 277 281 283 293

实验4:Java类与对象

一、实验目的

(1)掌握Java类的继承关系和派生方法。 (2)理解多态的概念与使用。 (3)掌握接口的定义和使用。

二、实验任务

(1)按要求编写一个Java程序。

(2)按要求完善一个Java程序,编译、运行这个程序,并写出运行结果。

三、实验内容

1.编写一个Java程序片断,以定义一个表示学生的类Student。这个类的属性有“学号”、“班号”、“姓名”、“性别”、“年龄”,方法有“获得学号”、“获得班号”、“获得性别”、“获得姓名”、“获得年龄”、“获得年龄”。 2.为类Student增加一个方法public String toString( ),该方法把Student类的对象的所有属性信息组合成一个字符串以便输出显示。编写一个Java Application程序,创建Student类的对象,并验证新增加的功能。

class Student{ private long studentID; private int classID; private String name; private String sex; private int age; public Student(long studentID,int classID,String name,String sex,int age){ this.studentID=studentID; this.classID=classID; this.name=name; this.sex=sex; this.age=age;

- 7 -

} public long getStudentID(){ return studentID; } public int getClassID(){ return classID; } public String getName(){ return name; } public String getSex(){ return sex; } public int getAge(){ return age; } public String toString(){ return \学号:\班号:\姓名:\性别:\年龄:\ } }

public class StudentDemo{ public static void main(String[] args){ Student s1=new Student(90221,2,\ System.out.println(s1.toString()); } }

运行结果: 学号:90221 班号:2 姓名:Tom 性别:male 年龄:20

实验5:Java继承与多态

一、实验目的

(1)掌握Java类的定义和使用方法。 (2)掌握对象的声明和使用。

- 8 -

(3)构造函数的概念和使用。

(4)掌握类及其成员的访问控制符的使用。 (5)掌握包的概念和使用。

二、实验任务

(1)输入根据给定的Java Application程序,写出运行结果。 (2)按照要求编写Java Application程序。

三、实验内容

1.阅读如下所示的3个Java类的定义,分析它们之间的关系,写出运行结果。1: class SuperClass { 2: int x;

3: SuperClass() { 4: x=3; 5: System.out.println(\6: }

7: void doSomething() { 8: System.out.println(\9: } 11:}

1: class SubClass extends SuperClass { 2: int x;

3: SubClass() { 4: super(); //调用父类的构造方法 5: x=5; //super( ) 要放在方法中的第一句 6: System.out.println(\7: }

8: void doSomething( ) {

9: super.doSomething( ); //调用父类的方法 10: System.out.println(\11: System.out.println(\12: } 14:}

1: public class Inheritance {

2: public static void main(String args[]) { 3: SubClass subC=new SubClass(); 4: subC.doSomething(); 5: } 6: }

运行结果:

- 9 -

in SuperClass: x=3 in SubClass: x=5

in SuperClass. doSomething() in SubClass. doSomething() super. x=3 sub. x=5

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

(1)设计一个基类Student描述学生的共同特征。

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

(4)设计一个测试类StudentDemo,分别创建本科生和研究生这两个类的对象,并输出相关信息。 class Student{ private String name; private int classA,classB,classC; public Student(String name,int classA,int classB,int classC){ this.name=name; this.classA=classA; this.classB=classB; this.classC=classC; } public String getName(){ return name; } public int getAverage(){ return (classA+classB+classC)/3; } }

class UnderGraduate extends Student{ public UnderGraduate(String name,int classA,int classB,int classC){ super(name,classA,classB,classC); } public void isPass(){ if(getAverage()>=60) System.out.println(\本科生\的三科平均分为:\可以拿到学士学位。\ else System.out.println(\本科生\的三科平均分为:\不能拿到学士学位。\ } }

class Graduate extends Student{

- 10 -

public Graduate(String name,int classA,int classB,int classC){ super(name,classA,classB,classC); } public void isPass(){ if(getAverage()>=80) System.out.println(\研究生\的三科平均分为:\可以拿到硕士学位。\ else System.out.println(\研究生\的三科平均分为:\不能拿到硕士学位。\ } }

public class StudentDemo{ public static void main(String[] args){ UnderGraduate s1=new UnderGraduate(\ Graduate s2=new Graduate(\ s1.isPass(); s2.isPass(); } }

运行结果:

本科生Tom的三科平均分为:70,可以拿到学士学位。 研究生Mary的三科平均分为:73,不能拿到硕士学位。

假定要为某个公司编写雇员工资支付程序,这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资:

(1)经理(Manager)——每月获得一份固定的工资

(2)销售人员(Salesman)——在基本工资的基础上每月还有销售提成。 (3)一般工人(Worker)——则按他每月工作的天数计算工资。

根据上述要求试用类的继承和相关机制描述这些功能,并编写一个Java Application程序,演示这些类的用法。(提示:应设计一个雇员类(Employee)描述所有雇员的共图特性,这个类应该提供一个计算工资的抽象方法ComputeSalary( ),使得可以通过这个类计算所有雇员的工资。经理、销售人员和一般工人对应的类都应该继承这个类,并重新定义计算工资的方法,进而给出它的具体实现。)

abstract class Employee{ private String name; public Employee(String name){ this.name=name;

- 11 -

} public String getName(){ return name; } public abstract double computeSalary(); }

class Manager extends Employee{ private double monthSalary; public Manager(String name,double monthSalary){ super(name); this.monthSalary=monthSalary; } public double computeSalary(){ return monthSalary; } }

class Salesman extends Employee{ private double baseSalary; private double commision; private int qualtities; public Salesman(String name,double baseSalary,double commision,int qualtities){ super(name); this.baseSalary=baseSalary; this.commision=commision; this.qualtities=qualtities; } public double computeSalary(){ return baseSalary+commision*qualtities; } }

class Worker extends Employee{ private double dailySalary; private int days; public Worker(String name,double dailySalary,int days){ super(name); this.dailySalary=dailySalary; this.days=days; } public double computeSalary(){ return dailySalary*days; } }

public class EmployeeDemo{ public static void main(String args[]){ Manager e1=new Manager(\张三\

- 12 -

Salesman e2=new Salesman(\李四\ Worker e3=new Worker(\王五\

System.out.println(\经理\的月工资为:\

System.out.println(\销售人员\的月工资为:\ System.out.println(\工人\的月工资为:\

}

}

运行结果:

经理张三的月工资为:10000.0 销售人员李四的月工资为:5175.2 工人王五的月工资为:2226.0

实验6:Java控制台程序设计

一、实验目的

(1)掌握Java命令行参数的使用方法。

(2)掌握Java程序与文件之间的基本输入输出操作

二、实验任务

(1)输入根据给定的Java Application程序,写出运行结果。 (2)编写Java Application程序,实现文件输入功能。 (3)编写Java Application程序,实现文件输出功能。

三、实验内容

1.输入如下所示的Java Application程序,用文字简述运行结果。

1: import java.util.Properties; 2: import java.util.Enumeration; 3: public class Testp {

4: public static void main(String[] args) {

5: Properties ps = System.getProperties(); 6: Enumeration pn = ps.propertyNames(); 7: while(pn.hasMoreElements()) { 8: String pName = (String) pn.nextElement(); 9: String pValue = ps.getProperty(pName); 10: System.out.println(pName + \11: } 12: } 13:}

- 13 -

2.编写一个Java Application程序,实现读取并输出指定文件的内容的功能。

import java.io.*;

public class ReadFile{ public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new FileReader(\ String s=br.readLine(); while(s!=null){ System.out.println(s); s=br.readLine(); } br.close(); } }

3.编写一个Java Application程序,实现接收键盘输入的数据,并写入到指定文件中的功能。

import java.io.*;

public class WriteFile2{ public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw=new BufferedWriter(new FileWriter(\ String s=br.readLine(); while(!s.equals(\ bw.write(s); bw.newLine(); s=br.readLine(); } br.close(); bw.close(); } }

实验7:数组与字符串

一、实验目的

(1)掌握利用Math类实现基本数学运算的方法。 (2)掌握数组与字符串概念与使用。

- 14 -

二、实验任务

(1)输入根据给定的Java Application程序,写出运行结果。 (2)按照要求编写Java Application程序。

三、实验内容

1.输入下面的Java Application程序,写出运行结果,并说明程序的功能。

1: public class testMath {

2: public static void main(String args[]) { 3: final int NUMBER = 100; 4: int count = 10; 5: int randomNum = 0; 6: int probability[] = new int[6]; 7: for(int i=0; i<6; i++) { 8: probability[i] = 0; 9: } 10: for(int i=0; i

2.编写一个Java Application程序,实现如下的设计目标:程序运行时自动产生1~100的随机数,接收用户键盘输入数据并给出提示信息,直至猜对。游戏者猜对后,显示猜测次数,并提供“重新开始”和“退出”功能。

实验8:Java高级I/O流程序设计

一、实验目的

(1)掌握Java I/O基本原理。

(2)掌握InputStream、OutputStream抽象类的基本使用方法。

- 15 -

(3)掌握FileInputStream、FileOutputStream、DataInputStream、DataOutputStream抽象类的基本使用方法。

二、实验任务

(1)阅读给定的Java Application程序,按要求回答问题并写出运行结果。 (2)按要求编写一个Java Application程序,并编译、运行这个程序。

三、实验内容

1.输入下面的Java Application程序,运行该程序,说明程序的功能。

1: import java.io.*;

2: public class CopyFile {

3: public static void main(String[] args) { 4: try { 5: FileInputStream fis = new FileInputStream(\6: FileOutputStream fos = new FileOutputStream(\7: int read = fis.read(); 8: while ( read != -1 ) { 9: fos.write(read); 10: read = fis.read(); 11: } 12: fis.close(); 13: fos.close(); 14: } 15: catch (IOException e) { 16: System.out.println(e); 17: } 18: } 19:}

其功能是完成文件的复制:通过字节流从“copyFile.java”文件中读取数据并写入到“temp.txt”文件中去,实现copy功能。

2.编写一个Java Application程序,实现如下的设计功能:运行该程序可以列出当前目录下的文件。

import java.io.*;

public class FileList2{ public static void main(String[] args){ File dir=new File(\ File files[]=dir.listFiles(); System.out.println(dir); for(int i=0;i

- 16 -

System.out.println(\

}

}

}

实验9:JavaGUI程序设计(1)

一、实验目的

(1)了解Java系统图形用户界面的工作原理和界面设计步骤。 (2)掌握图形用户界面的各种常用组件的使用方法。 (3)掌握图形用户界面各种布局策略的设计与使用。

二、实验任务

(1)阅读给定的Java Application程序,按要求回答问题并写出运行结果。 (2)按要求编写一个Java Application程序,并编译、运行这个程序。

三、实验内容

1.输入下面的Java Application程序,运行该程序,说明程序的功能。1: import java.awt.*;

2: public class TestFlowLayout {

3: public static void main(String args[]) { 4: Frame f = new Frame(\5: Button button1 = new Button(\确定\6: Button button2 = new Button(\打开\7: Button button3 = new Button(\关闭\8: Button button4 = new Button(\取消\9: f.setLayout(new FlowLayout()); 10: f.add(button1); 11: f.add(button2); 12: f.add(button3); 13: f.add(button4); 14: f.setSize(100,100); 15: f.setVisible(true); 16: } 17:}

- 17 -

显示一个100*100的窗口,窗口内添加了四个按钮,其布局为流式布局管理器。当窗口f的尺寸被重置后,其FlowLayout型的布局也会随之发生变化,各按钮的大小不变,但其相对位置会变化。

2.编写一个Java Application程序,该程序运行的运行结果如下所示。

import java.awt.*;

public class BorderLayoutWindow extends Frame { public BorderLayoutWindow() {

setLayout(new BorderLayout()); add(new Button(\ add( new Button(\ add( new Button(\ add( new Button(\ add( new Button(\ }

public static void main(String args[]) {

BorderLayoutWindow window = new BorderLayoutWindow(); window.setTitle(\ window.pack();

window.setVisible(true); } }

3.编写一个Java Application程序,该程序运行的运行结果如下所示。

import java.awt.*;

public class GridLayoutWindow extends Frame { public GridLayoutWindow() {

- 18 -

setLayout(new GridLayout(3,2)); add(new Button(\ add(new Button(\ add(new Button(\ add(new Button(\ add(new Button(\ add(new Button(\ }

public static void main(String args[]) {

GridLayoutWindow window = new GridLayoutWindow(); window.setTitle(\ window.pack();

window.setVisible(true); } }

实验10:JavaGUI程序设计(2)

一、实验目的

(1)了解图形用户界面的事件响应机制。 (2)掌握鼠标事件编程方法。

(3)掌握AWT中Color和Font类的使用方法。

二、实验任务

(1)阅读给定的Java Application程序,按要求回答问题并写出运行结果。 (2)按要求编写一个Java Application程序,并编译、运行这个程序。

三、实验内容

1.输入下面的Java Application程序,运行该程序,说明程序的执行过程。1: import java.awt.*;

2: import java.awt.event.*;

3: public class TestActionEvent {

4: public static void main(String args[]) { 5: Frame f = new Frame(\6: Button b = new Button(\7: Monitor bh = new Monitor(); 8: b.addActionListener(bh); 9: f.add(b,BorderLayout.CENTER); 10: f.pack();

- 19 -

11: 12: 13:}

}

f.setVisible(true);

1: class Monitor implements ActionListener {

2: public void actionPerformed(ActionEvent e) { 3: System.out.println(\ 4: } 5: }

执行过程:创建一个框架f,其标题为Test。在框架中添加了一个标签为“Press Me”的按钮b。为按钮b注册监听器bh,监听ActionEvent事件。当鼠标单击框架中的按钮b时,会触发ActionEvent事件,执行事件处理器actionPerformed(ActionEvent e),即在屏幕上输出文本信息“a button has been pressed”。

2.编写一个Java Application程序,该程序运行的运行结果如下所示。

import java.awt.*;

public class MenuTest{ public static void main(String args[]){ Frame fr=new Frame(\ MenuBar mb=new MenuBar(); fr.setMenuBar(mb); Menu m1=new Menu(\ Menu m2=new Menu(\ Menu m3=new Menu(\ mb.add(m1); mb.add(m2); mb.setHelpMenu(m3); MenuItem m11=new MenuItem(\ MenuItem m12=new MenuItem(\ MenuItem m13=new MenuItem(\ MenuItem m14=new MenuItem(\ m1.add(m11); m1.add(m12); m1.add(m13); m1.addSeparator(); m1.add(m14); fr.pack(); fr.setVisible(true); } }

- 20 -

3.编写一个Java Application程序,该程序运行的运行结果如下所示。

import java.awt.*;

public class MenuTest{ public static void main(String args[]){ Frame fr=new Frame(\ MenuBar mb=new MenuBar(); fr.setMenuBar(mb); Menu m1=new Menu(\ Menu m2=new Menu(\ Menu m3=new Menu(\ Menu m4=new Menu(\进制\ mb.add(m1); mb.add(m2); mb.setHelpMenu(m3); MenuItem m21=new MenuItem(\中文\ MenuItem m41=new MenuItem(\二进制\ MenuItem m42=new MenuItem(\八进制\ MenuItem m43=new MenuItem(\十进制\ m2.add(m21); m2.add(m4); m4.add(m41); m4.add(m42); m4.add(m43); fr.pack(); fr.setVisible(true); } }

实验11:Java多线程

一、实验目的

(1)了解线程的概念。 (2)学习简单的多线程编程。

- 21 -

二、实验任务

(1)阅读给定的Java Application程序,按要求回答问题并写出运行结果。 (2)按要求编写一个Java Application程序,并编译、运行这个程序。

三、实验内容

1.输入下面的Java Application程序,运行该程序,并简要分析程序的运行结果。

1: class SimpleThread extends Thread { 2: public SimpleThread(String str) { 3: super(str); //调用其父类的构造方法 4: }

5: public void run() { //重写run方法 6: for (int i = 0; i < 10; i++) { 7: System.out.println(i + \8: //打印次数和线程的名字 9: try { 10: sleep((int)(Math.random() * 1000)); 11: //线程睡眠,把控制权交出去 12: } 13: catch (InterruptedException e) { } 14: } 15: System.out.println(\16: //线程执行结束 17: } 18:}

1: public class TwoThreadsTest {

2: public static void main (String args[]) { 3: new SimpleThread(\4: //第一个线程的名字为First 5: new SimpleThread(\6: //第二个线程的名字为Second 7: } 8: }

实验12:Java网络程序设计

一、实验目的

(1)掌握网络编程的基本概念。

(2)掌握java.net包中常用网络编程工具类的功能和使用。

- 22 -

(3)掌握Socket编程的基本方法和步骤。

二、实验任务

阅读给定的Java Application程序,按要求回答问题并写出运行结果。

三、实验内容

1.输入下面的Java Application程序,运行该程序,写出程序的运行结果。

1: /* File Name : ParseURL.java

2: * 这是一个简单的关于URL的实例 3: * 该实例的功能是解析命令行参数 4: * 中指定的URL地址 5: */

6: import java.net.*; 7: import java.io.*;

8: public class ParseURL {

9: public static void main(String[] args) throws Exception { 10: URL aURL = new URL(\11: System.out.println(aURL); 12: System.out.println(\13: System.out.println(\14: System.out.println(\15: System.out.println(\16: System.out.println(\17: } 18:}

2.下面给出的Java源代码分别是服务器端程序和客户端程序,两个程序之间可以进行通讯。输入这两个Java Application程序,然后分别运行这两个程序,并写出程序的运行结果(提示:首先在一个MS-DOS窗口运行服务器端程序,然后在另一个MS-DOS窗口再运行客户端程序)。

1: /* File Name : TCPSingleUserServer.java

2: * 这是一个简单的基于TCP连接服务程序 3: * 该服务程序的功能十分简单,只是简单 4: * 的显示并且向客户端回送客户端发送来 5: * 的信息,直到客户端发送结束标记END

6: */

7: import java.io.*; 8: import java.net.*;

9: public class TCPSingleUserServer { 10: // 设置服务器的端口号,它应该大于1024 11: public static final int PORT = 8080; 12: public static void main(String[] args) throws IOException { 13: ServerSocket server = new ServerSocket(PORT);

- 23 -

14: 15: 16: 17: 18: 19: 20: 21:

System.out.println(\try { // 等待接受用户连接 Socket socket = server.accept(); try { System.out.println(\ BufferedReader in = new BufferedReader(new InputStreamReader

(socket.getInputStream()));

PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter

(socket.getOutputStream())),true);

22: while (true) { 23: String str = in.readLine(); 24: if (str.equals(\25: System.out.println(\26: out.println(str); 27: } 28: } 29: finally { 30: System.out.println(\31: socket.close(); 32: } 33: } 34: finally { 35: server.close(); 36: } 37: } 39:}

1: /* File Name : TCPSingleUserClient.java 2: * 这是一个简单的基于TCP连接客户程序 3: * 该客户程序的功能十分简单,只是简单 4: * 向服务器发送消息,并且接收从服务器 5: * 发送回来的消息,将它在屏幕上显示 6: */

7: import java.net.*; 8: import java.io.*;

9: public class TCPSingleUserClient { 10: public static void main(String[] args) throws IOException { 11: // 在getByName()中,使用null作为参数 12: // 来指定本地服务器的地址 13: InetAddress addr = InetAddress.getByName(null); 14: // 同样的,也可以使用如下的代码来实现同样的功能 15: // InetAddress addr = InetAddress.getByName(\16: // InetAddress addr = InetAddress.getByName(\17: System.out.println(\18: Socket socket = new Socket(addr, TCPSingleUserServer.PORT); 19: try {

- 24 -

20: 21: 22:

System.out.println(\

BufferedReader in =new BufferedReader(new InputStreamReader

(socket.getInputStream()));

PrintWriter out =new PrintWriter(new BufferedWriter(new OutputStreamWriter

(socket.getOutputStream())),true);

23: for(int i = 0; i < 10; i ++) { 24: out.println(\25: String str = in.readLine(); 26: System.out.println(str); 27: } 28: out.println(\29: }

30: finally { 31: System.out.println(\32: socket.close(); 33: }

34: }

35:}

实验13:Java Applet程序设计

一、实验目的

(1)了解Applet程序的运行机制

(2)掌握从HTML文件向Applet程序传递参数的方法。

二、实验任务

(1)阅读给定的Java Application程序,按要求回答问题并写出运行结果。 (2)按要求编写一个Java Application程序,并编译、运行这个程序。

三、实验内容

1.输入下面的HTML和Java Applet源代码,运行该程序,说明程序的功能。

1: ch7_e7_15 2: 3:


4: 5: 6:


7: 8:

- 25 -

1: import java.applet.Applet; 2: import java.awt.*;

3: import java.awt.event.*;

4: public class javaAppletEx extends Applet implements ActionListener { 5: Label outputLbl = new Label(\ \6: TextField inputTfd = new TextField(10); 7: Button copyBtn = new Button(\复制\

8: public void init() {

9: inputTfd.setText(\10: outputLbl.setText(\ \11: add(inputTfd); 12: add(copyBtn); 13: add(outputLbl); 14: copyBtn.addActionListener(this); 15: } 16: public void actionPerformed(ActionEvent ae) { 17: if(ae.getSource() == copyBtn) { 18: outputLbl.setText(inputTfd.getText()); 19: } 20: } 21:}

功能:该Applet包括一个标签outputLbl、一个按钮copyBtn(复制)和一个文本域inputTfd,在文本域inputTfd中输入一串文本信息,点击“复制”按钮后,文本域inputTfd中的内容会被复制给标签outputLbl并显示出来

2.编写一个Java Applet,接受HTML文件传递的整数参数,根据该参数指定Applet中文本框的长度。编写对应的HTML文件运行这个Java Applet(提示:该程序运行的运行结果如下所示)。

//HTML文件javaApplet.html

//Java Applet源程序javaApplet.java import java.applet.Applet; import java.awt.*;

public class javaApplet extends Applet{ int max;

- 26 -

}

String s; TextField tf;

public void init(){ s=getParameter(\ max=Integer.parseInt(s); tf=new TextField(max); tf.setText(\ add(tf); }

实验14:JDBC程序设计

一、实验目的

(1)了解JDBC工作的基本原理 (2)掌握JDBC编程的基本步骤

二、实验任务

(1)设置ODBC数据源。

(2)按要求编写一个Java Application程序,并编译、运行这个程序。

三、实验内容

1.设置ODBC数据源。

2.参照如下所示的SQL命令,在Microsoft Access数据库中创建用户信息表“userinfo”,并输入如表1所示的数据。

create table userinfo( code

varchar(4) not null, / *

/ * / * / *

用户代码 用户姓名 用户密码

* / * / * /

name varchar(10), password varchar(6), email varchar(40), primary key(code));

- 27 -

用户电子邮件地址 * /

表1:用户信息表中的数据 代码 7101 7102 7103 7104 7105 7106

姓名 宋晓梅 关松杰 李晓梅 张松岩 王亚杰 曲小声 密码 123456 654321 123654 456123 321456 654321 电子邮件地址 xiaomei@yahoo.com.cn songjie@263.net xiaomei@yahoo.com.cn songyan@yahoo.com.cn yajie@hotmail.com xiaosheng@263.net 编写JDBC应用程序,首先将用户信息表中的数据在屏幕上显示出来,然后插入一个记录,最后将更新以后数据表中的数据在屏幕上显示出来。

- 28 -

本文来源:https://www.bwwdw.com/article/aft7.html

Top