工學(xué)Java程序設(shè)計(jì)實(shí)驗(yàn)2_第1頁
工學(xué)Java程序設(shè)計(jì)實(shí)驗(yàn)2_第2頁
工學(xué)Java程序設(shè)計(jì)實(shí)驗(yàn)2_第3頁
工學(xué)Java程序設(shè)計(jì)實(shí)驗(yàn)2_第4頁
工學(xué)Java程序設(shè)計(jì)實(shí)驗(yàn)2_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、學(xué)生實(shí)驗(yàn)報(bào)告冊(理工類)課程名稱:Java程序設(shè)計(jì)專業(yè)班級:學(xué)生學(xué)號:學(xué)生姓名:所屬院部:指導(dǎo)教師:2020學(xué)年 第學(xué)期金陵科技學(xué)院教務(wù)處制實(shí)驗(yàn)報(bào)告書寫要求實(shí)驗(yàn)報(bào)告原則上要求學(xué)生手寫,要求書寫工整。若因課程特點(diǎn)需打印的,標(biāo)題采用四號黑體,正文采用小四號宋體,單倍行距。紙張一律采用A4的紙張。實(shí)驗(yàn)報(bào)告書寫說明實(shí)驗(yàn)報(bào)告中實(shí)驗(yàn)?zāi)康暮鸵?、?shí)驗(yàn)儀器和設(shè)備、實(shí)驗(yàn)內(nèi)容與過程、實(shí)驗(yàn)結(jié)果與分析這四項(xiàng)內(nèi)容為必需項(xiàng)。教師可根據(jù)學(xué)科特點(diǎn)和實(shí)驗(yàn)具體要求增加項(xiàng)目。填寫注意事項(xiàng)(1)細(xì)致觀察,及時(shí)、準(zhǔn)確、如實(shí)記錄。(2)準(zhǔn)確說明,層次清晰。(3)盡量采用專用術(shù)語來說明事物。(4)外文、符號、公式要準(zhǔn)確,應(yīng)使用統(tǒng)一規(guī)定的名

2、詞和符號。(5)應(yīng)獨(dú)立完成實(shí)驗(yàn)報(bào)告的書寫,嚴(yán)禁抄襲、復(fù)印,一經(jīng)發(fā)現(xiàn),以零分論處。實(shí)驗(yàn)報(bào)告批改說明實(shí)驗(yàn)報(bào)告的批改要及時(shí)、認(rèn)真、仔細(xì),一律用紅色筆批改。實(shí)驗(yàn)報(bào)告的批改成績采用五級記分制或百分制,按金陵科技學(xué)院課堂教學(xué)實(shí)施細(xì)則中作業(yè)批閱成績評定要求執(zhí)行。實(shí)驗(yàn)報(bào)告裝訂要求實(shí)驗(yàn)批改完畢后,任課老師將每門課程的每個(gè)實(shí)驗(yàn)項(xiàng)目的實(shí)驗(yàn)報(bào)告以自然班為單位、按學(xué)號升序排列,裝訂成冊,并附上一份該門課程的實(shí)驗(yàn)大綱。實(shí)驗(yàn)項(xiàng)目名稱:面向?qū)ο缶幊虒?shí)驗(yàn)實(shí)驗(yàn)學(xué)時(shí):6同組學(xué)生姓名:實(shí)驗(yàn)地點(diǎn):實(shí)驗(yàn)日期:實(shí)驗(yàn)成績:批改教師:批改時(shí)間:實(shí)驗(yàn)1面向?qū)ο缶幊虒?shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康暮鸵螅?)熟悉Java幾種IDE(集成開發(fā)環(huán)境);重點(diǎn)是Ecli

3、pse(2)掌握接口的編寫及使用(3)理解繼承、多態(tài)(4)掌握包的編寫以及如何使用包中的類二、實(shí)驗(yàn)儀器和設(shè)備奔騰以上個(gè)人計(jì)算機(jī),裝有JAVA語言工具軟件 (Eclipse ),windows操作系統(tǒng)。三、實(shí)驗(yàn)內(nèi)容與過程類的封裝(1)聲明復(fù)數(shù)類,成員變量包括實(shí)部和虛部,成員方法包括實(shí)現(xiàn)復(fù)數(shù)的加法、減法class ComplexNumbers int real; /實(shí)部int imag;/虛部void plus() /實(shí)數(shù)加void subs() /實(shí)數(shù)減(2)聲明銀行類,成員變量包括賬號、儲戶姓名、開戶時(shí)間、身份證號碼、存款余額,成員方法包括開戶、存款、取款、查詢、銷戶。class BankCo

