太原理工大学java实验报告.docx
TAIYUAN UNIVERSITY OF TECHNOLOGY本科实验报告课程名称: java语言程序设计实验名称: java程序设计实验地点:致向楼201专业班级:学号:学生姓名:指导教师:时间:实验名称实验3 Java面向对象程序设计实验目的和要求掌握Java面向对象程序设计中类、继承、包和接口的概念与应用,能熟练应用方 法、类、成员变量等元素。实验内容1 .创建一个复数类complex,以附属进行数学运算、复数具有如下格式: RealPart+ImaginaryRart*I ,其中,I 为T 的平方根。要求如下: 利用浮点变量表示此类的私有数据。提供两个构造方法,一个用于此类声明 的对象的初始化;一个为默认的无参构造方法。 提供两复数加、减、乘的运算方法。 按格式(a, b)打印复数。其中a为实部,b为虚部。2 .创建银行账号Account类,实现存款(balance)的存(deposit)、取(withdraw)和查 询(getbalance)等功能。3 .编程定义一个接口,实现三个数中求最小值和最大值的方法,并将程序存放在 mymaths 包中。4 .编程实现以下简单超市管理,具体要求如下:实现描述超市的类Suppermacket类,具有货架属性,记录系统中现有商品, 定义盘点商品的函数check(盘点各类商品的数量,并输出盘点结果),查询商品的函 数query,并显示查询结果; 定义商品类Goods,具有商品名称Name,商品价格Price,商品产地Producer 等属性,操作Sale(销售商品,余额不足时赋予提示)、Add(商品上架操作)和ShowMe (显示商品信息)。main函数,测试以上所要求的各种功能,即可以根据菜单命令增加、删除、 查询商品、盘点商品,以及商品销售和商品上架的操作提示:超市货架可以使用商品数组,数组大小100表明存放100个商品。注意实现商品查询的多态性,要求可以根据商品的名称或者产地或者价格查 -品的数量。主要仪器设备笔记本电脑 eclipse实验记录(写出实验内容中的程序代码和运行结果)(1) public class jzk yi public static void main(String a) Complex b = new Complex(2, 5);Complex c = new Complex(3, 一4);System. out. printin(b System, out. println(b System, out. printin (b )class Complex private double m;/ 实部+ + + - + * +c + = + b. add(c);c + = + b. minus(c);c + = + b.multiply(c);private double n;/ 虚部private double n;public Complex(double m, double n) this, m = m;this, n = n; public Complex add(Complex c) return new Complex (m + c. m, n + c. n);c. n);public Complex minus(Complex c) return new Complex(m - c. m, npublic Complex multiply(Complex c) return new Complex (m * c. m - n * c. n, m * c. n + n * c. m);)public String toStringO String rtr str = ; if (n > 0) rtrstr =( + m + + + n + i + );if (n = 0)rtr str =( + m + ); if (n < 0)/ 、rtr_str = ( +m+n+ i + ); return rtr_str;)(2.(H5.Oi)*(3.e.4.01)=:(5.0*1.0i)(z.e*5.ei)*(3.0-4.ei)«(26.e*7.ei)(2) public class jzk_er class Account(public String account;public double balance=0;public Account(String account, double balance)this, account=account;this, balance=balance;)public void deposit (double money) this. balance+=money;)public double getbalanceO return this, balance;)public void withdraw(double money) if(money>this. balance)System. out. printin(金额不足,请重新输入);else this. balance-=money;System. out. printin(你取了+money+元);)public class L02 public void main(String args)Account a=new Account(*,400);System, out. printin (账户余额为“+a. getbalance()+元);a.deposit (500);System, out. printin (你存入+a getbalance ()+元);System, out. printin(账户余额为“+a. getbalance ()+元); a. withdraw(300);)nt尸景画为qoo.。兀你存入900。元咬户余顿力9。,。元作了 300.0元(3) public class jzk_san interface Numpublic void Max();public void Min();)public class Interface implements Numint a, b, c;public Interface (int a, int b, int c) this, a=a;this. b=b;this. c=c;)public void Max() int max;max=a>b?a:b;max=max>c?max:c;+max);System. out. printin(三个数中最大值是:public void Min() int min;min:=a<b?a:b;min=min<c?min:c;System. out. printin(三个数中最小值是:+min); ) public void main(String args) Interface qr=new Interface (8,4,13);qr. Max ();qr. Min();13(4) import java. util. StringTokenizer; public class jzk_si public abstract class Cipher public String encrypt(String s) StringBuffer result = new StringBuffer(,z,/); StringTokenizer words = new StringTokenizer(s); while (words. hasMoreTokens() result, append (encode (words. nextTokenO) + );return result. toStringO ;public String decrypt(String s) StringBuffer result = new StringBuffer(); StringTokenizer words = new StringTokenizer(s); while (words. hasMoreTokens() result, append (decode (words. nextTokenO) + );return result. toStringO ;public abstract String encode (String word);public abstract String decode(String word);public class Caesar extends Cipher public String encode(String word) StringBuffer result = new StringBuffer();for (int k = 0; k < word, length() ; k+) char ch = word. charAt(k);ch = (char) (' a + (ch -' a' + 3) % 26);result, append(ch);return result. toStringO ;public String decode(String word) StringBuffer result 二 new StringBuffer();for (int k = 0; k < word, length() ; k+) char ch = word. charAt(k);ch = (char) (,a, + (ch - ' a' + 23) % 26);result, append(ch);)return result. toStringO ; public class Transpose extends Cipher public String encode(String word) StringBuffer result = new StringBuffer(word);return result, reverse (). toStringO ;)public String decode(String word) return encode(word); public class TestEncrypt public void main(String argv) Caesar caesar = new Caesar();String plain = "this is the secret message”;String secret = caesar. encrypt(plain);System, out. printin (z/ * Caesar Cipher Encryption *);System, out. printin (/zPlainText: + plain);System, out. printin(Encrypted: + secret);System, out. printin(Decrypted: + caesar. decrypt(secret);Transpose transpose = new Transpose();secret = transpose, encrypt(plain);System, out. printin(zzn * Transpose Cipher Encryption *); System, out. printin (/zPlainText: + plain);System, out. println(,zEncrypted: + secret);System, out. printin(Decrypted: + transpose, decrypt(secret);*3. Caesa.r Cipher Encryption *” Plain!ext: this is the secret Encrypted: c$rh rh (sv hvxiv( nvhhxtv Decrypled: this is the secret message* Trinxpose Cipher Encryption PlainTexts this is the secret aessace Encrypted; sthi sieth tsecxe emess” Decrypted: Lsth is het etseer generra遇到的问题和解决方法1.声明对象要用new实例化。2,复数类的乘法运算中发生计算错误。解决方法:可以使用局部变量来存储计算结果,然后再赋给所在对象的变量,最后将对象 返回。实验体味L java中提供了不少方法来使用,可以根据实际需耍高产量高效率地编写代码。2,面向对象的编写程序的方法对代码重用特殊有效,方法的重载缩短了程序的长度。实验名称4 Java异常处理实验目的和要求1.掌握异常的概念,以及如何定义、抛出和捕获处理异常。实验内容运行下面的程序,理解异常的抛出、捕获与处理。Import java.io.*;public class void main(String args)public staic void main(String args)for(int i=0;i<4;i+)int k;try(switch(i)case 0: /divided by zeroint zero=0;k=911 /zerobreak;case 1 :/null pointerint b=null;k=b0;break;case 2; /array index out of boundint c=new int2;k=c9;break;case 3: /string index out of boundchar ch=Habcn.charAt(99); break;catch(Exception e)System.out.println(nnTestcase#,'+i+HnH);System.out.println(e);)主要仪器设备笔记本计算机eclipse实验记录(写出实验内容中的程序代码和运行结果)public class jzk_yi public static void main(String a) for(int i=0;i<4;i+)int k;try(switch(i)case 0: /divided by zero int zero=0;k=911 /zero break;case 1 :/null pointerint b=null;k=b0;break;case 2; /array index out of boundint c=new int2;k=c9;break;case 3: /string index out of boundchar ch=Habcn.charAt(99); break;catch(Exception e)System.out.println(nnTestcase#,+i+,nH);System.out.println(e);)Imng.Arit卜meticEQCtior: / by zeroTestcaseaiTestcase#2irOsExcetion: 9Testcase#3jaua.13na-StriRldexQutofBDLrCsExc2ati。: string index out of range: 99遇到的问题和解决方法L抛出异常使用错误。需要根据实际需要使用,区另hhrow和throws。实验体味java提供了异常类,区别throw和throws,自定义异常主要作用是区分异常发生位置,要分 别监听类与异常类。实验名称实验5多线程编程实验目的和要求1 .现成的概念、线程的生命周期。2 .多线程的编程:扩展Thread类与使用Runnable接口。3 .使用多线程机制实现动画实验内容运行下面的程序,理解用创建Thread子类的方法实现多线程。/S09_01 _Thread.JavaImport java.utiL*;class S09_01_Thread extends Thread int pauseTime;String name;public S09_01_Thread(int x,String n)pauseTime=x;name=n;public void run()while(true)try(system.out.println(name+H:H+new Date(System.currentTimeMillis();T read.sleep(pauseTime);catch(Exception e)System.out.println(e);)static public void main(String srgs)S09_01_Thread tp1 =new S09_01_Thread(1000/Fast");tp1.start();实验名称Java语言基础实验目的和要求:通过实验,掌握Java语言程序设计的基本方法。 学会Java语言中标示符的命名、运算符和表达式的应用。 熟练地掌握Java程序流程控制语句的应用。实验内容(I)编写应用程序,计算100(含100)以内所有偶数的和。“水仙花数”是指一个3位数,其个位、十位、百位上的数字的立方和等于该数 本身,例如371=33+73+h ,因此371是一个水仙花数。编写程序,求所有的水仙花数。编写一个程序,求-100间的素数。有一函数:x丫=< 3x-2、4x写一程序,(x<1)(1x<10)(x,10)给定x值,输出y值。 使用for循环语句,编写程序输出以下图案。 (6)编写程序,输出从公元1900年到2100年所有闰年的年号,每输出5个年号换一 行。判断年是否为闰年的条件是:若年号可以被4整除,而不能被100整除,则 是闰年;若年号可以被400整除,也是闰年。S09_01_Thread tp2=new S09_01_Thread(30005HSlown);tp2.start();)(2)运行下面的程序,理解用实现Runnable接口的方法实现多线程。 /S09_02_Thread.JavaImport java.util.*;class S09_02_Thread implements Runnable int pauseTime;String name;public S09_02_Thread(int x,String n)pauseTime=x;name=n;public void run()while(true)try(system.out.println(name+n:H+new Date(System.currentTimeMillis();T read.sleep(pauseTime);catch(Exception e)System.out.println(e);)static public void main(String srgs)Thread t1 =new Thread(new S09_02_Thread(1000,"Fast”);t1.start();Thread t2=new Thread(new S09_02_Thread(30005HSlowH);t2.start();)(3)创建简单的程序ThreeThread. java,该程序将创建三个线程,每一个线程应当 显 示它所运行的时间(可以考虑使用Date类或者Calendar类)。主要仪器设备笔记本计算机eclipse实验记录(写出实验内容中的程序代码和运行结果)import java.util.*;public class L09_03_ThreeThread extends Threadint pauseTime;String name;public L09_03_ThreeThread(int x,String n)pauseTime=x;name=n; public void run()while(true)try(System.out.println(name+”:“+new Date(System.currentTimeMillis(); catch(Exception e) System.out.println(e);)static public void main(String args)L09_03_Th reeTh read tp1 =new L09_03_ThreeThread(1 OOO/asf);tp1.start();L09_03_Th reeTh read tp2=new L09_03_ThreeThread(2000,HMicllen);tp2.start();L09_03_Th reeTh read tp3=new L09_03_Th reeTh read (3000, nSlown);tp3.start(); ;且 J<rUc 声明工 角 '明 o技制白 口S09.01.ThrtU Java 皮用I!序】D JDKbinj$09 01 Thr«U U". SfflISJ? D JDXb>ajFaxt: IonJTov1414f38:20CST201!Fart :IonNH14:26:37C5T201TFart: IonNov1414:)8:21CST2011Slow:IonNw1414:25:37CST20USlov:lonNov1414:38:22CST2011Fajf:IonNov1414:25:38CST2011Fart :lonNov1414:38:22CST2011Faxt :lonXov1414:25:39CST20UFart: MonNov1414:38:23CST2011FixtYion Slovslon F axt : IonNov Nov Nov14141414:25:40 14:25:40 14:25:41CST CST CST2011 20U2011Fat :lan Slov:lanNov Nov141414;14:38:24 38:26CST CST20112011F art: IonNw1414:25:42CST2011Fart: IanNov1414:38:26CST2011Slov:lonNov1414:25:43CST201!F irt: IonNov1414:38:26CST2011Fart :WonNov1414:26:43CST2011Fart: IonNov1414:38:27CST2011Faxt:lonKov1414:25:44CST2011Slov:lonNov1414:38:28CST2011Fart:IonNov1414i2S:<SCST201 iFast :lanNov1414;38:28CST2011Faxt:IonNovH14:25:46CST20UF ast: IonNov1414:38:29CST2011Slov:lnnNov1414:25:46CST2011F art: WonNov1<114:38:30CST2011Fart :IonMav1414:25:47CST2011Slov:lonNov1414:38:31CST2011Fart :lonNov1414:25:48CST20UFart :lcnNov1414:38:31CST2011HS Jev&e 1:U)9_03.Tkr.TWXUb. &用8/】 D:UKM»ajFart:Ion Nov1414:42:b3 CSFTUTTSlow:Ion Nov1414:42:53 CST 2011Fart:Hon Nov1414:42:54 CST 2011Fa5t:lon Nov1414:42:55 CST 2011F:Ion Nov1414:42:56 CST 2011Slow:Ion Nou1414:42:56 CST 2011Fart:Ion Nov1414:42:57 CST 2011Faxt:Ion Nov1414:42:58 CST 2011Fart:Ion Nov1414:42:59 CST 2011Slow:Ion Nov1414:42:59 CST 2011F hst: Ion Nov1414:43:00 CST 2011F art: Ion Nov1414:43:01 CST 2011F art: Ion Nov1414:43:02 CST 2011Slow: Bon Nov1414:43:02 CST 2011Fart:Ion Nov1414:43:03 CST 2011F art:Ion Nov1414:43:04 CST 2011Fart:lon Nov1414:43:06 CST 2011Slov:lon Nov1414:43:05 CST 2011F art: Ion Mov1414:43:06 CST 2011遇到的问题和解决方法使用runnable接口实现多线程编程时,由runnable接口实现的对象中没有start()方法来使线 程启动。解决方法:使用thread类的对象的构造方法来与runnable类对象相接,然后用thread类 的对象调用start()方法。实验体味通过实验我了解到多线程可以把任务分块执行,分块后可以同时进行而不用等待,这样效 率更高。实验名称实验6图形用户界面编程实验目的和要求掌握文本组件、按钮和单、复选按钮组件的使用;掌握列表的使用,鼠标、键 盘事件的处理;掌握布局控制的方法。实验内容(1)编写一个程序响应鼠标事件,当鼠标事件发生时,在状态条显示相应的时间信息。 提示:使用showStatus (字符串)方法。(2)试设计一窗口,内含一个按钮。开始运行时,按钮显示“Click Me”字样,当按 钮按下时,按钮悭示为“ClickMe Again”字样,再按一次,则按钮显示“Click Me” 字样,挨次循环。(3)仿照Windows 2000/XP系统提供扫雷游戏编写一个类似功能和界面的扫雷程序。主要仪器设备笔记本计算机eclipse实验记录(写出实验内容中的程序代码和运行结果)(1) import java.awt.*;import java.awt.event.*;public class L08_07_ implements MouseMotionListener,MouseListener,WindowListener private Frame frm;private TextField tf;public static void main(String args)L08_07_ListenerlmpDemo two = new L08_07_ListenerlmpDemo();two.go();)public void go()frm = new Frame("三个监听器”);frm.add(new Label。'拖曳鼠标”)North”);tf = new TextField(30);frm.add(tfSouth”);/使用缺省的布局管理器frm.addMouseMotionListener(this);MouseListenerfrm.addWindowListener(this);WindowListener frm.setSize(300,200);frm.setVisible(true); public void mouseDragged(MouseEvent e) (String s = "鼠标当前坐标:X=n+e.getX()+MtY = H+e.getY();tf.setText(s); public void mouseMoved(MouseEvent e)public void mouseClicked(MouseEvent e)public void mouseEntered(MouseEvent e)String s = "鼠标进入了”; tf.setText(s); public void mouseExited(MouseEvent e)String s = "鼠标离开了”;tf.setText(s); )public void mousePressed(MouseEvent e)public void mouseReleased(MouseEvent e) public void windowClosing(WindowEvent e)System.exit。);/为了使窗口能正常关闭,程序正常退出,需要实现 windowClosing 方 法 public void windowOpened(WindowEvent e) 对其不感兴趣的方法可以方法体为空public void windowlconified(WindowEvent e)public void windowDeiconified(WindowEvent e)public void windowClosed(WindowEvent e)public void windowActivated(WindowEvent e) public void windowDeactivated(WindowEvent e) )”三个GiU匚它!又EB三个多叫3:X捂少惊import java.awt.*;import java.awt.event.*;public class L08_03 extends Frame implements MouseListener static L08_03 frm=new L08_03();static Button btn=new ButtonfClick Me”);static int a=0;public static void main(String args)btn.addMouseListener(frm);frm.setLayout(new FlowLayout();frm.setTitle("按钮测试");frm.setSize(300,200);frm.add(btn);frm.setVisible(true); public void mousePressed(MouseEvent e)public void mouseReleased(MouseEvent e)public void mouseExited(MouseEvent e)public void mouseEntered(MouseEvent e)public void mouseClicked(MouseEvent e) a+;if(a%2)!=0)btn.setLabel(HClick Me Again'');else btn.setLabel(MClick Me”);lick Me Aga)遇到的问题和解决方法1.窗体不显示。解决方法:让窗体对象调用方法“setVisible(true)”即可显示窗体。实验体味通过编写这个试验程序,我知道Swing的视图由两个基本元素组成就是组件和容器,组件 指的是按钮和文本字段,而容器就是放置其它组件的特殊类型的组件。实验名称实验7输入与输出实验目的和要求1 .掌握Java两种基本输入/输出流类的使用。2 .掌握Java文件类型的使用。3 .掌握文件的输入、输出方法。实验内容1 .编写程序,实现从键盘输入字符串并在屏幕上输出。2 .利用Java文件类File的方法,获取磁盘文件的文件名、长度