用接口设计并实现面积与周长计算.doc_第1页
用接口设计并实现面积与周长计算.doc_第2页
用接口设计并实现面积与周长计算.doc_第3页
用接口设计并实现面积与周长计算.doc_第4页
用接口设计并实现面积与周长计算.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【任务2】用接口设计并实现面积与周长计算【要求】定义一个接口,其中包含一个计算面积的抽象方法和一个计算周长的抽象方法;输入数据为圆的半径、三角形的三条边长、矩形的长和宽,对于用户的输入要有友好提示;程序能够排除输入过程中的非法数据(如:输入的长度数据为负数或字符;输入的三角形三条边数据不能组成三角形;计算圆、三角形、矩形的面积和周长,并输出原始数据和结算结果。【该实验属于给定题目和要求,学生自己设计方案并加以实现的实验,故属于设计性实验。】【该实验涉及到的知识点】输入与输出格式设计;数据类型及其异常处理;循环及其嵌套;算法设计;类;方法;接口;包。=第一次实验:计算半径为3的圆的周长,运行效果见图1。 图1第二次实验:计算边长分别为3、4、5的三角形的面积和周长,运行效果见图2。图2第三次实验:计算边长为7和8的矩形的面积,运行效果见图3。 图3源程序如下:category包:Shape.java文件:/* * category为类的设计与构造包 * 设计日期:2010年9月27日 */package category;public interface Shape/* * getArea()为计算面积的抽象方法 * getCircumference()为计算周长的抽象方法 */public abstract double getArea();/获取面积public abstract double getCircumference();/获取周长Circle.java文件:package category;/* * 圆类的设计 * 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;/* * 三角形类的设计 * 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;/* * 矩形类的设计 * 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方法):/* * 用接口设计并实现面积与周长计算 * 程序编写员:刘晨旭 * 编制日期:2010年9月26日 * 最后一次修改日期:2010年9月27日 */package graphic;/声明一个图形包import category.*;/导入类的设计与构造包import javax.swing.JOptionPane;/* * 主函数 * 负责实现程序的整个功能 */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;/记录输入的数据,可用来判断输入是否合法boolean flag=true;boolean indication=true;/* * 进行初次选择 * 让用户选择进行图形的周长运算还是面积运算 * 【1】计算面积 * 【2】计算周长 * 【3】计算面积与周长 */while(flag)str_Select=JOptionPane.showInputDialog(您想计算图形的面积还是周长?n【1】面积n【2】周长n【3】面积与周长);trydata_input_one=Integer.parseInt(str_Select);/* * 为了防止循环时出现indication的死循环状况 * 例如:假设首次输入操作非法,则indication会被赋值false,此时出现死循环 * 故在此仍要重新声明indication的值为true */indication=true;if(data_input_one3)JOptionPane.showMessageDialog(null,您输入的数字不在选项内!,警告,JOptionPane.INFORMATION_MESSAGE);indication=false;catch(Exception e)JOptionPane.showMessageDialog(null,非法数据,警告,JOptionPane.INFORMATION_MESSAGE);indication=false;if(indication)flag=false;/* * 选择要进行哪种图形的运算 * 【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,您输入的数字不在选项内!,警告,JOptionPane.INFORMATION_MESSAGE);indication=false;catch(Exception e)JOptionPane.showMessageDialog(null,非法数据,警告,JOptionPane.INFORMATION_MESSAGE);indication=false;if(indication)flag=false;/* * 各种图形属性计算的实现 * 先进行数据的输入,然后再根据要求输出 */* * 输入语句的实现 */flag=true;switch(data_input_two)case 1:/圆的数据输入while(flag)tryString strRadius=JOptionPane.showInputDialog(请输入圆的半径:);radius=Double.parseDouble(strRadius);indication=true;if(radius=0)JOptionPane.showInputDialog(null,您输入的数小于等于零!,警告,JOptionPane.INFORMATION_MESSAGE);indication=false;catch(Exception e)JOptionPane.showMessageDialog(null,非法数据,警告,JOptionPane.INFORMATION_MESSAGE);indication=false;if(indication)flag=false;break;case 2:/三角形的数据输入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,您输入的三个数无法构成三角形!,警告,JOptionPane.INFORMATION_MESSAGE);indication=false;catch(Exception e)JOptionPane.showMessageDialog(null,非法数据,警告,JOptionPane.INFORMATION_MESSAGE);indication=false;if(indication)flag=false;break;case 3:/矩形的数据输入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,非法数据,警告,JOptionPane.INFORMATION_MESSAGE);indication=false;if(indication)flag=false;break;/* * 具体属性的计算 * 先根据data_input_one的取值判断需要计算的是哪个属性值(面积还是周长) * 然后根据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;/* * 输出语句的实现 * 先根据data_input_two的取值判断输出的是哪种图形 * 然后根据data_input_one的取值判断需要输出哪些属性值(面积还是周长) */switch(data_input_two)case 1:switch(data_input_one)case 1:JOptionPane.showMessageDialog(null,圆的半径:+C.getRadius()+n面积:+area,结果,JOptionPane.INFORMATION_MESSAGE);break;case 2:JOptionPane.showMessageDialog(null,圆的半径:+C.getRadius()+n周长:+circumference,结果,JOptionPane.INFORMATION_MESSAGE);break;case 3:JOptionPane.showMessageDialog(null,圆的半径:+C.getRadius()+n面积:+area+n周长:+circumference,结果,JOptionPane.INFORMATION_MESSAGE);break;break;case 2:switch(data_input_one)case 1:JOptionPane.showMessageDialog(null,三角形的三条边长:+T.getA()+ +T.getB()+ +T.getC()+n面积:+area,结果,JOptionPane.INFORMATION_MESSAGE);break;case 2:JOptionPane.showMessageDialog(null,三

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论