java实验教案2011(上)

更新时间:2024-04-14 16:33:01 阅读量: 综合文库 文档下载

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

实验一 java基础

实验目的

1. 了解和使用SDK集成环境及配置环境变量 2. 熟悉并掌握 eclipse开发工具。

3. 了解java语言的特点,掌握在eclipse中开发简单java程序。

4. 掌握并精通java语言的基本语法:标示符、关键字及基本数据类型。掌握java 语言的运算符、表达式和语句。

知识要点

1. Java语言是一门很优秀的语言,具有面向对象、与平台无关、安全、稳定和多线程等优良特性,是目前软件设计中极为健壮的编程语言.

2. 目前Java运行平台主要分为3个版本:J2SE: Java 标准平台,J2EE: Java企业平台 J2ME, Java小型平台

3. 下载JDK,http://java.sun.com. 安装并配置环境变量。 变量名 变量值 说明 JAVA_HOMC:\\j2sdk(假定JDK安装在该目录下) JDK所在搜索路径 E Path C:\\j2sdk\\bin Java实用程序的位置 或%JAVA_HOME%\\bin CLASSPATH .;c:\\j2sdk\\lib\\dt.jar;c:\\j2sdk\\lib\\tools.jar 说明类和包文件的搜或.;%JAVA_HOME%\\lib\\dt.jar; %JAVA索路径 _HOME%\\lib\\tools.jar; 4. Java语言有8种简单数据类型,分别是:boolean、byte 、short、int、long、float、double、char。类型按精度从“底”到“高”排列了顺序:byte short int long float double级别低的赋给级别高的变量,系统自动完成数据类型的转换。级别高的值赋给级别底变量,必须使用显示类型转换运算

例题讲解

1. 在eclipse中编写下列的java应用程序并运行及小应用程序

