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

下載本文檔

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

文檔簡(jiǎn)介

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論