JAVA程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第1頁
JAVA程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第2頁
JAVA程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第3頁
JAVA程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第4頁
JAVA程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、java程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告學(xué) 號(hào):姓 名:班 級(jí):指導(dǎo)老師:陳業(yè)斌實(shí)驗(yàn)一、面向?qū)ο缶幊虒?shí)驗(yàn)一、 實(shí)驗(yàn)?zāi)康?掌握接口的編寫及使用理解繼承、多態(tài)掌握包的編寫以及如何使用包中的類二、預(yù)習(xí)內(nèi)容 java的基本語法知識(shí)三、實(shí)驗(yàn)設(shè)備與環(huán)境 裝有java語言工具軟件 (jcreator )的微機(jī)若干四、實(shí)驗(yàn)內(nèi)容 接口的編寫(1) 編輯interfaceclass.java,設(shè)保存在d:myjava目錄下。interface interfaceclass int i=4; int k=5; void func1(); int func2(int x);(2) 編輯useinterface.java,設(shè)保存在d:

2、myjava目錄下。class useinterface implements interfaceclass int j;public void func1() /在使用接口的類中一定要實(shí)現(xiàn)接口中的所有抽象方法 system.out.println(func1=+1); public int func2(int i) system.out.println(func2=+1);return i; public static void main(string srgs ) /interfaceclass.class x=new interfaceclass.class();不能對接口進(jìn)行實(shí)例化us

3、einterface x=new useinterface();x.func1();x.func2(k);多態(tài)在工資系統(tǒng)中的應(yīng)用下面給出一個(gè)根據(jù)雇員類型利用abstract方法和多態(tài)性完成工資單計(jì)算的程序。 employee是抽象類,employee的子類有boss(每星期發(fā)給他固定工資,而不計(jì)工作時(shí)間)、 commissionworker(除基本工資外還根據(jù)銷售額發(fā)放浮動(dòng)工資)、pieceworker(按其生產(chǎn)的產(chǎn)品數(shù)發(fā)放工資)、hourlyworker(根據(jù)工作時(shí)間長短發(fā)放工資)。該例的employee的每個(gè)子類都聲明為final,因?yàn)椴恍枰倮^承它們生成子類。對所有雇員類型都使用earn

4、ings()方法,但每個(gè)人掙的工資按他所屬的雇員類計(jì)算,所有雇員類都是從超類earnings()派出生的。所有在超類中聲明earnings()為抽象方法,并且對于每個(gè)子類都提供恰當(dāng)?shù)膃arnings()的實(shí)現(xiàn)方法。為了計(jì)算雇員的工資,程序僅僅使用雇員對象的一個(gè)超類引導(dǎo) 并調(diào)用earnings()方法。在一個(gè)實(shí)際的工資系統(tǒng)中,各種employee對象的引用可以通過一個(gè)employee引用數(shù)組來實(shí)現(xiàn)。程序依次使用數(shù)組的每個(gè)元素(employee引用)調(diào)用每個(gè)對象的employee()方法。(1)編輯test.java,設(shè)保存在d:myjava目錄下。 abstract class employee

5、 private string firstname; private string lastname; public employee(string first,string last) firstname=first; lastname=last; public string getemployeename() return firstname;public string getlastname() return lastname;public string tostring() return firstname+lastname;public abstract string earning

6、s();/定義boss類,為employee的子類final class boss extends employee private double weeklysalary; public boss(string frist,string last,double s) super(frist,last);setweeklysalary(s); public void setweeklysalary(double s) weeklysalary=(s0?s:0); public string earnings() return boss+super.tostring();/定義commissio

7、mworker類,為employee的子類final class commissionworker extends employee private double salary; private double commission; private int quantity; public commissionworker(string first,string last,double s,double c,int q) super(first,last); setsalary(s); setcommission(c); setqusntily(q); /*public string earn

8、ings() */public void setqusntily(double s) salary=(s0?s:0);public double setcommission(double c) return commission=(c0?c:0); public string earnings() double i=salary+commission+quantity; return double.valueof(i).tostring(); public string tostring() returncommissionworker+super.tostring(); public voi

