08计算机Java实验_第1页
08计算机Java实验_第2页
08计算机Java实验_第3页
08计算机Java实验_第4页
08计算机Java实验_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java程序设计实验教学大纲课程名称:Java程序设计英文名称:Java Program Design课程编号:课程性质:课程类型:专业选修 适用专业:08级计算机科学与技术专业学时与学分:实验学时:18 实验学分:0.5制定时间:2010年12月修订一、实验课的任务、性质与目的:本实验课的任务是配合课堂讲解的内容,巩固所学的基本知识,编程课程是一门理论与实践高度结合的课程,学生必须自己多动手,上机多练习才能消化掉所学的知识,我们所给出的实验均是由浅入深,一方面培养学生的兴趣,另一方面能使学生融会贯通、举一反三,真正掌握面向对象程序设计的精髓。二、主要仪器设备及环境:本课程的实验包括硬件环境及

2、软件环境: 硬件环境:PC机软件环境:Eclipse.三、实验项目的设置与实验内容序号实验项目名称实验内容实验要求实验时数每组人数1基本知识与概念的实验熟悉JDK开发环境,给出简单的运行例子进行测试。必做212面向对象设计基础结合课堂所讲的内容,根据所给框架,编写程序。必做213面向对象高级程序设计-继承与接口结合课堂所讲的内容,根据所给框架,编写程序。必做214多线程的实验理解什么是线程,如何利用现成编写并发性程序。必做215输入/输出流的实验根据题目要求,熟悉java提供的输入/输出包中类的使用,特别是一些常用的类的方法的使用必做216网络应用的实验熟悉java中网络通讯的基本原理及简单网

3、络程序的开发必做217异常的实验熟悉异常的概念、异常的分类、系统已经定义的常见异常、自定义异常和异常捕获必做218基于java多媒体游戏软件的设计结合所学的知识,编写一个实际应用的程序,要求界面清晰,功能完善。与9题选做一个419网络数据文件存储系统结合所学的知识,编写设计一个网络数据文件存储系统,需要界面支持,能实现查询数据文件在网络上的分布,能实现增加、删除、修改功能。与8题选做一个41合计18四、考核方式与评分办法由于本课程的学时有限,所以不可能涉及到Java的所有知识点,所给出的实验均是基础的内容,同时根据教学内容的不同,同学们课后需要40或更多的学时来配合课程的进行。具体的实验考核方

4、式与评分办法如下:1没有具体的实验说明,只给出凌乱的代码:不及格2基本完成要求,符合实验报告的要求:60分3在2的基础上,代码完整,具有可读性(有注释):60-70分4在3的基础上,实验报告整洁,内容完整:70-80分5在4的基础上,代码优化,算法精练,界面友好,思路清晰:80-90分6在5的基础上,实现了全部的要求并进行扩展,有自己的结论:90-100分实验一:Java基本知识与概念的实验Java程序设计语言同大多数程序设计语言一样,具有一些基本特性。本节实验主要练习Java编程语言的这些基本特性,如Java中的简单数据类型,运算符和表达式,这是学习Java语言必须经过的基础阶段。掌握了本节

5、实验所讲述的内容后,应该能够对Java程序的构成有一个基本的理解,能够灵活运用Java语言提供的各种数据类型和运算符。学好Java语言必须具备扎实的语言基础,这对后续学习是很有必要的。Java程序通过控制语句来执行程序流,完成一定的任务。程序流是由若干个语句组成的,语句可以是单一的一条语句,也可以是用大括号括起来的一个复合语句。Java中的控制语句主要有分支语句(if-else,switch).循环语句(while,do-while,for)与程序转移有关的跳转语句(break,continue,return)。本节实验将学习如何控制程序的流程,使程序实现不同功能。11实验目的:1. 掌握Ja

6、va语言的数据类型。2. 掌握Java语言的运算符和表达式。3. 掌握Java语言的运算符的优先级。4. 学会使用if和if-else和switch分支语句。5. 学会使用while, do-while和for循环语句。6. 学会使用break和continue程序控制语句。7. 进一步熟悉java语言开发环境,掌握Java程序的编辑,编译和运行过程;能够设计具有一定算法的输出程序。12实验预习: 1. Java语言源程序是由Java语言的基本语句构成的,Java语言的语句基本上同C/C+语言的语句一样。有些在C/C+语言程序中容易产生错误的语句已被Java语言所抛弃。通过下面的实验步骤,读者

