安徽工业大学——java实验报告(DOC)_第1页
安徽工业大学——java实验报告(DOC)_第2页
安徽工业大学——java实验报告(DOC)_第3页
安徽工业大学——java实验报告(DOC)_第4页
安徽工业大学——java实验报告(DOC)_第5页
已阅读5页,还剩28页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java课程设计报告XXXXXX计11X柯栋梁口号名指导教师级安徽工业大学计算机学院2013年12月实验一:利用JAVA反射技术分析类结构自己定义的类:package chap05;p ublicclass an alysis privateint a;privatechar c;p rotectedint b;publicdouble d;publicvoid test1()privatevoid test2()p rotecteddouble test3()return 1.0;用java反射技术分析输出的结果:En ter class n ame (e.g. java.util.Date

2、): cha pO 5.a nalysisclass cha p05.a nalysisp ublic cha p05.a nalysis();p ublic void test1();p rivate void test2();p rotected double test3();p rivate int a;p rivate char c;p rotected int b;p ublic double d;1.分析程序运行时的输出结果。输出的结果中显示了被分析类的方法与变量, 包括这些方法与变量的修饰符2.分析与JAVA反射技术相关的几个类的作用: java.Ia ng.reflect.C

3、on structor;Con structor提供关于类的单个构造方法的信息以及对它的访问权限。java.Ia ng.reflect.Field;Field提供有关类或接口的单个字段的信息,以及对它的动态访问权限。反射的字段可能是一个类(静态)字段或实例字段。java.la ng.reflect.Method;Method提供关于类或接口上单独某个方法(以及如何访问该方法)的信息。所反映的方法可能是类方法或实例方法(包括抽象方法)。java.la ng.reflect.Modifier;Modifier类提供了 static方法和常量,对类和成员访问修饰符进行解码。修饰符集被表示为整数,用不

4、同的位位置(bit position)表示不同的修饰符。实验二:利用JAVA反射技术分析对象结构实验内容:运行示例程序 分析Integer数组对象的结构;改写程序分 析一下自定义 的类对象,如Employee类。结果分析:该程序较为复杂,通过调试模式我发现ObjectAnalyzer的toString方法为一递归函数,从代码可以看出程序是用来分析对象中非静态的成员变量并将其显示出来,通过递归分析对象中的对象的成员变量, 通过获取超类分析其继承来的成员变量。自己编的类:Package chap05;p ublic class an alysisexte nds Empio yeep rivate

5、 p rivate static public publicp rivatep rotectedreturnint a = 0; char c =''p rotected int b = 0; double d = 0;void test1()void test2()double test3()1.0;分析结果:cha p05.a nalysisa=0,c=,d=0.0salary=0.0, name二nu ll,year=0,mouth=0,day=0实验三:利用JAVA反射技术调用方法指针定义的People 类:p ackage cha p05;p ublic abstra

6、ct class People double salary ;Stri ngn ame;int year , mouth , day ;p ublicabstractdouble getSalary();p ublicabstractvoid setSalary(double classEmpio yeeexte ndsPeop leEmployee(Stringname, double salary, intday) this this this this this.salary = salary;.name = name;.year = year;.mouth = mouth;.day =

7、 day;Empio yee()p ublicdouble getSalary()return salary ;p ublic void setSalary( double salary) this . salary = salary;class Man ager exte ndsPeop lep rivatedoubleMan ager(Stri ng day)thisthisthissalary);year, int mouth, intyear, int mouth, intbonus ;name, double salary, int=salary;. = nam

8、e;.year = year;.mouth = mouth;.day = day;this this bonus = 0;p ublicdouble getSalary()returnsalary +bonus ;public thisvoid setSalary( double salary) .salary = salary;void setB onus( double bonu s) p ublicthis . bonus = bonus; 通过指针调用的结果:p ublicstaticcha pO 5.Method Poin terTest.square(double) 9.0p ub

