春级河北工业大学城市学院网络编程试验指导书.docx

上传人:b****5 文档编号:12189183 上传时间:2023-04-17 格式:DOCX 页数:55 大小:641.33KB
下载 相关 举报
春级河北工业大学城市学院网络编程试验指导书.docx_第1页
第1页 / 共55页
春级河北工业大学城市学院网络编程试验指导书.docx_第2页
第2页 / 共55页
春级河北工业大学城市学院网络编程试验指导书.docx_第3页
第3页 / 共55页
春级河北工业大学城市学院网络编程试验指导书.docx_第4页
第4页 / 共55页
春级河北工业大学城市学院网络编程试验指导书.docx_第5页
第5页 / 共55页
点击查看更多>>
下载资源
资源描述

春级河北工业大学城市学院网络编程试验指导书.docx

《春级河北工业大学城市学院网络编程试验指导书.docx》由会员分享,可在线阅读,更多相关《春级河北工业大学城市学院网络编程试验指导书.docx(55页珍藏版)》请在冰豆网上搜索。

春级河北工业大学城市学院网络编程试验指导书.docx

春级河北工业大学城市学院网络编程试验指导书

实验一、Application与Applet程序调试运行

实验目的:

熟悉所用系统的上机方法与步骤。

实验环境:

安装Windows7或Windowsxp计算机和JDK编译器。

实验内容:

编写一个JavaApplication和一个Applet程序,输出以下信息:

Hello,JavaWorld!

java程序分为javaapplication(java应用程序)和javaapplet(java小应用程序)两种。

1、JavaApplication

Application是在本地独立运行的完整的Java程序。

Application与网络的联系不如Applet那样密切,它一般存储在本地机,运行时也不需要浏览器,而是由独立的Java解释器来解释执行。

Application的程序特点是它包含一个含有main()方法的主类,这个main()方法就是整个程序的执行入口点。

下面是用Application写的程序,它完成的功能是在屏幕上输出一个字符串“Hello,JavaWorld!

”。

由于Application无法借助浏览器的窗口系统,所以字符串“Hello,JavaWorld!

”是直接显示在字符界面中的。

Application编译生成的字节码文件存储在本地,不需要网络下载,由本地的独立解释器解释执行,因此它的安全性限制没有Applet那么严格,与本地普通的应用程序相当。

但同时,由于不能像Applet那样充分利用浏览器系统提供的

窗口系统,Application必须创建和管理自己的图形界面,乃至整个程序。

由于Application的可靠性好,编程自由度大和功能较强,它较多用于网络的服务器端的应用编程。

2、JavaApplet

JavaApplet是嵌入在HTML文件中运行的Java小程序,它的程序结构特点是程序中必然包含一个继承了系统Applet类的子类,这个子类用来在解释执行Applet的浏览器中建立一个Java的工作区,显示有关信息,接受用户命令。

javaapplet程序也是一个类,其编译方式与javaapplication完全一样。

javaapplet的执行方式与javaapplication完全不同,javaapplet程序必须嵌入到html文件中才能够执行,因此必须编写相应的html文件。

下面是一个最简单的JavaApplet程序:

这个程序的功能是在浏览器的JavaApplet工作区中显示字符串“Hello,JavaWorld!

”。

这个程序由一个类组成,类名为HelloWorld,它是系统类Applet的子类。

类HelloWorld包含了一个方法paint(),这个方法负责在工作区的指定位置显示字符串,由解释执行Applet的浏览器自动调用执行。

Applet没有main()方法,它必须嵌在超文本文件中,在浏览器中进行运行。

所有的Applet程序都是Applet类的子类,Applet程序是从方法init()开始执行的。

Applet不能独立运行,必须依赖一个特殊的环境框架——浏览器。

这一特殊的运行机制对安全性也提出了较高的要求,所以需Applet可以执行的操作权限做相应的限制。

该程序编译后生成HelloWorld.class文件,为了运行这个程序,需要编写一个html文件来调用它,html文件和其放在同一目录,