7、可以编写简单的Java程序。例1-1 在横线上填出下列变量的定义类型。 public class example1 public static void main (string args ) _int_ x=45;_ y=3.14f;_ z=3.1415;_ truth=true;_ c=6;/.更多 2.利用输出语句来实现数据的格式化显示Java语言中的输出语句,可以通过调用System.out 中的println方法(或print 方法),在练习数据格式化显示之前,我们在通过下面两个简单的例子对比一下println 方法和print方法的区别。例1-2 观察下面应用程序的打印结果。 打开

8、文本编辑器,输入下列代码:public class asterisk public static void main (string args ) System.out.print(“*”);System.out.print(“*”);System.out.print(“*”);在没有编译运行之前,读者能否得出上面程序的运行结果: _ _ _例1-3 修改例1-2。 public class asterisk public static void main (String args ) System.out.println (“*”);System.out.println (“*”);Syst

9、em.out.println (“*”);在没有编译运行之前,读者能否得出上面程序的运行结果: _ _ _例1-4 写出下面程序的运行结果。打开文本编辑器,输入下列代码: public class Typeconversion public static void main (string args ) char a=1; int b=4; double c=24.6f; byte d; d=(byte) (a+b+c); short e; e= (short) (a+b+c); int f; f=(int) (a+b+c); double g; g= a+b+c; System.out.pr

10、intln(“d=”+d); System.out.println(“e=”+e); System.out.println(“f=”+f);System.out.println(“g=”+g); 在没有编译运行之前,读者能否得出上面程序的运行结果: _ _ _例1-5 OperTest.java.打开文本编辑器,输入下列代码: public class OperTest public static void main (string args ) int x=20,y=30,I=0,max; float r=5/3; float f=1.75f; double t; t=f+r; t=t+(3

11、+8+/2-1; max =x>y? x : y; System.out.println(“r=”+r); System.out.println(“t=”+t); System.out.println(“max=”+max); 在没有编译运行之前,读者能否得出上面程序的运行结果: _例1-6 求3个数中的最大值。打开文本编辑器,输入下列代码: public class Max public static void main (string args ) int a=1; int b=3; int c=7; if(a>b) if(a>c) System.out.println

12、(“三个数中最大的是:“+a); else System.out.println (“三个数中最大的是:“+c); else if(b>c) System.out.println (“三个数中最大的是:“+b); else System.out.println (“三个数中最大的是:“+c); 在没有编译运行之前,读者能否得出上面程序的运行结果: _ _注意:else子句不能单独做为语句使用,它必须和if配对使用。Else总是与离它最近的if配对。例1-7 根据颜色数输出颜色。打开文本编辑器,输入下列代码: public class switchcolor1 public static

13、void main (string args ) int colornum = 1;switch(colornum) case 0: System.out.println(“color is red”); case 1: System.out.println(“color is green”); default: System.out.println(“color is black”); 在没有编译运行之前,读者能否得出上面程序的运行结果: _ _把例1-8中每个case后面都加上break语句,程序修改如下: public class switchcolor2 public static v

14、oid main (string args ) int colornum = 1;switch(colornum) case 0: System.out.println(“color is red”);break; case 1: System.out.println(“color is green”);break; default: System.out.println(“color is black”);break; 在没有编译运行之前,读者能否得出上面程序的运行结果: _ _注意:case子句中的值必须是不同的。break语句的作用使程序跳出switch语句后,即终止switch语句的执

15、行。 例1-9 用while循环水仙花数(所谓水仙花数,是指一个3位数,其各位数字的立方和等于该数本身。例如:153是一个水仙花数。因为153=13+53+33打开文本编辑器,输入下列代码: class whileexample public static void main (string args ) int a,b,c,num=100,count =1;while (num<1000) a=num/100; b=(num-a*100)/10; c=num%10; if(Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3) = = num ) Syste

16、m.out.println(“第”+count+“个水仙花数为:”+num): num+;例1-10 MixExample.java.输入下列代码:public class MixExample public static void main (string args ) int j; int i; int k; System.out.println(“ 1 2 3 4 5 6 8 9”); for(i=1;i<=9;i+)for(j=1;j<=9;j+) k=i+j;if(j = =1) System.out.prinlnt(i+” “); else if(k>9) Sys

17、tem.out.println(k+” “); else System.out.println(k+” “); System.out.println( ); 在没有编译运行之前,读者能否得出上面程序的运行结果: _ _ _ _ _ 例1-11 百元买百鸡。 打开文本编辑器,输入下列代码:public class ContinueOp public static void main (string args ) int n; for(n=1;n<=10;n+) if (n%2 = = 0) continue; System.out.println(“n=”+n); 例1-12 break语

18、句的使用。public class BreakOp public static void main (string args ) int n; for(n=1;n<=10;n+) if (n%2 = = 0) break; System.out.println(“n=”+n); 13实验内容及要求:(1)设计简单的java程序。(2)设计一个99表打印的Application程序,要求程序简单,行列对齐美观。(3)输出100000之内的所有素数(即非1和自身不能被其他数除尽的数)要求程序简单,程序运行速度较快,行列对齐美观。实验二:面向对象设计基础复数类的实现类是面向对象程序设计的基础,

19、是java的核心和本质所在。在java中,所有的语言元素都必须封装在类中。编写java程序的过程就是从现实世界中抽象出java可实现的类,并用合适的语句定义它们的过程。本节实验将学习类的应用,及如何创建类的实例。通过类的继承更有效地组织程序结构,明确类之间的关系。掌握了本节实验所讲诉的内容之后,读者就可以使用面向对象技术编写java程序了。21实验目的:1. 掌握java面向对象程序设计的基本思想。2. 掌握类的定义和使用。3. 掌握对象的声明和使用。4. 了解构造函数的概念和使用。5. 掌握类的继承关系和派生方法。6. 掌握多态的概念与使用。22实验预习:在前面的实验的例题中,都定义了一个类

20、。那么如何编写自己的java类呢?下面我们将从如何定义类开始,逐步学习面向对象的程序设计方法。1)阅读下面的程序,在main()方法里添加语句完成如下功能:创建一个MyValue类的对象myValue。为myValue对象中的value赋值10。使用getVaule()方法获得myValue对象中的数据并将它打印在屏幕上例21:li2_1.javaclass MyValue private int value; public void setValue(int x) value = x; public int getValue() return value; public class li2_

