安徽工業(yè)大學(xué)_第1頁(yè)
安徽工業(yè)大學(xué)_第2頁(yè)
安徽工業(yè)大學(xué)_第3頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Java課程設(shè)計(jì)報(bào)告XXXXXX 計(jì) 11X 柯棟梁學(xué)號(hào) 姓名 班級(jí) 指導(dǎo)教師安徽工業(yè)大學(xué)計(jì)算機(jī)學(xué)院2013 年 12 月實(shí)驗(yàn) 一 : 利用 JAVA 反射技術(shù)分析類結(jié)構(gòu)自己定義的類: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 反射技術(shù)分析輸出的結(jié)果:public chap

2、05.analysis(); public void test1();private void test2(); protected double test3(); private int a;private char c; protected int b; public double d;1. 分析程序運(yùn)行時(shí)的輸出結(jié)果。包括這些方法與變量的輸出的結(jié)果中顯示了被分析類的方法與變量, 修飾符2. 分析與 JAVA反射技術(shù)相關(guān)的幾個(gè)類的作用 Constructor 提供關(guān)于類的單個(gè)構(gòu)造方法的信息以及對(duì)它的訪問權(quán) 限。Field 提供有關(guān)類或接口的單個(gè)字段的信息,以及對(duì)它的動(dòng)態(tài)訪問權(quán) 限。反射的字段

3、可能是一個(gè)類(靜態(tài))字段或?qū)嵗侄巍?Method 提供關(guān)于類或接口上單獨(dú)某個(gè)方法(以及如何訪問該方法) 的信息。所反映的方法可能是類方法或?qū)嵗椒ǎòǔ橄蠓椒ǎ?。 Modifier 類提供了 static 方法和常量,對(duì)類和成員訪問修飾符進(jìn)行 解碼。修飾符集被表示為整數(shù),用不同的位位置 (bit position) 表示 不同的修飾符。實(shí)驗(yàn)二 :利用 JAVA 反射技術(shù)分析對(duì)象結(jié)構(gòu)實(shí)驗(yàn)內(nèi)容 :運(yùn)行示例程序 ,分析 Integer 數(shù)組對(duì)象的結(jié)構(gòu) ;改寫程序分 析一下自定義的類對(duì)象 ,如 Employee 類。結(jié)果分析:該程序較為復(fù)雜,通過調(diào)試模式我發(fā)現(xiàn) ObjectAnalyzer的 t

4、oString 方 法為一遞歸函數(shù), 從代碼可以看出程序是用來分析對(duì)象中非靜態(tài)的成 員變量并將其顯示出來, 通過遞歸分析對(duì)象中的對(duì)象的成員變量, 通 過獲取超類分析其繼承來的成員變量。自己編的類:package chap05;public class analysis extends Employee private int a = 0;private char c = ' ' ;static protected int b = 0;public double d = 0;public void test1()private void test2()protected doub

5、le test3()return 1.0;分析結(jié)果:chap05.analysisa=0,c= ,d=0.0salary=0.0,name=null,year=0,mouth=0,day=0實(shí)驗(yàn)三 : 利用 JAVA 反射技術(shù)調(diào)用方法指針定義的 People 類:package chap05;public abstract class People double salary ;String name;int year , mouth , day ;public abstractdouble getSalary();public abstractvoid setSalary( doublecl

6、ass Employee extends PeopleEmployee(String name, double salary, int day)salary);year, intmouth, intthis. salarythis. namethis. yearthis. mouththis. day =Employee()publicdouble= salary;= name;= year;= mouth; day;return salary ;getSalary()this .salary= salary;class Manager extends Peopleprivatedoubleb

7、onus ;Manager(Stringname, doubleday)this .salary= salary;this .name= name;this .year= year;this .mouth= mouth;this .day =day;bonus= 0;salary, intpublic void setSalary( double salary)year, intmouth, intpublic double getSalary()return salary +bonus ;public void setSalary( double salary) this . salary