下面为HelloWorld.html文件的内容:

然后可以通过JDK所提供的命令“appletviewer”,在命令行下面执行javaapplet程序。

如果是在windows操作系统中,就可以在"命令提示符"下敲入"appletviewerHelloEducation.html“。

applet还可以采用另外一种方式运行,就是直接在浏览器中打开HelloEducation.html程序,在主流的浏览器如IE、Netscape中都包含有java虚拟机,负责解释执行javaapplet程序。

 

实验二Java语法基础

实验目的:

了解Java的数据类型,掌握各种变量的声明方式,理解运算符的优先级,掌握Java基本数据类型、运算符与表达式,掌握顺序结构、选择结构和循环结构语法的程序设计方法。

实验要求:

1、编写一个声明Java不同数据类型变量的程序。

2、编写使用不同选择结构的程序。

3、编写使用不同循环结构结构的程序。

实验内容:

一、声明不同数据类型变量

1、编写声明不同数据类型变量的程序。

编译并运行该程序,分析程序的运行结果。

2、Integer类在某对象中打包了原始类型为int的值。

Integer类型对象包含int型的单个域。

此外,此类提供了许多方法,可以将int型转换为string型,也可以将Sring型转换为int型,还包含处理int类型时的其他有用常量和方法。

publicclassIntegerDemo

{

publicstaticvoidmain(Stringargs[])

{

Integer[]array={newInteger(20),newInteger(40),newInteger("110")};

for(inti=0;i

{

System.out.println(Integer.toBinaryString(array[i].intValue())+"\t");

System.out.println(Integer.toHexString(array[i].intValue())+"\t");

System.out.println(Integer.toOctalString(array[i].intValue())+"\n");

}

}

}

编译并运行该程序,分析程序的运行结果。

二、分支程序结构

1、使用if...else语句

publicclassTestIf

{

publicstaticvoidmain(Stringargs[])

{

booleanleap;

intyear=2005;

if((year%4==0&&year%100!

=0)||(year%400==0))

System.out.println(year+"年是闰年");

else

System.out.println(year+"年不是闰年");

year=2008;//方法2

if(year%4!

=0)

leap=false;

elseif(year%100!

=0)

leap=true;

elseif(year%400!

=0)

leap=false;

else

leap=true;

if(leap==true)

System.out.println(year+"年是闰年");

else

System.out.println(year+"年不是闰年");

year=2050;//方法3

if(year%4==0){

if(year%100==0){

if(year%400==0)

leap=true;

else

leap=false;

}

else

leap=false;

}

else

leap=false;

if(leap==true)

System.out.println(year+"年是闰年");

else

System.out.println(year+"年不是闰年");

}

}

编译运行该程序,分析程序的运行结果。

2、switch多分支语句

用swith语句实现从键盘读如1,2,3时,屏幕提示不同信息。

编译运行该程序,分析程序的运行结果。

3、用分支语句编程,输入一个学生成绩,给出相应等级:

90~100优

80~89良

70~79中

69~60及格

0~59不及格

三、循环及跳转程序结构

1、分析程序,掌握for控制语句,写出执行结果。

}

}

}

2、用三种循环语句来分别实现输出10~50之间的3的倍数。

3、打印以下图案(每行打5个星号,每个星号之间空两个空格)。

*****

*****

*****

*****

*****

2)采用for循环求1至1000之内的所有“完全数”。

所谓“完全数”是指一个数,恰好等于它的因子之和。

例如,6是一个完全数,因为6的因子为1、2、3,而6=1+2+3。

3)一个整数的各位数字之和能被9整除,则该数也能被9整除。

编程验证给定的整数能否被9整除。

4)已知XYZ+YZZ=532,其中X、Y和Z为数字,编程求出X,Y和Z的值。

 

实验三面向对象程序设计

实验目的:

通过编程和上机实验理解Java语言是如何体现面向对象编程基本思想,熟悉类的封装方法以及如何创建类和对象,熟悉成员变量和成员方法的特性,熟悉类的继承性和多态性的作用,熟悉包、接口的使用方法,掌握OOP方式进行程序设计的方法。

