Java程序设计-试验2(学生版)
- 格式:doc
- 大小:93.50 KB
- 文档页数:14
Java程序设计实验二实验目的:熟悉java控制结构语句。
实验内容:1、排序算法实现(过程实现方式、对象实现方式, 多态性)import java.applet.Applet;import java.awt.Graphics;class IntSort {public String sort(int a, int b) {if (a>b)return a+" "+b;elsereturn b+" "+a;}public String sort(int a, int b, int c) {int swap;if (a<b) {swap=a; a=b; b=swap;}if (a<c) {swap=a; a=c; c=swap;}if (b<c) {swap=b; b=c; c=swap;}return a+" "+b+" "+c;}public String sort(int arr[ ]) {String s=" ";int swap;for (int i=0; i<arr.length; i++)for (int j=0; j<arr.length-1; j++)if (arr[j]>arr[j+1]) {swap=arr[j];arr[j]=arr[j+1];arr[j+1]=swap;}for (int i=0; i<arr.length; i++)s=s+arr[i]+" ";return s;} } public class SortDemo extends Applet {IntSort s =new IntSort();public void paint(Graphics g) {int a=30, b=12, c=40;int arr[]={34,8,12,67,44,98,52,23,16,16};g.drawString("两个数排序结果:"+s .sort(a,b),30,30);g.drawString("三个数排序结果:"+s .sort(a,b,c),30,60);g.drawString("数组的排序结果:"+s .sort(arr),30,90);} }2、判断一个数是否为素数?public class Prime {public static void main(String[] args) {final int n =4;int i = 2;for ( i=2; i<Math.sqrt (n); i++) {if (n%i==0) break ;}if (i>Math.sqrt (n)) {System.out .println(n+" is a prime!");} else {System.out .println(n+" is not a prime");}} }3、计算下列表达式值。
姓名学号:班级:说明:实验2(类的继承,与接口的实现)1. 编一程序,求两个正整数m、n的最大公约数。
要求程序中有两个方法,分别使用循环和递归,最后在主方法中两次求解并输出最大公约数。
截图:代码:public class gcd {public static void main(String[] args) {int a = 6, b = 9;System.out.printf("two nums:%d %d\n", a, b);System.out.println("递归: " + gcd1(a, b));System.out.println("辗转相除: " + gcd2(a, b));}public static int gcd1(int m, int n){return m % n == 0 ? n : gcd1(n, m%n);}public static int gcd2(int m, int n){while(n != 0){int t = m;m = n;n = t % n;}return m;}}2. 使用类编写程序(在程序中定义类,然后在主方法中创建类的对象,并调用该类中的方法,观察所得结果。
)截图:代码:public class Date {public static void main(String[] args) {Date d = new Date();System.out.println(d);d.setYear(2011);d.setMonth(10);d.setDay(3);System.out.println(d);}public Date(){}public Date(int y, int m, int d){year = y; month = m; day = d;}public void setYear(int new_year){ this.year = new_year;} public void setMonth(int m){ this.month = m; }public void setDay(int d){ this.day = d; }public String toString(){return new String("" + year + "/" + month + "/" + day);}public int year = 2000, month = 1, day = 1;}3. 编写一个包含圆类的程序,并为圆类设计几个构造方法,编译并运行它。
Java程序设计-试验2(学生版)
华北电力大学
实验报告
实验名称Java程序面向对象设计(一)课程名称Java程序设计
专业班级:学生姓名:
学号:成绩:指导教师:张学斌实验日期:
自己的speed的值增加80
【代码10】//car2调用speedUp方法将自己的speed的值增加80
System.out.println("car1目前的速度:"+car1.getSpeed());
System.out.println("car2目前的速度:"+car2.getSpeed());
car1.speedDown(10);
car2.speedDown(20);
System.out.println("car1目前的速度:"+car1.getSpeed());
System.out.println("car2目前的速度:"+car2.getSpeed());
}
}
1.3 实验指导
●创建一个对象时,成员变量被分配空间,这些内
存空间称作该对象的实体或变量,而对象中存放着引用,以确保这些变量被该对象操作使用。
●空对象不能使用,即不能让一个空对象去调用方
法产生行为。
假如程序中使用了空对象,在运行时会产生异常:NullPointerException,对象时。
Java实验二实验二类与对象实验目的1、掌握面向对象程序设计的方法和Java作为面向对象程序设计语言的特点;2、掌握修饰符和构造方法的使用规则;3、掌握接口的特点、结构、调用和继承;4、掌握如何创建包,通过包如何管理类;5、掌握Java的继承机制和实现多态的方法实验内容(1)定义一个类Student,属性为学号、姓名和成绩;方法为增加记录SetRecord和得到记录GetRecord。
SetRecord赋值学号、姓名和成绩,GetRecord通过学号得到考生的成绩。
通过实例验证编程无误。
(2)定义一个接口Area,其中包含一个计算面积的抽象方法calculateArea(),然后设计Circle和Rectan两个类实现这个接口的方法calculateArea(),分别计算圆和矩形的面积。
通过实例验证编程无误。
(3)假定根据学生的3门学位课程的分数决定其是否可以拿到学位,对于本科生,如果3门课程的平均分数超过60分即表示通过,而对于研究生,则需要平均分超过80分才能够通过。
根据上述要求,请完成以下Java类的设计:(i)设计一个基类Student描述学生的共同特征。
(ii)设计一个描述本科生的类Undergraduate,该类继承并扩展Student类。
(iii)设计一个描述研究生的类Graduate,该类继承并扩展Student类。
(iv)设计一个测试类StudentDemo,分别创建本科生和研究生这两个类的对象,并输出相关信息附实验一名称是Java语言基础实验报告分为以下几个部分一实验名称二实验目的三实验仪器四实验步骤(把你的操作一步一步写清楚,java 程序代码要写)五实验结果(程序运行后的结果就是DOS环境下运行出来的结果写在实验报告上)六实验讨论(实验过程中的错误及如何改正,你的心得体会等)答案:(1)定义一个类Student,属性为学号、姓名和成绩;方法为增加记录SetRecord和得到记录GetRecord。
《Java技术》实验报告—实验(二)实验室:C207 2018 年10 月13日6.以'R'开头的事务表示这是一个到货单记录,在'R'后面是Item number和它的数量Quanlity。
处理一条到货单意味着增加库存中相应货物的数量(增加的数量=到货单中的数量)。
注意:如果在Transactions.txt文件中,到货单出现在发货单之后,到货单中的货物数量可以用来填补发货单中的数量(可以理解成在Transactions.txt中,优先处理到货单)。
7.以'A'开头的事务表示向库存中增加一种新的货物(即这种货物以前库存中没有),在'A'后面是Item number,供应商supplier以及货物的描述description。
处理一个新增货物记录意味着向库存中增加一个数量Quantity为0的新的Item。
你可以假设在一个Transactions.txt 中,新增货物记录总是出现在第一个到货单之前。
8.以'D'开头的事务表示从库存中删除一种货物,在'D'后面是Item号。
删除操作总是在所有的事物处理之后才被处理,以保证对于可能出现的同一种货物的发货单的操作能在删除之前被正确处理。
如果要删除的某种货物的库存量Quantity不为0的话,系统应该向Errors.txt记录出错信息。
9.文件Shipping.txt中的每一行代表给某一客户的发货信息。
Shipping.txt中的每一行分别是客户编号、Item号、货物数量,它们之间用tab键分隔。
如果发货单中有两条客户编号和Item 编号一样的记录,在Shipping.txt中应该将这两条发货信息合并(即将它们的数量相加)。
10.Errors.txt文件包含未发送的发货记录和库存量大于0的删除记录。
Errors.txt每一行包含Custom编号、Item编号以及发货单上的数量Quantity。
实验二java简单程序设计
1.计算d
表达式的值,a=15,b=12,c=5,e=4,d=2(注意数值方
e c
ab/
法的使用,和整个程序中的调用)
2.根据下面的条件,写出一个程序判断一元二次方程是否有实根,ax²+bx+c=0条件是a≠0,且b²-4ac≥0
3.铁路运货的运费与路程远近及货物的重量有关,设有如下的单位运费:
不足100千米,每吨每千米为1.00元
100千米以上,不足300米,每吨每千米为0.90元
300上,不足500千米,每吨每千米为0.80元
500千米以上,不足1000千米,每吨每千米为0.70元
超过或等于1000千米,每吨每千米为0.60元
计算700千米,500吨货物的运费,注意分支控制语句的使用,最后需要有输出
4.计算整数3和浮点数4.5二者的和,差,商,数值较大者和平均值。
注意布尔表达式和数值方法的应用。
程序为java application,输出5个具体的数值。
5.输出语句的使用,输出以下语句:
Update student set stname=”unsigned”,注意表达式转义字符,程序为Java Applet。
6.打印出成绩等级,如果成绩大于等于 90 分,输出“优秀”,
如果成绩大于等于80 分且小于90分,输出“良好".求85的等级。
引言概述:实验目的:本次实验的主要目的是通过设计和实现一个简单的Java程序,加深对Java编程语言的理解,培养对面向对象编程思想的应用能力。
实验要求学生熟悉Java语法和类的基本概念,并能够正确运用这些知识编写出符合要求的程序。
实验过程:1.确定实验题目和要求:根据实验要求,确定需要实现的功能和要求,并理解题目中的各个概念和要求。
2.设计程序结构:根据题目要求和功能需求,设计程序的类结构、方法和变量。
要求合理设计类和对象的关系,充分运用封装、继承和多态等面向对象编程的特性。
3.编码实现:根据设计好的程序结构,使用Java语言进行编码实现。
编写各个类和方法的代码,确保代码的规范和可读性。
4.调试和测试:编写完代码后,进行充分的调试和测试工作。
确保程序能够正确运行并符合预期的功能需求。
5.优化和改进:对程序进行优化和改进,提高程序的性能和可维护性。
可以通过重构代码、增加异常处理等方式进行优化。
6.提交实验报告:实验完成后,撰写实验报告,对实验过程和结果进行总结和分析。
实验结果:实验结果表明,本次实验成功实现了所要求的功能。
通过对Java程序的设计和实现,我加深了对Java编程语言的理解,并掌握了Java程序的基本概念和语法。
同时,通过实验过程中的调试和测试工作,我对程序的错误处理和调试技巧也有了一定的了解和掌握。
实验分析:通过本次实验,我认识到了面向对象编程的重要性和优势。
在程序设计过程中,合理设计类和对象的关系,充分利用面向对象编程的特性,可以提高程序的可读性、可维护性和扩展性。
同时,对于Java编程语言的学习和理解也是很有必要的,它是一种广泛应用于软件开发的编程语言。
总结:本次实验是一次很好的学习和实践机会,通过对Java程序的设计和实现,我加深了对Java编程语言的理解,并掌握了Java程序的基本概念和语法。
在实验过程中,我收获了很多,对面向对象编程有了更深刻的理解,也对程序的调试和测试有了更多的经验。
《JAVA2程序设计》实验报告班级: B07514 伙伴:实验名称:企业内部员工通讯录一实验目的:1.学会创建对象类及操作类。
2.完成对数据类属性的封装。
3.掌握继承的使用。
4.定义接口类并实现接口。
二实验内容:1.编写一个员工类,一个员工操作类和一个测试类。
其中员工类中包含员工的基本信息:编号(主键,只读),姓名,性别,密码,年龄,联系电话,职称,职务,电子邮件,以及构造函数和对这些信息进行操作的get和set函数。
员工操作类中包括对员工信息的增、删、查、改四个方法,在增加员工信息的方法中,写存根程序模拟添加的过程,并在test测试类中进行测试。
2.在1的基础上,编写一个经理类继承员工类,除具有员工基本信息外,还有:任职部门,主管信息,创建一个接口,并且使员工类和经理类都实现这个接口。
其中接口中有四个抽象方法:增、删、查、改。
3.模拟现实进行按条件查询,查询结果存放在Vector的对象中,在Test类中进行测试。
三实验步骤:代码1.员工信息类Emppackage com.nciae.juan.objectpublic class Emp {private int eno; //编号private String ename; //姓名private String esex; //性别private String epas; //密码private int age; //年龄private String etel; //联系电话private String epn; //职称private String epos; //职务private String email; //电子邮件public String getEname() {return ename;}public void setEname(String ename) { this.ename = ename;}public String getEsex() {return esex;}public void setEsex(String esex) { this.esex = esex;}public String getEpas() {return epas;}public void setEpas(String epas) { this.epas = epas;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getEtel() {return etel;}public void setEtel(String etel) { this.etel = etel;}public String getEpn() {return epn;}public void setEpn(String epn) { this.epn = epn;}public String getEpos() {return epos;}public void setEpos(String epos) { this.epos = epos;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public int getEno() {return eno;}public Emp(String ename,String esex,int age,String epn,String epos,String etel,String email,String epas){super();this.age = age;this.email = email;this.ename = ename;this.epas = epas;this.epn = epn;this.epos = epos;this.esex = esex;this.etel = etel;}}2.经理类Managerpackage com.nciae.juan.object;public class Manager extends Emp {private String bumen; //主管部门private String content; //主管内容public Manager( String ename,String esex,int age,String epn, String epos,String etel, String email, String epas,String bumen,String content) {super(ename,esex,age,epn, epos, etel, email,epas);// TODO Auto-generated constructor stubthis.bumen=bumen;this.content=content;}public String getBumen() {return bumen;}public void setBumen(String bumen) {this.bumen = bumen;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}}3.员工操作类EmpSyspackage com.nciae.juan.dao;import java.util.Vector;import com.nciae.juan.interfaces.Basedao;import com.nciae.juan.object.Emp;import com.nciae.juan.object.Manager;public class EmpSys implements Basedao{private static final String Emp = null;public boolean delete(int eno) {return false;}public boolean add(Object obj){if(obj instanceof Manager){Manager manager=(Manager)obj;String sq2="insert intoManager(ename,esex,epas,eage,etel,epn,epas,email,bumen,content)" +"values('"+manager.getEname()+"','"+manager.getEsex()+"','"+manager.getEpas()+"',"+manager.getAge()+",'"+manager.getEtel()+ "',"+manager.getEpn()+"','"+manager.getEpas()+"','"+manager.getEmail ()+"')"+manager.getBumen()+"','"+manager.getContent()+"')";System.out.println(sq2);return false;}if(obj instanceof Emp){Emp emp=(Emp)obj;String sql="insert intoEmp(ename,esex,epas,eage,etel,epn,epas,email) "+"values('"+emp.getEname()+"','"+emp.getEsex()+"','"+emp.getEpas ()+"',"+emp.getAge()+",'"+emp.getEtel()+"',"+emp.getEpn()+"','"+emp.getEpas()+"','"+emp.getEmail()+"')";System.out.println(sql);return false;}return false;}@Overridepublic Vector search(Object obj) {Vector vec=new Vector();for(int i=0;i<10;i++){Emp emp=newEmp("xiaoming","nv",20,"jiangshi","fuzhuren","123","f@123","456");vec.add(emp);}return vec;}@Overridepublic boolean update(Object oldobj, Object newobj) { Emp empold=(Emp)oldobj;}}4.接口类Basedaopackage com.nciae.juan.interfaces;import java.util.Vector;public interface Basedao {boolean add(Object obj);boolean delete(int eno);boolean update(Object oldobj,Object newobj);}5.测试Testpackage com.nciae.test;import java.util.Vector;import com.nciae.juan.dao.EmpSys;import com.nciae.juan.object.Emp;import com.nciae.juan.object.Manager;public class Test {public static void main(String args[]){Emp emp1=new Emp("zhangsan","男",23,"讲师","主任","7882345","a@132","123");EmpSys empsys=new EmpSys();Manager manager=newManager("lisi","nv",22,"fujiaoshou","fuzhuren","333","jj@134d","dd" ,"jisuanji","wangluo");empsys.add(emp1);Vector vect=new Vector();Object obj=null;vect=empsys.search(obj);for(int i=0;i<vect.size();i++){Emp emp2=(Emp)vect.get(i);System.out.println(emp2.getEname());}}}执行结果四遇到问题和解决方法:本次实验遇到的最主要的问题是如何连接数据库,在和同学的探讨中,我理解到连接数据库的实质即用java语言表示sql环境下的命令语句。
华北电力大学实验报告实验名称Java程序面向对象设计(一)课程名称Java程序设计专业班级:学生姓名:学号:成绩:指导教师:张学斌实验日期:一、实验目的及要求1.掌握类的定义。
2.掌握成员变量和成员方法的定义。
3.掌握构造方法的定义和使用。
4.掌握类的多态性二、实验环境Windows2000/Windows XP,JDK 1.2~1.6三、试验内容和步骤要求按照实验内容,写出详细实验过程和步骤,必要时截图。
实验1 机动车1.1实验要求编写一个Java应用程序,该程序有两个类:Vehicle(用于刻画机动车)和User(主类)。
具体要求如下:Vehicle类有一个double类型的变量speed,用于刻画机动车的速度,一个int型变量power,用于刻画机动车的功率。
定义了speedUp(int s)方法,体现机动车有加速功能。
定义了speedDown()方法,体现机动车有减速功能。
定义了setPower(int s),用于设置机动车的功率。
定义了getPower()方法,用于获取机动车的功率。
在主类User的mian()方法中用Vehicle类创建对象,并让该对象调用方法设置功率,演示加速和减速功能。
1.2程序模板Vehicle.javapublic class Vehicle {【代码1】//声明double型变量speed,刻画速度【代码2】//声明int型变量power,刻画功率void speedUp(int s) {【代码3】//将参数s的值与成员变量speed的和赋值给成员变量speed}void speedDown(int d) {【代码4】//将成员变量speed与参数d的差赋值给成员变量speed}void setPower(int p) {【代码5】//将参数p的值赋值给成员变量power}int getPower() {【代码6】//返回成员变量power的值}double getSpeed() {return speed;}}----------------------------------------------------------------------------------------------User.javapublic class User {public static void main(String args[]) {Vehicle car1,car2;【代码7】//使用new 运算符和默认的构造方法创建对象car1【代码8】//使用new 运算符和默认的构造方法创建对象car2car1.setPower(128);car2.setPower(76);System.out.println("car1的功率是:"+car1.getPower());System.out.println("car2的功率是:"+car2.getPower());【代码9】//car1调用speedUp方法将自己的speed的值增加80【代码10】//car2调用speedUp方法将自己的speed的值增加80System.out.println("car1目前的速度:"+car1.getSpeed());System.out.println("car2目前的速度:"+car2.getSpeed());car1.speedDown(10);car2.speedDown(20);System.out.println("car1目前的速度:"+car1.getSpeed());System.out.println("car2目前的速度:"+car2.getSpeed());}}1.3 实验指导●创建一个对象时,成员变量被分配空间,这些内存空间称作该对象的实体或变量,而对象中存放着引用,以确保这些变量被该对象操作使用。
●空对象不能使用,即不能让一个空对象去调用方法产生行为。
假如程序中使用了空对象,在运行时会产生异常:NullPointerException,对象时动态地分配实体的,Java的编译器对空对象不做检查。
因此,在编译时要避免使用空对象。
1.4实验改进(编写程序,并给出结果)1.改进speedUp()方法,使得Vehicle类的对象加速时不能将speed值超过200.2.改进speedDown()方法,使得Vehicle类的对象在减速时不能将speed值小于0.3.增进一个刹车方法void brake(),Vehicle类的对象调用它能将speed的值变成0.1.5 实验结果实验2 家中的电视1.实验要求编写一个Java应用程序,模拟家庭买一台电视,即家庭将电视作为自己的一个成员,即通过调用一个方法将某个电视的引用传递给自己的电视成员。
具体要求如下:●有三个源文件,其中TV.java中的TV类负责创建“电视”对象。
Family.java中的Family类负责创建“家庭”对象,MainClass.java是主类。
●在主类的main()方法中首先使用TV类创建一个对象haierTV ,然后使用Family类再创建一个对象zhangsanFamily,并将先前TV类的实例haierTV的引用传递给zhangsanFamily对象的成员变量homeTV。
2.程序模板TV.javapublic class TV {int channel; //电视频道void setChannel(int m) {if(m>=1){channel=m;}}int getChannel(){return channel;}void showProgram(){switch(channel) {case 1 : System.out.println("综合频道");break;case 2 : System.out.println("经济频道");break;case 3 : System.out.println("文艺频道");break;case 4 : System.out.println("国际频道");break;case 5 : System.out.println("体育频道");break;default : System.out.println("不能收看"+channel+"频道");}}}----------------------------------------------------------------------------------------------Family.javapublic class Family {TV homeTV;void buyTV(TV tv) {【代码1】//将参数tv赋值给homeTV}void remoteControl(int m) {homeTV.setChannel(m);}void seeTV() {homeTV.showProgram(); //homeTV调用showProgram()方法}}-----------------------------------------------------------------------------------------MainClass.javapublic class MainClass {public static void main(String args[]) {TV haierTV = new TV();【代码2】//haierTV调用setChannel(int m),并向参数m传递5System.out.println("haierTV的频道是"+haierTV.getChannel());Family zhangSanFamily = new Family();【代码3】//zhangSanFamily调用void buyTV(TV tv)方法,并将haierTV传递给参数TVSystem.out.println("zhangSanFamily开始看电视节目");zhangSanFamily.seeTV();int m=2;System.out.println("hangSanFamily将电视更换到"+m+"频道");zhangSanFamily.remoteControl(m);System.out.println("haierTV的频道是"+haierTV.getChannel());System.out.println("hangSanFamily再看电视节目");zhangSanFamily.seeTV();}}3.实验结果实验3 共饮同井水1.实验要求编写程序模拟两个村庄共用一口水井。
编写一个Village类,该类有一个静态的int型成员变量waterAmount,用于模拟井水的水量。
在主类Land的main()方法中创建两个村庄,一个村庄改变了waterAmount的值,另一个村庄查看waterAmount的值。
2.程序模板Village.javapublic class Village {static int waterAmount; //模拟水井的水量int peopleNumber; //村庄的人数String name; //村庄的名字Village(String s) {name = s;}static void setWaterAmount(int m) {if(m>0)waterAmount = m;}void drinkWater(int n){if( waterAmount-n>=0) {waterAmount = waterAmount-n;System.out.println(name+"喝了"+n+"升水");}elsewaterAmount = 0;}static int lookWaterAmount() {return waterAmount;}void setPeopleNumber(int n) {peopleNumber = n;}int getPeopleNumber() {return peopleNumber;}}-----------------------------------------------------------------------------Land.javapublic class Land {public static void main(String args[]) {【代码1】//用类名调用setWaterAmount(int m),并向参数传值200int leftWater =【代码2】//用Village类的类名访问waterAmountSystem.out.println("水井中有"+leftWater+" 升水");Village zhaoZhuang,maJiaHeZhi;zhaoZhuang = new Village("赵庄");maJiaHeZhi = new Village("马家河子");zhaoZhuang.setPeopleNumber(80);maJiaHeZhi.setPeopleNumber(120);【代码3】//zhaoZhuang调用drinkWater(int n),并向参数传值50leftWater = 【代码4】//maJiaHeZhi调用lookWaterAmount()方法String name=;System.out.println(name+"发现水井中有"+leftWater+" 升水");maJiaHeZhi.drinkWater(100);leftWater = 【代码5】//zhaoZhuang调用lookWaterAmount()方法name=;System.out.println(name+"发现水井中有"+leftWater+" 升水");int peopleNumber = zhaoZhuang.getPeopleNumber();System.out.println("赵庄的人口:"+peopleNumber);peopleNumber = maJiaHeZhi.getPeopleNumber();System.out.println("马家河子的人口:"+peopleNumber);}}3.实验指导●当java程序执行时,类的字节码文件被加载到内存,如果该类没有创建对象,类的实例变量就不会被分配内存。