8、= salary;public void setBonus( double bonus)this . bonus = bonus;通過指針調(diào)用的結(jié)果:9.03.050000.080000.03. 結(jié)果分析:1.分析程序運(yùn)行時(shí)的輸出結(jié)果。代碼中 Methodl 類就相當(dāng)于一個(gè)指向類中方法的指針,Class類通過getMethod方法獲取這個(gè) Method 類,之后 Method 類的對(duì)象可以通過 invoke方法來調(diào)用這個(gè)方法。2.掌握反射技術(shù)調(diào)用類 (對(duì)象 )方法的基本原理與流程。(同上)4. 擴(kuò)展:1.自定義一些簡(jiǎn)單類 ,使用反射技術(shù)調(diào)用該類 (靜態(tài)方法 )或類對(duì)象的方 法;package

9、chap05;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); 輸出結(jié)果: 1.0這里沒有再自己定義方法了,

10、這里類比 Method 方法的使用過程通過 Field 方法獲取了 Math 類里的PI 成員并使用2.對(duì)于未知類 (對(duì)象 )的內(nèi)部結(jié)構(gòu) ,如何利用反射技術(shù)調(diào)用其方法 ?可以先通過反射技術(shù)分析其結(jié)構(gòu)再通過反射技術(shù)調(diào)用其方法。實(shí)驗(yàn)四 : 利用 TreeSet 實(shí)現(xiàn)集合元素排序 源代碼:package shiyan04;public class Employee implements Comparable<Employee> public String name;public int salary ;public Date hiredate = new Date();Employee(

11、String name, int salary,Date hiredate)this . name = name;this . salary = salary;this . hiredate .setTime(hiredate.getTime();public int compareTo(Employee other)return name .compareTo();class salaryComparator implements Comparator<Employee> public int compare(Employee a,Employee b) re

12、turn a. salary - b. salary ; package shiyan04;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 = "張三", "李四", "王五", "

13、趙六", "Tom", "Jerry", "Amy", "test", "Jack", "John" ;long oneday = 86400000; / = 0; i < 10; i+) nowTime.setTime(nowTime.getTime() - oneday * 30); ei = new Employee(namei, 3000 + i * 100, nowTime); 按姓名 :"); SortedSet<Employee&