实验要求:

1、编写程序实现类的定义和使用。

2、编写不同成员和不同成员方法修饰方法的程序。

3、编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序和多态性(成员方法重载、构造方法重载)的程序。

4、编写接口的定义和使用的程序。

5、编写包的定义和使用的程序。

实验内容:

一、类的定义及使用

[修饰符]class类名[extends父类名][implements接口列表]

{

//类体

}

说明:

1)类修饰符分类:

访问修饰符:

缺省(默认方式)、public;

非访问修饰符:

abstract、final,不能同时修饰一个类

2)extends:

实现继承

3)implements:

实现接口

1、下面给出了一个矩形类Rectangle,其中含有多个构造方法。

上机编译并运行此程序,观察运行结果,体会其中不同构造方法的设计和使用。

2、程序功能:

通过两个类StaticDemo、TestDemo说明静态变量/方法与实例变量/方法的区别,程序源代码如下。

classStaticDemo

{

staticintx;

inty;

publicstaticintgetX()

{

returnx;

}

publicstaticvoidsetX(intnewX)

{

x=newX;

}

publicintgetY()

{

returny;

}

publicvoidsetY(intnewY)

{

y=newY;

}

}

publicclassTestDemo

{

publicstaticvoidmain(String[]args)

{

System.out.println("静态变量x="+StaticDemo.getX());

System.out.println("实例变量y="+StaticDemo.getY());

StaticDemoa=newStaticDemo();

StaticDemob=newStaticDemo();

a.setX

(1);

a.setY

(2);

b.setX(3);

b.setY(4);

System.out.println("静态变量a.x="+a.getX());

System.out.println("实例变量a.y="+a.getY());

System.out.println("静态变量b.x="+b.getX());

System.out.println("实例变量b.y="+b.getY());

}

}

对上面的源程序进行编译,查错并运行。

二、继承和多态的作用

新类可从现有的类中产生并保留现有类的成员变量和方法,并可根据需要对它们加以修改。

新类还可添加新的变量和方法,这种现象就称为类的继承。

当建立一个新类时,不必写出全部成员变量和成员方法。

只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。

被继承的类称为父类或超类(superclass),这个新类称为子类。

Java提供了一个庞大的类库让开发人员继承和使用。

设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。

你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现了继承,则和父类毫无两样。

所以,通常要对子类进行扩展,即添加新的属性和方法。

这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。

继承的意义就在于此。

类的继承发生在多个类之间,而类的多态只发生在同一个类上。

在一个类中,可以定义多个同名的方法,只要确定它们的参数个数和类型不同。

这种现象称为类的多态。

多态使程序简洁,为程序员带来很大便利。

在OOP中,当程序要实现多个相近的功能时,就给相应的方法起一个共同的名字,用不同的参数代表不同的功能。

这样,在使用方法时不论传递什么参数,只要能被程序识别就可以得到确定的结果。

类的多态性体现在方法的重载(overload)上,包括成员方法和构造方法的重载。

1、编译并运行下面的程序,观察分析运行结果,体会程序中super和this的用法,进一步理解变量隐藏和方法重写的概念。

 

2、编译并运行下面的程序,分析运行结果,体会其中方法重载的用法,进一步理解方法重载的概念。

三、接口的定义和使用

1、接口的基本概念

Java中的接口在语法上有些类似于类,它定义了若干的抽象方法和常量,形成一个属性集合,该属性集合通常代表了某一功能的实现。

它的主要作用是可以帮助我们实现类似于类的多重继承的功能。

Java中各类获取某一接口定义的功能,并不是通过直接继承这个接口中的域和方法来实现的,因为接口中的域都是常量,接口中的方法都是没有方法体的抽象方法,也就是说,接口定义的仅仅是实现某一特定功能的功能接口和规范,而并没有真正的实现这个功能,这个功能的真正实现实在“继承”了这个接口的各个类中完成的,有这些类来具体定义接口中各抽象方法的方法体。