public class Hello {

public static void main (String args[ ]) {

System.out.println(\你好,很高兴学习Java\ } }

编写下面applet小应用程序并运行。

import java.applet.*; import java.awt.*;

public class Boy extends Applet { public void paint(Graphics g) { g.setColor(Color.red);

g.drawString(\我一边喝着咖啡,一边学Java呢\ g.setColor(Color.blue);

g.drawString(\我学得很认真\ } }

2.编写一个Java应用程序,用户从键盘输入一个1-99999之间的数,程序将判断这个数是几位数,并判断这个数是否是回文数。回文数是将该数含有的数字逆序排列后得到的数和原数相同。如12121和3223等都是回文数。

import javax.swing.JOptionPane; public class Number { public static void main(String[] args) { int number=0,d5,d4,d3,d2,d1;

String str=JOptionPane.showInputDialog(\输入一个1到99999之间的数\ number=Integer.parseInt(str); if(1<=number&&number<=99999) { d5=number/10000;//万位 d4=number000/1000; //千位 d3=number00/100;//百位 d2=number0/10; d1=number; if(d5!=0)//五位数 { System.out.println(number+\是5位数\ if(d5==d1&&d2==d4) { System.out.println(number+\是回文数\ } else{ System.out.println(number+\不是回文数\ } }

else if(d4!=0)//4位数 { System.out.println(number+\是4位数\ if(d4==d1&&d2==d3) { System.out.println(number+\是回文数\ } else{ System.out.println(number+\不是回文数\ } }

else if(d3!=0)//三位 { System.out.println(number+\是3位数\ if(d3==d1)

{ System.out.println(number+\是回文数\ } else{ System.out.println(number+\不是回文数\ } }

else if(d2!=0)//2位 { System.out.println(number+\是2位数\ if(d2==d1) { System.out.println(number+\是回文数\ } else{ System.out.println(number+\不是回文数\ } }

else if(d1!=0)//1位 { System.out.println(number+\是1位数\ System.out.println(number+\是回文数\ } } else { System.out.println(number+\不在1到99999之间\ } } }

实验题目

1. 编程实现:输出100以内所有素数。 2. 编程输出以下图案: * *** ***** ******* ***** *** *

3. 编写java应用程序,实现冒泡排序算法。 4. 猜数字。编写一个Java应用程序,实现如下功能:

? 随机分配给客户一个1—100之间的整数。

? 用户从键盘输入自己的猜测。

? 程序返回提示信息,提示信息分别是“猜大了”、“猜小了”、和“猜对了”。 ? 用户可根据提示信息再次输入猜测,直到提示信息是“猜对了”。 提示:正确的随机整数可定义为:

int realNumber=(int)(Math.random()*100)+1;

实验二 类与对象

实验目的

1. 掌握类和对象的概念。掌握类的特性:封装、继承、多态。 2. 掌握关键字:satic/this. Package和import语句 3. 掌握访问权限:public、private、protect。

知识要点

1. 面对对象编程的核心思想之一,就是将数据和对数据的操作封装在一起。通过抽象,即从具体的实例中抽取共同的性质形成某种一般的概念,比如类的概念。

2. 类有两种基本的成员:变量和方法。变量用来刻画对象的属性,方法用来体现对象的功能。

3. 成员变量分为实例变量和类变量。类变量是与类相关联的数据变量,而实例变量是仅仅与对象相关联的数据变量。对象共享类变量,不同对象的实例变量将分配不同的内存空间。

4. 实例方法和类方法。实例方法:对象创建后,类中的实例方法才分配入口地址。类方法:类被加载到内存时,就分配了相应的入口地址。

例题讲解

1. Fibinacii数列:

class Fibi

{ public static long fibinacii(int n)

{ long c=0; if(n==1||n==2) c=1; else

c=fibinacii(n-1)+fibinacii(n-2); return c; } }

public class Example4_8

{ public static void main(String args[]) { System.out.println(Fibi.fibinacii(7)); } }

2. 使用package语句与import语句

? Trangle类

package tom.jiafei; public class Trangle { double sideA,sideB,sideC;

boolean boo;

public Trangle(double a,double b,double c) { sideA=a; sideB=b; sideC=c;

if(a+b>c&&a+c>b&&c+b>a)

{ System.out.println(\我是一个三角形\

boo=true; } else

{ System.out.println(\我不是一个三角形\ boo=false; } }

public void 计算面积() { if(boo)

{ double p=(sideA+sideB+sideC)/2.0;

double area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC)) ; System.out.println(\面积是:\ } else

{ System.out.println(\不是一个三角形,不能计算面积\

} }

public void 修改三边(double a,double b,double c) { sideA=a; sideB=b; sideC=c;

if(a+b>c&&a+c>b&&c+b>a)

{ boo=true; } else

{ boo=false; } } } ?

实例2

import tom.jiafei.Trangle; class Example4_13

{ public static void main(String args[]) { Trangle trangle=new Trangle(12,3,1); trangle.计算面积(); trangle.修改三边(3,4,5); trangle.计算面积(); } }

实验题目

1. 编写一个类实现银行账户的概念,包括的属性有“账号”、“储户姓名”、“地址”、

“存款余额”,包含的方法有“存款”、“取款”、“查询”、“计算利息”。编写主函数验证。

2. 编写一个java应用程序,该程序中有3个类:Trangle。Lader和Circle,分别用来刻画“三角形”、“梯形”、“圆形”。具体要求如下:

? Trangle类具有类型为double的三个边以及周长、面积属性,trangle类具有返回周

长、面积的功能。另外,Trangle类还具有一个boolean类型的属性,该属性用来判断三个数能否构成一个三角形。

? Lader类具有类型为double的上底、下底、高、面积属性。具有返回面积的功能。 ? Circle类具有类型为double的半径、周长和面积属性,具有返回周长、面积的功能。

实验三 继承与接口

实验目的

1. 子类的继承性,子类对象的创建过程,成员变量的继承与隐藏。方法的继承与重载。 2. 掌握上转型对象的使用 3. 掌握接口回调技术。

知识要点

1. 继承是一种由已有的类创建新类的机制。新类继承一般类的状态和行为。并根据需要增加它自己的新的状态和行为。

2. 多态:重写是某个类的不同子类可以根据各自的需要重写父类的某个方法。涉及到对象的上转型对象的知识。

3. 假设B是A的子类或间接子类,当用子类B创建一个对象,并把这个对象的引用放到A类声明的对象中,比如: A a; a=new B() 或 A a;

B b=new B(); a=b;

那么,就称对象a是子类对象b的上转型对象。

4. Java不支持多继承性,即一个类只能有一个父类。为了克服单继承的缺点,java使用了接口,一个类可以实现多个接口。

例题讲解

1)编写一个java应用程序,除了主类外,该程序还有4个类:

People,ChinaPeople,AmericanPeople和BeijingPeople类。要求如下:

? People类有访问权限是protect的double类型成员变量height和weight,以及public

void speakHello()、public void averageHeight()和public void averageWeight()方法。

? ChinaPeople类是People的子类,新增了public void chinaGongfu()方法。要求

ChinaPeople重写父类的public void speakHello()、public void averageHeight()和public void averageWeight()方法。

? AmericanPeople类是People的子类,新增了public void americanBoxing ()方法。要

求People重写父类的public void speakHello()、public void averageHeight()和public void averageWeight()方法。

? BeijingPeople类是ChinaPeople的子类,新增public void beijingOpera()方法。要求

BeijingPeople重写父类的public void speakHello()、public void averageHeight()和public void averageWeight()方法。

2) 要求有一个abstract类,类名为Employee。Employee的子类有yearWorker、MonthWorker和WeekWorker。yearWorker对象按年领取薪水,MonthWorker对象按年领取薪水,WeekWorker对象按年领取薪水。Abstract类有一个abstract方法:

public abstract earnings();子类必须重写父类的earnings()方法,给出各自领取报酬的具体方式。

实验题目

1) 定义一个父类Person,属性包含姓名、地址、城市、国家、邮编,方法包括构造方法、分别设置各个属性、分别返回各个属性、显示所有属性。Person子类有两个:学生类和教师类。

学生类自己的属性包括主修专业、学号、年级、成绩(成绩每名同学包括3门成绩),增加的方法包括设置和返回增加的属性,显示方法以及构造方法,

教师类自己的属性包括部门、收入,增加的方法包括设置和返回增加的属性,显示方法以及构造方法.

2)卡车要装载一批货物,货物由3种商品:电视、计算机和洗衣机。需要计算出大货车和小货车各自所装载的3种货物的总重量。

要求有一个ComputeWeight接口,该接口中有一个方法: pblic double computeWeight()

有3个实现该接口的类:Television、Computer和WashMachine。这3个类通过实现接口computeTotalSales给出自重。

有一个car类,该类用ComputeWeight接口类型的数组作为成员,那么该数组的单元就可以存放Television对象,Computer对象或WashMachine对象的引用。程序能输出Car对象所装载的货物的总重量。

实验四 字符串、时间与数字

实验目的

1. 掌握String类的常用方法。

2. 掌握Date类以及Calander类的常用方法。 3. 掌握BigInteger类的常用方法。

知识要点

1. Java使用java.lang包中的String类来创建一个字符串变量,因此字符串变量是一个对象。 2. Date类在java.util包中,使用Date类的无参构造方法创建的对象可以获取本地当前时间。

3. Calendar类在java.util包中,使用Calendar类的static方法getInstance()可以初始化一个日历对象。

4. Java.math包中的BigInteger类提供任意精度的整数运算。

例题讲解

1. 随机输入一个字符串str1,没有重复出现字符并输出。譬如 “teeter” 就输出“r” 。如果是“teeterhrk” 输出“k” 2. 输出2009年9月的日历页。

实验题目

1.输入一个字符串,内有数字和非数字字符,例如: A123x456kw789$34tyu678

将其中连续的数字作为一个整数,依次存放到一数组a中.例如,123放在a[0],456放在a[1]......统计共有多少个整数,并输出这些数.

2.编写一个java应用程序,用户从输入对话框输入两个日期,程序判断两个日期的大小关系,以及两个日期之间的间隔的天数。 3. 计算两个大整数的和、差、积、商。

实验五 组件及事件处理(一)

实验目的

1. 学习处理ActionEvent事件。

2. 学习处理ItemEvent事件和paint方法 3. 学习使用布局类

知识要点

1. 通过GUI,用户与程序之间可以方便地进行交互。Java包含了许多支持GUI设计的类。在学习处理事件时,必须很好地掌握事件源、监视器、处理事件的接口这三个概念。 2. Component类有一个方法:public void main(Graphics g),我们可以在其子类中重写这个方法。

3. 当把组件添加到容器中时,希望控制组件在容器中的位置,布局类有java.awt包中的FlowLayout、BorderLayout、CardLayout、GridLayout和java.swing.border包中的BoxLayout布局类。

例题讲解

1. 请设计一个如下图所示的GUI,不必做事件处理。

1. 猜数字小游戏,程序中有两个按钮buttonGetNumber和buttonEnter,单击buttonGetNumber按钮可以获得一个随机数,然后再一个文本框中输入猜测的数,再

单击按钮buttonEnter。

3.编写一个应用程序,有一个窗口,该窗口为BorderLayout布局。窗口的中心添加一个Panel容器:pCenter,pCenter的布局是7行7列的GriderLayout布局,pCenter中放置49个标签,用来显示日历。窗口的北面添加一个Panel容器pNorth,其布局是FlowLayout布局,pNorth放置两个按钮:nextMonth和previousMonth单击nextMonth按钮,可以显示当前月的下一月的日历;单击previousMonth按钮,可以显示当前月的上一月的日历。窗口的南面添加一个Panel容器pSouth,其布局是FlowLayout布局,pSouth中放置一个标签用来显示一些信息。

实验题目

1. 编写一个算术测试小软件,用来训练小学生的算术能力。程序由3个类组成,其中Teacher类对象负责给出算术题目,并判断回答者的答案是否正确;ComputerFrame类对象负责为算术题目提供视图,比如用户可以通过ComputerFrame类对象提供的GUI界面看到题目,并通过该GUI界面给出题目的答案;MailClass是软件的主类。 2. 编写一个带有窗口的应用程序。在窗口的北面添加一个下拉列表,该下拉列表有“红灯”、“绿灯”和“黄灯”三个选项。在窗口的 添加一个画布,当用户在下拉列表选择某项后,画布上绘制相应的信号灯。

实验六 组件及事件处理(二)及对话框类

实验目的

1. 通过使用恰当的组件,给出计算一元二次方程根的GUI程序 2. 学习使用对话框

3. 学习焦点事件、鼠标和键盘事件。

知识要点

1. MVC模式是通过3个不同部分设计程序的办法: 模型(model):用于存储定义数据的对象 视图(view):模型中数据的可视化表示

控制器(controller):对用户操作作出响应。

2. 对话框:与创建窗口类似,通过建立Dialog的子类来建立一个对话框,这个类的一个实例。就是一个对话框。

3. 任何组件上都可以发生鼠标事件,组件可以成为发生鼠标事件的事件源。当一个组件处于激活状态时,组件成为触发KeyEvent事件的事件源。组件可以触发焦点事件。

例题讲解

1. 鼠标事件:

当在画布上按下鼠标左键时,在鼠标指针位置处绘制一个圆; 当按下鼠标右键时,在鼠标指针位置处绘制一个矩形; 当鼠标指针退出画布是,清除绘制的全部图形。

1. 用户单击按钮时,弹出一个颜色对话框,然后根据用户选择的颜色来改变按钮的颜色。 2.

实验题目

1. 编写一个封装一元二次方程的类,然后再编写一个窗口。要求窗口使用三个文本框和一个文本区,为方程对象中数据提供视图,其中三个文本框用来显示和更新方程对象的系数;文本区对象用来显示方程的根。窗口中有一个按钮,用户单击该按钮后,程序用文本框中的数据修改方程的系数并将方程的根显示在文本区中。

2. 文件对话框:一个窗口带有“保存文件对话框”和“打开文件对话框”。窗口还有一个菜单,当选择菜单中的“打开文件”选项时,出现“打开文件对话框”;选择菜单中的“保存文件”选线时,出现“保存文件对话框”。

实验七 多线程

实验目的

1. 掌握使用Thread的子类创建线程 2. 学习使用Thread类创建线程 3. 学习处理线程同步问题

知识要点

1. 可以使用Tread类或Tread类的子类创建对象。线程是比进程更小的执行单位。 2. 线程同步是指几个线程都需要调用同一个同步方法。

例题讲解

1. 有两个线程:student和teacher,其中student准备睡一个小时后再开始上课,teacher在输入3句“上课”后,吵醒休眠线程student。

2. 编写一个应用程序,有两个线程,一个负责模仿自由落体运动,一个模仿水平抛出运动。

实验题目

1.编写一个java应用程序,在主线程中再创建一个Frame类型的窗口,在该窗口中再创建一个线程giveWord每隔2秒给出一个汉字,用户使用一种汉字输入法将该汉字输入到文本框中。

2.编写一个应用程序,除了主线程外,还有两个线程:first和Second.first负责模拟一个红色的按钮从坐标(10,60)运动到(100,60);second负责模拟一个绿色的按钮从坐标(100,60)运动到(200,60).

提高性实验

实验八 输入输出流

实验目的

1. 掌握字符输入、输出流的用法。 2. 掌握RandomAccessFile类的使用 3. 掌握ZipInputStream流的使用。

知识要点

1. Java的I/O流库提供大量的流类,其中,所有输入流类都是抽象类InputStream或抽象类Reader类的子类。

2. RandomAccessFile类创建的流的指向既可以作为源,也可以作为目的地。称为随机读写流。

例题讲解

1. 读取从键盘输入的一行文本并将其存储到文本line.txt中。10.5

2. 使用BufferReader和BufferWriter,把字符串存入文件,然后再按行读出。10.7

实验题目

1.读取上题Text.java文件。并将其内容显示出来。

? 用available方法判断剩余的字节数。 ? 用read()方法读取前60个字节。 ? 用skip()方法跳过30个字节。 ? 用read()方法读取下面的字节。

2 使用RandomAccessFile流实现一个通讯录的录入与显示。(10.12)

提高性实验

实验九 java中的网络编程

实验目的

1. 学会使用URL对象

2. 学会使用套接字读取服务器端对象 3. 掌握DatagramSocket类的使用

知识要点

1. Java.net包中的URL类是对统一资源定位符的抽象。使用URL创建对象的应用程序乘坐客户端程序。

2. 网络套接字是基于TCP协议的有连接通信,套接字连接就是客户端的套接字和服务器端的套接字对象通过输入、输出流连接在一起。

3. 基于UDP的通信与基于TCP的通信不同,基于UDP的信息传递更快,但不提供可靠性保证。

例题讲解

1. 用JEditor对象显示网页(11.3) 2. 例题11.7

实验题目

1. 创建一个URL对象,然后让URL对象返回输入流,通过该输入流读取URL所包含的资源文件

2. 客户端将服务器端的文本区对象读取到客户端,并添加到窗口中。首先将服务器端的程序编译通过,并运行,等待客户的呼叫。

3. 编写客户/服务器程序,客户端使用DatagramSocket对象将数据包发送到服务器,请求获取服务器端的图像。服务器端将图像文件包装成数据包,并使用DatagramSocket对象将该数据包发送到客户端。首先将服务器端的程序编译通过,并运行起来,等待客户的请求。

实验十 数据结构

实验目的

1. 掌握LinkedList类的常用方法

2. 掌握sort(List list);int binarySearch(List list, Object key)方法的使用。 3. 掌握TreeSet类的使用

知识要点

1. 链表:LinkedList类可以创建链表结构的数据对象。链表是由若干个节点组成的一种数据结构。

2. 排序和查找。

3. TreeSet类是Set接口类,它的大部分方法都是接口方法的实现。TreeSet类创建的对象称作树集。

例题讲解

1. 用链表来管理商品的库存情况。链表结点中存放商品对象,该对象具有代号、名称、库存量和单价等属性(13.3)

2. 使用散列表实现学生成绩单的输入和查询,该例子共用5个java文件,其中MainClass.java是主类。(13.11)

实验题目

1. 使用堆栈结构输出an的若干项,其中an=2an?1+3an?2,a1=3,a2=8.

2. 编写一个应用程序,用户分别在两个文本框输入学生的姓名和分数,程序按成绩排序,将这些学生的姓名和分数显示在一个文本区中。

实验十一 java数据库连接

实验目的

1. 掌握java连接数据库的方法。 2. 掌握基本查询语句。

知识要点

JDBC(java Data Base Connection)是java数据库连接API。简单地说,JDBC能完成3件事: 1) 与一个数据库建立连接 2) 向数据库发送SQL语句 3) 处理数据返回的结果。

例题讲解

1. 查询数据库student.mdb中chengjibiao表里的全部记录,每条记录包含全部的字段值。 2. 查询所有名字中含有“小”的记录(15.6)

实验题目

1. 上机运行15.7 2. 上级运行15.10

实验十二 提高性实验

实验目的

考察学生对java语言知识的综合运用能力。

知识要点

课本的所有章节、知识要点均有涉及到。

例题讲解

实验题目

1. 编写一个计算器,能实现加、减、乘、除等等功能。

2. 参考Windows平台的NotePad,编写一个简单的“记事本”程序。

3. 参照例子9.19,编写一个java应用程序,在主线程中再创建3个线程:“运货司机”、“装运工”和“仓库管理员”。要求线程“运货司机”占有CPU资源后立即联合线程“装运工”,也就是让“运货司机”一直等到“装运工”完成工作才能开车,而“装

运工”占有CPU资源后立刻联合线程“仓库管理员”,也就是让“装运工”一直等到“仓库管理员”打开仓库才能开始搬运货物。

4. 参考例子10.8 编写一个标准化考试小软件,要求每做完一个题目都把该题目的正确答案显示给用户

5. 参考例子10.12编写一个货物管理小软件 6. 参照例子11.6 编写一个简单的聊天室程序。 7. 编写一个简单的图书查询程序

8. 编写一个具有英汉、汉英查询功能的电子词典。 9. 扫雷小游戏。

10. 学生可自选程序,难度不低于以上题目。

提高性实验要求:

? 学生任选一道,自行完成,需提交提高性实验报告一份!

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

Top