《Java程序设计实习指导书.doc》由会员分享,可在线阅读,更多相关《Java程序设计实习指导书.doc(101页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、目 录 目 录- 1 -第一章 JAVA语言实验机器与环境- 2 -1.1计算机的硬件配置- 2 -1.2计算机的软件配置- 2 -1.3 JDK1.5.0的安装和设置- 2 -1.4 配置环境变量- 5 -1.5 测试安装- 8 -1.6 使用Eclipse IDE编译与运行程序- 8 -第二章 JDK开发工具简介及JAVA程序开发步骤- 10 -2.1编辑运行Java程序- 10 -2.2在Eclipse中运行java程序- 13 -图2.11 运行界 第三章 实验内容- 15 -实验一 熟悉Java的编程环境- 15 -实验二 面向对象编程(1)- 18 -实验三 面向对象编程(2)-
2、20 -实验四 多线程异常处理- 29 -实验五 Java 输入输出流- 32 -实验六Java图形用户界面- 34 -实验七 Java Applet小应用程序- 38 -实验八 网络编程基础- 42 -实验九 通过JDBC方式操作数据库- 44 -附录- 46 -1 SWT/JFace 简介- 46 -2 SWT/JFace 常用组件- 50 -3 容器类- 65 -4 布局管理器- 70 -5 SWT 的事件处理- 88 -6 SWT Designer简介- 94 -7 本章小结- 101 -第一章 Java语言实验机器与环境1.1计算机的硬件配置PC系列微机,包括286、386、486、
3、奔腾及各种兼容机,要求内存为64M以上,一个硬盘驱动器和一个软盘驱动器。80列字符监视器。配备鼠标器。1.2计算机的软件配置DOS6.22或Windows xp、Windows 2000。安装软件jdk-1_5_0-windows-i586.exe1.3 JDK1.5.0的安装和设置1.3.1下载jdk-1_5_0-windows-i586.exeJDK开发工具包可以免费下载。下载网址下载如下文件:jdk-1_5_0-windows-i586.exe。1.3.2安装jdk-1_5_0-windows-i586.exe由于目前大多数用户使用的是Window xp 操作系统,所以我们以在Windo
4、w xp操作系统上安装jdk-1_5_0-windows-i586.exe为例,说明安装jdk-1_5_0的过程。jdk-1_5_0-windows-i586.exe是一个自解压文件,双击它就可以解压缩,同时进行安装工作,双击jdk-1_5_0-windows-i586.exe,文件会自动解压缩,如图2.1所示。图1.1 jdk-1_5_0-windows-i586.exe的解压过程解压缩工作完成之后,会出现JDK1.5.0的许可协议,如图1.2所示图1.2 选择许可协议界面 点击“next”按钮,出现如图1.3所示对话框,用户可选择要安装的组件及选择安装目录。 点击“change”,可改变安
5、装目录。图1.3 组件的选择选好后,点击“next”按钮,开始安装,如图1.4所示。图1.4 安装进度界面运行环境设置及安装,如图1.5所示。图1.5 安装过程界面单击“Next”按钮,出现如图1.6所示对话框,选择浏览器,选中后,单击“Next”按钮继续安装。图1.6 选择浏览器界面最后出现如图1.7所示界面,单击“finish”按钮结束安装。图1.7 安装结束界面1.4 配置环境变量1方法一平台为 Windows 2000 时,需要修改系统根目录下的autoexec.bat文件。使用记事本或其它文本编辑器打开文件autuexec.bat,在该文件的最后增加如下两行SET PATH=%CLA
6、SSPATH%;C:Program FilesJavajdk1.5.0_04jrelibrt.jarSET PATH=%PATH%;C:Program FilesJavajdk1.5.0_04bin;其中,环境变量path和classpath分别指定了JDK命令搜索路径和Java类路径。在这里我们假设JDK安装在C:Program FilesJavajdk1.5.0_04目录下,JDK的所有命令都放在C:Program FilesJavajdk1.5.0_04bin目录下。设置环境变量path的作用是使DOS操作系统可以找到JDK命令。设置环境变量classpath的作用是告诉Java类装载器
7、到哪里去寻找第三方提供的类和用户定义的类。JVM和其它JDK工具通过依次搜索平台库、库扩展和类路径来查找类。如果用户在安装jdk1.5.0时,选择了另外的JDK安装路径,则环境变量path和classpath要作相应的调整。2方法二右单击“我的电脑”,选择“属性”,出现如图1.7对话框,选择“高级”选项卡,选择其中的“环境变量”,出现如图1.8对话框,在系统变量中建立或设置环境变量。在“变量名”对话框中输入环境变量名,在“变量值”对话框中输入相关值得路径。设置过程如图1.9、图1.10所示,设置完成后,单击“确定”完成设置。图1.7 系统属性对话框图1.8 设置环境变量图1.9 新建环境变量p
8、ath图1.10新建环境变量classpath1.5 测试安装环境变量设置完成后,重新启动计算机,在DOS窗口下,敲入javac并回车后,如果出现Javac的用法参数提示信息,则安装正确。否则要检查环境变量设置是否正确。1.6 使用Eclipse IDE编译与运行程序使用Eclipse IDE软件可以很方便地进行编译和运行程序的工作,但如果程序有交互的功能,还需要安装其它插件。1下载eclipse-SDK-3.2-win32.zip到你的计算机将文件eclipse-SDK-3.2-win32.zip拷贝到C:盘根目录下,然后右单击该文件将其解压到当前文件夹下,如图1.11所示。解压后的目录结构
9、如图1.12所示。图1.11 解压操作界面图1.12 解压后的目录结构图2测试安装双击C:eclipseeclipse.exe文件,可看到如图1.13所示启动界面。图1.13 eclipse启动界面 改变工作目录如图1.14所示。图1.14 选择工作区界面 选择好工作空间以后,单击“确定”按钮,如果能看到如图1.15所示界面,则安装成功。 图1.15 选择工作区界面第二章 JDK开发工具简介及Java程序开发步骤在jdk1.5.0的bin目录下,存放着Java 2提供的一些可执行程序,为我们开发和测试Java程序提供了工具。在我们的学习中,常用的JDK开发工具有如下几种:(1) javac.e
10、xe:Java语言的编译器。(2) java.exe:Java程序执行引擎。(3) appletviewer:小应用程序浏览器。在使用Eclipse之前,必须熟练掌握这些工具的用法。2.1编辑运行Java程序 单击“文件 新建 项目 ”,如图2.1所示。图2.1 新建项目界面选择了项目后出现如下界面,选择“Java 项目”后单击“下一步”。图2.2 新建Java项目界面在图2.3 所示界面中,在“项目名”一栏中,填入“Simple Java Program”其它使用缺省值。单击下一步,出现如图2.4所示界面。 图2.3 新建Java项目界面 图2.4 新建Java项目界面在如图2.4所示界面中
11、单击“库”选项卡,出现如图2.5所示界面,确保JRE设置没问题。单击“完成”按钮。图2.5 新建Java项目界面2.2在Eclipse中运行java程序在包资源管理器中右单击“Simple Java Program”项目如图2.6所示,点击“新建 类 ”,弹出如图2.7所示界面。图2.6新建Java类界面图2.7新建Java类界面在图2.7所示界面中在“名称”一栏中填写“HelloChina”,其它设置如图2.7所示。单击“完成”。在包资源管理器中查看源程序如图2.8及图2.9所示。图2.8 包资源管理器中结构图图2.9 代码视图在包资源管理器中右单击“HelloChina.java”,如图2
12、.10所示点击“运行方式 Java应用程序 ”,运行结果如图2.11所示。图2.10 运行界面图2.11 运行界面第三章 实验内容实验一 熟悉Java的编程环境1. 实验目的(1) 掌握使用JDK开发Java程序的步骤。(2) 掌握Java程序的基本语法;熟练运用java的三个工具编译或运行程序。2. 实验内容实验题1 按下面步骤进行实验(1)开机后,创建目录d:java。把这个目录作为我们的工作目录。我们的Java源程序、编译后的字节码文件和用来运行Java Applet的html文件都放在这个目录中。(2)启动EditPlus或其它编辑软件编写源代码. public class Arith
13、maticTest public static void main( String args ) int a=9; int b= - a;int i=0; int j=i+;int k=+j;System.out.println(a = +a);System.out.println(b = +b);System.out.println(i = +i);System.out.println(j = +j);System.out.println(k = +k);如果你使用的是EditPlus,那么可以看到如图3.1的编辑结果:图3.1 EditPlus编辑器界面(3)保存程序。注意:保存源程序时,
14、程序名要与主类名一致。所以用ArithmaticTest.java作为本程序的文件名。如果用记事本编写程序,因记事本默认的扩展名是.txt,所以要给文件名加引号后保存。把该文件保存到目录D:java中。(4) 编译程序图3.2 application程序的编译界面如果编译成功,则在:java目录中生成字节码文件ArithmaticTest.class。如果不成功,则显示错误信息,用户可修改错误,(5)运行程序图3.3 application程序的运行界面(6)观察程序的运行结果实验题2 用ECLIPSE开发实现HelloWorld!程序。实验题3 求解一元二次多项式的根:将不同的a,b,c值硬
15、编码到程序中,测试你的程序,观察输出结果。如:a=1,b=2,c=1a=0,b=1,c=1a=1,b=1,c=1实验题4 排序和查找给定一个数组: int a=28,39,49,78,23; / 你可以用任意的测试数据请对数组中的元素进行排序。给定一个数字 x=49,请在排序后的数组中查找该元素。要求: * 最好使用折半查找 * 排序和查找自己写函数实现,不要使用标准API。 实验题5 输出九九乘法表要求: * 格式对齐 * 不允许仅用输出语句实现。 实验二 面向对象编程(1)1实验目的掌握Java程序面向对象编程的基本架构,会运用面向对象的思想编写Java程序。2实验内容实验题1 阅读如下程
16、序,完成思考题。class CCircle double pi; double radius; double getRadius() return radius; void setCircle(double r, double p) pi=p; radius=r; public class Ex2_1 public static void main(String args) CCircle cir1=new CCircle(); cir1.setCircle(2.0,3.1416); System.out.println(radius=+cir1.getRadius(); 基本要求 运行程序并
17、观察运行结果。思考问题 试述程序中主要语句的作用。实验题2 设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名、当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的速率和停车两个操作。实验题3 定义一个类MyProgram,包含两个属性:一个是private的整型属性data、一个是private的String类型的属性str,封装这两个属性的四个方法setData()和getData()、setStr( )和getStr();将这两个属性转变为字符串的方法是toStr()。编写程序,使用MyProgram类,实现数据的访问和修改,并调用toStr()方法
18、显示该类的属性。基本要求 编写完整程序。思考问题 试述程序中各个方法的作用。实验题4定义一个类实现银行帐户的概念,包括的变量有帐号和存款余额,包括的方法有存款、取款、查询余额和”显示帐号”。定义主类,创建帐户类的对象,并完成相应操作。提示:关键代码如下:public int getleftmoney()return leftmoney;public void savemoney(double money)leftmoney+=money;public void getmoney(double money)if(money=leftmoney)leftmoney-=money;elseSyste
19、m.out.println(只能取:+leftmoney);bankaccount ba=new bankaccount(,1000);ba.savemoney(21000);System.out.println(存入21000元后余额为:+ba.getleftmoney();ba.getmoney(11500);System.out.println(11500元后余额为:+ba.getleftmoney(); 实验题5 定义链表类,实现单链表基本操作。提示:关键代码如下:public class Node public int data; Node next; public Node(int
20、 data) this.data = data; this.next=null; public void NodeDisplay() System.out.println (+data+); public class Link private Node first; public Link () this.first=null; public boolean isEmpty() public void insertHeadNode(int data) public Node deleteHeadNode() public void findNode(int k) public void dis
21、playLink () public static void main (String args) 实验三 面向对象编程(2)1实验目的(1)掌握Java中的继承机制及包(package)、接口(interface)等的设计方法。(2)掌握static、this、super等关键字的使用。2实验内容实验题1 有图形类的父类Shape,参照圆Circle类补充完整正方性Square和三角形Triangle类,并分析运行结果。class Shape void draw() void erase() class Circle extends Shape void draw() System.out.
22、println(Circle.draw(); void erase() System.out.println(Circle.erase();class Square extends Shape void draw() void erase() class Triangle extends Shape void draw() void erase() public class Shapes public static Shape randShape() switch(int)(Math.random() * 3) default: / To quiet the compiler case 0:
23、return new Circle(); case 1: return new Square(); case 2: return new Triangle(); public static void main(String args) Shape s = new Shape9; / Fill up the array with shapes: for(int i = 0; i s.length; i+) si = randShape(); / Make polymorphic method calls: for(int i = 0; i s.length; i+) si.draw(); 实验题
24、2 有两个类:MobileManagement和Mobile,分别描述如图3.7所示两部手机名称及价格,类MobileManagement在包cn.edu.nwsuaf.jp.p3中,而Mobile在包cn.edu.nwsuaf.jp.p3.data中。它们代码如下。运行MobileManagement.java,你应该看到如图3.8所示结果。基本要求 在空白处填写相关代码并修改上面程序,使程序能够显示两部手机的价格和数量,运行结果如图3.9 所示。 E365, 1780 RMB M330, 1450 RMB图3.4 手机及价格图图3.5 运行结果图程序Mobile.java源代码: publ
25、ic class Mobile /* Holds the name of the mobile. */private String name;/* Holds the price of the mobile. */private float price;/* Creates a new mobile object. */public Mobile(String name, float price) this.name = name;this.price = price;/* Gets the name of the mobile. */public String getName() retur
26、n name;/* Gets the price of the mobile. */public float getPrice() return price;程序MobileManagement.java源代码: import javax.swing.JOptionPane; public class MobileManagement /* Defines the entry point of the application. */ public static void main(String args) / Creates two mobile phone objects.Mobile mo
27、bile1 = new Mobile(E365, 1780);Mobile mobile2 = new Mobile(M330, 1450);/ Displays the two mobile phones in a dialog box.JOptionPane.showMessageDialog(null, Mobile phones:nn+mobile1.getName()+n+mobile2.getName(); 图3.6 运行结果图实验题3 有四个类,主类Store在包cn.edu.nwsuaf.jp.p4中,Mobile、Mp3Player、Product在包cn.edu.nwsua
28、f.jp.p4.data中,Mobile、Mp3Player是Product的子类,Product和Store代码如下:Store.java源代码:package cn.edu.nwsuaf.jp.p4;import java.util.Arrays;import javax.swing.JOptionPane;import cn.edu.nwsuaf.jp.p4.data.Mobile;import cn.edu.nwsuaf.jp.p4.data.Mp3Player;import cn.edu.nwsuaf.jp.p4.data.Product;public class Store /*
29、Defines the entry point of the application. */public static void main(String args) / Creates two mobile phone objects.Mobile mobile1 = new Mobile(China Mobile, E365,1780);Mobile mobile2 = new Mobile(China Mobile, M330,1450);Mp3Player player1 = new Mp3Player(Meizo X3, 256, 399);Mp3Player player2 = ne
30、w Mp3Player(Meizo E5, 512, 580);Mp3Player player3 = new Mp3Player(Xlive XM MP3 Play,256, 930);Product products=mobile1,mobile2,player1,player2, player3;Arrays.sort(products);String text = ;for(int index = 0; index products.length; +index)text += productsindex.toString()+n;/ Displays the two mobile p
31、hones in a dialog box.JOptionPane.showMessageDialog(null,The products are:nn+text+nThere are +Product.getCount()+ products.);Product.java源代码:package cn.edu.nwsuaf.jp.p4.data;public abstract class Product implements Comparable /* Holds the name of the product. */protected String name;/* Holds the pri
32、ce of the product. */protected float price;/* Holds the number of products. */protected static int count;/* Create a new product object. */protected Product(String name, float price) this.name = name;this.price = price;+count;/* Gets the name of the product. */public String getName() return name;/*
33、Gets the price of the product. */public float getPrice() return price;/* Gets the number of products. */public static int getCount() return count;/* Compares this product with the given product. */public int compareTo(Product product) return new Float(product.getPrice().compareTo(price); 基本要求 设计类Mob
34、ile和类MP3Player,使它们和类Product、Store组成一个完整的程序,且运行结果如图3.10所示。图3.7 运行结果图实验题4 用LIST存放对象。利用面向对象的思想,创建以下类:Person类,包含Person的姓名和身份证号码。Student类,首先是一个Person,除此之外,包含学生的语文、数学、英文课的成绩。Teacher类,首先是一个Person,除此之外,包含教师的工资。 请创建 姓名 张三 身份证号 的Person对象。 请创建 姓名 李四 身份证号 语文: 89 数学: 93 英文: 94的Student对象。 请创建 姓名 王五 身份证号 工资: 3000的
35、Teacher对象。 将这些对象存放在List中,并打印出List中存放的内容。实验题5 用SET存放对象。利用面向对象的思想,创建以下类:Person类,包含Person的姓名和身份证号码。 请创建三个对象,放在HashSet中: 姓名 张三 身份证号 姓名 李四 身份证号 姓名 王五 身份证号 再创建对象: 姓名 张三 身份证号 能放入到刚才创建的HashSet中么? 把集合中的元素打印出来。 用TreeSet存放上面三个人,要求按照身份证号排序,打印出来。能够把上面步骤中创建的对象放到这个TreeSet中么。基本要求 使用Java API中的Set相关的技术来完成实验任务。技术提示 l
36、使用HashSet要覆盖hashCode()方法, equals()方法l 打印集合内的元素,要覆盖toString()方法。l 使用TreeSet要实现Comparable接口。 实验题6 用Map存放对象参见Exp3.4.TXT,里面存放了30个同学的学号和姓名。给定学生的学号,问该学生在不在名单中,如果在,给出姓名。基本要求 使用Java API中的Map相关的技术来完成实验任务。技术提示 使用Java API中的Set相关的技术来完成实验任务。l 使用文件操作,读出文件中的学号和姓名;l 学号作为KEY,姓名作为VALUE,放到MAP中;l 从命令行中输入的学号,作为KEY,在MAP中
37、进行检索。实验四 多线程异常处理1实验目的(1) 掌握Java的异常处理机制及相关实现方法能够在程序设计中熟练运用异常及相关类及对象;(2) 掌握Java多线程的概念和实现方法;(3) 掌握Java多线程的同步问题;2实验内容实验题1 创建两个线程,一个线程打印“A”,另一个线程打印“B”,比如ABBABAABBA.实验题 2 假设有火车票1000张,创建10个线程模拟10个售票点,每个售票点100毫秒买一张票。打印出售票过程,注意使用synchronized确保同一张票只能卖出一次。输出格式如下:第4售票点卖出第100张票第2售票点卖出第101张票 实验题3 假设某家银行,它可接受顾客的汇款
38、,每做一次汇款,便可计算出汇款的总额。现有两个顾客,每人都分3次,每次100元将钱到入。试编写一个程序,模拟实际作业。程序如下:class CBank private static int sum=0; public static void add(int n) int tmp=sum; tmp=tmp+n; / 累加汇款总额 try Thread.sleep(int)(10000*Math.random(); / 小睡几秒钟 catch(InterruptedException e) sum=tmp; System.out.println(sum= +sum); class CCustome
39、r extends Thread / CCustomer类,继承自Thread类 public void run() / run() method for(int i=1;i=3;i+) CBank.add(100); / 将100元分三次汇入 public class Ex6_1 public static void main(String args) CCustomer c1=new CCustomer(); CCustomer c2=new CCustomer(); c1.start(); c2.start(); 基本要求 运行程序5次,观察每次运行结果是否相同。思考问题 程序运行结果每
40、次是否相同,运行时间是否相同,为什么? 要使程序运行结果每次相同,应该怎样修改程序? 程序中为什么要使用异常处理?实验题4在程序中主动产生一个ArithmeticException 类型被0 除的异常, 并用catch 语句捕获这个异常。最后通过ArithmeticException 类的对象e 的方法getMessage 给出异常的具体类型并显示出来。实验题5 在一个类的静态方法mathod() 方法内使用throw 产生异常,使用throws 子句抛出mathod()的异常,在main 方法中捕获处理异常。实验题6 在try 子句中设计两个以上可能出现的异常。通过多个catch 子句分别来
41、捕获异常。并使用finally子句确保一段代码不管发生什么异常都能被执行。实验题7 编写一个程序,输入一个班某门课程成绩,统计及格人数、不及格人数平均分。为此设计一个异常类,当输入的成绩小于0分或大于100分时,抛出异常,程序将捕捉这个异常,并作出相应处理。基本要求 编写完整程序实验五 Java 输入输出流 1实验目的(1) 掌握输入输出流的总体结构;(2) 掌握流的概念;(3) 了解各种流(包括文件流、管道流、连接文件、过滤流、对象的序列化、随机访问)的使用。2实验内容实验题1 编写一个Java Application程序,打印命令行输入的所有参数。基本要求 编写完整程序。实验题2 阅读下面程序,叙述其功能package cn.edu.nwsuaf.jp;import java.io.FileReader;import java.io.IOException;public class FileViewer /* Defines the entry point of the program. */public static void main(String args) System.out
限制150内