9、d setsalary(double s) salary=s; /定義pieceworker類,為employee的子類 final class pieceworker extends employee private double wagepiece;private int quantity;public pieceworker(string first,string last,double w,int q) super(first,last); setwage(w); setquantity(q); public void setwage(double w) wagepiece=(w0?w

10、:0); public double setquantity(int q) return q+wagepiece; public string tostring() return piecewoeker+super.tostring(); public string earnings() returndouble.valueof(wagepiece+quantity).tostring(); /定義hourlyworker類,為employee的子類 class hourlyworker extends employee private double wage; private double

11、hours; public hourlyworker(string first,string last ,double w,double h) super(first,last); setwage(w); sethours(h); public void setwage (double w) wage=(w0?w:0); public void sethours(double h) hours=(h=0&h168?h:0); public string earnings() return hourlyworker+super.tostring(); class text public stat

12、ic void main(string args ) /使用超類聲明ref employee ref; string out=;/分別定義各子類 boss b=new boss(hohn,smith,800.00); commissionworker c=new commissionworker(sue,hones,400.00,3.0,150); pieceworker p=new pieceworker(bob,lewis,2.5,200); hourlyworker h=new hourlyworker(karen,price,13.75,40);/使用子類分別實(shí)例化ref=b;out+

13、=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

14、;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,設(shè)保存在d:myjava目錄下。package mypackage;public class calculate private int a; public calculate(int a) this.a=a;system.out.println(from constrar

15、tion+this.a); public double volume(double height,double width,double depth) return height*width*depth; int add(int x, int y) return x+y; protected void a() system .out.println(from constration+a); 編譯,查看d:myjava目錄下是否生成了myoackage文件夾,在該文件夾中是否有calculate.class文件。 (2) 編輯interfaceclass.java,設(shè)保存在d:myjava目錄下

16、。 import mypackage.calculate;class packagedemo public static void main(string ags ) calculate c=new calculate(10); double s=c.volume(5,6,7); system.out.println(s); /int b=c.add(5,6); /c.a(); 五、實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)二、異常處理實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?異常的生產(chǎn)及捕獲自定義異常及其使用二、預(yù)習(xí)內(nèi)容 面向?qū)ο蟮幕局R(shí)三、實(shí)驗(yàn)設(shè)備與環(huán)境 裝有java語言工具軟件 (jcreator )的微機(jī)若干四、實(shí)驗(yàn)內(nèi)容 異常的捕獲計(jì)算