故在Java中,通常把对接口功能的“继承”称为实现。

2、接口的声明

Java中声明接口的语法如下:

[public]interface接口名[extends父接口名列表]

{//接口体:

//常量域声明

[public][static][final]域类型域名=常量值;

//抽象方法声明

[public][abstract][native]返回值方法名(参数列表)[throw异常列表];

}

3、接口的实现

某个类为接口中的抽象方法书写语句并定义实在的方法体,称为该类实现可这个接口。

示例如下:

编译并运行上述程序,分析程序的运行结果。

四、包的定义和使用

●创建自定义包Mypackage

在存放源程序的文件夹中建立一个子文件夹Mypackage。

例如,在“E:

\java\程序”文件夹之中创建一个与包同名的子文件夹Mypackage(E:

\java\程序\Mypackage),并将编译过的class文件放入该文件夹中。

注意:

包名与文件夹名大小写要一致。

再添加环境变量classpath的路径,例如:

E:

\j2sdk1.4.2_01\lib;E:

\java\程序

●在包中创建类

YMD.java程序功能:

在源程序中,首先声明使用的包名Mypackage,然后创建YMD类,该类具有计算今年的年份并输出一个带有年月日的字符串的功能。

源代码如下

编译Test_YMD.java文件,然后将Test_YMD.class文件存放到Mypackage文件夹中。

●编写使用包Mypackage中Test_YMD类的程序

YMD_2.java程序功能:

给定某人姓名与出生日期,计算该人年龄,并输出该人姓名,年龄,出生日期。

程序使用了Test_YMD的方法来计算年龄。

源代码如下。

编译并运行程序。

五、编程题,编写程序并写出运行结果

1、创建一个桌子Table类,该类中有桌子名称、重量、桌面宽度、长度及桌子高度属性。

其中有:

(1)构造函数初始化所有数据成员;

(2)Area():

计算桌面的面积;

(3)Display():

在屏幕上输出所有数据成员的值;

(4)ChangeWeight(int):

改变桌子重量的函数;

(5)在main()中实现创建一个桌子对象,计算桌面的面积,改变桌子重量,并在屏幕上输出所有桌子数据成员的值。

2、创建一个名称为Pay的类,该类包括工作小时、每小时工资、扣缴率、应得工资总额和实付工资等5个双精度型的成员变量。

创建3个重载的应得工资computeNetPay()方法。

应得工资是工时乘以每小时工资的计算结果。

当computeNetPay()接收代表小时、扣缴率和工资率的数值时,计算出应得工资=工作小时*每小时工资*(1—扣缴率)*(1—工资率)。

当computeNetPay()接收两个参数时,扣缴率假定为15%,计算出应得工资=工作小时*每小时工资*(1—0.15)*(1—工资率)

当computeNetPay()接收一个参数时,扣缴率假定为15%,每小时工资率为4.65%。

同时编写一个测试类,该测试类的main方法测试所有3个重载的方法。

3、商店销售某一件商品,商店每天公布统一的折扣(discount)。

同时允许销售人员在销售时灵活掌握价格(price),在统一折扣的基础上,对一次购入10件以上者,还可以销售9.5折优惠。

现已知当天5名售货员的销售情况为:

售货员编号(num)销售件数(quantity)销售单价(price)

1013126.8

2218125.6

32510124.8

10845123.4

901100121.5

编写销售商品类Sale和含有main方法的公共类Test,计算当天此商品的总销售额sum,以及每件商品的平均售价,并在显示器上显示。

(3)定义接口Shape及其抽象方法getArea()和getPerimeter()用于计算图形和面积和周长。

定义类Rectangle(矩形)、类Circle(圆形)、类Triangle(三角形),要求这些类继承点类Coordinates()并实现接口的抽象方法。

提示:

 

classCoordinates

{

longx;

longy;

Coordinate(longx,longy)

{

this.x=x;

this.y=y;

}

}

 

实验四、异常处理程序设计

实验目的:

了解Java中异常处理(exception)的作用及常用的异常类,掌握异常处理的设计方法。

