JAVA程序设计实验报告.docx
- 文档编号:7118604
- 上传时间:2023-01-19
- 格式:DOCX
- 页数:32
- 大小:106.23KB
JAVA程序设计实验报告.docx
《JAVA程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《JAVA程序设计实验报告.docx(32页珍藏版)》请在冰豆网上搜索。
JAVA程序设计实验报告程序设计实验报告JAVA程序设计实验报告JAVA面向对象编程实验一、实验目的掌握接口的编写及使用理解继承、多态掌握包的编写以及如何使用包中的类二、预习内容java的基本语法知识实验设备与环境装有JAVA语言工具软件(JCreator)的微机若干四、实验内容接口的编写
(1)编辑Interfaceclass.java,设保存在D:
myjava目录下。
interfaceInterfaceclassinti=4;intk=5;voidfunc1();intfunc2(intx);
(2)编辑UseInterface.java,设保存在D:
myjava目录下。
classUseInterfaceimplementsInterfaceclassintj;publicvoidfunc1()/在使用接口的类中一定要实现接口中的所有抽象方法System.out.println(func1=+1);publicintfunc2(inti)System.out.println(func2=+1);returni;publicstaticvoidmain(Stringsrgs)/Interfaceclass.classx=newInterfaceclass.class();不能对接口进行实例化UseInterfacex=newUseInterface();x.func1();x.func2(k);多态在工资系统中的应用下面给出一个根据雇员类型利用abstract方法和多态性完成工资单计算的程序。
Employee是抽象类,Employee的子类有Boss(每星期发给他固定工资,而不计工作时间)、CommissionWorker(除基本工资外还根据销售额发放浮动工资)、PieceWorker(按其生产的产品数发放工资)、HourlyWorker(根据工作时间长短发放工资)。
该例的Employee的每个子类都声明为final,因为不需要再继承它们生成子类。
对所有雇员类型都使用earnings()方法,但每个人挣的工资按他所属的雇员类计算,所有雇员类都是从超类Earnings()派出生的。
所有在超类中声明earnings()为抽象方法,并且对于每个子类都提供恰当的earnings()的实现方法。
为了计算雇员的工资,程序仅仅使用雇员对象的一个超类引导并调用earnings()方法。
在一个实际的工资系统中,各种Employee对象的引用可以通过一个Employee引用数组来实现。
程序依次使用数组的每个元素(Employee引用)调用每个对象的employee()方法。
(1)编辑Test.java,设保存在D:
myjava目录下。
abstractclassEmployeeprivateStringfirstName;privateStringlastName;publicEmployee(Stringfirst,Stringlast)firstName=first;lastName=last;publicStringgetEmployeeName()returnfirstName;publicStringgetLastName()returnlastName;publicStringtoString()returnfirstName+lastName;publicabstractStringearnings();/定义Boss类,为Employee的子类finalclassBossextendsEmployeeprivatedoubleweeklySalary;publicBoss(Stringfrist,Stringlast,doubles)super(frist,last);setWeeklySalary(s);publicvoidsetWeeklySalary(doubles)weeklySalary=(s0?
s:
0);publicStringearnings()returnBoss+super.toString();/定义CommissiomWorker类,为Employee的子类finalclassCommissionWorkerextendsEmployeeprivatedoublesalary;privatedoublecommission;privateintquantity;publicCommissionWorker(Stringfirst,Stringlast,doubles,doublec,intq)super(first,last);setSalary(s);setCommission(c);setQusntily(q);/*publicStringearnings()*/publicvoidsetQusntily(doubles)salary=(s0?
s:
0);publicdoublesetCommission(doublec)returncommission=(c0?
c:
0);publicStringearnings()doublei=salary+commission+quantity;returnDouble.valueOf(i).toString();publicStringtoString()returnCommissionWorker+super.toString();publicvoidsetSalary(doubles)salary=s;/定义PieceWorker类,为Employee的子类finalclassPieceWorkerextendsEmployeeprivatedoublewagePiece;privateintquantity;publicPieceWorker(Stringfirst,Stringlast,doublew,intq)super(first,last);setWage(w);setQuantity(q);publicvoidsetWage(doublew)wagePiece=(w0?
w:
0);publicdoublesetQuantity(intq)returnq+wagePiece;publicStringtoString()returnPieceWoeker+super.toString();publicStringearnings()returnDouble.valueOf(wagePiece+quantity).toString();/定义HourlyWorker类,为Employee的子类classHourlyWorkerextendsEmployeeprivatedoublewage;privatedoublehours;publicHourlyWorker(Stringfirst,Stringlast,doublew,doubleh)super(first,last);setWage(w);setHours(h);publicvoidsetWage(doublew)wage=(w0?
w:
0);publicvoidsetHours(doubleh)hours=(h=0&h168?
h:
0);publicStringearnings()returnHourlyWorker+super.toString();classTextpublicstaticvoidmain(Stringargs)/使用超类声明refEmployeeref;Stringout=;/分别定义各子类Bossb=newBoss(Hohn,Smith,800.00);CommissionWorkerc=newCommissionWorker(Sue,Hones,400.00,3.0,150);PieceWorkerp=newPieceWorker(Bob,Lewis,2.5,200);HourlyWorkerh=newHourlyWorker(Karen,price,13.75,40);/使用子类分别实例化ref=b;out+=ref.toString()+earned$+ref.earnings()+n+b.toString()+earned$+b.earnings()+n;System.out.print(out);ref=c;out+=ref.toString()+earned$+ref.earnings()+n+c.toString()+earned$+c.earnings()+n;System.out.print(out);ref=p;out+=ref.toString()+earned$+ref.earnings()+n+p.toString()+earned$+p.earnings()+n;System.out.print(out);ref=h;out+=ref.toString()+earned$+ref.earnings()+n+h.toString()+earned$+h.earnings()+n;System.out.print(out);包的建立与使用
(1)编辑Calculate.java,设保存在D:
myjava目录下。
packagemypackage;publicclassCalculateprivateinta;publicCalculate(inta)this.a=a;System.out.println(fromconstrartion+this.a);publicdoublevolume(doubleheight,doublewidth,doubledepth)returnheight*width*depth;intadd(intx,inty)returnx+y;protectedvoida()System.out.println(fromconstration+a);编译,查看D:
myjava目录下是否生成了myoackage文件夹,在该文件夹中是否有Calculate.class文件。
(2)编辑Interfaceclass.java,设保存在D:
myjava目录下。
importmypackage.Calculate;classPackageDemopublicstaticvoidmain(stringags)Calculatec=newCalculate(10);doubles=c.volume(5,6,7);System.out.println(s);/intb=c.add(5,6);/c.a();异常处理实验一、实验目的异常的生产及捕获自定义异常及其使用二、预习内容面向对象的基本知识三、实验设备与环境装有JAVA语言工具软件(JCreator)的微机若干四、实验内容异常的捕获计算两数相除并输出结果。
使用两个catch子句,分别捕捉除数为0的异常和参数输入有误异常。
编辑Ex1.java,保存在D:
myjava目录下。
importjava.io.*;classEx1publicstaticvoidmain(Stringargs)tryBufferedReaderstrin=newBufferedReader(newInputStreamReader(System.in);System.out.print(请输入除数:
);Stringcl=strin.readLine();inta=Integer.parseInt(cl);System.out.print(请输入被除数:
);cl=strin.readLine();intb=Integer.parseInt(cl);intc=b/a;System.out.println(商为:
+c);/捕获与I/O有关的异常catch(IOExceptione)e.printStackTrace();/捕获数值转化时的异常,如不能将字符转化成数值catch(NumberFormatExceptione)System.out.println(请输入整数!
);/e.printStackTrace();/捕获除数为0的异常catch(ArithmeticExceptione)System.out.println(除数不可以0!
);/e.printstackTrace();编译并运行,当输入除数为0时,将有异常出现,当输入的不是整数时,如将30输成了3o,出现的是另一种异常。
定义异常编写程序包含自定义异常,当输入数值为13和4时抛出该异常。
编辑Ex2.java,设保存在D:
myjava目录下。
classEx2extendsExceptionEx2(Stringmsg)super(msg);classMyExprivateintx;voidsetX(intx)this.x=x;voidf1()throwsEx2if(x=13)thrownewEx2(Idontlike13!
);elseif(x=4)thrownewEx2(Idontlike4!
);elseSystem.out.println(100/x);publicstaticvoidmain(Stringargs)MyExa=newMyEx();trya.setX(5);/a.setX(13);/a.setX(4);/a.setX(0);a.f1();catch(Exceptione)System.out.println(getmessage:
+e.getMessage();编译并运行,分别取消注释上面程序中被注释的语句。
当释放a.setX(13)语句后,查看运行结果,当释放a.setX(4)语句后,查看运行结果。
GUI(图形用户接口)实验一、实验目的掌握用MouseListener和MouseMotionListener接口处处理鼠标事件MouseEvent的方法。
掌握制作菜单及处理菜单事件的方法掌握创建对话框及定位、显示、激活和关闭对话框的方法二、预习内容图形用户接口编程所需的基本类及使用方法三、实验设备与环境装有JAVA语言工具软件(JCreator)的微机若干四、实验内容制作一个简单的画板编辑Mou.java,设保存在D:
myjava目录下。
importjava.applet.*;importjava.awt.*;importjava.awt.event.*;publicclassMouextendsAppletimplementsMouseMotionListenerintx=-1,y=-1;publicvoidinit()setBackground(Color.cyan);addMouseMotionListener(this);publicvoidpaint(Graphicsg)if(x!
=-1&y!
=-1)g.setColor(Color.red);g.drawLine(x,y,x,y);publicvoidmouseDragged(MouseEvente)x=(int)e.getX();y=(int)e.getY();publicvoidmouseMoved(MouseEvente)/由于使用的是Listener,需要将其他不重载的方/法,列举在这里publicvoidupdate(Graphicsg)paint(g);publicstaticvoidmain(Stringargs)Moumou=newMou();mou.setVisible(true);mou.init();mou.paint()编译并运行查看结果.?
菜单的编写编辑TestMenu.java,设保存在D:
myjava目录下。
importjava.awt.*;importjava.awt.event.*;importjava.awt.event.ItemEvent;classMyMenhFrameextendsFrameimplementsActionListener,ItemListenerMenuBarm_MenuBar;MenumenuFile,menuEdit,m_Edit_Paste;MenuItemmi_File_Open,mi_File_Close,mi_File_Exit,mi_Edit_Copy;MenuItempi_New,pi_Del,pi_Pro,mi_Paste_All,mi_Paste_Part;CheckboxMenuItemmi_Edit_Cut;PopupMenupopM;TextAreata;publicvoiditemStateChanged(ItemEvente)MyMenhFrame()super(拥有菜单的窗口);/指定窗口标题ta=newTextArea(nochoice,5,20);ta.addMouseListener(newHandleMouse(this);/文本域响应鼠标事件add(Center,ta);/创建弹出式菜单popM=newPopupMenu();pi_New=newMenuItem(新建);pi_New.addActionListener(this);popM.add(pi_New);pi_Del=newMenuItem(删除);pi_Del.addActionListener(this);popM.add(pi_Del);pi_Pro=newMenuItem(属性);pi_Pro.addActionListener(this);popM.add(pi_Pro);/将弹出式菜单加在文本域上ta.add(popM);m_MenuBar=newMenuBar();/创建菜单栏menuFile=newMenu(文件);/创建菜单项、菜单自项并指定快捷键mi_File_Open=newMenuItem(打开,newMenuShortcut(o);mi_File_Close=newMenuItem(关闭);mi_File_Exit=newMenuItem(退出);mi_File_Exit.setShortcut(newMenuShortcut(x);mi_File_Open.setActionCommand(打开);mi_File_Close.setActionCommand(退出);mi_File_Open.addActionListener(this);mi_File_Close.addActionListener(this);/自身作为监视器mi_File_Exit.addActionListener(this);menuFile.add(mi_File_Open);menuFile.add(mi_File_Close);menuFile.addSeparator();menuFile.add(mi_File_Exit);m_MenuBar.add(menuFile);menuEdit=newMenu(编辑);mi_Edit_Copy=newMenuItem(复制);mi_Edit_Cut=newCheckboxMenuItem(剪切);m_Edit_Paste=newMenu(粘贴);mi_Paste_All=newMenuItem(全部粘贴);mi_Paste_Part=newMenuItem(部分粘贴);mi_Edit_Copy.addActionListener(this);mi_Edit_Cut.addItemListener(this);m_Edit_Paste.add(mi_Paste_Part);/m_Edit_Paste.addItemListener(mi_Paste_All);mi_Paste_Part.addActionListener(this);mi_Paste_All.addActionListener(this);menuEdit.add(mi_Edit_Copy);menuEdit.add(mi_Edit_Cut);menuEdit.addSeparator();menuEdit.add(m_Edit_Paste);m_MenuBar.add(menuEdit);this.setMenuBar(m_MenuBar);/在窗口中添加菜单栏publicvoidactionPerformed(ActionEvente)if(e.getActionCommand()=退出)dispose();System.exit(0);elseta.setText(e.getActionCommand();publicvoiditenStateChanged(ItemEvente)if(e.getSource()=mi_Edit_Cut)if(CheckboxMenuItem)e.getSource().getState()ta.setText(choose+(CheckboxMenuItem)e.getSource().getLabel();/将时间小时在文/本框中显示elseta.setText(nochoose+(CheckboxMenuItem)e.getSource().getLabel();classHandleMouseextendsMouseAdapter/处理鼠标事件类MyMenhFramem_Parent;HandleMouse(MyMenhFramemf)m_Parent=mf;publicvoidmouseReleased(MouseEvente)/鼠标按键松开事件弹出菜单if(e.isPopupTrigger()/检查鼠标事件是否是由弹出菜单引发的m_Parent.popM.show(Component)e.getSource(),e.getX(),e.getY();publicstaticvoidmain(Stringargs)MyMenhFramemmf=newMyMenhFrame();mmf.setSize(400,300);mmf.setVisible(true);编译并运行TestMenu.class查看结果。
使用Dialog实验消息对话框和一般对话框编辑TestDialog.java,设保存在D:
myjava目录下。
importjava.awt.*;importjava.awt.event.*;publicclassTestDialogpublicstaticvoidmain(Stringargs)MyDialogFramedf=newMyDialogFrame();classMyDialogFrameextendsFrameimplementsActionListener,ComponentListenerDialogMegDlg,InOutDlg;Buttonbtn1,btn2,btnY,btnN,btnR;TextFieldtf=newTextField(noimformation,45);TextFieldgetMeg=newTex
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 程序设计 实验 报告