




已阅读5页,还剩52页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学 生 实 验 报 告(理工类)课程名称:JAVA程序设计 专业班级:12软件工程(服务外包)1 学生学号: 1205106077 学生姓名: 丁 超 所属院部: 软件工程学院 指导教师: 金 英 20 14 20 15 学年 第 1 学期 金陵科技学院教务处制实验报告书写要求实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。纸张一律采用A4的纸张。实验报告书写说明实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。各院部可根据学科特点和实验具体要求增加项目。填写注意事项(1)细致观察,及时、准确、如实记录。(2)准确说明,层次清晰。(3)尽量采用专用术语来说明事物。(4)外文、符号、公式要准确,应使用统一规定的名词和符号。(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。实验报告批改说明实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。实验报告装订要求实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。实验项目名称:JAVA编程基础 实验学时: 4 同组学生姓名: 实验地点: 1318 实验日期: 2014.10.16 实验成绩: 批改教师: 金英 批改时间: 一、实验目的和要求(1) 熟练掌握JDK1.6及MyEclipse8.5编写调试Java应用程序及Java小程序的方法;(2) 熟练掌握Java应用程序的结构;(3) 了解Java语言的特点,基本语句、运算符及表达式的使用方法;(4) 熟练掌握常见数据类型的使用;(5) 熟练掌握if-else、switch、while、do-while、for、continue、break、return语句的使用方法;理解和掌握重载方法;(6) 熟练掌握数组和字符串的使用;(7) 调试程序要记录调试过程中出现的问题及解决办法;(8) 编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验;(9) 做完实验后给出本实验的实验报告。二、实验仪器和设备奔腾以上计算机,Windows 操作系统,装有JDK1.6和MyEclipse8.5软件。三、实验过程(1)分别使用JDK命令行和MyEclipse编译运行Java应用程序;适当添加注释信息,通过javadoc生成注释文档;为主方法传递参数“Hello!”字符串,并输出,记录操作过程。public class Hello public static void main(String args) System.out.println(Hello!); (2)教材P11页程序调试,改写程序; (3)编写一个重载方法的程序,调试通过。 要求:(1) 编译调试程序之前应配置好环境变量;(2) 要分别掌握用JDK命令行和MyEclipse集成开发环境调试Java程序;(3) 注意Java重载程序:构造方法和成员方法的区别。程序清单:(建议程序中适当添加注释信息,增强可读性;较长程序分栏书写,保证报告排版整洁美观。)(实验一程序清单续1)(2)教材P11页程序调试,改写程序;package pack;import mypackage.Point;public class Line public static Point start;public static Point end; public Line(Point start,Point end) this.start=start; this.end=end; public String toString() return this.getClass().getName()+(+this.start.toString()+,+this.end.toString()+); public double length() int a=start.x-end.x,b=start.y-end.y; return Math.sqrt(a*a+b*b); public static void main(String args) Line l=new Line(start, end); Point start=new Point(100,100); Point end=new Point(100,200); System.out.println(new Line(start,end).toString(); System.out.println(l.length(); (实验一程序清单续2)(3)编写一个重载方法的程序,调试通过。public class dcc public void zy() System.out.println(z);public int zy(int c)return c;public String zy(int i,char c) return c + = + i;public static void main(String args)dcc y = new dcc();y.zy();System.out.println(y.zy(4,z);System.out.println(y.zy(20);四、实验结果与分析(1)分别使用JDK命令行和MyEclipse编译运行Java应用程序;适当添加注释信息,通过javadoc生成注释文档;为主方法传递参数“Hello!”字符串,并输出,记录操作过程。运行结果:Hello!(2)教材P11页程序调试,改写程序;调试结果:pack.Line(Point(100,100),Point(100,200)程序改写后的调试结果:pack.Line(Point(100,100),Point(100,200)100.0(3)编写一个重载方法的程序,调试通过。运行结果: zz=420实验项目名称: 面向对象编程 实验学时: 8 同组学生姓名: 实验地点: 1318 实验日期: 2014.10.23 实验成绩: 批改教师: 金英 批改时间: 一、实验目的和要求(1)熟练掌握Java语言类定义的基本语法;(2)熟练掌握类成员的访问控制,对象建立的方法;(3)熟练掌握类构造方法、成员方法的定义和重载;(4)熟练掌握类继承、多态和抽象性;(5)熟练掌握接口的定义和实现方法;(6)掌握基本的异常处理方法;(7)调试程序要记录调试过程中出现的问题及解决办法;(8)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验;(9) 做完实验后给出本实验的实验报告。二、实验仪器和设备奔腾以上计算机,Windows 操作系统,装有JDK1.6和MyEclipse8.5软件。三、实验过程(1)设计复数类,成员变量包括实部和虚部,成员方法包括实现复数加法、减法、比较、字符串描述、比较是否相等等操作。(2)设计圆柱体类和圆椎体类,继承圆类Circle并实现Volume接口,计算表面积和体积。(3)设计三角形类,继承图形抽象类,计算三角形面积和周长。(4)包的建立与使用:设计计算器类Calculator,计算加、减、乘、除和立方体体积,并且打包为mypackage。观察源文件目录下是否生成了mypackage文件夹,在该文件夹中是否有Calculate.class文件。编辑PackageDemo.java,保存在Calculator.java同一目录下,引用计算器类的各方法显示计算结果。(5)试编码实现多态在工资系统中的应用:给出一个根据雇员类型利用abstract方法和多态性完成工资单计算的程序。Employee是抽象类,Employee的子类有Boss(每星期发给他固定工资,而不计工作时间)、CommissionWorker(除基本工资外还根据销售额发放浮动工资)、PieceWorker(按其生产的产品数发放工资)、HourlyWorker(根据工作时间长短发放工资)。该例的Employee的每个子类都声明为final,因为不需要再继承它们生成子类。在主测试类Test中测试各类雇员工资计算结果。提示:对所有雇员类型都使用earnings()方法,但每个人挣的工资按他所属的雇员类计算,所有雇员类都是从超类Employee派出生的。在超类中声明earnings()为抽象方法,并且对于每个子类都提供恰当的earnings()的实现方法。为了计算雇员的工资,程序仅仅使用雇员对象的一个超类引用并调用earnings()方法。在一个实际的工资系统中,各种Employee对象的引用可以通过一个Employee引用数组来实现。程序依次使用数组的每个元素(Employee引用)调用每个对象的earnings()方法。Employee类定义如下:abstract class Employeeprivate String firstName;private String lastName;public Employee(String first,String last) firstName=first; lastName=last; public String getEmployeeName()return firstName;public String getLastName() return lastName;public String toString()return firstName+lastName;public abstract String earnings();(6)异常的捕获:计算两数相除并输出结果。使用三个catch子句,分别捕捉输入输出异常、除数为0的异常和参数输入有误异常。import java.io.*;class Ex1public static void main(String args ) try BufferedReader strin=new BufferedReader( new InputStreamReader(System.in);/建立输入流缓冲区 System.out.print(请输入除数:); String cl=strin.readLine();/键盘输入 int a=Integer .parseInt(cl); System .out .print(请输入被除数:); cl=strin .readLine(); int b=Integer .parseInt(cl); int c=b/a; System .out .println(商为:+c); /捕获与I/O有关的异常(空白处补全捕获语句) /捕获数值转化时的异常,如不能将字符转化成数值 /捕获除数为0的异常 编译并运行,当产生输入输出异常时显示异常信息;当输入除数为0时,出现算术异常,提示除数为0,并要求重新输入;当输入的不是整数时,如将30输成了3o,出现数值格式异常,提示输入整数。(8)编写程序包含自定义异常MyException,当100被13和4除时抛出该异常,其余除数显示商值。要求:(1) 注意选用适当的类成员修饰符(private、protected、public等),比较它们的使用情况;(2) 养成良好的编程习惯,严格按照命名规则为包、类及类成员命名,将每个程序打包,包的命名方式如two.num1表示实验二的第一题;(3) 学会使用MyEclipse的各种调试方法;(4) 学会查阅Java API文档,如查找异常类的使用方法。程序清单:(建议程序中适当添加注释信息,增强可读性;较长程序可分栏书写,保证报告排版整洁美观。)(实验二程序清单续1)(1)设计复数类,成员变量包括实部和虚部,成员方法包括实现复数加法、减法、比较、字符串描述、比较是否相等等操作。public class Complex private double real,imag; public Complex(double real,double imag) this.real=real; this.imag=imag; public Complex() this(0.0,0.0); public Complex(Complex c) this.real=c.real; this.imag=c.imag; void set(double r,double i) real=r; imag=i; void set(Complex d) set(d.real,d.imag); public void add(Complex c) this.real += c.real; this.imag += c.imag; public void minus(Complex c) this.real -= c.real; this.imag -= c.imag; public static Complex add(Complex c1, Complex c2) return new Complex(c1.real+c2.real, c1.imag+c2.imag); public static Complex minus(Complex c1, Complex c2) return new Complex(c1.real-c2.real, c1.imag-c2.imag); public boolean equals(Object obj) if (this=obj) return true; if (obj instanceof Complex) Complex c=(Complex)obj; return this.real=c.real & this.imag=c.imag; return false; public String toString() return (+this.real+this.imag+i); public static void main(String args) Complex a=new Complex(2.0,3.5); Complex b=new Complex(9.0,1.7); Complex c=b; System.out.println(a+b+=+Complex.add(a,b); System.out.println(a+-+b+=+Complex.minus(a,b); System.out.println(b:+b+,c:+c+,b=c?+(b=c)+,b.equals(c)?+(b.equals (c); c=new Complex(); c.set(b); System.out.println(b:+b+,c:+c+,b=c?+(b=c)+,b.equals(c)?+(b.equals (c); (实验二程序清单续2)(2)设计圆柱体类和圆椎体类,继承圆类Circle并实现Volume接口,计算表面积和体积。public interface Volume /定义接口public abstract double getVolume();public class Circle /定义圆形类double r;public Circle(double r) this.r=r; public double getS() /面积 return Math.PI*r*r; public double getL() /周长 return 2*Math.PI*r; public class Cylinder extends Circle implements Volume /定义圆柱体 double h;public Cylinder(double r,double h)super(r);this.h=h;public double getArea() /表面积return h*getL()+2*getS();public double getVolume() /体积return h*getS();public static void main(String args) Cylinder c1=new Cylinder(5,10);System.out.println(表面积:+c1.getArea();System.out.println(体积: +c1.getVolume();(实验二程序清单3)(3)设计三角形类,继承图形抽象类,计算三角形面积和周长。public abstract class ClosedFigure protected String shape; protected ClosedFigure(String shape) this.shape = shape; protected ClosedFigure() this(未知); public abstract double area(); public abstract double perimeter(); public void print() System.out.println(一个+this.shape+,+this.toString() +,周长为+this.perimeter()+,面积为+this.area(); public class Ellipse protected double height; protected double under; protected double length; public Ellipse(double height, double under, double length) this.height= height; this.under = under; this.length=length; public String toString() return 高+height+ +底+under; public double area() return height*under*1/2; public double perimeter() return (this.under+this.length*2); public static void main(String args) Ellipse e1=new Ellipse(10.0,20.0,14.0); System.out.print( 面积是+e1.area()+n+周长是+e1.perimeter()+n);System.out.println(e1.toString(); (实验二程序清单4)(4)包的建立与使用:设计计算器类Calculator,计算加、减、乘、除和立方体体积,并且打包为mypackage。观察源文件目录下是否生成了mypackage文件夹,在该文件夹中是否有Calculate.class文件。编辑PackageDemo.java,保存在Calculator.java同一目录下,引用计算器类的各方法显示计算结果。import java.util.Scanner;public class Calculator public static void main(String args) System.out.println(根据提示输入指令!);while(true)System.out.println(是否继续Y/N?);Scanner sc=new Scanner(System.in);String isC=sc.nextLine().trim();if(y.equals(isC) | Y.equals(isC)System.out.println(输入第一个数:);int a=sc.nextInt();System.out.println(输入计算符号:+ - * /);String var=sc.next().trim();System.out.println(输入第二个数:);int b=sc.nextInt();if(+.equals(var)System.out.println(a+b+=+(a+b);else if(-.equals(var)System.out.println(a+-+b+=+(a-b);else if(*.equals(var)System.out.println(a+*+b+=+(a*b);else if(/.equals(var)System.out.println(a+/+b+=+(a/(double)b);elseSystem.out.println(计算符号有误,程序退出);break; elseSystem.out.println(程序退出);break;(实验二程序清单5)(5)Boss类package ss1;/每星期发给他固定工资,而不计工作时间final class Boss extends Employeeprivate double weeklySalary;public Boss(String first,String last,double s) super(first,last); setWeeklySalary(s); public void setWeeklySalary(double s) weeklySalary=(s0?s:0); public String earnings() String weeklySalary1 = String.valueOf(weeklySalary);return weeklySalary1; public String toString() return Boss+ +super.toString();CommissionWorker类package ss1;/除基本工资外还根据销售额发放浮动工资final class CommissionWorker extends Employeeprivate double salary; private double fsalary;public CommissionWorker(String first,String last,double s,double f)super(first,last);setSalary(s);setFsalary(f); public void setFsalary(double f)fsalary=(f0?f:0);public void setSalary(double s)salary=s;public String earnings()String salary1 = String.valueOf(salary+fsalary);return salary1;public String toString() return CommissionWorker+super.toString(); HourlyWorker类package ss1;/根据工作时间长短发放工资final 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); public void setWage(double w) wage=(w0?w:0); public void setHours(double h) hours=(h=0&h0?w:0); public void setQuantity(int q) quantity=q; public String earnings() String salary1 = String.valueOf(quantity*wagePiece); return salary1; public String toString() return pieceWoeker+ +super.toString(); Test类package ss1;class Testpublic static void main(String args ) /使用超类声明refEmployee ref;String out=; /分别定义各子类 Boss b=new Boss(Hohn,Smith,800.00);CommissionWorker c=new CommissionWorker(Sue,Hones,400.00,3.0);PieceWorker p=new PieceWorker(Bob,Leis,2.5,200); HourlyWorker h=new HourlyWorker(Karen,price,13.75,40); /使用子类分别实例化ref=b; out+=ref.toString()+:+n+父类调用earnings方法得:+ref.earnings()+n+子类调用earnings方法得:+b.earnings()+n;ref=c; out+=ref.toString()+:+n+父类调用earnings方法得:+ref.earnings()+n+子类调用earnings方法得:+c.earnings()+n;ref=p;out+=ref.toString()+:+n+父类调用earnings方法得:+ref.earnings()+n+子类调用earnings方法得:+p.earnings()+n;ref=h; out+=ref.toString()+:+n+父类调用earnings方法得:+ref.earnings()+n+子类调用earnings方法得:+h.earnings()+n; System.out.print(out);(实验二程序清单续6)(6)package ss;import java.io.*;class Ex1public static void main(String args ) try BufferedReader strin=new BufferedReader( new InputStreamReader(System.in);/建立输入流缓冲区 System.out.print(请输入除数:);String cl=strin.readLine();/键盘输入 int a=Integer .parseInt(cl); System .out .print(请输入被除数:); cl=strin .readLine(); int b=Integer .parseInt(cl); int c=b/a; System .out .println(商为:+c); /捕获异常 catch(IOException e) /捕获I/O异常 System.out.println(I/O有关的异常); /捕获数值转化时的异常,如不能将字符转化成数值 catch(NumberFormatException e) System.out.println(数值转化有关的异常); /捕获除数为0的异常 catch(Exception e) System.out.println(除数为0的异常); (实验二程序清单续7)(8)编写程序包含自定义异常MyException,当100被13和4除时抛出该异常,其余除数显示商值。import java.io.*;class MyException extends Exception MyException(String msg) super(msg); public class DoubleDivideA public static void main(String args) throws MyException try BufferedReader in = new BufferedReader(new InputStreamReader(System.in); System.out.print(请输入实数除法运算的被除数:); String str = in.readLine(); double a = Double.parseDouble(str); System.out.print(请输入除数:); str = in.readLine(); double b = Double.parseDouble(str); System.out.println(商结果: +division(a, b); catch (ArithmeticException e1) System.out.println(商结果:Infinity + e1); System.out.println(商结果:NaN + e1); catch (NumberFormatException e2) System.out.println(异常:字符串不能转换成整数! + e2); catch (IOException e3) System.out.println(异常:IO异常 + e3); finally System.out.println(程序结束。); static double division(double a, double b) throws MyException if (a=100&(b=4|b=13) throw new MyException (不符规范); else return (a/b);四、实验结果与分析结果:(1)设计复数类,成员变量包括实部和虚部,成员方法包括实现复数加法、减法、比较、字符串描述、比较是否相等等操作。调试结果:(2.0+3.5i)+(9.0+1.7i)=(11.0+5.2i)(2.0+3.5i)-(9.0+1.7i)=(-7.0+1.8i)b:(9.0+1.7i),c:(9.0+1.7i),b=c?true,b.equals(c)?trueb:(9.0+1.7i),c:(9.0+1.7i),b=c?false,b.equals(c)?true(3)设计三角形类,继承图形抽象类,计算三角形面积和周长。调试结果:面积是100.0周长是48.0高10.0 底20.0(4)包的建立与使用:设计计算器类Calculator,计算加、减、乘、除和立方体体积,并且打包为mypackage。观察源文件目录下是否生成了mypackage文件夹,在该文件夹中是否有Calculate.class文件。编辑PackageDemo.java,保存在Calculator.java同一目录下,引用计算器类的各方法显示计算结果。调试结果:根据提示输入指令!是否继续Y/N?y输入第一个数:23输入计算符号:+ - * /+输入第二个数:2323+23=46是否继续Y/N?n程序退出(5)结果:Boss HohnSmith:父类调用earnings方法得:800.0子类调用earnings方法得:800.0CommissionWorkerSueHones:父类调用earnings方法得:403.0子类调用earnings方法得:403.0pieceWoeker BobLeis:父类调用earnings方法得:500.0子类调用earnings方法得:500.0hourlyWorker Karenprice:父类调用earnings方法得:550.0子类调用earnings方法得:550.0(6)结果:1.正常值结果:请输入除数:1请输入被除数:2商为:22.除数为0的结果: 请输入除数:0请输入被除数:1除数为0的异常3.数值异常的结果:请输入除数:2.1数值转化有关的异常(8)编写程序包含自定义异常MyException,当100被13和4除时抛出该异常,其余除数显示商值。调试结果:请输入实数除法运算的被除数:100请输入除数:4程序结束。Exception in thread main cc.MyException: 不符规范 at cc.DoubleDivideA.division(DoubleDivideA.java:45) at cc.DoubleDivideA.main(DoubleDivideA.java:24) 请输入实数除法运算的被除数:100请输入除数:13程序结束。Exception in thread main cc.MyException: 不符规范 at cc.DoubleDivideA.division(DoubleDivideA.java:45) at cc.DoubleDivideA.main(DoubleDivideA.java:24) 请输入实数除法运算的被除数:100请输入除数:2商结果:50.0程序结束。分析:(1) Employee的每个子类都声明为final,因为不需要再继承它们生成子类。在主测试类Test中测试各类雇员工资计算结果。(2) 用三个catch语句,分别捕获三种异常情况IOException e 定义IO的异常NumberFormatException e 定义数值转化有关的异常Except
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育培训心得体会总结简短(汇编10篇)
- 第二章 函数2026年高三数学第一轮总复习
- 职高简单高考题目及答案
- 酒店工作心得体会怎么写(例文10篇)
- 美食餐厅推广营销案例分析
- 体育产业市场分析与投资机会研究
- 医药行业创新发展模式探讨
- 农产品检测技术革新-2025年无损检测技术应用创新报告
- 2025年车工考试题及答案
- 2025年山西省晋城市事业单位工勤技能考试题库及答案
- 商户收单业务培训
- 高校辅导员培训PPT课件:班干部的选任与培训
- 26个英文字母书写动态演示课件
- 分镜头脚本设计-课件
- 拧紧知识培训课件
- 非参数统计课件
- 区妇联家庭教育工作的调研报告
- 强直性脊柱炎中医治疗
- 劳保用品发放表格及管理
- 江苏省盐城市各县区乡镇行政村村庄村名居民村民委员会明细
- 深锥沉降槽地面倒装工法
评论
0/150
提交评论