实验要求:

理解系统异常处理的机制和创建自定义异常的方法。

实验内容:

在已实现的方法中,加入出错处理异常(EXCEPTION),又称例外,是特殊的运行错误,对应着Java语言特定的运行机制。

由于Java程序是在网络环境中运行的,安全成为需要首先考虑的首要因素之一。

为了能够及时有效的处理程序中的运行错误,Java中引入了异常和异常类。

作为面向对象的语言,异常与其它语言要素一样,是面向对象规范的一部分,是异常类的对象。

异常类结构与组成:

Java的异常类是处理运行是错误的特殊类,每一种异常类对应一种特定的运行错误。

所有的Java异常类都是系统类库中的Exception类的子类。

其类继承结构如下图:

 

Throwable类是java.lang包中的一个类,它派生了两个子类:

Exception和Error。

其中Error类由系统保留,而Exception类则供应用程序使用。

系统定义的运行异常:

Exception类有若干子类,每一个子类代表了一种特定的运行错误。

这些子类有些是系统事先定义好包含在Java类库中的,称为系统定义的运行异常。

系统定义的运行异常通常对应着系统运行错误。

由于这种错误可能导致操作系统错误,甚至是整个系统的瘫痪,所以需要定义异常来特别处理。

用户自定义的异常:

系统定义的异常主要用来处理系统可以预见的较常见的运行错误,对于某个应用所特有的错误,则需要用户程序自己创建用户自定义异常。

这种用户自定义异常主要用来处理用户程序中特定的逻辑运行错误。

用户自定义异常用来处理程序中可能产生的逻辑错误,使得这种错误能够被系统及时识别并处理。

因此用户自定义异常可以使用户程序更为强健,使整个系统更加安全稳定。

异常的抛出:

Java程序在运行时如果引发了一个可识别的错误,就会产生一个与该错误相对应的异常类的对象,这个过程被称为异常的抛出。

异常的抛出根据异常类的不同,抛出的方法也不同。

所有的系统定义的异常都可以由系统自动抛出;用户程序自定义的异常必须借助于throw语句来定义何种情况算是产生了此种异常对应的错误,并应该抛出这个异常的新对象。

异常的处理:

当一个异常被抛出时,应有专门的语句来接受这个被抛出的异常对象,这个过程被称为捕捉异常。

当一个异常类被捕捉或接收后,用户程序就会发生跳转,系统中止当前的流程而跳转至专门的异常处理语句块,或直接跳出当前程序和Java虚拟机回到操作系统。

在Java程序里,异常处理语句的格式如下:

try{

//用try语句来选定捕获异常的范围

}

catch{

//异常处理语句

}

finally{

//总是会被执行的代码

}

1、用try-catch-finally结构实现异常处理。

编译并运行程序,写出程序运行结果。

 

 

2、编译并运行程序,写出程序运行结果。

3、输入并运行下面的程序,写出程序运行结果。

4、请看下面的定义

Strings=null;

if((s!

=null)&(s.length()>0));

if((s!

=null)&&(s.length()>0));

if((s==null)|(s.length()>0));

if((s==null)||(s.length()>0));

在上面4个语句中,哪个能引发异常?

是哪种类型的异常?

请说明理由。

5、请根据题目要求,编写程序并写出运行结果

1)设计一个Java程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为“XYZ”,则抛出一个异常信息“ThisisaXYZ”,如果从命令行输入ABC,则没有抛出异常。

(只有XYZ和ABC两种输入)。

2)使用命令行方式输入四个参数,分别是姓名、数学成绩、英语成绩、Java成绩,求总成绩和平均成绩,处理数组下标越界、成绩不是数组、成绩输入不合理(不在1-100之间)的异常。

要去:

自己定义输出成绩不合理的异常。

提示1:

数组下标越界异常为:

ArrayIndexOutOfBoundsException

成绩不是数组的异常采用Java中的异常:

NumberFormatException

提示2:

自定义的异常通常是Exception的子类。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1