4、untlong BCNo;/賬號String Name;/儲戶姓名String InitTime;/開戶時(shí)間long ID;/身份證號碼double balance;/存款余額BankCount()/開戶void Saving()/存款void Withdraw()/取款void Inquire()/查詢void DeBankCount()/銷戶2類的繼承與多態(tài)多態(tài)在工資系統(tǒng)中的應(yīng)用下面給出一個(gè)根據(jù)雇員類型利用abstract方法和多態(tài)性完成工資單計(jì)算的程序。 Employee是抽象類,Employee的子類有Boss(每星期發(fā)給他固定工資,而不計(jì)工作時(shí)間)、 CommissionWorker

5、(除基本工資外還根據(jù)銷售額發(fā)放浮動工資)、PieceWorker(按其生產(chǎn)的產(chǎn)品數(shù)發(fā)放工資)、HourlyWorker(根據(jù)工作時(shí)間長短發(fā)放工資)。該例的Employee的每個(gè)子類都聲明為final,因?yàn)椴恍枰倮^承它們生成子類。對所有雇員類型都使用earnings()方法,但每個(gè)人掙的工資按他所屬的雇員類計(jì)算,所有雇員類都是從超類Earnings()派出生的。所有在超類中聲明earnings()為抽象方法,并且對于每個(gè)子類都提供恰當(dāng)?shù)膃arnings()的實(shí)現(xiàn)方法。為了計(jì)算雇員的工資,程序僅僅使用雇員對象的一個(gè)超類引導(dǎo) 并調(diào)用earnings()方法。在一個(gè)實(shí)際的工資系統(tǒng)中,各種Employ

6、ee對象的引用可以通過一個(gè)Employee引用數(shù)組來實(shí)現(xiàn)。程序依次使用數(shù)組的每個(gè)元素(Employee引用)調(diào)用每個(gè)對象的employee()方法。(1)編輯Test.java,設(shè)保存在D:myjava目錄下。 abstract class Employee private String firstName; private String lastName; public Employee(String first,String last) firstName=first; lastName=last; public String getEmployeeName() return firstN

7、ame;public String getLastName() return lastName;public String toString() return firstName+lastName;public abstract String earnings();/定義Boss類,為Employee的子類final class Boss extends Employee private double weeklySalary; public Boss(String frist,String last,double s) super(frist,last);setWeeklySalary(s)

8、; public void setWeeklySalary(double s) weeklySalary=(s>0?s:0); public String earnings() return "Boss"+super.toString();/定義CommissiomWorker類,為Employee的子類final class CommissionWorker extends Employee private double salary; private double commission; private int quantity; public Commissio

9、nWorker(String first,String last,double s,double c,int q) super(first,last); setSalary(s); setCommission(c); setQusntily(q); /*public String earnings() */public void setQusntily(double s) salary=(s>0?s:0);public double setCommission(double c) return commission=(c>0?c:0); public String earnings

10、() double i=salary+commission+quantity; return Double.valueOf(i).toString(); public String toString() return"CommissionWorker"+super.toString(); public void setSalary(double s) salary=s; /定義PieceWorker類,為Employee的子類 final class PieceWorker extends Employee private double wagePiece;private

11、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=(w>0?w:0); public double setQuantity(int q) return q+wagePiece; public String toString() return "PieceWoeker"+super.toString();

12、 public String earnings() returnDouble.valueOf(wagePiece+quantity).toString(); /定義HourlyWorker類,為Employee的子類 class HourlyWorker extends Employee private double wage; private double hours; public HourlyWorker(String first,String last ,double w,double h) super(first,last); setWage(w); setHours(h); pub

13、lic void setWage (double w) wage=(w>0?w:0); public void setHours(double h) hours=(h>=0&&h<168?h:0); public String earnings() return "HourlyWorker"+super.toString(); class Text public static void main(String args ) /使用超類聲明ref Employee ref; String out=""/分別定義各子類 Bo

14、ss 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)

15、;/使用子類分別實(shí)例化ref=b;out+=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&

16、quot;System.out.print(out);ref=p;out+=ref.toString()+"earned $"+ref.earnings()+"n"+p.toString()+"earned $"+p.earnings()+"n"System.out.print(out);ref=h;out+=ref.toString()+"earned $"+ref.earnings()+"n"+h.toString()+"earned $"+h.ear

