第Ⅰ部分:实验指导
实验1:Java开发环境J2SE
一、实验目的
(1)学习从网络上下载并安装J2SE开发工具。
(2)学习编写简单的Java Application程序.
(3)了解Java源代码、字节码文件,掌握Java程序的编辑、编译和运行过程。
二、实验任务
从网络上下载或从CD-ROM直接安装J2SE开发工具,编写简单的Java Application程序,编译并运行这个程序。
三、实验内容
1.安装J2SE开发工具
Sun公司为所有的java程序员提供了一套免费的java开发和运行环境,取名为Java 2 SDK,可以从上进行下载。安装的时候可以选择安装到任意的硬盘驱动器上,例如安装到C:\j2sdk1.4.1_03目录下。教师通过大屏幕演示J2SE的安装过程,以及在Windows98/2000/2003下环境变量的设置方法。
2.安装J2SE源代码编辑工具Edit Plus
教师通过大屏幕演示Edit Plus的安装过程,以及在Windows98/2000/2003操作系统环境下编辑Java原程序的常用命令的用法。
3.编写并编译、运行一个Java Application程序。
创建一个名为HelloWorldApp的java Application程序,在屏幕上简单的显示一句话"老师,你好!"。
- 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 + "-" + month + "-" + year); 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:}
- 2 -
实验2:Java基本数据类型
一、实验目的
(1)掌握javadoc文档化工具的使用方法。
(2)掌握Java语言转义字符的功能。
(3)理解“值传递”的过程。
二、实验任务
(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: 版权所有:新东方IT教育。
3: 作者:zlg
4: 日期:2001/07/01
5: */
6: /**
7: 这是一个Java语言入门程序,定义类CommentTest。其中含有main()方法,因此可以作为一 8: 个应用程序单独执行。其功能是在默认的输出设备上输出字符串"Hi,你好!"。
9: */
10: public class CommentTest {
11: //主方法,作为Java应用程序的默认入口。
12:
13:
14:
15: public static void main(String args[ ]) { System.out.println("Hi,你好!"); //输出"Hi,你好!" } }
2.输入下面的Java Application程序,写出运行结果。
1: public class CharSample{
2: public static void main(String args[ ]) {
3: char ch1 = '\b';
- 3 -
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("沈阳"+ch1+"师范大学");
11: System.out.println("沈阳"+ch2+"师范大学");
12: System.out.println("沈阳"+ch3+"师范大学");
13: System.out.println("沈阳"+ch4+ch3+"师范大学");
14: System.out.println(ch5+"沈阳"+"师范大学"+ch5);
15: System.out.println(ch6+"沈阳"+"师范大学"+ch6);
16: System.out.println(ch7+"沈阳"+"师范大学"+ch7);
17:
18:}
}
3.按下面的要求完成Java Application程序,写出程序的运行结果。
(1)定义一个Java类Point,用来描述平面直角坐标系中点的坐标,该类应该能描述点的横、纵坐标信息及一些相关操作,包括获取点的横、纵坐标,修改点的坐标,显示点的当前位置等。
(2)定义一个测试类javaTest,创建Point类的对象并对其进行有关的操作。
- 4 -
实验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 + " 整数部分为:" + (long)d);
16: if( i == -1 ) //若没有小数点,则没有小数部分
17: System.out.println(d + " 小数部分为:0.0");
18: else // 若有小数点,则截取小数点后的字符串合成浮点数
19: System.out.println(d + "小数部分为:" + Double.parseDouble(((s.charAt(0)=='-') ? "-" : "") + "0." + s.substring(i+1,s.length())));
20:
21:
22:
23:
24:
25:
b = false; } catch(NumberFormatException nfe) { System.out.println("输入浮点数格式有误。\n"); b = true; } - 5 -
26: catch(IOException ioe) {
27: b = false;
28: }
29: }
30: while(b); //浮点格式错误时重新输入
31: } // end of main
32:} // end of class
2.编写一个Java Application程序,输出区间[200,300]上的所有素数,要求写出程序的运行结果。
- 6 -
实验4:Java类与对象
一、实验目的
(1)掌握Java类的继承关系和派生方法。
(2)理解多态的概念与使用。
(3)掌握接口的定义和使用。
二、实验任务
(1)按要求编写一个Java程序。
(2)按要求完善一个Java程序,编译、运行这个程序,并写出运行结果。
三、实验内容
1.编写一个Java程序片断,以定义一个表示学生的类Student。这个类的属性有“学号”、“班号”、“姓名”、“性别”、“年龄”,方法有“获得学号”、“获得班号”、“获得性别”、“获得姓名”、“获得年龄”、“获得年龄”。
- 7 -
2.为类Student增加一个方法public String toString( ),该方法把Student类的对象的所有属性信息组合成一个字符串以便输出显示。编写一个Java Application程序,创建Student类的对象,并验证新增加的功能。
- 8 -
实验5:Java继承与多态
一、实验目的
(1)掌握Java类的定义和使用方法。
(2)掌握对象的声明和使用。
(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("in SuperClass : x=" +x);
6: }
7: void doSomething() {
8: System.out.println("in SuperClass.doSomething()");
9: }
11:}
1: class SubClass extends SuperClass {
2: int x;
3: SubClass() {
4: super(); //调用父类的构造方法
5: x=5; //super( ) 要放在方法中的第一句
6: System.out.println("in SubClass :x="+x);
7: }
8: void doSomething( ) {
9: super.doSomething( ); //调用父类的方法
10: System.out.println("in SubClass.doSomething()");
11: System.out.println("super.x="+super.x+" sub.x="+x);
12: }
14:}
- 9 -
1: import java.io.*;
2: public class Inheritance {
3: public static void main(String args[]) {
4: SubClass subC=new SubClass();
5: subC.doSomething();
6: }
7: }
2.假定根据学生的3门学位课程的分数决定其是否可以拿到学位,对于本科生,如果3门课程的平均分数超过60分即表示通过,而对于研究生,则需要平均超过80分才能够通过。根据上述要求,请完成以下Java类的设计:
(1)设计一个基类Student描述学生的共同特征。
(2)设计一个描述本科生的类Undergraduate,该类继承并扩展Student类。
(3)设计一个描述研究生的类Graduate,该类继承并扩展Student类。
(4)设计一个测试类StudentDemo,分别创建本科生和研究生这两个类的对象,并输出相关信息。
- 10 -
- 11 -
实验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 + "----" + pValue);
11: }
12: }
13:}
- 12 -
2.编写一个Java Application程序,实现读取并输出指定文件的内容的功能。
3.编写一个Java Application程序,实现接收键盘输入的数据,并写入到指定文件中的功能。
- 13 -
实验7:数组与字符串
一、实验目的
(1)掌握利用Math类实现基本数学运算的方法。
(2)掌握数组与字符串概念与使用。
二、实验任务
(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<NUMBER; i++) {
11: randomNum = (int)(Math.random()*6) + 1;
12: probability[randomNum-1]++;
13: System.out.print(randomNum + "\t");
14: if(i%count == 9)
15: System.out.println();
16: }
17: for(int i=0; i<6; i++) {
18: System.out.println("\n"+(i+1)+":\t"+probability[i]);
19: }
20: }
21:}
- 14 -
2.编写一个Java Application程序,实现如下的设计目标:程序运行时自动产生1~100的随机数,接收用户键盘输入数据并给出提示信息,直至猜对。游戏者猜对后,显示猜测次数,并提供“重新开始”和“退出”功能。
- 15 -
实验8:Java高级I/O流程序设计
一、实验目的
(1)掌握Java I/O基本原理。
(2)掌握InputStream、OutputStream抽象类的基本使用方法。
(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("CopyFile.java");
6: FileOutputStream fos = new FileOutputStream("temp.txt");
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:}
- 16 -
2.编写一个Java Application程序,实现如下的设计功能:运行该程序可以列出当前目录下的文件。
- 17 -
实验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("Flow Layout");
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:}
- 18 -
2.编写一个Java Application程序,该程序运行的运行结果如下所示。
3.编写一个Java Application程序,该程序运行的运行结果如下所示。
- 19 -
实验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("Test");
6: Button b = new Button("Press Me!");
7: Monitor bh = new Monitor();
8: b.addActionListener(bh);
9: f.add(b,BorderLayout.CENTER);
10: f.pack();
11: f.setVisible(true);
12: }
13:}
1: class Monitor implements ActionListener {
2: public void actionPerformed(ActionEvent e) {
3: System.out.println("a button has been pressed");
4: }
5: }
- 20 -
2.编写一个Java Application程序,该程序运行的运行结果如下所示。
3.编写一个Java Application程序,该程序运行的运行结果如下所示。
- 21 -
实验11:Java多线程
一、实验目的
(1)了解线程的概念。
(2)学习简单的多线程编程。
二、实验任务
(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 + " " + getName());
8: //打印次数和线程的名字
9: try {
10: sleep((int)(Math.random() * 1000));
11: //线程睡眠,把控制权交出去
12: }
13: catch (InterruptedException e) { }
14: }
15: System.out.println("DONE! " + getName());
16: //线程执行结束
17: }
18:}
1: public class TwoThreadsTest {
2: public static void main (String args[]) {
3: new SimpleThread("First").start();
4: //第一个线程的名字为First
5: new SimpleThread("Second").start();
6: //第二个线程的名字为Second
7: }
8: }
- 22 -
2.输入教材第192页的示例12-7所示文件名为Test.java的程序源代码,运行该程序,并简要分析程序的运行结果。
- 23 -
实验12:Java网络程序设计
一、实验目的
(1)掌握网络编程的基本概念。
(2)掌握java.net包中常用网络编程工具类的功能和使用。
(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("http://localhost:200/text.txt#BOTTOM"); 11: System.out.println(aURL);
12: System.out.println("protocol = " + aURL.getProtocol());
13: System.out.println("host = " + aURL.getHost());
14: System.out.println("filename = " + aURL.getFile());
15: System.out.println("port = " + aURL.getPort());
16: System.out.println("ref = " + aURL.getRef());
17: }
18:}
- 24 -
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);
14: System.out.println("Started: " + server);
15: try {
16: // 等待接受用户连接
17: Socket socket = server.accept();
18: try {
19: System.out.println("Connection accepted: "+ socket);
20: BufferedReader in = new BufferedReader(new InputStreamReader
(socket.getInputStream()));
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
39:}
} PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter (socket.getOutputStream())),true); while (true) { String str = in.readLine(); if (str.equals("END")) break; System.out.println("Echoing: " + str); out.println(str); } } finally { System.out.println("closing..."); socket.close(); } } finally { server.close(); } - 25 -
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:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:}
} InetAddress addr = InetAddress.getByName(null); // 同样的,也可以使用如下的代码来实现同样的功能 // InetAddress addr = InetAddress.getByName("127.0.0.1"); // InetAddress addr = InetAddress.getByName("localhost"); System.out.println("addr = " + addr); Socket socket = new Socket(addr, TCPSingleUserServer.PORT); try { System.out.println("socket = " + socket); BufferedReader in =new BufferedReader(new InputStreamReader (socket.getInputStream())); PrintWriter out =new PrintWriter(new BufferedWriter(new OutputStreamWriter (socket.getOutputStream())),true); for(int i = 0; i < 10; i ++) { out.println("Sending Line " + i + " ...."); String str = in.readLine(); System.out.println(str); } out.println("END"); } finally { System.out.println("closing..."); socket.close(); } - 26 -
实验13:Java Applet程序设计
一、实验目的
(1)了解Applet程序的运行机制
(2)掌握从HTML文件向Applet程序传递参数的方法。
二、实验任务
(1)阅读给定的Java Application程序,按要求回答问题并写出运行结果。
(2)按要求编写一个Java Application程序,并编译、运行这个程序。
三、实验内容
1.输入下面的HTML和Java Applet源代码,运行该程序,说明程序的功能。1: <html><head><title>ch7_e7_15</title></head>
2: <body>
3: <hr>
4: <applet code=javaAppletEx width=450 height=250>
5: </applet>
6: <hr>
7: </body>
8: </html>
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());
- 27 -
19:
20:
21:}
} }
2.编写一个Java Applet,接受HTML文件传递的整数参数,根据该参数指定Applet中文本框的长度。编写对应的HTML文件运行这个Java Applet(提示:该程序运行的运行结果如下所示)。
- 28 -
实验14:JDBC程序设计
一、实验目的
(1)了解JDBC工作的基本原理 (2)掌握JDBC编程的基本步骤
二、实验任务
(1)设置ODBC数据源。
(2)按要求编写一个Java Application程序,并编译、运行这个程序。
三、实验内容
1.设置ODBC数据源:参照教材15.3.1节的有关内容,设置示例15-5和示例15-6的ODBC数据源,输入这两个示例的JDBC应用程序,并执行这两个程序。
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));
表1:用户信息表中的数据
用户电子邮件地址 * /
- 29 -
编写JDBC应用程序,首先将用户信息表中的数据在屏幕上显示出来,然后插入一个记录,最后将更新以后数据表中的数据在屏幕上显示出来。
- 30 -