14、gt; byname = new TreeSet<Employee>(); for (Employee i : e) byname.add(i); Iterator<Employee> iter = byname.iterator(); while (iter.hasNext() Employee e1 = iter.next();+ " " + e1.salary + " " + format.format(e1.hiredate); 按工資 :"); salaryComparator comp2 = new sala

15、ryComparator(); SortedSet<Employee> bysalary = new TreeSet<Employee>(comp2); for (Employee i : e) bysalary.add(i);iter = bysalary.iterator(); while (iter.hasNext() Employee e1 = iter.next();+ " " + e1.salary + " " + format.format(e1.hiredate);按日期 :");SortedSet<

16、;Employee> bydate = new TreeSet<Employee>( new Comparator<Employee>() public int compare(Employee a, Employee b) );for (Employee i : e) bydate.add(i);iter = bydate.iterator();while (iter.hasNext() Employee e1 = iter.next();+ " " + e1.salary + " "+ format.format(e1.

17、hiredate);運(yùn)行結(jié)果:按姓名: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-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-26 Tom 3400

18、2013-07-27 Jerry 3500 2013-06-27 Amy 3600 2013-05-28 test 3700 2013-04-28 Jack 3800 2013-03-29 John 3900 2013-02-27 按日期:John 3900 2013-02-27 Jack 3800 2013-03-29 test 3700 2013-04-28 Amy 3600 2013-05-28 Jerry 3500 2013-06-27 Tom 3400 2013-07-27 趙六 3300 2013-08-26 王五 3200 2013-09-25 李四 3100 2013-10-2

19、5 張三 3000 2013-11-24源代碼:實(shí)驗(yàn)五 : 多線程同步之團(tuán)結(jié)就是力量實(shí)驗(yàn)package chap08;import java.util.Random;public class ExCooperation2 public staticvoid main(String args) WorkStudent2 ws1 =WorkStudent2 ws2 =WorkStudent2 ws3 =WorkStudent2 ws4 = new Thread(ws1).start(); new Thread(ws2).start(); new Thread(ws3).start(); new T

20、hread(ws4).start();new WorkStudent2(1, 10); new WorkStudent2(2, 20); new WorkStudent2(3, 30); new WorkStudent2(4, 40);int desk =0,0,0,0,0,chair =0,0,0,0,0;privateint chairCount= 500;privateint deskCount= 500;publicsynchronizedBooleandistribute(sleeptime)intchairs = 1;intdesks = 1;class DeskAndChairi

21、nt id,long();Random rdm = new Random(System. currentTimeMillis if (rdm.nextInt() % 2 =0) if ( chairCount > 0)chairs = chairs - 1;while (chairs<0)try wait(); catch (InterruptedException e)desk System. out .println( "Student " +id+ ": wiping " +chairCount -);chair id+=1; chai

22、rs = chairs + 1; notifyAll();else if ( deskCount > 0) desks = desks - 1; while (desks<0) try wait(); catch (InterruptedException e)desk System. out .println( "Student " +id+ ": wiping " +deskCount -);desk id+=1; desks = desks + 1; notifyAll();if ( chairCount = 0&& d

23、eskCount = 0) return true ;else return false ;class WorkStudent2 implements Runnable private long sleeptime ; private int id ;static DeskAndChair dc = new DeskAndChair(); public WorkStudent2( int id, long time) super ();this . id =id;this . sleeptime =time;public void run()while (! dc .distribute( i

24、d , sleeptime )try( sleeptime);Thread. sleep catch (Exception e) ;System. out .println("+dc. desk id + " desks and" "Result:+dc. chair id + " chairs.Student " +id +" wiped " );運(yùn)行結(jié)果:實(shí)驗(yàn)六 : 利用 JDBC 技術(shù)實(shí)現(xiàn)簡(jiǎn)易 MYSQL 客戶端程序1. 工具:(2)數(shù)據(jù)庫(kù)軟件: Microsoft Access 2010(3) Java開發(fā)

25、工具: Eclipse2. 程序框圖:主界面班級(jí)表按 班 級(jí) 名 稱 查 詢按 平 均 成 績(jī) 查 詢2.部分運(yùn)行截圖及源代碼:數(shù)據(jù)庫(kù)表:1.主界面代碼:class MyPanel extends JPanelImage img =Toolkit. getDefaultToolkit public void paint(Graphics g) g.drawImage( img ,0,0,public class MainForm extendsJMenuJMenuItemJMenuJMenuItemJMenuItemJMenuItemJMenuJMenuItemJMenuItemJMenuIt

26、emJMenuItemJMenuJMenuItemJMenuBar().getImage( "c:/a.jpg");this );JFrame implements ActionListenermSystem =new JMenu( mExit =new JMenuItem(" 數(shù)據(jù)操作 " ); 添加成績(jī)表中的數(shù)據(jù) " ); 刪除成績(jī)表中的數(shù)據(jù) " );" 修改成績(jī)表中的數(shù)據(jù)" 系統(tǒng) " );" 退出 " );mOperate =new JMenu( mAdd=new JMenuIt

27、em( " mDel =new JMenuItem( " mModify =new JMenuItem( mQuery =new JMenu( " 查詢 " );mName=new JMenuItem( mScore =new JMenuItem( mBname=new JMenuItem( mBscore =new JMenuItem( mHelp =new JMenu( "幫助" );mAbout =new JMenuItem( mBar =new JMenuBar(););在成績(jī)表中按姓名查詢 在成績(jī)表中按成績(jī)查詢 在班級(jí)表中按

28、班級(jí)名查詢 " 在班級(jí)表中按班級(jí)平均成績(jī)查詢系統(tǒng)信息 " );); " );" ););MainForm()super ( " 學(xué)生成績(jī)管理系統(tǒng) "); setSize(680,640);mSystem .add(mOperate mOperate mOperatemExit ); mAdd); mDel ); mModify );mQuery .add( mQuery .add( mQuery .add( mQuery .add( mHelp .add( mBar .add( mBar .add( mBar .add( mBar .

29、add( setJMenuBar(.add( .add( .add(mName); mScore ); mBname);mBscore ); mAbout );mSystem ); mOperate ); mQuery ); mHelp ); mBar );mExit .addActionListener( mAdd.addActionListener( mDel .addActionListener( mModify .addActionListener( mName.addActionListener( mScore .addActionListener( mBname.addActionListener( mBscore .addActionListener( mAbout .addActionListener( setContentPane( setVisible();););this );this );thisthisthisthisthis this this););););new MyPanel();true );nn" ,JOptionPane. elsemAdd)true );mDel )true );mModify )true );

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論