实验报告实验1-8-3901130721-谭淇蔚.docx

上传人:jian****018 文档编号:9149110 上传时间:2020-04-03 格式:DOCX 页数:105 大小:2.05MB
返回 下载 相关 举报
实验报告实验1-8-3901130721-谭淇蔚.docx_第1页
第1页 / 共105页
实验报告实验1-8-3901130721-谭淇蔚.docx_第2页
第2页 / 共105页
实验报告实验1-8-3901130721-谭淇蔚.docx_第3页
第3页 / 共105页
点击查看更多>>
资源描述
Java面向对象程序设计ssd3实验报告项目名称 实验1数组、对象和类 专业班级 软件工程1307班 学 号 3901130721 姓 名 谭淇蔚 实验成绩:批阅教师:陈学工2014年 04 月 24 日实验1数组、对象和类实验学时: 2 实验地点: 校本部科技楼 实验日期: 2014年4月22日 一、实验目的学习Java数组的用法,学习对象和类的概念。在学习java一维数组或者二维数组的过程中,要深刻明白java与C+语言申请数组的不同之处。我们利用java语言创建数组这种数据结构,是用其存一个元素个数固定是的且元素类型相同的有序集合。使用数组时需要进行一定的声明,声明的方式也与C+有部分不同。这兴许也是老师让我们这次实验的原因。我们需要学会利用数组,对存入数组里的元素进行一些操作,比如所有数组元素的和,找出最大元素,找出最小元素,或者移动元素,或者排序数组等等。我们需要完成的找出数组元素的最小元素。第二个,此实验同时告诉我们,java是一个面向对象的编程语言,我们通过创建类,然后创建一个对象,利用已经定义好的类以及里面的数据域和成员方法,对所创建的对象进行操作。二、实验内容1. 编写一个方法,使用下面的方法头求出一个整数数组中的最小元素(p183 6.9)。public static double min(double array)2. 使用类Date)编写程序创建一个Date对象,设置它的流逝时间分别为1000, 10000, 100000,然后用toString()方法显示日期(p238 8.3)。3. (使用类Random)编写一个程序,创建种子是1000的Random对象,然后用nextInt(100)方法显示0到100之间的50个随机数(p238 8.4)。三、实验方法实验方法:利用已经学习的java知识,根据自己对java知识的初步掌握,学会使用一些编程软件,比如;Jcreator、NetBeans、Eclipse等等。我们学会使用这些软件去创建一些程序空项目工程,然后根据自己写的算法,打出代码。原理:Java编程的语言,利用的是其编程软件为编程用户所创建的已经定义好的包,通过import语句导入所谓的语言包,然后创建一个用户类,通过main为主方法函数对代码进行开始,执行相应的利用算法进行编写的代码,接着运行即可。技术:java。四、实验步骤实验一之数组:1. 利用Eclipse创建一个java项目。2. 接着在该项目下创建一个类,我命名为Main,名字需要与你导入的包名不同。3. 接着输入代码,运用你的算法编写代码。4. 随着Eclipse的编译,改错。实验一之Date对象创建:1. 利用Eclipse创建一个java项目。2. 接着在该项目下创建一个类,我命名为data,名字需要与你导入的包名不同。3. 接着输入代码,运用你的算法编写代码。4. 随着Eclipse的编译,改错。实验一之Random类使用:五、实验结果实验一之数组应用:(寻找最小值)实验二之Date对象创建实验一之三Random类创建六、实验结论实验一之数组求最小值:输入的数据:7 5 7 3 8 2 1 0 4 7输出结果:0.0实验结果已截图于第五部分实验一之数组Java代码:import java.util.Scanner;public class Main public static void main(String args) Scanner input = new Scanner(System.in); final int NUMBER_OF_ElEMents=10; double numbers=new double NUMBER_OF_ElEMents; for(int i=0;iNUMBER_OF_ElEMents;i+) System.out.print(Enter a new number: n); numbersi=input.nextDouble(); double a=min(numbers); System.out.print(The min element of array is +a+ .); public static double min(double array) double min=array0; for(int i = 1;iarray.length;i+) if(arrayimin) min=arrayi; return min;实验二之Data对象设置流逝时间:数据已经在源程序代码中已确定。实验结果在第五部分。实验二Data对象设置流逝时间java代码:import java.util.Date;public class data public static void main(String args) / TODO code application logic here java.util.Date data = new java.util.Date(10000); System.out.println(10000的流逝时间的当前时间为:+data.toString(); java.util.Date data1= new java.util.Date(100000); System.out.println(100000的流逝时间的当前时间为:+data1.toString(); java.util.Date data2 = new java.util.Date(1000000); System.out.println(1000000的流逝时间的当前时间为: + data2.toString(); java.util.Date data3 = new java.util.Date(10000000); System.out.println(10000000的流逝时间的当前时间为: + data3.toString(); java.util.Date data4 = new java.util.Date(100000000); System.out.println(100000000的流逝时间的当前时间为: + data4.toString(); java.util.Date data5 = new java.util.Date(1000000000); System.out.println(1000000000的流逝时间的当前时间为: + data5.toString(); java.util.Date data6 = new java.util.Date(10000000000l); System.out.println(10000000000的流逝时间的当前时间为: + data6.toString(); java.util.Date data7 = new java.util.Date(100000000000l); System.out.println(100000000000的流逝时间的当前时间为: + data7.toString(); 实验三之Random类使用:数据已于源程序中有。实验结果在于第五部分。实验三之Random类使用Java代码:import java.util.Random;public class random类 public static void main(String args) Random random1=new Random(1000); System.out.print(From random1: n); for(int i = 0;i50;i+) System.out.print(random1.nextInt(100)+n ); 七、实验小结体会:通过第一次上机,让我明白了然后使用java软件进行编写java项目,并进一步明白了java的功能强大之处,通过老师上课时,利用电脑,为我们讲述了java不同项目创建的意义,明白了java的具体实验方法,虽然有点小错误,但是不打紧。遇到问题:Date类的使用对象问题上,有两个测试当时报出超过int所存入的类型,按照Date系统所定义的类定义,理应为long没错,但是编译器并不是这样认为,所以困恼了一会。解决问题:在数据类型上,我将后面大于int型数据的地方,在数据后面增加了L表明其实长整形。待改进:个人认为,在随机数列表输出时,应该让其不是一个占一行的输出,而是让几个在一行,这样节省了空间,也让我们不用下拉看其他元素。这个地方应该可以改进,但不知道应该使用哪方面的知识。 Java面向对象程序设计ssd3实验报告项目名称 实验2字符和文本IO 专业班级 软件工程1307班 学 号 3901130721 姓 名 谭淇蔚 实验成绩:批阅教师:陈学工2014年 05 月 18 日实验2字符和文本IO实验学时: 2 实验地点: 校本部科技楼 实验日期: 2014年4月29日 一、实验目的学习字符串和文本的输入输出技术。首先明白,字符串是由字符构成的一个序列。我们java语言中,String类有11个构造方法和40多个处理字符串的方法。我们要学会利用这些方法去做一些事情。比如像老师所给的题目那样,让我们计算出一个字符串中某字符出现的次数,或者把输入的一个二进制数变成十六进制数。我们还得学会利用命令行参数,使用CMD命令提示符来运行java程序,并对某个文件实现读写功能,比如计算行数,列数,以及字符数。二、实验内容1.(求指定字符出现次数)使用下面方法头编写一个方法,找出某个指定字符在字符串中出现的次数(p270 9.4)。public staic int count(String str, char a)2.(将二进制数转换为十六进制数)编写一个方法,将一个二进制数转换为一个十六进制数。方法头如下(p271 9.9)public static String binaryToHex(String binaryValue) 3.(统计一个文件中的字符数、单词和行数)编写程序统计一个文件中的字符数(回车和换行符除外)、单词数和行数。单词由空格、制表符、回车或换行符分隔(p272 9.17)。三、实验方法实验方法:1. 首先是输入一个等待检查的字符串,然后再输入一个字符,对于java来说,不能直接输入一个字符,得输入的是一个字符串,所以为了读入字符,首先我输入字符的字符串,利用字符串转换成数组的方法,使用字符数组的第一个元素,第一个元素保存待检测的字符,就可以完美的完成了字符的检测。在count函数里面,再次利用了String类里的toCharArray()方法,把字符串变成了数组,利用循环,把字符和待检测的字符串进行对比,每对比成功一次,就计数一次。以此完成第一个实验。2. 第二个实验是把二进制转换成16进制首先我们先读入一个字符串,是二进制数的。根据二进制转化成16进制的方法,我们得使用四位定一位的方法,但是输入的字符串不一定是4的整数倍,所以我就将如果不是4位数的整数倍,我就处理成4位数的整数倍(指的所输入的二进制的字符串有多少个0,1构成,如果个数不是4的倍数做这个操作),然后利用每四个二进制转换10进制,利用10进制对应16进制来变换出二进制对应16进制的字母的方法。3. 第三个实验是我们利用命令提示符输入命令行参数来进行的,我们把命令行参数的第一个参数args0来保存文件的名字,接着利用File创建一个file对象,然后用input对象引用,利用input对象的函数进行简单的检测,利用while循环,读出文件行,列,字符数。原理:Java编程的语言,利用的是其编程软件为编程用户所创建的已经定义好的包,通过import语句导入所谓的语言包,然后创建一个用户类,通过main为主方法函数对代码进行开始,执行相应的利用算法进行编写的代码,接着运行即可。技术:java。四、实验步骤大体上每一个实验都是:1. 利用Eclipse创建一个java项目。2. 接着在该项目下创建一个类,名字需要与你导入的包名不同。3. 接着输入代码,运用你的算法编写代码。4. 随着Eclipse的编译,改错。五、实验结果第一个实验:测试1:测试2:第二个实验:测试1:测试2:测试3:(0,1字数不是4的倍数测试) 第三个实验:测试1:tJ.txt的内容:she is a girlhe is a boy程序测试结果:测试2:tJ.txt的内容为:测试结果:六、实验结论第一个实验的代码:package 次数;import java.util.Scanner;public class 次数 public static void main(String args) Scanner input = new Scanner(System.in); System.out.print(Enter a string:n); String s = input.nextLine(); System.out.print(Please input a char n ); System.out.print(in order to check the char whether in the string:n); String a=input.next(); char e=a.toCharArray(); int c = count(s,e0); System.out.print(the char appear +c+ times.); input.close(); public static int count(String str,char a) int n=0; char chars=str.toCharArray(); for(int i=0;istr.length();i+) if(charsi=a)n+; return n;第二个实验的代码:package 二进制转换十六进制;import java.util.Scanner;public class 二进制转换十六进制 public static void main(String args) Scanner input=new Scanner(System.in); System.out.print(Enter a binary number: n); String s=input.nextLine(); input.close(); String t=binaryToHex(s); System.out.print(the binary number change to the Hex number is +t);public static String binaryToHex(String binaryValue) String s=binaryValue; while(s.length()%4 != 0) s=0+s; String str=; char a=s.toCharArray(); double e=0; for(int i=0;is.length();i+) int d=ai-0; e=d * Math.pow(2,(3-(i%4)+e; if(i-3)%4 = 0) String sr = +Hex(int)e) ; str=str+sr; sr=; e=0; return str;public static char Hex(int e)char a=0; switch(e) case 0:a=0; break; case 1:a=1; break; case 2:a=2; break; case 3:a=3; break; case 4:a=4; break; case 5:a=5; break; case 6:a=6; break; case 7:a=7; break; case 8:a=8; break; case 9:a=9; break; case 10:a=A; break; case 11:a=B; break; case 12:a=C; break; case 13:a=D; break; case 14:a=E; break; case 15:a=F; break; return a;第三个实验的代码:import java.io.File;import java.util.Scanner;public class TJ public static void main(String args)throws Exceptionif(args.length=1)String fileName=args0;File file = new File (fileName);Scanner input=new Scanner(file);int l=0,w=0,c=0;while(input.hasNext()String s=input.next();c=s.length()+c;w+;Scanner input1=new Scanner(file);while(input1.hasNext()input1.nextLine();l+;input.close();input1.close();System.out.print(File +fileName+ hasn);System.out.print(+c+ charactersn+w+ wordsn+l+ linesn);七、实验小结体会:让我明白了java语言的伟大,并且理解了某些预定义类的使用。并学会了一些比较基础的文件读写输入的功能。遇到问题:在运行第二个实验的代码,不会运行。解决问题:通过使用cmd命令行提示符来进行操作,应该值得确定的是,java TJ tJ.txt,这句话里,java命令是执行字节码文件,TJ是class名,tJ.txt是命令行参数的第一行。待改进:没有实现循环的使用,是三个代码不足之处。 Java面向对象程序设计ssd3实验报告项目名称 实验3继承 专业班级 软件工程1307班 学 号 3901130721 姓 名 谭淇蔚 实验成绩:批阅教师:陈学工2014年 05 月 18 日实验3继承实验学时: 2 实验地点: 校本部科技楼 实验日期: 2014年5月6日 一、实验目的学习继承编程技术。 利用继承,把曾定义好的一些通用的特征和动作,可以加之利用,避免冗杂的代码,而且提高了代码的利用率,该实验,要求我们利用这种思想,去创建工程或者去实现一些项目。 学会创建父类,构建子类去继承父类,通过继承的方式实现功能的多态化,实现代码的重用率。二、实验内容1. 设计一个名为Triangle的类来扩展GeometricObject类(p326 11.1)。2. (Person、Student、Employee、Faculty和Staff类)设计名为Person的类和它的两个子类student和Employee。Employee有子类Faculty和Staff。人有姓名、地址、电话号码和电子邮件地址。学生有班级状态(一年级、二年级、三年级或四年级),将这些状态定义为常量。雇员有办公室、工资和受聘日期。定义名为MyDate的类,包含数据域year(年)、month(月)和day(日)。教员有办公时间和级别。职员有职务称号。覆盖每个类中的toString方法显示相应的类名和人名。画出类的图,并实现这些类。编写测试程序,创建Person、Student、Employee、Faculty和Staff类,并调用它们的toString()方法。(p326 11.2)。三、实验方法实验方法:第一个实验:先写GeometricObject类,然后写Triangle类,注意extends+父类名。而且构造函数第一个要写super()语句。第二个实验:和第一个实验差不多,先设计Person类,然后写Student和Employee类等等。原理:Java编程的语言,利用的是其编程软件为编程用户所创建的已经定义好的包,通过import语句导入所谓的语言包,然后创建一个用户类,通过main为主方法函数对代码进行测试类,执行相应的利用算法进行编写的代码,接着运行即可。技术:java。四、实验步骤大体上每一个实验都是:1. 利用Eclipse创建一个java项目。2. 接着在该项目下创建一个类,代码指明出父类与子类关系。3. 接着输入代码,运用你的算法编写代码。4. 随着Eclipse的编译,改错。五、实验结果第一个实验:测试:第二个实验:六、实验结论第一个实验的代码:public class TextTriangle public static void main(String arg)Object a=new Triangle(1,1.5,1,yellow,true);System.out.print(+a.toString();public class GeometricObject private String color = white;private boolean filled;private java.util.Date dataCreated;public GeometricObject()dataCreated = new java.util.Date();public GeometricObject(String color,boolean filled)dataCreated = new java.util.Date();this.color = color;this.filled = filled; public String getColor()return color;public void setColor(String color)this.color = color;public void setFilled(boolean filled)this.filled = filled;public java.util.Date getDateCreated()return dataCreated;public String toString()return created on+dataCreated+ncolor: +color+ and filled:+filled;public class Triangle extends GeometricObject private double side1=1.0;private double side2=1.0;private double side3=1.0;public Triangle()public Triangle(double side1,double side2,double side3,String color,boolean filled)super(color,filled);this.side1 = side1;this.side2 = side2;this.side3 = side3;public double getSide1()return side1;public double getSide2()return side2;public double getSide3()return side3;public double getArea()double p;p=(side1+side2+side3)/2;return Math.sqrt(p*(p-side1)*(p-side2)*(p-side3);public double getPerimeter()return side1+side2+side3;public String toString()return Triangle: side1 = +side1+ side2 = +side2+ side3 = +side3+ n +super.toString();第二个实验的代码:package personUse;public class TestPersonUse public static void main(String args)Person a=new Person(张三,升华公寓18栋2011,13114911101,zhangsan163.com);Student Tan=new Student(谭淇蔚,升华公寓18栋7023,13117314737,994427447163.com,一);MyDate eEmployed=new MyDate (2005,10,10);Employee e=new Employee(张三,长沙岳麓区升华楼,13030900930,45677163.com,中南办公楼203,8000,eEmployed);MyDate sEmployed=new MyDate(2008,9,18);Faculty s=new Faculty(王福,巨星轻型器材有限公司,13290899887,47677774qq.com,巨星办公楼办公室201,2000,sEmployed,10h,二);MyDate staffEmployed=new MyDate(2010,10,01);Staff t=new Staff(张怡,中南大学,13089887890,zhangyi163.com,软件学院二综教学楼308,10000,staffEmployed,教授);System.out.print(a.toString()+n+Tan.toString()+n+e.toString()+n+s.toString()+n+t.toString();package personUse;public class Student extends Person public static String FRESHMAN = 一; public static String SOPHOMORE = 二; public static String JUNIOR = 三; public static String SENIOR = 四; protected String status; public Student() super(); this.status=FRESHMAN;/初始化学生为大一新生 public Student(String name,String address,String phoneNumber,String email,String status) super(name, address, phoneNumber, email); this.status=status; public String getStatus() return status; public void setStatus(String Status) this.status=Status; public String toString() return super.toString()+n该学生为:大+status+学生; package personUse;public class Staff extends Employee protected String title;/Title表示称号public Staff()super();title=null;public Staff(String name,String address,String phoneNumber,String email,String office,int salary,MyDate dateHired,String title)super(name, address, phoneNumber, email,office,salary,dateHired);this.title=title;public String getTitle()return title;public void setTitle(String title)this.title=title;public String toString()return super.toString()+n职务称号:+title;package personUse;public class Person protected String name; protected String address; protected String phoneNumber; protected String email; public Person() name=null; address=null; phoneNumber=null; email=null; public Person(String name,String address,String phoneNumber,String email) this.name=name; this.address=address; this.phoneNumber=phoneNumber; this.email=email; public String getName() return name; public String getAddress() return address; public String getPhone() return phoneNumber; public String getEmail() return email; public void setName(String name) this.name=name; public void setAddress(String address) this.address=address; public void setPhone(String phoneNumber) this.phoneNumber=phoneNumber; public void setEmail(String email) this.email=email; public String toString() return 名字: +name+n地址: +address+n电话:+ phoneNumber+n邮箱:+email; package personUse;public class MyDate private int year; private int month; private int day; public MyDate() year=2000; month=1; day=1; public MyDate(int year,int month,int day) this.year=year; this.month=month; this.day=day; public int getYear() return year; public int getMonth() return month; public int getDay() return day; public void setYear(int year) this.year=year; public void setMouth(int month) this.month=month; public void setDay(int day) this.day=day; public String toString() return +year+年+month+月+day+日; package personUse;public class Faculty extends Employee public static String LECTURER = 一; public static String ASSISTANT_PROFESSOR = 二; public static String ASSOCIATE_PROFESSOR = 三; public static String PROFESSOR = 四; protected String officeHours; protected String rank; public Faculty() super(); officeHours=null; rank=null; public Faculty(String name,String address,String phoneNumber,String email,String office,int salary,MyDate dateHired,String officeHours,String rank) super(name, address, phoneNumber, email,office,salary,dateHired); this.officeHours=officeHours; this.rank=rank; public String getOfficeHours() return officeHours; public String getRank() return rank; public void setOfficeHours(String officeHours) this.officeHours=officeHours; public void setRank(String rank) this.rank=rank; public String toString() return super.toString()+n工作时间:+officeHours+n级别为:+ rank; package personUse;public class Employee extends Person protected String office; protected int salary; protected MyDate dateHired; public Employee() super();dateHired=new MyDate (2000,1,1);office=null;salary=0; public Employee(String name,String address,String phoneNumber,String email,String office,int salary,MyDate dateHired) super(name, address, phoneNumber, email); this.dateHired= dateHired; this.office=office; this.salary=salary; public String getOffice() return office; public int getSalary() return salary; public MyDate getDateHire() return dateHired; public void setDateHire(MyDate dateHired) this.dateHired=dateHired; public void setOffice(String office) this.office=office; public void setSalary(int salary) this.salary=salary; public void setDateHired(MyDate dateHired) this.dateHired=dateHired; public String toString() return super.toString()+n办公室:+office+n工资:+ salary+n雇佣日期:+dateHired.toString(); 七、实验小结体会:让我明白类的继承。遇到问题:没有遇到困难!嘻嘻!老师上得好,基本没犯错。解决问题:通过使用cmd命令行提示符来进行操作,应该值得确定的是,java TJ tJ.txt,这句话里,java命令是执行字节码文件,TJ是class名,tJ.txt是命令行参数的第一行。 Java面向对象程序设计ssd3实验报告项目名称 实验3继承 专业班级 软件工程1307班 学 号 3901130721 姓 名 谭淇蔚 实验成绩:批阅教师:陈学工2014年 05 月 19 日实验4多态一、实验目的学习多态编程技术。多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。多态有两种表现形式:重载和覆盖首先说重载(overload),是发生在同一类中。与什么父类子类、继承毫无关系。 标识一个函数除了函数名外,还有函数的参数(个数和类型)。也就是说,一个类中可以有两个或更多的函数,叫同一个名字而他们的参数不同。 他们之间毫无关系,是不同的函数,只是可能他们的功能类似,所以才命名一样,增加可读性,仅此而已! 再说覆盖(override),是发生在子类中!也就是说必须有继承的情况下才有覆盖发生。 我们知道继承一个类,也就有了父类了全部方法,如果你感到哪个方法不适合,功能要变,那就把那个函数在子类中重新实现一遍。 这样再调用这个方法的时候,就是执行子类中的过程了。父类中的函数就被覆盖了。(当然,覆盖的时候函数名和参数要和父类中完全一样,不然你的方法对父类中的方法就不起任何作用,因为两者是两个函数,毫不关系)二、实验内容1.改写程序清单10-6中的Course类,使用ArrayList代替数组来存储学生(p326 11.5)。2.(使用ArrayList)编写程序,创建一个ArrayList,然后向这个线性表中添加对象,调用对象的toString()方法显示对象的内容(p326 11.6)。三、实验方法实验方法:
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!