9、lic static double java.la ng.Math.sqrt(double) 3.0p ublic double cha p05.E mpio yee.getSalary() 50000.0p ublic void cha p0 5.Ma nager.setB onu s(double) p ublic double cha p05.Ma nager.getSalary() 80000.0double3.结果分析:1.分析程序运行时的输出结果。代码中Methodi类就相当于一个指向类中方法的指针,Class类通过getMethod方法获取这个Method类,之后Method类的

10、对象可以通过in voke方法来调用这个方法。2.掌握反射技术调用类(对象)方法的基本原理与流程。(同上)4扩展:1.自定义一些简单类,使用反射技术调用该类(静态方法)或类对象的方法;package chap05;importjava.la ng.reflect.*;publicclass Method Poin tertest2 p ublicstatic void main( Stri ngMethodargs) throws Exce pti on sinMath. class .getMethod( "sin" , double . class );Field PI

11、 = Math. class .getField( "PI");System. out .println(sin.invoke(null ,Pl.getDouble( n ull )/2);输出结果:1.0这里没有再自己定义方法了,这里类比 Method方法的使用过程通过Field方法获取了 Math类里的PI成员并使用2.对于未知类(对象)的内部结构,如何利用反射技术调用其方法?可以先通过反射技术分析其结构再通过反射技术调用其方法。实验四:利用TreeSet实现集合元素排序源代码:p ackage shiya n04; import java.util.*;p ublic

12、class Empio yeeimp leme ntsComp arable<E mpio yee>n ame;p ublicStri ngpublic p ublicDateEmp loyee(Stri ng n ame, this this this p ublicint salary ;hiredate:new Date();int salary,Date hiredate).name = name;.salary = salary;.hiredate .setTime(hiredate.getTime();int comp areTo(E mpio yee other)re

13、tur nn ame.co mp areTo(other.n ame);class salaryCo mp aratorimp leme ntsComp arator<E mpIo yee>p ublicint comp are(E mpio yee a,E mpio yee b)return a. salary - b. salary ; p ackage shiya n04;import java.text.Si mp leDateFormat;import java.util.*;p ublic class P rocess p ublic static void main(

14、 Stri ng args) Empio yee e = new Empio yee10;Date no wTime = new Date();Simp leDateFormat format = new SimpI eDateFormat("yyyy-MM-dd");Strin g name = "张三","李四","王五","赵六", "Tom", "Jerry", "Amy", "test", "Ja

15、ck", "Joh n" ;long on eday = 86400000;/ System.out. prin tl n(no wTime);for (i nt i = 0; i < 10; i+) no wTime.setTime( no wTime.getTime() - on eday * 30); ei = new Emp loyee( namei, 3000 + i * 100, nowTime);System.out.println("按姓名:");SortedSet<E mpio yee> byn ame =

16、new TreeSet<E mpio yee>(); for (Empio yee i : e) byn ame.add(i);Iterator<E mpio yee> iter = byn ame.iterator();while (iter.hasNextO) Empio yee e1 = iter. next();System.out .println( e1. name + " " + el.saiary + ""+ format.format(el.hiredate);System.out.println("按

17、工资:");salaryCo mp arator comp2 = new salaryCo mp arator();SortedSet<E mpio yee> bysalary = new TreeSet<E mpio yee>(co mp 2); for (Empio yee i : e) bysalary.add(i);iter = bysalary.iterator();while (iter.hasNext() Empio yee e1 = iter. next();System.out .println( e1. name + " &quo

18、t; + el.saiary + ""+ format.format(el.hiredate);System.out.println("按日期:");SortedSetvE mpio yee> bydate = new TreeSetvE mpio yee>( new Comp arator<E mpio yee>() p ublic int comp are(E mpio yee a, Empio yee b) retur n a.hiredate.co mp areTo(b.hiredate););for (E mpio ye

19、e i : e) bydate.add(i);iter = bydate.iterator();whiie (iter.hasNextO) Empio yee e1 = iter. next();System.out .println( e1. name + " " + e1.saiary + ""+ format.format(e1.hiredate);运行结果:按姓名:Amy 3600 2013-05-28Jack 3800 2013-03-29Jerry 3500 2013-06-27John 3900 2013-02-27Tom 3400 201

20、3-07-27 test 3700 2013-04-28张三3000 2013-11-24李四3100 2013-10-25王五3200 2013-09-25赵六3300 2013-08-26按工资:张三3000 2013-11-24李四3100 2013-10-25王五3200 2013-09-25赵六3300 2013-08-26Tom 3400 2013-07-27Jerry 3500 2013-06-27Amy 3600 2013-05-28 test 3700 2013-04-28Jack 3800 2013-03-29John 3900 2013-02-27按日期:John 390

21、0 2013-02-27Jack 3800 2013-03-29 test 3700 2013-04-28Amy 3600 2013-05-28Jerry 3500 2013-06-27Tom 3400 2013-07-27赵六3300 2013-08-26王五3200 2013-09-25李四3100 2013-10-25张三3000 2013-11-24实验五:多线程同步之团结就是力量实验源代码:package chap08;import java.utiI.Ra ndom;main( Stri ng args) new WorkStude nt2(1, 10); new WorkStud

22、e nt2(2, 20);new WorkStude nt2(3, 30);new WorkStude nt2(4, 40);p ublicclass ExCo op erati on2 p ublic static void WorkStude nt2 ws1 = WorkStude nt2 ws2 = WorkStude nt2 ws3 = WorkStude nt2 ws4 =new Thread(ws1).start(); new Thread(ws2).start(); new Thread(ws3).start(); new Thread(ws4).start(); classin

23、t desk =0,0,0,0,0,chair =0,0,0,0,0;p rivateintchairC ount=500;p rivateint deskCo unt=500;p ublicsyn chro ni zedBoolea ndistribute(slee ptime)intchairs = 1;intdesks = 1;DeskA ndChairint id,long();Ran dom rdm =new Ran dom(System.curre ntTimeMillisif (rdm.nextlnt() % 2 =0)if (chairCount > 0)chairs =

24、 chairs - 1;while (chairs<0)trywait(); catch (InterruptedException e)"+chairCou ntdeskSystem. out .println("Student" +id+ ": wiping-);chair id+=1; chairs = chairs + 1; notifyAIIO; else if(deskCount > 0)"+deskCou ntdesks = desks - 1;while (desks<0)trywait(); catch (I

25、nterruptedException e)System. out .println("Student " +id+ ": wiping desk-);desk id+=1;desks = desks +1;n otifyAII();if ( chairCount returnelsereturn=0&& deskCount = 0) true ;falseclassWorkStude nt2 private private static publicimp leme ntsRunn able long slee ptime ;int id ;De

26、skA ndChair dc = new DeskA ndChair(); WorkStudent2(int id, long time)super ();thisthis public.id =id;.sleeptime=time;void run()while (! dc .distribute(id , sleeptime)tryThread. sleep ( sleeptime);catch (Exception e);System. out .pnntln("Result:Stude nt"+id +"wiped"+dc. desk id +

27、" desks and"+dc. chair id + " chairs.");运行结果:©fl* 佃 u-Efr Arpr电航出代/页乂坛f 触-C2価- Ed僭f 4ck UM91IP Jvrhbin rdov 申bQH-T 7j if'Cj HnnjiEPJ:二:Whqr. Fr二 I CTMed "MlJ-buJu-L2£lvdfl3il& Widen T 月址MMmt JtufUoit. J-budui-L Mlvdsil 日 TuLflontufUoi-t JtuzUn-t riudmil STW

28、tWIT fltMdent tuiUait. H J-budu iW Zludml W SHrilftiiTfltMdeoit ftudwit. J-budui-t ZtvdBil TkHlAiiTftudu-L na-ulb: nD>ult: K±*llLci 7<4<TJltlvti-n Sk-tti "DiN En-*-R湎丽W肉'I mu Td 聞 C:甲帕辰环畑 gg 羽1理'Zlfl 加 上牛1卩阳占百 k 1«LjrLjiv 4 皿 W aphTli IpLn ipijil*DIph-n IpLn 1-pijiiki

29、2: vlphTI 11 vlpLn 3 = vipiji 17 rL'pXn 3: K£>Ln 1: wlpbH 1:. v hpLTi 2= vipizi a= rLpljii 1: h*lpki*i4 血 Z: vlplTI 1: vhpL-n S*L*u4rvL5 LuihnL grudarvL flt-uflftnt-A *hp*d £5 daka* uxlf-B oUin.2 n-ijwd 1S2 EaakH *ndl24 dha.LT>.1 Ki>Kl 23T daihf Ukdjae3 Vhp4d TO Qzk*实验六:利用JDBC

30、技术实现简易 MYSQL客户端程序1.工具:(2)数据库软件:Microsoft Access 2010(3) Java开发工具:Eclipse2.程序框图:士界面成绩表班级表2部分运行截图及源代码: 数据库表:3班级表班级名称卡班级人数 < 班舉平均成+单击以添加<计算机1班4075计算机2班3473计算机3班4506网络工程1班3385网络工程2班4475詔成绩表出生曰期成绩军远2013/12/8672013/12/29892013/12/3872013/2/3212013/1/3791993/2/3891.主界面代码:class MyPanelImagepublicexte

31、ndsJPa nelimg =Toolkit. getDefaultToolkit void pain t(Gra phics g)img ,0,0,().getlmage("c:/a.j pg");g.drawlmage(p ublicclass Mai nFormexte ndsJMe nuJMe nultemJMe nuJMe nultemJMe nultemJMe nultemJMe nuJMe nultemJMe nultemJMe nultemJMe nultemJMe nuJMe nultemJMe nuBarmSystem =new JMe nu(this

32、);JFrameimp leme ntsActio nListe ner"系统");mExit =new JMenultem( "退出"); mOperate =new JMenu("数据操作”);"添加成绩表中的数据"); "删除成绩表中的数据");"修改成绩表中的数据mAdd = new JMe nultem( mDel =new JMe nultem( mModify =new JMe nultem( mQuery =new JMenu("查询”);mName= new JMe

33、nultem( mScore =new JMe nultem( mBn ame=new JMe nultem( mBscore =new JMenultem( mHelp =new JMenu("帮助");mAbout =new JMe nultem( mBar = new JMe nu Bar();");"在成绩表中按姓名查询"在成绩表中按成绩查询"在班级表中按班级名查询"在班级表中按班级平均成绩查询 ");"系统信息");");");");Mai nForm()

34、 super ("学生成绩管理系统"); setSize(680,640);mSystem .add(mOp erate mOp erate mOp erate.add( .add( .add(mExit ); mAdd); mDel );mModify );mQuery .add( mQuery .add( mQuery .add( mQuery .add( mHelp .add( mBar .add( mBar .add( mBar .add( mBar .add( setJMe nuBar(mNamei; mScore ); mBn ame); mBscore );

35、mAbout );mSystem ); mOperate ); mQuery ); mHeIp );mBar);mExit .addActionListener( mAdd.addActi on Liste ner( mDel .addActionListener( mModify .addActionListener( mNameaddActio nListe ner( mScore .addActionListener( mBn ame.addActio nListe ner( mBscore .addActionListener( mAbout .addActionListener( setC onten tPa ne( setVisible(thisthisthis);););this ); this );thisthisthis this););););new MyPa nel();true );nn",JOptionPane.elsemAdd)true );mDel )true ); mModify )true );mName)p ublicvoid action Performed(Act ion Eve nt ae)if (ae.getSource()= mExit )System.exi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论