21、1 public static void main (String args) _;_;_; _;2)试编写Java代码实现一个计数器类Computer其中包括:用counterValue 来保存计数器的当前值。方法increment()计数器加一。方法decrement()计数器减一。方法reset()计数器清零。3)例22:li2_2.java打开文本编辑器,输入下列代码:class li2_2class Dog private String name;private int age; public int step; Dog(String s,int a)name=s;age=a;ste

22、p=0;public void run(Dog fast)fast.step+; public static void main (String args) li2_2 a=new li2_2();Dog d=a.new Dog ("Tom", 3);d.step=25;d.run (d);System.out.println (d.step);在没有编译运行之前,读者能否得出上面程序的运行结果: _ _ _23实验内容及要求:定义一个复数类,并实现以下复数类的方法:构造方法、得到实部、得到虚部、设置实部、设置虚部、复数的加法,减法,乘法,最后,创建对象进行运算。 复数类C

23、omplex必须满足如下要求:(1)复数类Complex 的属性有:RealPart : double型,代表复数的实数部分ImaginPart : double型,代表复数的虚数部分(2)复数类Complex 的方法有:Complex( ) : 构造函数,将复数的实部和虚部都置0。Complex( double r , double i ) : 构造函数,形参 r 为实部的初值,i为虚部的初值。double getReal(): 获得复数对象的实部;double getImagin (): 获得复数对象的虚部;Complex complexAdd(Complex a) : 将当前复数对象与形

24、参复数对象相加,所得的结果仍是一个复数值,返回给此方法的调用者。Complex complexSub(Complex a) : 将当前复数对象与形参复数对象相减,所得的结果仍是一个复数值,返回给此方法的调用者。Complex complexMulti(Complex a) : 将当前复数对象与形参复数对象相乘,所得的结果仍是一个复数值,返回给此方法的调用者。String ToString( ) : 把当前复数对象的实部、虚部组合成 a+bi 的字符串形式,其中a 和 b分别为实部和虚部的数据。实验三:面向对象高级程序设计复数类的复杂运算面向对象程序设计的两个最重要的特点就是:继承与多态。继承是

