Java程序设计基础试验报告

上传人:飞*** 文档编号:50964404 上传时间:2018-08-11 格式:PDF 页数:6 大小:197.87KB
返回 下载 相关 举报
Java程序设计基础试验报告_第1页
第1页 / 共6页
Java程序设计基础试验报告_第2页
第2页 / 共6页
Java程序设计基础试验报告_第3页
第3页 / 共6页
Java程序设计基础试验报告_第4页
第4页 / 共6页
Java程序设计基础试验报告_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《Java程序设计基础试验报告》由会员分享,可在线阅读,更多相关《Java程序设计基础试验报告(6页珍藏版)》请在金锄头文库上搜索。

1、河南师范大学软件学院软件学院综合性、设计性实验报告专业:软件技术年级/ 班级:14 级 20142015学年第二学期 课程名称Java 程序设计基础指导教师岳冬利 本组成员 学号姓名胡浩然 1428322048 实验地点过街楼实验室实验时间每周五上午 3,4 节 项目名称图形类编写及应用(4 学时) 实验类型综合性 一、实验目的(1)理解类与对象的基本概念,掌握类的声明、对象的创建和使用的方法;(2)理解并掌握类的继承、方法重载与覆盖的多态性等面向对象的基础理论与编程方法;(3)理解抽象类、内部类、接口、包的含义,掌握java利用接口实现多重继承的机制;(4)掌握 Java 的异常处理机制。

2、二、实验内容(1)编写图形类,该类有周长、面积等属性和求周长、求面积等成员函数;(2)编写该图形类的子类-矩形类、三角形类、梯形类、圆形类等;(3)进行对象的定义,实现相关信息的输入和输出;(4)画出 UML类图;(5)要求至少综合使用到实验目的中提到的三条或三条以上内容。 三、实验仪器或设备学院提供公共机房,1 台/ 学生微型计算机。 四、总体设计(设计原理、设计方案及流程等) 类关系设计图如下:河南师范大学软件学院五、实验步骤(包括主要步骤、代码分析等) Graph 类中包含周长和面积的成员变量,并包含Output 输出方法、 Data 数 据输入检查。 矩形、圆、三角、梯形继承Graph

