Java语言程序设计实验项目

学习Java语言程序设计课程必须重视实践环节。即独立编写程序,独立上机调试程序。

上机的目的,绝不仅是为了验证教材和上课的内容或者验证自己所编的程序正确与否。学习程序设计,上机实验的目的应该说是:

(1)加深对讲授内容的理解,尤其是一些语法规定,通过多次上机,就能自然地、熟练地掌握。

(2)熟悉所用的计算机系统的操作方法,了解和熟悉Java语言程序开发的环境。

(3)学会上机调试程序,培养对程序的纠错能力。善于发现程序中的错误,并能很快的排除这些错误。

上机实验一般包括以下几个步骤:

(1)准备好上机所需的程序。手编程序应书写整齐,并经人工检查无误后才能上机,以提高上机效率。对程序中存在的问题,应做出记号,切记不能事先不编程序或临时抄别人程序去上机。

(2)上机输入和调试自己的程序。应该一人一机,独立上机。上机过程中出现的问题,除了系统问题以外,应该自己调试,独立处理。

(3)上机结束后,应整理出实验报告,实验报告应包括以下内容:

a、题目。

b、程序清单(计算机打印出的程序清单)。

c、运行结果(必须是上面程序清单所对应打印输出的结果)。

d、对运行情况所做的分析以及本次调试程序所取得的经验。如果程序未能通过,应分析其原因。

一、实验题目

设计一两个同样的“生日”类。在每个类里都有年、月、日三个成员变量。在一个类里设计一个成员方法,用这个成员方法为三个成员变量赋初值,用隐含的构造方法实例化一个对象。在另一个类里设计一个有参构造方法,用这个构造方法为三个成员变量赋初值。用有参的构造方法实例化一个对象。在两个类里都设计一个输出成员方法,用以输出年、月、日的值。

二、实验目的

根据所学Java“面向对象程序设计”章节中关于类、对象、成员变量、成员方法、构造方法的定义与使用规则,进行相应程序设计训练,进一步加强对Java编程基本思想的理解,根据所编的例子进行比较,区别有关知识异同点,巩固已学的基本知识。

三、实验内容

根据类、对象、成员变量、成员方法和构造方法的概念编程:

一个对象b并用隐含构造方法进行初始化;调用setD()方法,进行成员变量赋初

值。输入年、月、日具体数据,调用print()方法,输出这组数据。

2、对上述题目进行改写:撤销setD()方法;描述一个有参的构造方法Bir(),调用

Bir()方法,在构造方法中对成员变量赋初值,其他要求不变。

3、程序运行后要对两个程序的功能进行比较,要体会构造方法在Java程序中的作用。

四、实验步骤

1、编制含有setD()方法的程序。编程、调试、编译、运行程序得出正确结果。

2、在原程序中撤销setD()方法,建立构造方法Bir(),并对程序进行相应改造。编辑、调试、编译、运行程序,得出与上例相同的结果。

五、实验要求

2、所编程序必须具备实现“实验题目”中要求的各程序功能要素。

3、所编程序必须语句正确、速写规范、逻辑清晰。

六、实验结果

1、classBir

