Java语言程序设计上机实验指导手册new.docx
《Java语言程序设计上机实验指导手册new.docx》由会员分享,可在线阅读,更多相关《Java语言程序设计上机实验指导手册new.docx(14页珍藏版)》请在冰豆网上搜索。
Java语言程序设计上机实验指导手册new
《Java程序设计》
上机实验指导书
实验一类与对象
【实验目的】
①使用类来封装对象的属性和功能;
②掌握类变量与实例变量,以及类方法与实例方法的区别;
③理解接口、塑型、多态的概念并能熟练应用。
④巩固以下概念:
子类的继承性
子类对象的创建过程
成员变量的继承与隐藏
方法的继承与重写
【实验任务】
1、创建Java类与对象,并创建方法
(1).编写一个Java程序片断,以定义一个表示学生的类Student。
这个类的属性有“学号”、“班号”、“姓名”、“性别”、“年龄”,方法有“获得学号”、“获得班号”、“获得性别”、“获得姓名”、“获得年龄”、“获得年龄”。
(2).为类Student增加一个方法publicStringtoString(),该方法把Student类的对象的所有属性信息组合成一个字符串以便输出显示。
编写一个JavaApplication程序,创建Student类的对象,并验证新增加的功能。
classStudent{
privatelongstudentID;
privateintclassID;
privateStringname;
privateStringsex;
privateintage;
publicStudent(longstudentID,intclassID,Stringname,Stringsex,intage){
this.studentID=studentID;
this.classID=classID;
this.name=name;
this.sex=sex;
this.age=age;
}
publiclonggetStudentID(){
returnstudentID;
}
publicintgetClassID(){
returnclassID;
}
publicStringgetName(){
returnname;
}
publicStringgetSex(){
returnsex;
}
publicintgetAge(){
returnage;
}
publicStringtoString(){
return"学号:
"+getStudentID()+"\n班号:
"+getClassID()+"\n姓名:
"+getName()+"\n性别:
"+getSex()+"\n年龄:
"+getAge();
}
}
publicclassStudentDemo{
publicstaticvoidmain(String[]args){
Students1=newStudent(90221,2,"Tom","male",20);
System.out.println(s1.toString());
}
}
运行结果:
学号:
90221
班号:
2
姓名:
Tom
性别:
male
年龄:
20
2、三角形、梯形和圆形的类封装
✧实验要求:
编写一个Java应用程序,该程序中有3个类:
Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。
具体要求如下:
a)Trangle类具有类型为double的三个边,以及周长、面积属性,Trangle类具有返回周长、面积以及修改三个边的功能。
另外,Trangle类还具有一个boolean型的属性,该属性用来判断三个属能否构成一个三角形。
b)Lader类具有类型double的上底、下底、高、面积属性,具有返回面积的功能。
c)Circle类具有类型为double的半径、周长和面积属性,具有返回周长、面积的功能。
✧程序运行效果示例:
程序运行效果如下图所示:
✧程序模板:
AreaAndLength.java
classTrangle
{
doublesideA,sideB,sideC,area,length;
booleanboo;
publicTrangle(doublea,doubleb,doublec)
{
【代码1】//参数a,b,c分别赋值给sideA,sideB,sideC
if(【代码2】)//a,b,c构成三角形的条件表达式
{
【代码3】//给boo赋值。
}
else
{
【代码4】//给boo赋值。
}
}
doublegetLength()
{
【代码5】//方法体,要求计算出length的值并返回
}
publicdoublegetArea()
{
if(boo)
{
doublep=(sideA+sideB+sideC)/2.0;
area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));
returnarea;
}
else
{
System.out.println("不是一个三角形,不能计算面积");
return0;
}
}
publicvoidsetABC(doublea,doubleb,doublec)
{
【代码6】//参数a,b,c分别赋值给sideA,sideB,sideC
if(【代码7】)//a,b,c构成三角形的条件表达式
{
【代码8】//给boo赋值。
}
else
{
【代码9】//给boo赋值。
}
}
}
classLader
{
doubleabove,bottom,height,area;
Lader(doublea,doubleb,doubleh)
{
【代码10】//方法体,将参数a,b,c分别赋值给above,bottom,height
}
doublegetArea()
{
【代码11】//方法体,,要求计算出area返回
}
}
classCircle
{
doubleradius,area;
Circle(doubler)
{
【代码12】//方法体
}
doublegetArea()
{
【代码13】//方法体,要求计算出area返回
}
doublegetLength()
{
【代码14】//getArea方法体的代码,要求计算出length返回
}
voidsetRadius(doublenewRadius)
{
radius=newRadius;
}
doublegetRadius()
{
returnradius;
}
}
publicclassAreaAndLength
{
publicstaticvoidmain(Stringargs[])
{
doublelength,area;
Circlecircle=null;
Trangletrangle;
Laderlader;
【代码15】//创建对象circle
【代码16】//创建对象trangle。
【代码17】//创建对象lader
【代码18】//circle调用方法返回周长并赋值给length
System.out.println("圆的周长:
"+length);
【代码19】//circle调用方法返回面积并赋值给area
System.out.println("圆的面积:
"+area);
【代码20】//trangle调用方法返回周长并赋值给length
System.out.println("三角形的周长:
"+length);
【代码21】//trangle调用方法返回面积并赋值给area
System.out.println("三角形的面积:
"+area);
【代码22】//lader调用方法返回面积并赋值给area
System.out.println("梯形的面积:
"+area);
【代码23】//trangle调用方法设置三个边,要求将三个边修改为12,34,1。
【代码24】//trangle调用方法返回面积并赋值给area
System.out.println("三角形的面积:
"+area);
【代码25】//trangle调用方法返回周长并赋值给length
System.out.println("三角形的周长:
"+length);
}
}
✧实验后的练习:
1.程序中仅仅省略【代码15】,编译能通过吗?
2.程序中仅仅省略【代码16】,编译能通过吗?
3.程序中仅仅省略【代码15】,运行时出现怎样的异常提示?
3、实例成员与类成员。
✧实验要求:
按程序模板的要求编写源文件,要特别注意程序的输出结果,并能正确解释输出的结果。
✧程序运行效果示例:
程序运行效果如下图所示:
✧程序模板:
Example.java
classA
{
【代码1】//声明一个float型实例变量a
【代码2】//声明一个float型类变量b,即static变量b
voidsetA(floata)
{
【代码3】//将参数a的值赋值给成员变量a
}
voidsetB(floatb)
{
【代码4】//将参数b的值赋值给成员变量b
}
floatgetA()
{
returna;
}
floatgetB()
{
returnb;
}
voidinputA()
{
System.out.println(a);
}
staticvoidinputB()
{
System.out.println(b);
}
}
publicclassExample
{
publicstaticvoidmain(Stringargs[])
{
【代码5】//通过类名操作类变量b,并赋值100
【代码6】//通过类名调用方法inputB()
Acat=newA();
Adog=newA();
【代码7】//cat象调用方法setA(inta)将cat的成员a的值设置为200
【代码8】//cat调用方法setB(intb)将cat的成员b的值设置为400
【代码9】//dog象调用方法setA(inta)将dog的成员a的值设置为150
【代码10】//dog调用方法setB(intb)将dog的成员b的值设置为300
【代码11】//cat调用inputA()。
【代码12】//cat调用inputB()。
【代码13】//dog调用inputA()。
【代码14】//dog调用inputB()。
}
}
✧实验后的练习:
1.将inputA()方法中的
System.out.println(a);
改写为
System.out.println(a+b);
编译是否出错?
为什么?
2.将inputB()方法中的
System.out.println(b);
改写为
System.out.println(a+b);
编译是否报错?
为什么?
将本次上机实验结果按照实验要求内容依次进行,填写实验目标、过程、结果。
【注意事项】
①实验报告要求每人提交一份,使用专门的报告纸,内容写全,包括实验名称、班级、姓名、同组人,试验日期、交报告日期等。
②报告不需要填写源代码,只要将完成情况和所有练习题结果写上就可以。
实验二多线程
实验项目名称:
多线程同组人
实验时间:
实验室指导教师:
一、实验目的
1.掌握Java概念;
2.熟悉继承Thread类的多线程编程;
3.熟悉继承Runnable接口的多线程编程;
4.了解多线程编程中方法的覆盖。
二、实验任务
1.输入下面的JavaApplication程序,运行该程序,并简要分析程序的运行结果。
1:
classSimpleThreadextendsThread{
2:
publicSimpleThread(Stringstr){
3:
super(str);//调用其父类的构造方法
4:
}
5:
publicvoidrun(){//重写run方法
6:
for(inti=0;i<10;i++){
7:
System.out.println(i+""+getName());
8:
//打印次数和线程的名字
9:
try{
10:
sleep((int)(Math.random()*1000));
11:
//线程睡眠,把控制权交出去
12:
}
13:
catch(InterruptedExceptione){}
14:
}
15:
System.out.println("DONE!
"+getName());
16:
//线程执行结束
17:
}
18:
}
1:
publicclassTwoThreadsTest{
2:
publicstaticvoidmain(Stringargs[]){
3:
newSimpleThread("First").start();
4:
//第一个线程的名字为First
5:
newSimpleThread("Second").start();
6:
//第二个线程的名字为Second
7:
}
8:
}
2.编写程序,将上面多线程程序用Runnable接口来实现。
3.分别用继承Thread类和Runnable接口的方法实现多线程程序。
有三个银行员工,工作一段时间后,都会选择一个随机的时间休息(如休息0-6秒),在程序当中显示员工休息时间
4.黄石火车站下面有三个火车票代售点,假如说黄石到北京的火车票总共是200张,如何用程序来实现三个售票点同时卖票的功能。
实验三JDBC与数据库访问
实验项目名称:
JDBC与数据库访问同组人
实验时间:
2013.6.7-2013.6.21实验室k4-207指导教师:
实验目的:
1、理解JDBC的组成和结构
2、掌握Java程序与数据库的链接技术
3、掌握在Java程序中使用java.sql包中提供的DriverManager类、Connection、Statement、ResultSet类来存取数据库中数据的方法
实验任务:
首先建立一个数据库,在此基础上通过编程实现以下功能:
(1)在数据库中建立一个表,表名为职工,其结构为:
编号、姓名、性别、年龄、工资、是否党员。
(2)在表中输入多条记录(自己设计具体数据)
(3)将年龄在45以上员工的工资增加15%,其他人增加10%。
(4)将每条记录按照工资由大到小的顺序显示在屏幕上。
(5)删除工资超过1500的员工记录。
要求:
(1)使用的数据库系统不受限制,可以是小型数据库系统如MSAccess,VFP,MySql或者大型数据库,如SQLserver等。
(2)使用JDBC不受限制,可以使用J2SE中提供的JDBCC-ODBC桥,也可以使用其他数据库专用的JDBC。
(3)在每项操作前后,分别显示相应信息,以验证操作是否正确完成。