合工大JAVA实验报告

上传人:jin****ng 文档编号:169659575 上传时间:2022-11-16 格式:DOCX 页数:24 大小:89.08KB
收藏 版权申诉 举报 下载
合工大JAVA实验报告_第1页
第1页 / 共24页
合工大JAVA实验报告_第2页
第2页 / 共24页
合工大JAVA实验报告_第3页
第3页 / 共24页
资源描述:

《合工大JAVA实验报告》由会员分享,可在线阅读,更多相关《合工大JAVA实验报告(24页珍藏版)》请在装配图网上搜索。

1、J詈聲醤1: 20164fr10 血 11鶴8+1斗WdJT niiF迪m:!离鲂慕网 聲密刍肛BAer 一就疋1 Sb一、实验目的1.掌握JDK的安装步骤(有条件的话可以在Linux系统下安装)2 .理解环境变量PATH, CLASSPATH的作用,以及它们的设置方法(Win98和Win2000/XP下的不同设置方法)。3 .熟悉TextPad (或JCreator)编辑环境,编写简单的Application程序,并编译和解释执行。4 记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。二实验原理1掌握安装Jdk1.6的过程。2 .安装JCreator软件,用于编译java程序

2、。3. 在Textpad环境下编写一个HelloWorld.java程序,在DOS提示符下编译并执行这个程序。4. 设置环境变量PATH, CLASSPATH,使得Java程序能正确编译和执行。5. 编写一个类A,它位于包a中,保存到A.java中,再编写一个类B,它位于包b中,保存到B.java中。在类B中实例化类A的一个对象。分别编译类A和类B。三、使用硬件、软件环境PC计算机一台,配置为CPU为1.5G,内存为512M,硬盘为40G,安装Wi ndowsXP操作系统。另外,使用JCreator,JDK1.6.0等软件四、实验过程、步骤及原始记录算法、原程序、测试结果,分析等)1 .安装J

3、dk1.6.0集成环境,安装成功后,配置path,classpath路径,让用户在任何 目录下均可用到Java的系统资源。 先配置JAVA_HOME%环境变量,路径为jdk的目录; 酉己置path环境变量,路径为JAVA_HOME%bin; 再配置classpath环境变量,路径为%JAVA HOME%jrelib;2 .在记事本编与helloworld程序,并在DOS命令行下编译运行。 在JCreator中写出如下代码,并保存为HelloWorld.java :public class HelloWorldpublic static void main( Stri ng args)Syste

4、m.out.pr in tl n( HelloWorld!); 在命令行中进入到该文件路径,并输入javac HelloWorld.java完成编译,再 输入java HelloWorld完成运行。3 .用记事本编写包a包b的程序,并用DOS命令行运行。执行过程:将两个记事本,改名为A.java和B.java,并写出如下程序:A . java文件的源程序:package a;public class Apublic void say()System.out.pr in tl n(Succeed!);B.java文件中的源程序:package b;import a.*;public class

5、Bpublic static void mai n(Stri ng args)A aa = new A();aa.maker(); 先在DOS命令行中编译A.java文件,在命令行中输入javac A.java -d .再编译B.java文件,在命令行中输入javac B.java -d . 在命令行中输入java b.B即可完成。五、实验结论、分析、思考题与心得体会通过本次实验,我有以下几方面的收获、认识和体会:1、学会了在记事本和命令行,JCreator等环境下编写程序及运行程序的方法;2、学会了如何安装JDK,以及如何配置JAVA_HOME%, path , classpath等环境 变

6、量3、加深了 Java中相关语法的认识: 文件名必须与public类的类名相同,并且一个文件中只允许有一个public类。 Java对大小写敏感,如String中的S就严格区分大小写;对中文标点符号和 英文标点符号敏感,java只能识别英文标点符号。 在用记事本编写包a包b的程序,并用DOS命令行运行时。要将两个类分别 放在两个文件中,要先编译A.java再编译B.java,在编译时一定要在命令行中 输入javac A.java -d和javac B.java -d .才能自动打包;两个文件都编译完 成以后,在命令行的父目录中输入java b.B来执行,输入java b.B.java。3思考题