17、nings()+"n"System.out.print(out);3接口的編寫(1) 編輯Interfaceclass.java。interface Interfaceclass int i=4; int k=5; void func1(); int func2(int x);(2) 編輯UseInterface.java。class UseInterface implements Interfaceclass int j;public void func1() /在使用接口的類中一定要實(shí)現(xiàn)接口中的所有抽象方法 System.out.println("func1=

18、"+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í)例化UseInterface x=new UseInterface();x.func1();x.func2(k);四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)五、實(shí)驗(yàn)體會(遇到問題及解決辦法,編程后的心得體會)實(shí)驗(yàn)項(xiàng)目名稱:異常處理 實(shí)

19、驗(yàn)學(xué)時(shí): 4 同組學(xué)生姓名:實(shí)驗(yàn)地點(diǎn):實(shí)驗(yàn)日期:實(shí)驗(yàn)成績:批改教師:批改時(shí)間:實(shí)驗(yàn)2 異常處理一、實(shí)驗(yàn)?zāi)康暮鸵螽惓5纳a(chǎn)及捕獲自定義異常及其使用二、實(shí)驗(yàn)儀器和設(shè)備奔騰以上個(gè)人計(jì)算機(jī),裝有JAVA語言工具軟件 (Eclipse ),windows操作系統(tǒng)。三、實(shí)驗(yàn)內(nèi)容與過程異常的捕獲計(jì)算兩數(shù)相除并輸出結(jié)果。使用兩個(gè)catch子句,分別捕捉除數(shù)為0的異常和參數(shù)輸入有誤異常。編輯Ex1.java,保存在D:myjava目錄下。import java.io.*;class Ex1public static void main(String args ) try BufferedReader stri

20、n=new BufferedReader( new InputStreamReader(System.in); System.out.print("請輸入除數(shù):"); String cl=strin.readLine(); int a=Integer .parseInt(cl); System .out .print("請輸入被除數(shù):"); cl=strin .readLine(); int b=Integer .parseInt(cl); int c=b/a; System .out .println("商為:"+c); /捕獲與I

21、/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(ArithmeticException e) System .out .println("除數(shù)不可以0!"); /e .printstackTrace(); 編譯并運(yùn)行,當(dāng)輸入除數(shù)為0時(shí),將有異常出現(xiàn),當(dāng)輸

22、入的不是整數(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 f1() throws Ex2 if(x=13) throw new Ex2("I don't like 13!"); else if(x=4) throw new E

23、x2("I don't 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.getMessage(); 編譯并運(yùn)行,分別取消注釋上面程序中被注釋的語句。當(dāng)釋放a.setX(13)語

24、句后,查看運(yùn)行結(jié)果,當(dāng)釋放a.setX(4)語句后,查看運(yùn)行結(jié)果。四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)五、實(shí)驗(yàn)體會(遇到問題及解決辦法,編程后的心得體會)實(shí)驗(yàn)項(xiàng)目名稱:圖形用戶接口 實(shí)驗(yàn)學(xué)時(shí): 6 同組學(xué)生姓名:實(shí)驗(yàn)地點(diǎn):實(shí)驗(yàn)日期:實(shí)驗(yàn)成績:批改教師:批改時(shí)間:實(shí)驗(yàn)3 圖形用戶接口一、實(shí)驗(yàn)?zāi)康暮鸵笳莆沼肕ouseListener和MouseMotionListener接口處處理鼠標(biāo)事件Mouse Event的方法。掌握制作菜單及處理菜單事件的方法掌握創(chuàng)建對話框及定位、顯示、激活和關(guān)閉對話框的方法二、實(shí)驗(yàn)儀器和設(shè)備奔騰以上個(gè)人計(jì)算機(jī),裝有JAVA語言工具軟件 (Eclipse ),win

25、dows操作系統(tǒng)。三、實(shí)驗(yàn)內(nèi)容與過程制作一個(gè)簡單的畫板編輯Mou.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

26、g) if(x!= -1&&y!= -1) g.setColor(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

27、 mou=new Mou(); mou.setVisible(true); mou.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_Ed

28、it_Paste; MenuItem mi_File_Open,mi_File_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(&q

29、uot;no choice",5,20); ta.addMouseListener(new HandleMouse(this); /文本域響應(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

30、.add(pi_Del); pi_Pro=new MenuItem("屬性"); pi_Pro.addActionListener(this); popM.add(pi_Pro); /將彈出式菜單加在文本域上 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=

31、new MenuItem("關(guān)閉"); mi_File_Exit=new MenuItem("退出"); mi_File_Exit.setShortcut(new MenuShortcut('x'); mi_File_Open.setActionCommand("打開"); mi_File_Close.setActionCommand("退出"); mi_File_Open.addActionListener(this); mi_File_Close.addActionListener(this);

32、 /自身作為監(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("編輯"); mi_Edit_Copy=new MenuItem("復(fù)制"); mi_Edit_Cut=new CheckboxMenuItem("

33、剪切"); 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(mi_Paste_All); mi_Paste

34、_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(ActionEvent e) if(e.getActionC

35、ommand()="退出") 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.

36、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(Com

37、ponent)e.getSource(),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 publ

38、ic static void 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(&quo

39、t;inout imformation",10); MyDialogFrame() 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);

40、btn1.addComponentListener(this); this.addWindowListener(new WinAdpt();/Frame響應(yīng)窗口關(guān)閉事件 btn1.addActionListener(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 Panel(); p1.add(new Label("continue?"); MegDlg.add("Center",p1); Panel p2=new Panel(); p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論