{intyear,month,day;

voidsetD(inty,intn,intd)//成员方法

{year=y;

month=n;

day=d;

}

voidprint()

{System.out.println(”年”+year+”月”+month+”日”+day);

publicstaticvoidmain(Stringargs[])

{Birb=newBir();

b.setD(2002,4,8);

b.print();

2、classBir

Bir(inty,intn,intd)//构造方法

{Birb=newBir(2002,4,8);

七、实验心得:(根据本次实验体会写出心得,不得少于200字)

设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声。要求如下:

Animal抽象类有2个抽象方法cry()和getAnimaName(),即要求各种具体的动物给出自己的叫声和种类名称。

该类有一个playSound(Animalanimal)方法,该方法的参数是Animal类型。即参数animal可以调用Animal的子类重写的cry()方法播放具体动物的声音、调用子类重写的getAnimalName()方法显示动物种类的名称。

如图是Simulator、Animal、Dog、Cat的UML图。

根据所学Java“面向对象程序设计”章节中关于子类与继承、多态、重写、抽象类进行相应程序设计训练,进一步加强对Java编程基本思想的理解,根据所编的例子进一步加深对面向对象的“对象的上转型对象与重写实现多态”、“抽象类实现开闭原则”使用规则的理解,巩固已学的基本知识。

1、根据抽象类的定义,定义一个抽象类,由子类Dog、Cat实现该抽象类Animal。

2、定义Simulator,使用抽象类Animal对象上转型对象,实现多态。

1、按题目的要求编写编写抽象类AnimalAnimal抽象类有2个抽象方法cry()和getAnimaName()。

2、编写模拟器类Simulator、Animal类的子类:Dog,Cat类

3、最后编写主类进行调试、编译、运行程序。

Animal.java

publicabstractclassAnimal{

publicabstractvoidcry();

publicabstractStringgetAnimalName();

Simulator.java

publicclassSimulator{

publicvoidplaySound(Animalanimal){

System.out.print("现在播放"+animal.getAnimalName()+"类的声音:");

animal.cry();

Dog.java

publicclassDogextendsAnimal{

publicvoidcry(){

System.out.println("汪汪...汪汪");

publicStringgetAnimalName(){

return"狗";

Cat.java

publicclassCatextendsAnimal{

System.out.println("喵喵...喵喵");

return"猫";

Application.java

publicclassExample5_13{

publicstaticvoidmain(Stringargs[]){

Simulatorsimulator=newSimulator();

simulator.playSound(newDog());

simulator.playSound(newCat());

设计一个超圆的接口,再设计一个圆的超类,该超类实现了超圆接口的方法,可以计算圆的面积。分别设计一个子类(继承该超类):可以计算圆球的表面积;最后设计执行主方法的类,在这个类中分别圆的面积、圆球的表面积,并分别输出;另外还要输出本题一共计算了几个几何面积的计数。

根据所学Java“面向对象程序设计”章节中关于多态、覆盖、重载、接口的定义与规则进行相应程序设计训练,进一步加强对Java编程基本思想的理解,根据所编的例子进一步加深对面向对象的“子类变量隐藏超类变量”、“子类方法重写超类方法”、“方法的重载”“接口的定义”、“接口的实现”使用规则的理解,巩固已学的基本知识。

1、根据接口的定义,定义一个接口,由一个超类实现该接口。

2、根据子类与超类的继承关系,子类变量、方法覆盖超类变量、方法的定义编制程序,

实现java覆盖技术。

3、使用super强制调用超类构造方法,强制调用已被子类重写的超类成员方法,理解

java多态技术思想,实现多态性编程。

子类Acircle、Sphere继承超类Circle,超类实现接口Ccir

1、定义接口Ccir,接口中有成员变量PI=3.14,计算面积的抽象方法fun()和输出方

法show()。

2、定义超类Circle,构建Circle的无参、有参构造方法;无参构造方法为子类有参

构造方法调用;有参构造方法为超类对象赋初值。

3、超类实现接口方法fun()和show()。

4、定义子类Acircle、Sphere,由于子类不能继承超类的有参构造方法,故构建子类

有参构造方法,在该方法中使用super()方法强制调用超类构造方法。

5、在子类中定义并重写超类的fun()方法,使用super()方法强制调用fun()方法,

并进行相应计算,实现多态;

6、在超类中定义静态成员变量sum,用以累计计算次数。

7、定义运行类Ex,用以定义相应对象,分别调用本类的fun()方法,在调用所继承的

show()方法输出;在输出计算次数时使用<类名>.<类变量>格式:Circle.sum。

publicinterfaceCcir

{floatPI=3.14f;

floatfun();

floatshow(Strings,floatf);

publicclassCircleimplementsCcir

{staticintsum=0;

floatr;

Stringst="圆面积";

Circle(){}

Circle(floatr1)

{r=r1;}

publicfloatfun()

{sum+=1;

returnPI*r*r;

publicvoidshow(Strings,floatf)

classAcircleextendsCircle

{Stringst="圆球表面积";

Acircle(floatr1)

{super(r1);}

{floatf;

f=4*super.fun();

returnf;

classEx

{publicstaticvoidmain(Stringargs[])

Circlec=newCircle(4.3f);

f=c.fun();

c.show(c.st,f);

Acirclea=newAcircle(5.4f);

f=a.fun();

a.show(a.st,f);

System.out.println("运算计数:"+Circle.sum);

设置一个自定义“年限超出”异常类,该异常类中定义一个有参构造方法,定义一个输出自定义异常信息的方法。设定一个计算年龄的区间,用户输入的年份超出该区间的则人工抛出异常,并输出“年限超出”异常信息。如果在此区间则输出正确年龄。

根据所学Java“面向对象程序设计”章节中关于异常的定义与规则进行相应程序设计训练,进一步加强对Java编程基本思想的理解,根据所编的例子进一步加深对java的“异常类”和“错误类”的区分;对java如何“抛出、捕捉、匹配、处理”异常的过程进一步加深理解;学会使用异常处理的“try—catch—finaliy”格式;掌握“方法抛出异常”的使用;学会使用“自定义异常”处理的方法。

1、确定自定义异常的名称,建立相应的异常类的子类。

2、进行“方法抛出异常”的方法名、方法体的程序描述。

3、根据异常处理的“try—catch—finally”格式,对自定义异常的处理过程进行程序描述。

1、设立Ovyear为自定义异常的名称(年份异常),描述自定义异常类的类体,建立子

类构造方法,输出异常信息方法printMsg()。

2、使用关键字throws创建抛出异常方法的方法名、方法体。

3、设立本类age()方法,使用try—catch—finaliy格式、关键字throw编制对自

定义异常处理过程的程序描述。

4、当年份正常时输出年龄,当年份不正常时输出异常信息。

classOvyearextendsException

{Ovyear(Strings)

{super(s);}

voidprintMsg()

{System.out.println("异常信息:"+this.getMessage());

publicclassYear1

{publicvoidabnor(inty)throwsOvyear

{if(y<=1856||y>2009)

thrownewOvyear("异常年份");

elseSystem.out.println("年龄="+(2009-y));

voidage(inty)

{try{abnor(y);}

catch(Ovyeare)

{e.printMsg();}

{Year2ye2=newYear2();

ye2.age(2010);

文件加密解密。给定一个密钥,读取文件内容,加密后,输出到另一个文件。

根据所学Java“面向对象程序设计”章节中关于“输入输出流”的定义与规则进行

相应程序设计训练,进一步加强对Java编程基本思想的理解,根据所编的例子进一步加深对java的“字节流”、“字符流”、“文件”的理解;学会使用文件输入流读取文件,然后使用输出流向文件进行写入。

1、使用文件输入流读取文件。

2、每个字节和密码进行异或加密。

3、加密后,使用文件输出流写入另外一个文件中。

4、可以用记事本打开加密后的文件进行查看。

1、在程序的头部导入java.io.*包。

2、根据实验内容进行编程。

3、调试程序是否符合要求

2、所编程序必须具备实现“实验题目”中要求的各程序功能要素

3、所编程序必须语句正确、速写规范、逻辑清晰

packagecode0804;

importjava.io.FileInputStream;

importjava.io.FileOutputStream;

importjava.io.IOException;

publicclassEncryptFile{

publicstaticvoidmain(String[]args)throwsIOException{

bytepwd=123;

FileInputStreamf=newFileInputStream("src/code0804/BufferedStreamCopy.java");

FileOutputStreamfout=newFileOutputStream("encrypted.txt");

System.out.println("开始加密...");

intn=f.available()/5;

bytebuf[]=newbyte[n];

intcount=0;

while((count=f.read(buf,0,n))!=-1){

for(inti=0;i

buf[i]=(byte)(buf[i]^pwd);//密码与值进行异或运算

fout.write(buf,0,count);

System.out.println("完成加密");

f.close();

fout.close();

f=newFileInputStream("encrypted.txt");

fout=newFileOutputStream("unencrypted.txt");

System.out.println("开始解密...");

n=f.available()/5;

buf=newbyte[n];

count=0;

System.out.println("完成解密");

七、实验心得(根据本次实验体会写出心得,不得少于`100字)

一、实验题目:

有一批3个学生的信息,需要输入到MySQL数据库中已经存在的TestDB数据表中,进行新数据的输入。新输入的学生信息内容为:

编号:0001,姓名:王明,成绩:80

编号:0002,姓名:高强,成绩:94

编号:0003,姓名:李莉,成绩:82

要求:1、建立Java与数据库MySQL的连接。

2、建立Java与数据表TestDB的通信联系。

3、进行SQL命令的操作

本实验的目的掌握String类的常用方法。

1、建立Java与数据库的连接方式。

2、选择与MySql相适应的JDBC驱动程序。

3、加载和注册驱动程序。

4、选择正确的SQL执行命令的形式。

1、在程序的首部用import语句将java.sql包引入。

2、使用Class.forName()方法加载相应数据库的JDBC数据库桥驱动程序。相应的语

句格式为:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

3、定义JDBC现有数据表的URL对象。即:StringconURL="jdbc:odbc:TestDB";

4、通过DriverManager类的getConnection(conURL)方法,产生连接数据库的

Connection类对象。Connections=DriverManager.getConnection(conURL);。

5、使用SQL命令insertinsertintostudentvalues(<记录内容>)向数据表插入三

条学生记录。

六、实验结果:

importjava.sql.*;

publicclassIn_Test

{publicstaticvoidmain(String[]args)

{StringJDriver="sun.jdbc.odbc.JdbcOdbcDriver";

StringconURL="jdbc:odbc:TestDB";

try{Class.forName(JDriver);}

catch(java.lang.ClassNotFoundExceptione)

{System.out.println("ForName:"+e.getMessage());}

try{Connectioncon=DriverManager.getConnection(conURL);

THE END
1.运用Java创建一个dog的类,包括颜色,重量,年龄属性和叫,跑,吃的方法在这个例子中,Dog类有三个属性:color(颜色)、weight(重量)和age(年龄),以及三个方法:bark(叫)、run(跑)和eat(吃)。 在main函数中,创建了一个名为myDog的Dog对象,并为其属性赋值。然后,调用了myDog的bark、run和eat方法,输出了小狗叫、跑和吃的信息。 https://blog.csdn.net/Phantomstranger/article/details/130127486
2.写一个狗类javajava定义一个dog类flybirdfly的技术博客写一个狗类java java定义一个dog类 类:Java类是一个模板,是一类具体事物的描述。小猫、小狗就是动物,那么动物就可以是一个类;狗也是可以是一个类,因为萨摩耶、哈士奇、阿拉斯加都是狗。Java类描述的是一类对象的行为和状态。 对象:Java对象是类的具体实现。如果说小狗是一个类的话,那么一只哈士奇就是这一个类的...https://blog.51cto.com/u_13250/9083156
3.《Java基础入门》课后习题1、Java中的程序代码都必须在一个类中定义,类使用__class___关键字来定义。 2、布尔常量即布尔类型的两个值,分别是_true___和_flase___。 3、Java中的注释可分为三种类型,分别是_单行注释//__、__多行注释_/* */__、文档/注释** */___。 4、Java中的变量可分为两种数据类型,分别是_基本数据...https://m.360docs.net/doc/info-dd95a78ae418964bcf84b9d528ea81c759f52e6e.html
4.OCAJavaSE8程序员认证考试指南(Exam1Z0808)OCP 和 OCM 三个级别。同时, Oracle 认证考试有不同的科目,如 Oracle DBA 认证、 Oracle 网络应用开发人员认证等。而本书是关于 Oracle OCA Java SE 8 程序员认证考试的一本考试 指南。 本书严格遵循了 OCA Java SE 8 程序员认证考试的考试大纲,侧重介绍变量、类和接口的 ...https://blog.itpub.net/26421423/viewspace-2216612/
5.javaclass类型转换我们首先创建了一个Dog类的例子,并将其赋值为Animal类的引用变量。在向下转换之前,我们使用它instanceof操作符进行类型检查,以确保animal引用变量的实际类型是Dog类。只有在类型检查通过后,我们才能进行向下转换操作。在成功的向下转换后,我们可以在Dog类中调用fetch()方法。https://www.tulingxueyuan.cn/tlzx/jsp/4226.html
6.6种Java创建对象的方式总结java在Java中,创建对象可以使用多种方式,本文将详细介绍以下六种创建对象的方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下+ 目录 1. 使用new关键字 new关键字是Java中最常用的创建对象的方式。通过调用类的构造函数,new关键字实例化一个对象。 示例如下: 1 2 3 4 5 6 7 8 9 10 11 ...https://www.jb51.net/article/282598.htm