用接口設(shè)計并實現(xiàn)面積與周長計算.doc_第1頁
用接口設(shè)計并實現(xiàn)面積與周長計算.doc_第2頁
用接口設(shè)計并實現(xiàn)面積與周長計算.doc_第3頁
用接口設(shè)計并實現(xiàn)面積與周長計算.doc_第4頁
用接口設(shè)計并實現(xiàn)面積與周長計算.doc_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

【任務(wù)2】用接口設(shè)計并實現(xiàn)面積與周長計算【要求】定義一個接口,其中包含一個計算面積的抽象方法和一個計算周長的抽象方法;輸入數(shù)據(jù)為圓的半徑、三角形的三條邊長、矩形的長和寬,對于用戶的輸入要有友好提示;程序能夠排除輸入過程中的非法數(shù)據(jù)(如:輸入的長度數(shù)據(jù)為負(fù)數(shù)或字符;輸入的三角形三條邊數(shù)據(jù)不能組成三角形;計算圓、三角形、矩形的面積和周長,并輸出原始數(shù)據(jù)和結(jié)算結(jié)果?!驹搶嶒瀸儆诮o定題目和要求,學(xué)生自己設(shè)計方案并加以實現(xiàn)的實驗,故屬于設(shè)計性實驗?!俊驹搶嶒炆婕暗降闹R點】輸入與輸出格式設(shè)計;數(shù)據(jù)類型及其異常處理;循環(huán)及其嵌套;算法設(shè)計;類;方法;接口;包。=第一次實驗:計算半徑為3的圓的周長,運行效果見圖1。 圖1第二次實驗:計算邊長分別為3、4、5的三角形的面積和周長,運行效果見圖2。圖2第三次實驗:計算邊長為7和8的矩形的面積,運行效果見圖3。 圖3源程序如下:category包:Shape.java文件:/* * category為類的設(shè)計與構(gòu)造包 * 設(shè)計日期:2010年9月27日 */package category;public interface Shape/* * getArea()為計算面積的抽象方法 * getCircumference()為計算周長的抽象方法 */public abstract double getArea();/獲取面積public abstract double getCircumference();/獲取周長Circle.java文件:package category;/* * 圓類的設(shè)計 * radius為圓的半徑 */public class Circle implements Shapeprivate double radius=0;public Circle(double r)radius=r;public double getRadius()return this.radius;public double getArea()return Math.PI*radius*radius;public double getCircumference()return 2*Math.PI*radius;Triangle.java文件:package category;/* * 三角形類的設(shè)計 * a、b、c為三角形的三條邊 */public class Triangle implements Shapeprivate double a=0;private double b=0;private double c=0;public Triangle(double a,double b,double c)this.a=a;this.b=b;this.c=c;public double getA()return this.a;public double getB()return this.b;public double getC()return this.c;public double getArea()/* * 運用海倫公式計算三角形的面積 */double p=(this.a+this.b+this.c)/2;return Math.sqrt(p*(p-this.a)*(p-this.b)*(p-this.c);public double getCircumference()return this.a+this.b+this.c;Rentangle.java文件:package category;/* * 矩形類的設(shè)計 * length為矩形的長 * weight為矩形的寬 */public class Rentangle implements Shapeprivate double length=0;private double width=0;public Rentangle(double length,double width)this.length=length;this.width=width;public double getLength()return this.length;public double getWidth()return this.width;public double getArea()return this.length*this.width;public double getCircumference()return 2*(this.length+this.width);graphic包:Graphic_Calculation.java文件(main方法):/* * 用接口設(shè)計并實現(xiàn)面積與周長計算 * 程序編寫員:劉晨旭 * 編制日期:2010年9月26日 * 最后一次修改日期:2010年9月27日 */package graphic;/聲明一個圖形包import category.*;/導(dǎo)入類的設(shè)計與構(gòu)造包import javax.swing.JOptionPane;/* * 主函數(shù) * 負(fù)責(zé)實現(xiàn)程序的整個功能 */public class Graphic_Calculation public static void main(String args) double radius=0;/圓的半徑double a=0,b=0,c=0;/三角形的三條邊double length=0,width=0;/矩形的長和寬double area=0,circumference=0;String str_Select,str_Graphic;/* * data_input_one:選擇計算圖形的哪種屬性,面積還是周長 * data_input_two:選擇計算哪種圖形,圓、三角形還是矩形 */int data_input_one=0,data_input_two=0;/記錄輸入的數(shù)據(jù),可用來判斷輸入是否合法boolean flag=true;boolean indication=true;/* * 進(jìn)行初次選擇 * 讓用戶選擇進(jìn)行圖形的周長運算還是面積運算 * 【1】計算面積 * 【2】計算周長 * 【3】計算面積與周長 */while(flag)str_Select=JOptionPane.showInputDialog(您想計算圖形的面積還是周長?n【1】面積n【2】周長n【3】面積與周長);trydata_input_one=Integer.parseInt(str_Select);/* * 為了防止循環(huán)時出現(xiàn)indication的死循環(huán)狀況 * 例如:假設(shè)首次輸入操作非法,則indication會被賦值false,此時出現(xiàn)死循環(huán) * 故在此仍要重新聲明indication的值為true */indication=true;if(data_input_one3)JOptionPane.showMessageDialog(null,您輸入的數(shù)字不在選項內(nèi)!,警告,JOptionPane.INFORMATION_MESSAGE);indication=false;catch(Exception e)JOptionPane.showMessageDialog(null,非法數(shù)據(jù),警告,JOptionPane.INFORMATION_MESSAGE);indication=false;if(indication)flag=false;/* * 選擇要進(jìn)行哪種圖形的運算 * 【1】圓 * 【2】三角形 * 【3】矩形 */flag=true;/對flag重新賦真值while(flag)str_Graphic=JOptionPane.showInputDialog(要計算的是什么圖形?n【1】圓n【2】三角形n【3】矩形);trydata_input_two=Integer.parseInt(str_Graphic);indication=true;if(data_input_two3)JOptionPane.showMessageDialog(null,您輸入的數(shù)字不在選項內(nèi)!,警告,JOptionPane.INFORMATION_MESSAGE);indication=false;catch(Exception e)JOptionPane.showMessageDialog(null,非法數(shù)據(jù),警告,JOptionPane.INFORMATION_MESSAGE);indication=false;if(indication)flag=false;/* * 各種圖形屬性計算的實現(xiàn) * 先進(jìn)行數(shù)據(jù)的輸入,然后再根據(jù)要求輸出 */* * 輸入語句的實現(xiàn) */flag=true;switch(data_input_two)case 1:/圓的數(shù)據(jù)輸入while(flag)tryString strRadius=JOptionPane.showInputDialog(請輸入圓的半徑:);radius=Double.parseDouble(strRadius);indication=true;if(radius=0)JOptionPane.showInputDialog(null,您輸入的數(shù)小于等于零!,警告,JOptionPane.INFORMATION_MESSAGE);indication=false;catch(Exception e)JOptionPane.showMessageDialog(null,非法數(shù)據(jù),警告,JOptionPane.INFORMATION_MESSAGE);indication=false;if(indication)flag=false;break;case 2:/三角形的數(shù)據(jù)輸入while(flag)tryString strA=JOptionPane.showInputDialog(請輸入三角形的第一條邊長:);String strB=JOptionPane.showInputDialog(請輸入三角形的第二條邊長:);String strC=JOptionPane.showInputDialog(請輸入三角形的第三條邊長:);a=Double.parseDouble(strA);b=Double.parseDouble(strB);c=Double.parseDouble(strC);indication=true;if(a=0|b=0|c=0|a+b=c|b+c=a|c+a=b)JOptionPane.showMessageDialog(null,您輸入的三個數(shù)無法構(gòu)成三角形!,警告,JOptionPane.INFORMATION_MESSAGE);indication=false;catch(Exception e)JOptionPane.showMessageDialog(null,非法數(shù)據(jù),警告,JOptionPane.INFORMATION_MESSAGE);indication=false;if(indication)flag=false;break;case 3:/矩形的數(shù)據(jù)輸入while(flag)tryString strLength=JOptionPane.showInputDialog(請輸入矩形的長:);String strWidth=JOptionPane.showInputDialog(請輸入矩形的寬:);length=Double.parseDouble(strLength);width=Double.parseDouble(strWidth);indication=true;catch(Exception e)JOptionPane.showMessageDialog(null,非法數(shù)據(jù),警告,JOptionPane.INFORMATION_MESSAGE);indication=false;if(indication)flag=false;break;/* * 具體屬性的計算 * 先根據(jù)data_input_one的取值判斷需要計算的是哪個屬性值(面積還是周長) * 然后根據(jù)data_input_two的取值判斷需要計算的是哪種圖形 */Circle C=new Circle(radius);Triangle T=new Triangle(a,b,c);Rentangle R=new Rentangle(length,width);switch(data_input_one)case 1:/計算圖形的面積switch(data_input_two)case 1:area=C.getArea();break;case 2:area=T.getArea();break;case 3:area=R.getArea();break;break;case 2:/計算圖形的周長switch(data_input_two)case 1:circumference=C.getCircumference();break;case 2:circumference=T.getCircumference();break;case 3:circumference=R.getCircumference();break;break;case 3:/計算圖形的面積與周長switch(data_input_two)case 1:area=C.getArea();circumference=C.getCircumference();break;case 2:area=T.getArea();circumference=T.getCircumference();break;case 3:area=R.getArea();circumference=R.getCircumference();break;break;/* * 輸出語句的實現(xiàn) * 先根據(jù)data_input_two的取值判斷輸出的是哪種圖形 * 然后根據(jù)data_input_one的取值判斷需要輸出哪些屬性值(面積還是周長) */switch(data_input_two)case 1:switch(data_input_one)case 1:JOptionPane.showMessageDialog(null,圓的半徑:+C.getRadius()+n面積:+area,結(jié)果,JOptionPane.INFORMATION_MESSAGE);break;case 2:JOptionPane.showMessageDialog(null,圓的半徑:+C.getRadius()+n周長:+circumference,結(jié)果,JOptionPane.INFORMATION_MESSAGE);break;case 3:JOptionPane.showMessageDialog(null,圓的半徑:+C.getRadius()+n面積:+area+n周長:+circumference,結(jié)果,JOptionPane.INFORMATION_MESSAGE);break;break;case 2:switch(data_input_one)case 1:JOptionPane.showMessageDialog(null,三角形的三條邊長:+T.getA()+ +T.getB()+ +T.getC()+n面積:+area,結(jié)果,JOptionPane.INFORMATION_MESSAGE);break;case 2:JOptionPane.showMessageDialog(null,三

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論