25、面向对象程序设计方法的一种重要手段。通过继承可以更有效的组织程序结构,明确类之间的关系,并充分利用已有的类来开发新类,以完成更复杂的设计、开发。多态则可以统一多个相关类的对外接口,并在运行时,根据不同的情况,执行不同的操作,提高类的抽象度和灵活性。31 实验目的:1、 掌握类的继承关系和派生方法。2、 掌握多态的概念与使用。3、 掌握面向对象程序设计的特性,包括类的继承、方法的重载和覆盖,抽象类和方法、接口等。32 实验预习:例31中,首先定义了一个类Tree,该类中前3个构造方法的参数个数互不相同构成了构造方法的重载。在第2个构造方法中,this(h)表示调用第1个构造方法。第3个构造方法中

26、,this ("香蕉树", 47);表示调用第2个构造方法。(1)例31:li2_1.java打开文本编辑器,输入下列代码:class Tree int height=0; String name=new String("null"); Tree(int h) height=h; System.out.println ("带整型参数的构造函数");Tree (String n, int h) this(h); /调用前一个的构造方法 =n; System.out.println ("带整型和字符串型参数的构

27、造函数");Tree () this ("香蕉树", 47); System.out.println ("默认的构造函数");void showme () System.out.println ("产生树名为 "+name+",树高为"+height);public class li3_1 public static void main (String args) Tree mytree=new Tree();mytree.showme();在没有编译运行之前,能否得出上面程序的运行结果: _ _ _ _

28、 _一个类因构造方法的重载而存在着若干构造方法,它们之间是可以相互调用的,使用关键字this。(2)例32:li3_2.javapublic class li2_2public static void main(String args) D201_Card my201 = new D201_Card(12345678,1234,50.0,"201");if(my201.performDial(12345678,1234)System.out.println("拨打电话后剩余金额为:"+my201.getBalance();if(my201.perform

29、Dial()System.out.println("拨打电话后剩余金额为:"+my201.getBalance();abstract class PhoneCarddouble balance;abstract boolean performDial();double getBalance() return balance;abstract class Number_PhoneCard extends PhoneCardlong cardNumber;int password;String connectNumber;boolean connected;boolean pe

30、rformConnection(long cn,int pw) if(cn = cardNumber && pw = password) connected = true;return true;elsereturn false;class D201_Card extends Number_PhoneCarddouble additoryFee;D201_Card(long cn,int pw,double b,String c) cardNumber = cn;password = pw;balance = b;connectNumber = c;boolean perfor

31、mDial() if(!connected)return false;if( balance > (0.5 + additoryFee ) balance -= (0.5 + additoryFee);return true;elsereturn false;boolean performDial(long cn,int pass) if(performConnection(cn,pass)return performDial();elsereturn false;double getBalance() if(connected)return balance;elsereturn -1;

32、在没有编译运行之前,能否得出上面程序的运行结果: _ _ _(3)例33:li2_2.java种没有涉及到电话费不能扣除的情况,请对li2_2.java中的主方法进行修改,要求能为201卡充值100元,然后,第一次拨打没有收费,第二次拨打收了0.5元。public static void main(String args) _ _ _ _ _33 实验内容及要求:定义一个高级复数类(AdvComplex),使他能继承实验二的类,并覆盖和重载其相关的方法,并进行运算。 复数类AdvComplex必须满足如下要求:(1)复数类AdvComplex的属性有:RealPart : double型,代表

33、复数的实数部分ImaginPart : double型,代表复数的虚数部分(2)复数类AdvComplex的方法有:AdvComplex( ) : 构造函数,将复数的实部和虚部都置0,输出“创建复数:0”AdvComplex( double r , double i ) : 构造函数,形参 r 为实部的初值,i为虚部的初值;并且在初始化完毕之后,输出“创建复数:XX+XXi”double getReal(): 获得复数对象的实部;double getImagin (): 获得复数对象的虚部;void setReal(double d): 修改复数对象的实部;void setImagin (do

34、uble d ): 修改复数对象的虚部;AdvComplex complexAdd(AdvComplex a) : 将当前复数对象与形参复数对象相加,所得的结果仍是一个复数值,返回给此方法的调用者。AdvComplex complexAdd(double a) : 将当前复数对象与形参实数值相加,所得的结果仍是一个复数值,返回给此方法的调用者。AdvComplex complexSub(AdvComplex a) : 将当前复数对象与形参复数对象相减,所得的结果仍是一个复数值,返回给此方法的调用者。AdvComplex complexSub(double a) : 将当前复数对象与形参实数值相

35、减,所得的结果仍是一个复数值,返回给此方法的调用者。AdvComplex complexMulti(AdvComplex a) : 将当前复数对象与形参复数对象相乘,所得的结果仍是一个复数值,返回给此方法的调用者。AdvComplex complexMulti(double a) : 将当前复数对象与形参实数值相乘,所得的结果仍是一个复数值,返回给此方法的调用者。String ToString( ) : 把当前复数对象的实部、虚部组合成 a+bi 的字符串形式,其中a 和 b分别为实部和虚部的数据。实验四:多线程的实验4 . 1 实验目的:1线程的概念、线程的生命周期。2多线程的编程:继承Th

36、read类与使用Runnable接口。3使用多线程机制实现动画。4. 处理简单的多线程互斥和同步;4 . 2实验内容与要求:仔细读下面的JAVA语言源程序,自己给出程序的运行结果public class Ch81 extends Thread int n; Ch81()Thread td=new Thread(this);td.start(); public void run() for (n=0;n<6;n+) try System.out.print(n); Thread.sleep(500); catch(InterruptedException e) System.out.pri

37、ntln("Exception"); public static void main(String args) new Ch81(); 2运行下面的程序,理解用实现Runnable接口的方法实现多线程。/这是一个时钟Applet,它显示当前时间并逐秒进行更新。import java.awt.*;import java.applet.*;import java.util.*;public class Clock extends Applet implements RunnableThread clockThread;public void start()if(clockThr

38、ead=null)clockThread=new Thread(this,"Clock");clockThread.start();public void run()while(clockThread !=null)repaint();tryclockThread.sleep(1000);catch(InterruptedException e)public void paint(Graphics g)Date now=new Date();g.drawString(now.getHours()+""+now.getMinutes()+"&qu

39、ot;+now.getSeconds(),5,10);public void stop()clockThread.stop();clockThread=null;3利用多线程编程实现一个正在旋转的地球4将插入、冒泡排序算法设计成算法,启动两个以上不同的线程同时运行,计算不同排序的运行时间。实验五:输入/输出流的实验5 . 1:实验目的1. 理解流的概念,流的划分2. 掌握文件描述,顺序处理,随机访问处理的方法;3. 能够熟练的使用过滤流;掌握字符流处理的方法;4. 理解对象串行化的概念和方法。 5 . 2:实验内容与要求: 仔细读下面的JAVA语言源程序,自己给出程序的运行结果,理解File类

40、的使用。import java.io.*;import java.awt.*;import java.awt.event.*;public class Ch71 extends Frame int n; String dirname="/jdk1.4" File file=new File(dirname); String flist=new String100; Choice listFile=new Choice(); TextField tf=new TextField(); public Ch71() setLayout(new BorderLayout(10,10

41、); flist=file.list(); for (n=0;n<flist.length;n+) listFile.addItem(flistn); add("North",listFile); add("South",tf);setSize(250,200); setVisible(true); listFile.addItemListener(new koListener(); addWindowListener(new koWindowListener(); public static void main(String args) new

42、Ch71(); class koListener implements ItemListener public void itemStateChanged(ItemEvent e) String ko=(String)e.getItem(); for (n=0;n<flist.length;n+) if (ko=flistn) File f=new File(file+System.getProperty("file.separator")+ko); if (f.isFile()=true) tf.setText(ko+"是个文件!"); if (

43、f.isDirectory()=true) tf.setText(ko+"是个目录!"); class koWindowListener extends WindowAdapter public void windowClosing(WindowEvent e) dispose(); System.exit(0); 2、仔细读下面的JAVA语言源程序,自己给出程序的运行结果import java.io.*;public class testRandom2public static void main(String args)tryRandomAccessFile rf=ne

44、w RandomAccessFile("rtest.dat", "rw");for(int i = 0; i < 10; i+) rf.writeInt(i); rf.writeDouble(i*1.414); rf.close();rf = new RandomAccessFile("rtest.dat", "rw");rf.seek(5*(4+8);rf.writeInt(47);rf.writeDouble(47.00021);rf.close();rf = new RandomAccessFile("rtest.dat", "r");for(int i = 0; i < 10; i+) ; System.out.println("Value " + rf.readInt() + ": " + rf.readDouble();rf.close();catch(IOException e)System.out.println(e.toString();3、定义一个类实现银行帐户的概念,包括的变量有"帐号"和"存款余额",包括的方法有&q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论