7、1 ) 什么是JVM,它的作用是什么?JVM就是java虚拟机的英文简写java虚拟机就是为任何的平台提供一个编译java 程序的接口。就是将编译的java程序翻译,以供不同的平台去识别。2 ).如何理解PATH和CLASSPATH,如何设置它们。PATH和CLASSPATH分别是Java JDK和JRE的路径。设置是在计算机属性中的高级 系统设置的环境变量,配置方法如下: 先配置JAVA_HOME%环境变量,路径为jdk的目录; 酉己置path环境变量,路径为JAVA_HOME%bin; 再配置classpath环境变量,路径为%JAVA_HOME%jrelib;J詈薄外ss醤H : 201

8、64ft10 血 11 m学院计算机与信息学院专业班级姓名成绩课程名称Java技术实验项目 名称实验二类的封装、继承、多态指导教师教 师 评 语教师签名:年 月日一、实验目的1. 复习、理解OOP的二大特征封装、继承和多态。2. 学会使用Java编写简单的类。理解类的属性和方法。3. 掌握关键字private,protected,public的作用,掌握静态类,内部类的概念。4. 掌握多态的概念。二实验原理分别编写两个类Point2D,Point3D来表示维空间和 维空间的点,使之满足下列要求:(1) Point2D有两个整型成员变量x, y (分别为维空间的X,Y方向坐标),Point2D的