3、 类,其中梯形类重写Output 方法。 三角形、梯形类中包含判断是否为合法图形的方法。编写图形( Graph)类: class Graph public double C; public double Area; /输出函数public void Output() DecimalFormat df=new DecimalFormat(“.#“); System.out.println(“周长: “+df.format(C)+“n 面积: “+df.format(Area)+“); /数据合法性检测public static double Data (String s) throws Exce

4、ption double t; t=Double.parseDouble(s); if(tc) else return false; public Triangle() boolean b; String s; double p; do b=false; try System.out.print(“请输入输入三角形三边长度:“); s=in.next(); b1=Graph.Data(s); s=in.next(); b2=Graph.Data(s); s=in.next(); b3=Graph.Data(s); p=(b1+b2+b3)/2; Area=Math.sqrt(p*(p-b1)*

5、(p-b2)*(p-b3); if(Area=0|!(Triangle.isTriangle(b1, b2, b3) System.out.println(“这不 是一个三角形!( - ) “);b=true; catch(Exception e) System.out.println(“输入数据非法 , 请重新输入! ( )2“); b=true; while(b); C=b1+b2+b3; 编写梯形 (Ladder) 类: class Ladder extends Graph public double a = new double 6; Scanner in=new Scanner(Sy

6、stem.in); /判断是否是一个梯形参数:上底下底高 腰 1 腰 2 /这里检测不够严谨,没有判断所构成的三角形和梯形的高是否相同public static boolean isLadder(double a,double b,double h,double c,double d) if(ch|dh|a=b|(c=d) else return Triangle.isTriangle(Math.abs(a-b), c, d); public void Output() / 重写 Output函数 DecimalFormat df=new DecimalFormat(“.#“); if (a0

7、=5) System.out.println(“ 周 长 : “+df.format(C)+“ n 面 积 : “+df.format(Area)+“); else double t=0; df.format(t); 河南师范大学软件学院t=C+a3+Math.sqrt(Math.pow(a1-a2,2)+a3*a3); System.out.println(“ 直 角 梯 形 周 长 : “+df.format(t)+“ 面 积 : “+df.format(Area)+“); t=C+Math.sqrt(Math.pow(a1-a2)/2,2)+a3*a3)*2; System.out.pr

8、intln(“ 等 腰 梯 形 周 长 : “+df.format(t)+“ 面 积 : “+df.format(Area)+“); /System.out.printf(“等腰梯形 周长:%.2f 面积: %.2f n“,C+t*2, Area); public Ladder() boolean b; do b=false; /System.out.println(a0+“|“+a1); System.out.println(“请依次输入梯形上底下底 高 腰长 1 腰长 2(后两项可选) :“); try String s=in.nextLine(); String arr=s.split(

9、“ “); /System.out.println(arr.length); a0=arr.length; if (arr.length3|arr.length=4) throw new Exception(); for(int i=0;iarr.length;i+) ai+1=Graph.Data(arri); if(a0=3) C=a1+a2; else C=a1+a2+a4+a5; if(!Ladder.isLadder(a1, a2, a3,a4, a5) System.out.println(“这不是一个梯形!( - ) “);b=true; /if(!Ladder.isLadder

10、(a1, a2, a3,a4, a5) System.out.println(“ 这不是一个梯形!( - ) “);b=true; catch(Exception e) /e.printStackTrace(); System.out.println(“输入数据非法 , 请重新输入! ( )“); b=true; while(b); Area=(a1+a2)*a3)/2; 编写主程序 (Program) 类: public class Program /static public static void main(String args) / TODO Auto-generated metho

11、d stub Scanner in=new Scanner(System.in); boolean b; Graph a ; int s=6; do a = null;b=true; System.out.println(“【图形周长面积计算器】“); System.out.println(“1. 矩形 “); System.out.println(“2. 圆形 “); System.out.println(“3. 三角形 “); System.out.println(“4. 梯形 “); System.out.println(“5. 退出程序 “); System.out.print (“请

12、输入要计算的图形编号:“); String ss=in.next(); try s = Integer.parseInt(ss);catch(Exception e) s=6; switch (s) case 1:a=new Rect();break; case 2:a=new Round();break; case 3:a=new Triangle();break; 河南师范大学软件学院case 4:a=new Ladder();break; case 5:b=false;break; default :System.out.println(“未找到指定命令,请重新输入!“); if(a!=

13、null)a.Output(); while(b); System.out.println(“感谢使用!再见“); in.close(); 河南师范大学软件学院六、结果分析与总结 首先,我用的是一个普通的父类Graph类,其中包含两个成员变量分别 是周长和面积,以及一个Output 方法和 Data 静态方法。 这里我说明一下我的思路:最开始我设想的Graph 类中只有成员变量, 输出由外部访问成员变量实现,但是由于我要编写的梯形类允许用户有两种 数据格式输入,即输入腰长或者不输入,如果不输入腰长,那么两种规则梯 形(等腰、直角)的周长是确定的,这样输出函数就会复杂一些。于是我把 Output

14、 放在了 Graph 类中,并设为抽象类和抽象方法, 由其他类来重写。 但 如果这样来做,每一个子类都要重写一次抽象方法,代码复用性就降低了, 最后我将 Graph 类设为普通类,对于一般图形用父类的Output 就能够实现 功能。对于梯形类重写Output 方法。这样不仅体现了多态,也提高了代码 复用性。 其次,我把数据输入放在每个类的构造器里,这样虽然比放在主程序中 代码量会大一些,但是这样也就意味着输入完成即构造、计算完成。 这里我用到了 Graph 类的 Data 静态方法,该方法传入字符串参数s,作 用是把参数转化为double 类型,且如果无法转换或者参数小于等于0 就抛 出一个异常, 我这样做的目的是为了在各个类中添加异常处理以便于处理各 种数据的输入。采用do-while中嵌套 try-catch控制布尔型标记变量b 来 实现错误数据重新输入功能。 我在三角形类和梯形类中添加了判断输入数据是否为合法三角形或梯形 的静态方法。其中判断梯形方法依赖于判断三角形方法(这样做梯形类的独 立性差了点,其实是我不想写太多代码) 。 最后在 Program 类中采用 do-while嵌套 switch-case实现菜单功能。教师签名:年月日

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号