17、兩數(shù)相除并輸出結(jié)果。使用兩個(gè)catch子句,分別捕捉除數(shù)為0的異常和參數(shù)輸入有誤異常。編輯ex1.java,保存在d:myjava目錄下。import java.io.*;class ex1public static void main(string args ) try bufferedreader strin=new bufferedreader( new inputstreamreader(system.in); system.out.print(請輸入除數(shù):); string cl=strin.readline(); int a=integer .parseint(cl); syste

18、m .out .print(請輸入被除數(shù):); cl=strin .readline(); int b=integer .parseint(cl); int c=b/a; system .out .println(商為:+c); /捕獲與i/o有關(guān)的異常 catch(ioexception e)e .printstacktrace () ; /捕獲數(shù)值轉(zhuǎn)化時(shí)的異常,如不能將字符轉(zhuǎn)化成數(shù)值 catch(numberformatexception e) system.out.println(請輸入整數(shù)!); /e .printstacktrace(); /捕獲除數(shù)為0的異常 catch(arith

19、meticexception e) system .out .println(除數(shù)不可以0!); /e .printstacktrace(); 編譯并運(yùn)行,當(dāng)輸入除數(shù)為0時(shí),將有異常出現(xiàn),當(dāng)輸入的不是整數(shù)時(shí),如將30輸成了3o,出現(xiàn)的是另一種異常。定義異常編寫程序包含自定義異常,當(dāng)輸入數(shù)值為13和4時(shí)拋出該異常。編輯ex2.java,設(shè)保存在d:myjava目錄下。 class ex2 extends exception ex2(string msg) super(msg); class myex private int x; void setx(int x) this.x=x; void f

20、1() throws ex2 if(x=13) throw new ex2(i dont like 13!); else if(x=4) throw new ex2(i dont like 4!); else system .out.println(100/x);public static void main(string args ) myex a=new myex(); try a.setx(5); /a.setx(13);/a.setx(4);/a.setx(0);a.f1(); catch(exception e) system.out.println(get message:+e.g

21、etmessage(); 編譯并運(yùn)行,分別取消注釋上面程序中被注釋的語句。當(dāng)釋放a.setx(13)語句后,查看運(yùn)行結(jié)果,當(dāng)釋放a.setx(4)語句后,查看運(yùn)行結(jié)果。五、實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)三、gui(圖形用戶接口)實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?掌握用mouselistener和mousemotionlistener接口處處理鼠標(biāo)事件mouse event的方法。掌握制作菜單及處理菜單事件的方法掌握創(chuàng)建對話框及定位、顯示、激活和關(guān)閉對話框的方法二、預(yù)習(xí)內(nèi)容 圖形用戶接口編程所需的基本類及使用方法三、實(shí)驗(yàn)設(shè)備與環(huán)境 裝有java語言工具軟件 (jcreator )的微機(jī)若干四、實(shí)驗(yàn)內(nèi)容 制作一個(gè)簡單的畫板編輯mo

22、u.java,設(shè)保存在d:myjava目錄下。import java.applet.*;import java.awt.*;import java.awt.event.*;public class mou extends applet implements mousemotionlistener int x= -1,y= -1; public void init() setbackground(color.cyan); addmousemotionlistener(this); public void paint(graphics g) if(x!= -1&y!= -1) g.setcolor

23、(color.red); g.drawline(x,y,x,y); public void mousedragged(mouseevent e) x=(int)e.getx(); y=(int)e.gety(); public void mousemoved(mouseevent e) /由于使用的是listener,需要將其他不重載的方/法,列舉在這里 public void update(graphics g) paint(g); public static void main(string args) mou mou=new mou(); mou.setvisible(true); mo

24、u.init(); mou.paint() 編譯并運(yùn)行查看結(jié)果.菜單的編寫編輯testmenu.java,設(shè)保存在d:myjava目錄下。import java.awt.*;import java.awt.event.*;import java.awt.event.itemevent;class mymenhframe extends frame implements actionlistener,itemlistener menubar m_menubar; menu menufile,menuedit,m_edit_paste; menuitem mi_file_open,mi_file_

25、close,mi_file_exit,mi_edit_copy; menuitem pi_new,pi_del,pi_pro,mi_paste_all,mi_paste_part; checkboxmenuitem mi_edit_cut; popupmenu popm; textarea ta; public void itemstatechanged(itemevent e) mymenhframe() super(擁有菜單的窗口); /指定窗口標(biāo)題 ta=new textarea(no choice,5,20); ta.addmouselistener(new handlemouse(t

26、his); /文本域響應(yīng)鼠標(biāo)事件 add(center,ta); /創(chuàng)建彈出式菜單 popm=new popupmenu(); pi_new=new menuitem(新建); pi_new.addactionlistener(this); popm.add(pi_new); pi_del=new menuitem(刪除); pi_del.addactionlistener(this); popm.add(pi_del); pi_pro=new menuitem(屬性); pi_pro.addactionlistener(this); popm.add(pi_pro); /將彈出式菜單加在文本

27、域上 ta.add(popm); m_menubar=new menubar(); /創(chuàng)建菜單欄 menufile=new menu(文件); /創(chuàng)建菜單項(xiàng)、菜單自項(xiàng)并指定快捷鍵 mi_file_open=new menuitem(打開,new menushortcut(o); mi_file_close=new menuitem(關(guān)閉); mi_file_exit=new menuitem(退出); mi_file_exit.setshortcut(new menushortcut(x); mi_file_open.setactioncommand(打開); mi_file_close.se

28、tactioncommand(退出); mi_file_open.addactionlistener(this); mi_file_close.addactionlistener(this); /自身作為監(jiān)視器 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=new menu(編輯)

29、; mi_edit_copy=new menuitem(復(fù)制); mi_edit_cut=new checkboxmenuitem(剪切); m_edit_paste=new menu(粘貼); mi_paste_all=new menuitem(全部粘貼); mi_paste_part=new menuitem(部分粘貼); mi_edit_copy.addactionlistener(this); mi_edit_cut.additemlistener(this); m_edit_paste.add(mi_paste_part);/ m_edit_paste.additemlistener

30、(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); /在窗口中添加菜單欄 public void actionperformed(action

31、event e) if(e.getactioncommand()=退出) dispose(); system.exit(0); elseta.settext(e.getactioncommand(); public void itenstatechanged(itemevent e) if(e.getsource()=mi_edit_cut)if(checkboxmenuitem)e.getsource().getstate() ta.settext(choose+(checkboxmenuitem)e.getsource().getlabel();/將時(shí)間小時(shí)在文/本框中顯示else ta.

32、settext(no choose+(checkboxmenuitem)e.getsource().getlabel(); class handlemouse extends mouseadapter /處理鼠標(biāo)事件類 mymenhframe m_parent; handlemouse(mymenhframe mf) m_parent=mf; public void mousereleased(mouseevent e) /鼠標(biāo)按鍵松開事件彈出菜單 if(e.ispopuptrigger()/檢查鼠標(biāo)事件是否是由彈出菜單引發(fā)的m_parent.popm.show(component)e.get

33、source(),e.getx(),e.gety();public static void main(string args)mymenhframe mmf=new mymenhframe();mmf.setsize(400,300);mmf.setvisible(true);編譯并運(yùn)行testmenu.class查看結(jié)果。使用dialog實(shí)驗(yàn)消息對話框和一般對話框編輯testdialog.java,設(shè)保存在d:myjava目錄下。 import java.awt.*;import java.awt.event.*;public class testdialog public static v

34、oid main(string args ) mydialogframe df=new mydialogframe(); class mydialogframe extends frameimplements actionlistener,componentlistener dialog megdlg,inoutdlg; button btn1,btn2,btny,btnn,btnr; textfield tf=new textfield(no imformation,45); textfield getmeg=new textfield(inout imformation,10); mydi

35、alogframe() super(use dialog); btn1=new button(隱藏); btn2=new button(詢問); btny=new button(是); btnn=new button(否); btnr=new button(返回); setlayout(new flowlayout(); add(tf); add(btn1); add(btn2); btn1.addcomponentlistener(this); this.addwindowlistener(new winadpt();/frame響應(yīng)窗口關(guān)閉事件 btn1.addactionlistener

36、(this); btn2.addactionlistener(this); btny.addactionlistener(this); btnn.addactionlistener(this); btnr.addactionlistener(this); setsize(350,150); show(); public void actionperformed(actionevent e) /實(shí)現(xiàn)action listener中的方法 if(e.getactioncommand()=隱藏) megdlg=new dialog(this, true?,true); panel p1=new pa

37、nel(); p1.add(new label(continue?); megdlg.add(center,p1); panel p2=new panel(); p2.add(btny); p2.add(btnn); megdlg.add(south,p2); megdlg.setsize(200,100); megdlg.show();else if(e.getactioncommand()=響應(yīng)) inoutdlg=new dialog(this, input the imformation); inoutdlg.add(center,getmeg); inoutdlg.add(south

38、,btnr); inoutdlg.setsize(200,100); /inoutdlg.addfocuslistener(new mydialogframe();/addfocuslistener(this); inoutdlg.show(); else if(e.getactioncommand()=是) megdlg.dispose(); btn1.setvisible(false); else if(e.getactioncommand()=否) megdlg.dispose(); else if(e.getactioncommand()=返回) tf.settext(getmeg.g

39、ettext()+是對話框的輸入); inoutdlg.dispose(); /列舉component listener中未重載的方法public void componentshown(componentevent e) public void componentresized(componentevent e) public void componentmoved(componentevent e) public void componenthidden(componentevent e) /實(shí)現(xiàn)componentlistener中的方法 tf.settext(按鈕+(button)e.g

40、etcomponent().getlabel()+獲得了注意的焦點(diǎn)); public void fousgained(focusevent e) /處理focuslistener中的方法 getmeg.settext(對話框+(dialog)e.getcomponent().gettitle()+獲得了注意的焦點(diǎn)); public void focuslost(focusevent e) class winadpt extends windowadapter public void windowclosing(windowevent e) /處理關(guān)閉窗口事件 (frame)e.getwindo

41、w().dispose();system.exit(0);編譯并運(yùn)行查看結(jié)果五、實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)四、多線程實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?掌握多線程的實(shí)現(xiàn)方法學(xué)會(huì)利用多線程來顯示動(dòng)畫二、預(yù)習(xí)內(nèi)容 線程與進(jìn)程的基礎(chǔ)知識(shí)三、實(shí)驗(yàn)設(shè)備與環(huán)境 裝有java語言工具軟件 (jcreator )的微機(jī)若干四、實(shí)驗(yàn)內(nèi)容使用runnable接口的方法實(shí)現(xiàn)多線程編輯testrunnable.java,保存在d:myjava目錄下。import java.applet.*;import java.awt.*;public class testrunnable extends applet implements runnable l

42、abel prompt1=new lable(“the first thread”); label prompt2=new lable(“the second thread”); textfield threadfirst=new textfield(14); textfield threadsecond=new textfield(14);thread thread1, thread2;int count1=0,count2=o0;public void inin() add(prompt1); add(threadfirst); add(prompt2); add(threadsecond

43、); public void start() thread1=new thread(this, “firstthread”); thread2=new thread(this, “secondthread”); thread1.start(); thraed2.start(); public void run() string currentrunning; while(true) try thread.sleep(int)(math.random()*10000); catch(exception e) currentrunning=thread.currebttheard().getnam

44、e(); if(currentrunning.equals(“firsttheard”) count1+; threadfirst.settext(“the first thread”+count1+“use”); else if(currentrunning.equals(“secondthread”) count2+; threadsecond.settext(“the second thread”+count2+“use”); (1) 編譯testrunnable.java。(2) 編輯testrunnable.htm,要求與testrunnable.class在同一目錄下。(3) 運(yùn)行

45、testrunnable.htm。 實(shí)現(xiàn)簡單動(dòng)畫實(shí)現(xiàn)一個(gè)簡單動(dòng)畫,效果為一個(gè)球由小到大,從屏幕左側(cè)滾動(dòng)到右側(cè)。編輯testrunnable.java,設(shè)保存在d:myjava目錄下。import java.applet.*;import java.awt.*;public class mov extends applet int x1=50,x2=5,y1=25,y2=5; public void paint(graphics g) int w=this.getwhidth(); int h=this.get.height(); if(x1=w) x1=50; if(x2h) x2=5; g.

46、setcolor(color.blue); g.filloval(x1,y1,x2,x2); g.drawoval(x1,y1,x2,x2); x1+=50; x2+=5; try thread.sleep(500); catch(exception e) repaint();(1) 編譯mov.java(2) 編輯mov.htm,要求與mov.class在同一目錄下。 (3) 運(yùn)行mov.htm。五、實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)五、輸入輸出流實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?了解文件的概念和文件對象的創(chuàng)建方法了解fileinputstream和fileoutoutstream的基本概念學(xué)會(huì)創(chuàng)建文件輸入輸出流掌握使用文件輸入

47、輸出流讀寫文件的方法二、預(yù)習(xí)內(nèi)容 輸入輸出類的使用方法三、實(shí)驗(yàn)設(shè)備與環(huán)境 裝有java語言工具軟件 (jcreator )的微機(jī)若干四、實(shí)驗(yàn)內(nèi)容 編寫程序讀取文本文件內(nèi)容編輯testfiledialog.java,設(shè)保存在d:myjava目錄下。import java.io.*;import java.awt.*;import java.awt.event*;public class testfiledialog public static void main(string args ) new fileframe(); class fileframe extends frame implem

48、ents actionlistener textarea ta; button open,quit; filedialog fd; filefrane() super(“獲取顯示文本文件”); ta=new textarea(10,45); open=new button(“打開”) quit=new button(“關(guān)閉”) open.addactionlistener(this); quit.addactionlistener(this); setlayout(new flowlayout(); add(ta); add(open); add(quit); show(); public v

49、oid actionperformed(actionevent e) if (e.getactioncommand()=“打開”) fd=new filedialog(this, “打開文件”,filedialog.load;) fd.setdirectory(“d:”); fd.show(); try file myfile=new file(fd.getdirectory(),fd.getfile(); system.out.print(myfile); filereader inb=new bufferedreaser(infile); string filecountent=“”,ste=“”; while(filecontent-inb.teadline()!=null) str=srt+filecontent+“n”; ta.append(filecontent+“n”); catch(toexception ie) system.out.println(ie.t

溫馨提示

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

評(píng)論

0/150

提交評(píng)論