9、构 造方法要实现对其成员变量x, y的初始化。(2 ) Point2D有一个void型成员方法offset(int a, int b),它可以实现Point2D的平移。(3 ) Point3D是Point2D的直接子类尼有有个整型成员变量x,y,z分别为维空间的 X,Y,Z方向坐标),Point3D有两个构造方法:Point3D(int x,int y,int z和 Point3D(Point2D p,int z),两者均可实现对Point3D的成员变量x, y,z的初始化。(4 ) Point3D 有一 void 型成员方法 offset(int a, int b,int c,该方法可以实现

10、 Point3D 的平移。(5)在Point3D中的主函数main()中实例化两个Point2D的对象p2d1, p2d2,打印出 它们之间的距离,再实例化两个Point3D的对象p3d1, p3d2,打印出他们之间的距离。(提 示: java.la ng.Math.sqrt()方法)三、使用硬件、软件环境PC计算机一台,配置为CPU为1.5G ,内存为512M,硬盘为40G,安装Win dowsXP操作系统。另外,使用JCreator,JDK1.6.0等软件四、实验过程、步骤及原始记录(算法、原程序、测试结果,分析等)利用类的继承写一个point2D类,其子类是point3D。子类Point

11、3D的构造函数调用了 父类的构造函数;计算平面两点的距离函数和计算空间两点的距离函数写在父类Point2D 中,并且他们是静态方法,在子类继承后,在其主方法(主方法是静态的)中可以直接调 用(或者通过类名调用);另外平移函数可以对点进行平移。源程序如下:class Point2D int x,y;public Point2D(int x,int y) 有参构造函数,对x,y 初始化thFxux;thFyuyjvoid offset (int 巴nts/7図博宀XHX+OJyuy+bpuEic static doubdistancezspoinsD ppoint2D b =retumMathsq

12、rt(Mathpow(?xcraM)+Mathpow(?yby)M)/s、幣9|翻BhsHMpuEic static douEe distancesspoinsD ppoinsD b =returnMathsqrt(Mathpow(axbaw)+Mathpow(aycry)M+Mathpow(?NbNh2、siB9puEic dass poinsD extends Point2sint N;poinsDant xjnt ykt N)、济ffiglB、逛x、y、N宀supxwthFNHN;point3D(point2D pkt N)、济ffiglB、逛x、y、Nsiaft宀super-(pxp.

13、y);this. NUN;void offsesnt pint bkt 矚ssx+=a;y+=b; z+=c;public static void main(String args) Point2D p2d1=new Point2D(10,3); Point2D p2d2=new Point2D(2,2); Point3D p3d1=new Point3D(10,11,0); Point3D p3d2=new Point3D(1,6,0); Point3D p3d3=new Point3D(p2d1,16);管理员:命令蝗示鞋Microsoft U in do us I 版本 6.1.7&0i

14、J版权所有 S 2009 Microsoft Corpoiation c.保留所有权利。C:UsersMldriinistratopcd desktopC:XUseFsXfldninistratopXDesktopjauac Point3D_jauaC :UsersMldninistratorM)es:ljava Foint3D distance2D=8-06225774829855distance3D=10-295630140987System .out println(distance2D=+distance2D(p2d1,p2d2);System .out println(distanc

15、e3D=+distance3D(p3d1,p3d2);运行结果:五、实验结论、分析、思考题与心得体会通过本次实验,我有以下几方面的收获、认识和体会:1学会了类的继承、封装、多态的基本应用,学会了两个方法aqrt()和pow()在程序 中的运用。2、加深了 Java中相关语法的认识: 子类继承父类的非私有成员,但是不能继承构造方法,必须用super ()来调用 父类的构造方法。 构造方法可以通过形参的个数、类型、排列不同来重载。 Math类属于java.lang包,并且pow ()和sqrt()都是static静态方法,可 以直接通过Math.pow()禾口 Math.sqrt()来调用。Sta

16、tic静态方法只能直接调用静态成员,不能直接调用非静态成员。3思考题1)什么是类的多态性。接口的多种不同的实现方式即为多态。同一段代码在不同的地方,会执行不同的操作。Java技术实验报告实验三:2016 年 10 月 11日学院计算机与信息学院专业班级姓名成绩课程名称Java技术实验项目 名称实验二基于GUI的网络通信程序设计指导教师教 师 评 语教师签名:年 月日一、实验目的1. 掌握 Java中GUI程序的编写,包括事件监听机制。2 掌握Java的网络通信编程,ServerSocket, Socket类的使用。3 掌握Java中多线程的编程,Thread类,Runnable接口的使用。4

17、掌握用面向对象的方法分析和解决复杂问题。二、实验原理编写程序完成以下功能:1设计一个基于GUI的客户-服务器的通信应用程序,如图1,图2所示。图1 Socket通信服务器端界面图2 Socket通信客户端界面2图1为Socket通信服务器端界面,点击该界面中的【Start】按钮,启动 服务器监听服务(在图1界面中间的多行文本区域显示“Server starting.”字 样)。图2为Socket通信客户端界面,点击该界面中的【Connect】按钮与服 务器建立链接,并在图2所示界面中间的多行文本区域显示“Connect to server.”字样,当服务器端监听到客户端的连接后,在图1界面中间

18、的多行文 本区域追加一行“Client connected.”字样,并与客户端建立Socket连接。3当图1所示的服务器端和图2所示的客户机端建立Socket连接后,编程 实现这两端的数据通信,每次将接收到对方的数据追加显示在多行文本框中。三、思考题1. 对整个实验进行总结,写出实验心得。2. 在完成上述实验内容的基础上,尝试实现服务器端能够与多个客户机进 行通信。三、使用硬件、软件环境PC计算机一台,配置为CPU为1.5G,内存为512M,硬盘为40G,安装Wi ndowsXP操作系统。另外,使用JCreator, JDK1.6.0等软件四、实验过程、步骤及原始记录算法、原程序、测试结果,分

19、析等)分别编写两个文件Client.java Server.java这两个代码的结构十分相似,都是先写一个 主类,再写另一个实现类,主类通过创建实现类的对象来调用其构造方法来实现功能。实 现类中写了很多方法,也写了很多内部类,方法层层调用。实现类在构造方法中写了调用 了实现GUI的函数,也为按钮注册了监听器。在不同的内部类中写了不同监听器所调用的 actioPerformed ()方法。在服务器中创建ServerSocket对象来接受客户端的连接请求,并指定端口号,客户端通 过Socket对象来向服务器的ip和端口发送连接请求。服务器在接到连接请求后,服务器 会创建一个新的Socket对象与客

20、户端的Socket对象连接。连接成功后通过IO流来通信, 服务器的输入流是客户端的输出流,服务器的输出流时客户端的输入流。服务器代码如下:import java.awt.*;import java.awt.eve nt.*;import java.util.*;import java.io.*;import java. net.*;import javax.swi ng.*;public class Serverpublic static void main( Stri ng args)MyFrame serve = new MyFrame();serve.setVisible(true);s

21、erve.setResizable(false);设置此窗体是否可由用户调整大小serve.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 设置默认关闭 操作class MyFrame exte nds JFrameJTextField port;JButt on start;JTextArea content;JTextField cin;JButt on say;Socket socket;MyFrame()in it();StartListe n sListe n 二 new StartListe n();SayListe n stList

22、e n 二 new SayListe n();start.addActio nListe ner(sListe n);say.addActio nListe ner(stListe n);void in it()为按钮start注册一个监听器为按钮say注册一个监听器setLayout(new FlowLayoutO);/设置窗体为流式布局setSize(400,400);setLocatio n(400,100);add( new JLabel(Po rt:);port = new JTextField(8888,25);add(port);start = new JButto n( Sta

23、rt);add(start);content = new JTextArea(15,35);JScrollPane scroll = new JScrollPane(content); 设置滚动条add(scroll);add( new JLabel(Say:);cin 二 new JTextField(26);add(c in);say = new JButto n( Say);add(say);class StartListe n impleme nts Actio nListe nerpublic void actio nPerformed(Actio nEvent e)start.se

24、tE nabled(false);try ServerSocket s = newServerSocket(I nteger.parsel nt(port.getText(); /创建一个服务器套接字对象 s,形参为从port文本框中读取的整型(端口号)socket = s.accept();Pri ntWriter out = new Pri ntWriter (new BufferedWriter (new OutputStreamWriter(socket.getOutputStream(),true);/y创建一 打印输出流对象,其 形参为从套接字socket对象中获取的输出流out.

25、pr in tl n(C onn ected);con te nt.appe nd(Clie nt conn ected + n);/对两个字符串进行拼接ServerThread st = new ServerThread();创建一个ServerThread对象st,并调用其构造方法st.start();启动一个线程,并调用run()方法catch (Excepti on ex) class SayListe n impleme nts Actio nListe nerString str;public void acti on Performed(Acti on Eve nt e)try

26、Pr in tWriter out = new Pri ntWriter (new BufferedWriter (new OutputStreamWriter(socket.getOutputStream(),true);/创建一 打印输出流,形参为 从套接字socket中获取的输出流str=c in .getText();if(!str.isEmpty()out.pri ntln(n ew Date() + n+str);打印输出日期和发送的消息(str)conten t.appe nd(new Date() + n me:+str+n);out.flush();清空缓存区cin .set

27、Text();catch (Excepti on ex) class ServerThread exte nds Threadpublic void run()try BufferedReader in 二 new BufferedReader (newIn putStreamReader(socket.getI nputStream(); /创建一 缓冲输出流,其形参为从套 接字socket中获取的输入流String str;while(true)str = in .readL in e();按行读取conten t.appe nd( str+n);catch (Excepti on ex)

28、 客户端代码如下:import java.awt.*;import java.awt.eve nt.*;import java.util.*;import java.io.*;import java. net.*;import javax.swi ng.*;import java.util.Cale ndar;public class Clie ntpublic static void main( Stri ng args)MyFrame clie nt二new MyFrame();clie nt.setVisible(true);clie nt.setResizable(false);设置此

29、窗体是否可由用户调整大小clie nt.setDefaultCloseOperatio n(JFrame.EXIT_ON_CLOSE); 设置关闭操作 class MyFrame exte nds JFrameJTextField ip;JTextField port;JTextField cin;JTextArea content;JButt on conn ect;JButt on say;Socket socket;MyFrame()in it();Conn ectListe n cListe ner二new Conn ectListe n();SayListen sListener =

30、 new SayListen();注册监听器注册监听器设置窗体为流式布局conn ect.addActi on Liste ner(cListe ner); say.addActi on Liste ner(sListe ner);void in it()setLayout(new FlowLayout(); setSize(440,500);setLocatio n(800,100);add( new JLabel(Server:ip);ip=new JTextField(127.0.0.1,8);add(ip);add( new JLabel(Server:port);port=new J

31、TextField(8888,8);add(port);conn ect 二new JButt on(conn ect);add(c onn ect);content二new JTextArea(16,35);JScrollPa ne scroll = new JScrollPa ne(co nte nt);设置滚动条add(scroll);add(new Label(Say:);cin二new JTextField(25);add(c in);say 二new JButt on (say);add(say);class Conn ectListe n impleme nts Actio nL

32、iste nerint portNum;public void acti on Performed(Acti on Eve nt e)connect.setEnabled(false);按下 connect按钮后,connect不可再次点击try content.setText(Connect to server.n); 在文本区中显示Conn ect to server.、nportNum =I nteger.parse In t(port.getText(); 读取 port 文本框中的字 符串,并将字符串转化为整型赋给portNumsocket = new Socket(ip.getTe

33、xt(),portNum); 定义对象 socket,并指定 主机号(host )和端口号portNumClie ntThread ct = new Clie ntThread();定义一个 Clie ntThread 类的对象ctct.start();启动一个线程,并调用ClientThread 类中的 run ()方法catch (Excepti on ex) class SayListe n impleme nts Actio nListe nerString str;public void acti on Performed(Acti on Eve nt e)try Pri ntWri

34、ter out = new Pr in tWriter (new BufferedWriter (newOutputStreamWriter(socket.getOutputStream(),true); 从 socket 获取字节输出 流,并将其最终转化为Prin tWriterstr=ci n.getText();从文本框中获取字符串赋给strif(!str.isEmpty()out.println(new Date()+ n+ str);打印日期和 strconten t.appe nd(new Date() + n me:+str+n);out.flush();清空缓存区cin .se

35、tText();catch (Excepti on ex) class Clie ntThread exte nds Threadpublic void run()try BufferedReader in 二 new BufferedReader (newIn putStreamReader(socket.getI nputStream();/获取 socket 对象的字节输入流,并将字节流最终转换为缓冲字符输入流String str;while(true)str = in .readL in e();按行读取/System.out.pri ntln (a);喇叭响一声conten t.ap

36、pe nd(str+n);延长字符串catch (Excepti on ex) 测试结果:五、实验结论、分析、思考题与心得体会第一次写这个程序的时候我用的数据报通信Datagramsocket和DatagramPacket来 写,结果发现是UDP通信,发送一个消息只有等到对方回复后才能发送第二个消息,十分 不方便。后来用Socket和ServerSocket来写,对于我这个新手来说更加容易上手。因为服务器 的GUI界面有start和say按钮,客户端有connect和say按钮,按钮被点击后会触发动 作事件,而不同的按钮要执行不同的操作,也就意味着要写多个actionPerformed ()方

37、法,可是一个类里面只能与一个actionPerformed ()方法,这可怎么办呢?后来我上网 查阅资料,上网查看别人与的代码,发现可以与几个实现了Acti on Liste ner接口的内部类, 在内部类中再与一个aciti on Performed ()方法,这样就与了好几个不同的 actionPerformed ()方法,在注册监听器的时候,按钮需要实现哪种功能,就用哪个内 部类的对象来监听就可以了。在GUI的设计中设计了二个Panel,用BorderLayout来 布局分为NORTH,CENTER,SOUTH还特意设置了 JSscrollpane滚动条防止JTextField 中的内谷超出谷量;我也特意设计了双方对话的时间,米用的是打印new Date ()。在服务器中创建ServerSocket对象来接受客户端的连接请求,并指定端口号,客户端通 过Socket对象来向服务器的ip和端口发送连接请求。服务器在接到连接请求后,服务器 会创建 个新的Socket对象与客户端的Socket对象连接。连接成功后通过IO流来通信, 月服务器的输入流是客户端的输出流,服务器的输出流时客户端的输入流。

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

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

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


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