




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java课程设计报告学 号XXX姓 名XXX班 级计11X指导教师柯栋梁安徽工业大学计算机学院2013年12月实验 一: 利用 JAVA 反射技术分析类结构自己定义的类:package chap05;public class analysis private int a;private char c;protected int b;public double d;public void test1()private void test2()protected double test3() return 1.0; 用java反射技术分析输出的结果:Enter class name (e.g. j
2、ava.util.Date): chap05.analysisclass chap05.analysispublic chap05.analysis();public void test1();private void test2();protected double test3();private int a;private char c;protected int b;public double d;1. 分析程序运行时的输出结果。输出的结果中显示了被分析类的方法与变量,包括这些方法与变量的修饰符2.分析与JAVA反射技术相关的几个类的作用:java.lang.reflect.Constr
3、uctor;Constructor 提供关于类的单个构造方法的信息以及对它的访问权限。java.lang.reflect.Field;Field 提供有关类或接口的单个字段的信息,以及对它的动态访问权限。反射的字段可能是一个类(静态)字段或实例字段。java.lang.reflect.Method;Method 提供关于类或接口上单独某个方法(以及如何访问该方法)的信息。所反映的方法可能是类方法或实例方法(包括抽象方法)。java.lang.reflect.Modifier;Modifier 类提供了 static 方法和常量,对类和成员访问修饰符进行解码。修饰符集被表示为整数,用不同的位位置
4、 (bit position) 表示不同的修饰符。实验二 :利用 JAVA 反射技术分析对象结构实验内容:运行示例程序,分析 Integer 数组对象的结构;改写程序分析一下自定义的类对象,如 Employee 类。结果分析:该程序较为复杂,通过调试模式我发现ObjectAnalyzer的toString方法为一递归函数,从代码可以看出程序是用来分析对象中非静态的成员变量并将其显示出来,通过递归分析对象中的对象的成员变量,通过获取超类分析其继承来的成员变量。自己编的类:package chap05;public class analysis extends Employeeprivate in
5、t a = 0;private char c = ;static protected int b = 0;public double d = 0;public void test1()private void test2()protected double test3()return 1.0;分析结果:chap05.analysisa=0,c= ,d=0.0salary=0.0,name=null,year=0,mouth=0,day=0实验三: 利用 JAVA 反射技术调用方法指针定义的People类:package chap05;public abstract class People d
6、ouble salary;String name;int year,mouth,day;public abstract double getSalary();public abstract void setSalary(double salary);class Employee extends PeopleEmployee(String name,double salary,int year,int mouth,int day)this.salary = salary; = name;this.year = year;this.mouth = mouth;this.day =
7、 day;Employee()public double getSalary()return salary;public void setSalary(double salary)this.salary = salary;class Manager extends Peopleprivate double bonus;Manager(String name,double salary,int year,int mouth,int day)this.salary = salary; = name;this.year = year;this.mouth = mouth;this.
8、day = day;bonus= 0;public double getSalary()return salary+bonus;public void setSalary(double salary)this.salary = salary;public void setBonus(double bonus)this.bonus = bonus;通过指针调用的结果:public static double chap05.MethodPointerTest.square(double)9.0public static double java.lang.Math.sqrt(double)3.0pu
9、blic double chap05.Employee.getSalary()50000.0public void chap05.Manager.setBonus(double)public double chap05.Manager.getSalary()80000.03.结果分析:1.分析程序运行时的输出结果。代码中Methodl类就相当于一个指向类中方法的指针,Class类通过getMethod方法获取这个Method类,之后Method类的对象可以通过invoke方法来调用这个方法。2. 掌握反射技术调用类(对象)方法的基本原理与流程。(同上)4.扩展:1.自定义一些简单类,使用反射技
10、术调用该类(静态方法)或类对象的方法;package chap05;import java.lang.reflect.*;public class MethodPointertest2 public static void main(String args) throws ExceptionMethod sin = Math.class.getMethod(sin,double.class);Field PI = Math.class.getField(PI);System.out.println(sin.invoke(null, PI.getDouble(null)/2);输出结果:1.0这
11、里没有再自己定义方法了,这里类比Method方法的使用过程通过Field方法获取了Math类里的PI成员并使用2.对于未知类(对象)的内部结构,如何利用反射技术调用其方法?可以先通过反射技术分析其结构再通过反射技术调用其方法。实验四: 利用 TreeSet 实现集合元素排序源代码:package shiyan04;import java.util.*;public class Employee implements Comparablepublic String name;public int salary;public Date hiredate = new Date();Employee(
12、String name,int salary,Date hiredate) = name;this.salary = salary;this.hiredate.setTime(hiredate.getTime();public int compareTo(Employee other)return pareTo();class salaryComparator implements Comparatorpublic int compare(Employee a,Employee b)return a.salary - b.salary;package sh
13、iyan04;import java.text.SimpleDateFormat;import java.util.*;public class Process public static void main(String args) Employee e = new Employee10;Date nowTime = new Date();SimpleDateFormat format = new SimpleDateFormat(yyyy-MM-dd);String name = 张三, 李四, 王五, 赵六, Tom, Jerry, Amy,test, Jack, John ;long
14、oneday = 86400000;/ System.out.println(nowTime);for (int i = 0; i 10; i+) nowTime.setTime(nowTime.getTime() - oneday * 30);ei = new Employee(namei, 3000 + i * 100, nowTime);System.out.println(按姓名:);SortedSet byname = new TreeSet();for (Employee i : e) byname.add(i);Iterator iter = byname.iterator();
15、while (iter.hasNext() Employee e1 = iter.next();System.out.println( + + e1.salary + + format.format(e1.hiredate);System.out.println(按工资:);salaryComparator comp2 = new salaryComparator();SortedSet bysalary = new TreeSet(comp2);for (Employee i : e) bysalary.add(i);iter = bysalary.iterator();whi
16、le (iter.hasNext() Employee e1 = iter.next();System.out.println( + + e1.salary + + format.format(e1.hiredate);System.out.println(按日期:);SortedSet bydate = new TreeSet(new Comparator() public int compare(Employee a, Employee b) return pareTo(b.hiredate););for (Employee i : e) bydate.add(i);iter
17、 = bydate.iterator();while (iter.hasNext() Employee e1 = iter.next();System.out.println( + + e1.salary + + format.format(e1.hiredate);运行结果:按姓名:Amy 3600 2013-05-28Jack 3800 2013-03-29Jerry 3500 2013-06-27John 3900 2013-02-27Tom 3400 2013-07-27test 3700 2013-04-28张三 3000 2013-11-24李四 3100 2013-
18、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-28test 3700 2013-04-28Jack 3800 2013-03-29John 3900 2013-02-27按日期:John 3900 2013-02-27Jack 3800 2013-03-29test 3700 2013-04-28
19、Amy 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.util.Random;public class ExCooperation2 public static void main(String args) WorkStudent2 ws1 = new WorkStudent2(1, 10)
20、;WorkStudent2 ws2 = new WorkStudent2(2, 20);WorkStudent2 ws3 = new WorkStudent2(3, 30);WorkStudent2 ws4 = new WorkStudent2(4, 40);new Thread(ws1).start();new Thread(ws2).start();new Thread(ws3).start();new Thread(ws4).start();class DeskAndChairint desk=0,0,0,0,0,chair=0,0,0,0,0;private int chairCoun
21、t = 500;private int deskCount = 500;public synchronized Boolean distribute(int id,long sleeptime)int chairs = 1;int desks = 1;Random rdm = new Random(System.currentTimeMillis();if(rdm.nextInt() % 2 =0)if(chairCount 0)chairs = chairs - 1;while(chairs 0)desks = desks - 1;while(desks0)trywait();catch(I
22、nterruptedException e)System.out.println(Student +id+: wiping desk +deskCount-);deskid+=1;desks = desks + 1;notifyAll();if(chairCount = 0&deskCount = 0)return true;elsereturn false;class WorkStudent2 implements Runnable private long sleeptime;private int id;static DeskAndChair dc = new DeskAndChair(
23、);public WorkStudent2(int id,long time)super();this.id=id;this.sleeptime=time;public void run()while(!dc.distribute(id, sleeptime)tryThread.sleep(sleeptime);catch(Exception e);System.out.println(Result: Student +id+ wiped +dc.deskid+ desks and+dc.chairid+ chairs.);运行结果:实验六: 利用 JDBC 技术实现简易 MYSQL 客户端程
24、序1.工具:(2)数据库软件:Microsoft Access 2010(3)Java开发工具:Eclipse2.程序框图:主界面 成绩表班级表删除修改删除添加修改添加按平均成绩查询按班级名称查询按成绩查询按姓名查询成绩表班级表2. 部分运行截图及源代码:数据库表:1. 主界面代码:class MyPanel extends JPanel Image img=Toolkit.getDefaultToolkit().getImage(c:/a.jpg); public void paint(Graphics g) g.drawImage(img,0,0,this); public class M
25、ainForm extends JFrame implements ActionListener JMenu mSystem=new JMenu(系统); JMenuItem mExit=new JMenuItem(退出); JMenu mOperate=new JMenu(数据操作); JMenuItem mAdd=new JMenuItem(添加成绩表中的数据); JMenuItem mDel=new JMenuItem(删除成绩表中的数据); JMenuItem mModify=new JMenuItem(修改成绩表中的数据); JMenu mQuery=new JMenu(查询); J
26、MenuItem mName=new JMenuItem(在成绩表中按姓名查询); JMenuItem mScore=new JMenuItem(在成绩表中按成绩查询); JMenuItem mBname=new JMenuItem(在班级表中按班级名查询); JMenuItem mBscore=new JMenuItem(在班级表中按班级平均成绩查询); JMenu mHelp=new JMenu(帮助); JMenuItem mAbout=new JMenuItem(系统信息); JMenuBar mBar=new JMenuBar(); MainForm() super(学生成绩管理系统
27、); setSize(680,640); mSystem.add(mExit); mOperate.add(mAdd); mOperate.add(mDel); mOperate.add(mModify); mQuery.add(mName); mQuery.add(mScore); mQuery.add(mBname); mQuery.add(mBscore); mHelp.add(mAbout); mBar.add(mSystem); mBar.add(mOperate); mBar.add(mQuery); mBar.add(mHelp); setJMenuBar(mBar); mExi
28、t.addActionListener(this); mAdd.addActionListener(this); mDel.addActionListener(this); mModify.addActionListener(this); mName.addActionListener(this); mScore.addActionListener(this); mBname.addActionListener(this); mBscore.addActionListener(this); mAbout.addActionListener(this); setContentPane(new MyPanel(); setVisible(true); public void actionPerformed(ActionEvent ae) if(ae
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年逻辑能力测试的标准试题及答案
- 文本与读者的互动文学概论试题及答案
- 现代汉语中的口头表达技巧试题及答案
- 学前教育机构师资管理创新与2025年教师培训体系优化路径研究与实践探索报告
- 某年度高纯氮化铝粉体市场分析及竞争策略分析报告
- 2025年农业绿色发展政策农业面源污染治理技术实践报告
- 不同地域数字出版用户的行为差异研究
- 个性化医疗新时代:2025年3D打印定制化颅骨植入物市场前景预测
- Photoshop设计理念与实践试题及答案
- 办公自动化与科技人才的数字化技能提升
- 浙江省宁波市镇海中学2025届高三下学期5月模拟语文试题(含答案)
- 【沪科版】七年级数学下册第六章单元测试卷(一)含答案与解析
- 广东省广州市2025届高三二模数学试卷(原卷版)
- 济南幼儿师范高等专科学校招聘笔试真题2024
- 2025全国保密教育线上培训考试试题库及答案
- 院感感染培训试题及答案
- 生产经营单位事故隐患内部报告奖励制度
- 2024年呼和浩特市玉泉区消防救援大队招聘政府专职消防员真题
- 2025年中考语文文言文复习:神话寓言 练习题(含答案解析)
- 管理股协议书范本
- 【MOOC】灰色系统理论-南京航空航天大学 中国大学慕课MOOC答案
评论
0/150
提交评论