JAVA实习报告2and3.docx
《JAVA实习报告2and3.docx》由会员分享,可在线阅读,更多相关《JAVA实习报告2and3.docx(45页珍藏版)》请在冰豆网上搜索。
JAVA实习报告2and3
信息工程学院
Java程序设计实习报告
学院:
信息工程学院
班级:
姓名:
学号:
成绩:
1.实验目的
掌握Java程序面向对象编程的基本架构,会运用面向对象的思想编写Java程序。
2.实验过程
熟悉JAVA的编程环境
实验题1阅读如下程序,完成思考题。
classCCircle
{doublepi;
doubleradius;
doublegetRadius()//返回圆半径
{returnradius;
}
voidsetCircle(doubler,doublep)//设置圆半径
{pi=p;
radius=r;
}
}
publicclassEx2_1
{publicstaticvoidmain(Stringargs[])
{CCirclecir1=newCCircle();//创建一个新圆类
cir1.setCircle(2.0,3.1416);//设置圆半径
System.out.println("radius="+cir1.getRadius());//输出圆半径
}
}
程序运行结果如下:
实验题2设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名、当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的速率和停车两个操作。
程序源代码如下:
publicclasscar{
Stringname;
doublespeed;
doubleangle;
voidcar()
{
this.name="user";
this.speed=0;
this.angle=0;
}
publicStringgetname()
{
returnname;
}
publicvoidsetuser(Stringname)
{
this.name=name;
}
publicvoidsetSeppd(doublespeed)
{
this.speed=speed;
}
publicdoublegetspeed()
{
returnspeed;
}
publicvoidsetangle(doubleangle)
{
this.speed=angle;
}
publicdoublegetangle()
{
returnangle;
}
publicvoidstopcar()
{
this.setangle(0);
this.setSeppd(0);
}
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
carA=newcar();
A.setuser("zhangyong");
A.setSeppd(150);
A.setangle(35);
System.out.println("beforestopcar:
");
System.out.println("thiscarsbelongto:
"+A.getname());
System.out.println("nowthespeedis:
"+A.getspeed());
System.out.println("nowthecarangleis"+A.getangle());
A.stopcar();
System.out.println("stopcar");
System.out.println("thiscarsbelongto:
"+A.getname());
System.out.println("nowthespeedis:
"+A.getspeed());
System.out.println("nowthecarangleis"+A.getangle());
}
}
运行结果:
实验题3定义一个类MyProgram,包含两个属性:
一个是private的整型属性data、一个是private的String类型的属性str,封装这两个属性的四个方法setData()和getData()、setStr()和getStr();将这两个属性转变为字符串的方法是toStr()。
编写程序,使用MyProgram类,实现数据的访问和修改,并调用toStr()方法显示该类的属性。
程序源代码如下:
publicclassMyprogrem{
privateintdata;
privateStringStr;
publicvoidSetData(intdata)
{
this.data=data;
}
publicvoidSetStr(StringStr)
{
this.Str=Str;
}
publicintgetdata()
{
returnthis.data;
}
publicStringgetStr()
{
returnthis.Str;
}
publicStringtoString(intd)
{
returnString.valueOf(d);
}
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
MyprogremM=newMyprogrem();
System.out.println("beforechangethevalues:
");
M.SetData(15);
M.SetStr("zhangyong");
System.out.println(M.data);
System.out.println(M.Str);
System.out.println("changethevalues:
");
M.SetData(20);
M.SetStr("asdf");
System.out.println(M.data);
System.out.println(M.Str);
}
}
实验题4定义一个类实现银行帐户的概念,包括的变量有"帐号"和"存款余额",包括的方法有"存款"、"取款"、"查询余额"和”显示帐号”。
定义主类,创建帐户类的对象,并完成相应操作。
提示:
关键代码如下:
publicintgetleftmoney(){
returnleftmoney;
}
publicvoidsavemoney(doublemoney){
leftmoney+=money;
}
publicvoidgetmoney(doublemoney){
if(money<=leftmoney)
leftmoney-=money;
else
System.out.println("只能取:
"+leftmoney);
}
…
bankaccountba=newbankaccount(888123,1000);
ba.savemoney(21000);
System.out.println("存入21000元后余额为:
"+ba.getleftmoney());
ba.getmoney(11500);
System.out.println("11500元后余额为:
"+ba.getleftmoney());
源代码如下:
publicclassbankaccount{
Stringbanknumber;
doubleaccountbalance;
voidbankaccoutn(Stringb)
{
banknumber=b;
accountbalance=5000;
}
publicStringgetaccountnumber()
{
returnthis.banknumber;
}
publicdoublegetaccountbalance()
{
returnthis.accountbalance;
}
publicdoublegetleftmoney()
{
returnaccountbalance;
}
publicvoidsavemoney(doublemoney)
{
accountbalance+=money;
}
publicvoidgetmoney(doublemoney)
{
if(money<=accountbalance)
accountbalance-=money;
else
System.out.println("只能取:
"+accountbalance);
}
publicbankaccount(){
//TODOAuto-generatedconstructorstub
}
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
bankaccountB=newbankaccount();
B.bankaccoutn("799524545253321346501");
System.out.println("当前账号为:
"+B.getaccountnumber());
System.out.println("当前账号余额为:
"+B.getaccountbalance());
B.savemoney(21000);
System.out.println("存入21000元后余额为:
"+B.getleftmoney());
B.getmoney(11500);
System.out.println("11500元后余额为:
"+B.getleftmoney());
}
}
运行结果如下:
实验题5定义链表类,实现单链表基本操作。
提示:
关键代码如下:
publicclassNode{
publicintdata;
Nodenext;
publicNode(intdata){
this.data=data;
this.next=null;
}
publicvoidNodeDisplay(){
System.out.println("{"+data+"}");
}
}
publicclassLink{
·
publicLink(){
this.first=null;
}
publicbooleanisEmpty(){}
publicvoidinsertHeadNode(intdata){}
publicNodedeleteHeadNode(){}
publicvoidfindNode(intk){}
publicvoiddisplayLink(){}
publicstaticvoidmain(String[]args){}
}
源代码如下:
publicclasslink{
privateNodefirst;
publiclink()
{
//TODOAuto-generatedconstructorstub
this.first=null;
}
publicbooleanisEmpty()
{
if(this.first==null)
{
returntrue;
}
else
{
returnfalse;
}
}
publicvoidinsertHeadNode(intdata)
{
NodeN=newNode(0);
N.data=data;
N.next=this.first.next;
this.first.next=N;
}
publicNodedeleteHeadNode()
{
if(!
isEmpty())
{
this.first=this.first.next;
returnthis.first.next;
}
else
{
System.out.println("thislinkisenpty!
");
returnnull;
}
}
publicvoidfindNode(intk)
{
NodeN=newNode(0);
N=first.next;
inti=0;
while(N!
=null)
{
if(N.data==k)
{
System.out.println(k+"在节点中的位置为:
"+(i+1));
break;
}
N=N.next;
++i;
}
if(N==null)
{
System.out.println("无此数!
");
}
}
publicvoiddisplayLink()
{
if(this.first.next!
=null)
{
Nodepro=newNode(0);
pro=first.next;
while(pro!
=null)
{
pro.NodeDisplay();
pro=pro.next;
}
}
else
{
System.out.println("linkisempty!
");
}
}
publicstaticvoidmain(String[]args)
{
linklink=newlink();
link.first=newNode(0);
System.out.println("没有插入数据:
");
link.displayLink();
System.out.println("插入数据后:
");
link.insertHeadNode
(1);
link.insertHeadNode
(2);
link.insertHeadNode(3);
link.insertHeadNode(4);
link.insertHeadNode(5);
link.displayLink();
System.out.println("删除头结点:
");
link.deleteHeadNode();
link.displayLink();
System.out.println("查找数据3:
");
link.findNode(3);
System.out.println("查找数据1:
");
link.findNode
(1);
}
}
运行结果如下:
实验三面向对象编程
(2)
1.实验目的
(1)掌握Java中的继承机制及包(package)、接口(interface)等的设计方法。
(2)掌握static、this、super等关键字的使用。
2.实验内容
实验题1有图形类的父类Shape,参照圆Circle类补充完整正方性Square和三角形Triangle类,并分析运行结果。
classShape{
voiddraw(){}
voiderase(){}
}
classCircleextendsShape{
voiddraw(){System.out.println("Circle.draw()");}
voiderase(){System.out.println("Circle.erase()");}
}
classSquareextendsShape{
voiddraw(){}
voiderase(){}
}
classTriangleextendsShape{
voiddraw(){}
voiderase(){}
}
publicclassShapes{
publicstaticShaperandShape(){
switch((int)(Math.random()*3)){
default:
//Toquietthecompiler
case0:
returnnewCircle();
case1:
returnnewSquare();
case2:
returnnewTriangle();
}
}
publicstaticvoidmain(String[]args){
Shape[]s=newShape[9];
//Fillupthearraywithshapes:
for(inti=0;is[i]=randShape();
//Makepolymorphicmethodcalls:
for(inti=0;is[i].draw();
}
}
程序源代码如下:
Shape类:
publicclassshape{
voiddraw(){
}
voiderase(){
}
publicshape(){
//TODOAuto-generatedconstructorstub
}
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
}
}
Square类:
publicclasssquareextendsshape{
voiddraw()
{
System.out.println("square.draw()");
}
voiderase(){
System.out.println("suqre.erase()");
}
publicsquare(){
//TODOAuto-generatedconstructorstub
}
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
}
}
Triangle类:
publicclassTriangleextendsshape{
voiddraw()
{
System.out.println("Triangle.draw()");
}
voiderase()
{
System.out.println("Triangle.erase()");
}
publicTriangle(){
//TODOAuto-generatedconstructorstub
}
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
}
}
Circle类:
publicclasscircleextendsshape{
voiddraw(){
System.out.println("Circle.draw()");
}
voiderase(){
System.out.println("Circle.erase()");
}
publiccircle(){
//TODOAuto-generatedconstructorstub
}
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
}
}
Shapes类:
publicclassshapes{
publicstaticshaperandShape()
{
switch((int)(Math.random()*3))
{
default:
//Toquietthecompiler
case0:
returnnewcircle();
case1:
returnnewsquare();
case2:
returnnewTriangle();
}
}
publicstaticvoidmain(String[]args)
{
shape[]s=newshape[9];
for(inti=0;i{
s[i]=randShape();
}
for(inti=0;i{
s[i].draw();
}
}
}
程序运行结果如下:
实验题2有两个类:
MobileManagement和Mobile,分别描述如图3.7所示两部手机名称及价格,类MobileManagement在包cn.edu.nwsuaf.jp.p3中,而Mobile在包cn.edu.nwsuaf.jp.p3.data中。
它们代码如下。
运行MobileManagement.java,你应该看到如图3.8所示结果。
[基本要求]在空白处填写相关代码并修改上面程序,使程序能够显示两部手机的价格和数量,运行结果如图3.9所示。
E365,1780RMBM330,1450RMB
图3.4手机及价格