




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Java技術(shù)實驗報告實驗一: 2016 年10 月 11 日學(xué)院計算機(jī)與信息學(xué)院專業(yè)班級姓名成績課程名稱Java技術(shù)實驗項目名 稱 實驗一 Java開發(fā)環(huán)境的安裝與配置指導(dǎo)教師教師評語 教師簽名: 年 月 日一、實驗?zāi)康? 掌握J(rèn)DK的安裝步驟(有條件的話可以在Linux系統(tǒng)下安裝)。2 理解環(huán)境變量PATH, CLASSPATH的作用,以及它們的設(shè)置方法(Win98和Win2000/XP下的不同設(shè)置方法)。3 熟悉TextPad(或JCreator)編輯環(huán)境,編寫簡單的Application程序,并編譯和解釋執(zhí)行。4 記錄編譯和執(zhí)行Java程序當(dāng)中的系統(tǒng)錯誤信息提示,并給出解決辦法。二、實驗
2、原理1掌握安裝Jdk1.6的過程。2 安裝JCreator軟件,用于編譯java程序。3. 在Textpad環(huán)境下編寫一個HelloWorld.java程序,在DOS提示符下編譯并執(zhí)行這個程序。4. 設(shè)置環(huán)境變量PATH, CLASSPATH, 使得Java程序能正確編譯和執(zhí)行。5. 編寫一個類A,它位于包a中,保存到A.java中,再編寫一個類B,它位于包b中,保存到B.java中。在類B中實例化類A的一個對象。分別編譯類A和類B。三、使用硬件、軟件環(huán)境PC 計算機(jī)一臺,配置為CPU為1.5G,內(nèi)存為512M,硬盤為40G,安裝WindowsXP操作系統(tǒng)。另外,使用JCreator,JDK1
3、.6.0等軟件四、實驗過程、步驟及原始記錄(算法、原程序、測試結(jié)果,分析等)1 安裝Jdk1.6.0集成環(huán)境,安裝成功后,配置path,classpath路徑,讓用戶在任何目錄下均可用到Java的系統(tǒng)資源。 先配置%JAVA_HOME%環(huán)境變量,路徑為jdk的目錄; 配置path環(huán)境變量,路徑為%JAVA_HOME%bin; 再配置classpath環(huán)境變量,路徑為%JAVA_HOME%jrelib;2 在記事本編寫helloworld程序,并在DOS命令行下編譯運行。 在JCreator中寫出如下代碼,并保存為HelloWorld.java:public class HelloWorldpu
4、blic static void main(String args)System.out.println(HelloWorld!); 在命令行中進(jìn)入到該文件路徑,并輸入javac HelloWorld.java完成編譯,再輸入java HelloWorld完成運行。3 用記事本編寫包a包b的程序,并用DOS命令行運行。執(zhí)行過程:將兩個記事本,改名為A.java和B.java,并寫出如下程序:Ajava文件的源程序:package a;public class Apublic void say()System.out.println(Succeed!);B.java文件中的源程序:package
5、 b;import a.*;public class Bpublic static void main(String args)A aa=new A();aa.maker();先在DOS命令行中編譯A.java文件,在命令行中輸入javac A.java d .再編譯B.java文件,在命令行中輸入javac B.java -d .在命令行中輸入java b.B 即可完成。五、實驗結(jié)論、分析、思考題與心得體會通過本次實驗,我有以下幾方面的收獲、認(rèn)識和體會:1、 學(xué)會了在記事本和命令行,JCreator,等環(huán)境下編寫程序及運行程序的方法;2、 學(xué)會了如何安裝JDK,以及如何配置%JAVA_HOM
6、E%,path,classpath等環(huán)境變量3、 加深了Java中相關(guān)語法的認(rèn)識: 文件名必須與public類的類名相同,并且一個文件中只允許有一個public類。 Java對大小寫敏感,如String 中的S就嚴(yán)格區(qū)分大小寫;對中文標(biāo)點符號和英文標(biāo)點符號敏感,java只能識別英文標(biāo)點符號。 在用記事本編寫包a包b的程序,并用DOS命令行運行時。要將兩個類分別放在兩個文件中,要先編譯A.java再編譯B.java,在編譯時一定要在命令行中輸入javac A.java d .和javac B.java d . 才能自動打包;兩個文件都編譯完成以后,在命令行的父目錄中輸入java b.B 來執(zhí)行,
7、輸入java b.B.java 。3、思考題1).什么是JVM,它的作用是什么?JVM就是java虛擬機(jī)的英文簡寫,java虛擬機(jī)就是為任何的平臺提供一個編譯java程序的接口。就是將編譯的java程序翻譯,以供不同的平臺去識別。2).如何理解PATH和CLASSPATH,,如何設(shè)置它們。PATH和CLASSPATH分別是Java JDK和JRE的路徑。設(shè)置是在計算機(jī)屬性中的高級系統(tǒng)設(shè)置的環(huán)境變量,配置方法如下: 先配置%JAVA_HOME%環(huán)境變量,路徑為jdk的目錄; 配置path環(huán)境變量,路徑為%JAVA_HOME%bin; 再配置classpath環(huán)境變量,路徑為%JAVA_HOME%
8、jrelib;Java技術(shù)實驗報告實驗二: 2016 年10 月 11 日學(xué)院計算機(jī)與信息學(xué)院專業(yè)班級姓名成績課程名稱Java技術(shù)實驗項目名 稱實驗二 類的封裝、繼承、多態(tài)指導(dǎo)教師教師評語 教師簽名: 年 月 日一、實驗?zāi)康?. 復(fù)習(xí)、理解OOP的三大特征封裝、繼承和多態(tài)。2. 學(xué)會使用Java編寫簡單的類。理解類的屬性和方法。3. 掌握關(guān)鍵字private,protected,public的作用,掌握靜態(tài)類,內(nèi)部類的概念。4. 掌握多態(tài)的概念。二、實驗原理分別編寫兩個類Point2D,Point3D來表示二維空間和三維空間的點,使之滿足下列要求:(1) Point2D有兩個整型成員變量x,
9、y (分別為二維空間的X,Y方向坐標(biāo)),Point2D的構(gòu)造方法要實現(xiàn)對其成員變量x, y的初始化。(2) Point2D有一個void型成員方法offset(int a, int b),它可以實現(xiàn)Point2D的平移。(3) Point3D是Point2D的直接子類,它有有三個整型成員變量x,y,z (分別為三維空間的X,Y,Z方向坐標(biāo)),Point3D有兩個構(gòu)造方法:Point3D(int x,int y,int z)和Point3D(Point2D p,int z),兩者均可實現(xiàn)對Point3D的成員變量x, y,z的初始化。(4) Point3D有一個void型成員方法offset(i
10、nt a, int b,int c),該方法可以實現(xiàn)Point3D的平移。(5) 在Point3D中的主函數(shù)main()中實例化兩個Point2D的對象p2d1,p2d2,打印出它們之間的距離,再實例化兩個Point3D的對象p3d1,p3d2,打印出他們之間的距離。(提示:java.lang.Math.sqrt()方法)三、使用硬件、軟件環(huán)境PC 計算機(jī)一臺,配置為CPU為1.5G,內(nèi)存為512M,硬盤為40G,安裝WindowsXP操作系統(tǒng)。另外,使用JCreator,JDK1.6.0等軟件四、實驗過程、步驟及原始記錄(算法、原程序、測試結(jié)果,分析等)利用類的繼承寫一個point2D類,其
11、子類是point3D。子類Point3D的構(gòu)造函數(shù)調(diào)用了父類的構(gòu)造函數(shù);計算平面兩點的距離函數(shù)和計算空間兩點的距離函數(shù)寫在父類Point2D中,并且他們是靜態(tài)方法,在子類繼承后,在其主方法(主方法是靜態(tài)的)中可以直接調(diào)用(或者通過類名調(diào)用);另外平移函數(shù)可以對點進(jìn)行平移。源程序如下:class Point2D int x,y; public Point2D(int x,int y) /有參構(gòu)造函數(shù),對x,y初始化 this.x=x;this.y=y; void offset(int a,int b) /平移函數(shù) x=x+a; y=y+b; public static double distan
12、ce2D(Point2D a,Point2D b )return Math.sqrt(Math.pow(a.x-b.x),2)+Math.pow(a.y-b.y),2); /靜態(tài)方法,求平面兩點的距離public static double distance3D(Point3D a,Point3D b )return Math.sqrt(Math.pow(a.x-b.x),2)+Math.pow(a.y-b.y),2)+Math.pow(a.z-b.z),2);/靜態(tài)方法,求空間兩點的距離public class Point3D extends Point2Dint z;Point3D(int
13、 x,int y,int z)/構(gòu)造函數(shù),對x,y,z初始化 super(x,y);this.z=z;Point3D(Point2D p,int z)/構(gòu)造函數(shù),對x,y,z初始化 super(p.x,p.y);this.z=z;void offset(int a,int b,int c)/平移函數(shù) x+=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);Poi
14、nt3D p3d2=new Point3D(1,6,0);Point3D p3d3=new Point3D(p2d1,16);System.out.println(distance2D=+distance2D(p2d1,p2d2);System.out.println(distance3D=+distance3D(p3d1,p3d2);運行結(jié)果:五、實驗結(jié)論、分析、思考題與心得體會通過本次實驗,我有以下幾方面的收獲、認(rèn)識和體會:1、學(xué)會了類的繼承、封裝、多態(tài)的基本應(yīng)用,學(xué)會了兩個方法aqrt()和pow()在程序中的運用。2、加深了Java中相關(guān)語法的認(rèn)識:子類繼承父類的非私有成員,但是不能繼
15、承構(gòu)造方法,必須用super()來調(diào)用父類的構(gòu)造方法。 構(gòu)造方法可以通過形參的個數(shù)、類型、排列不同來重載。 Math類屬于java.lang包,并且pow()和sqrt()都是static靜態(tài)方法,可以直接通過Math.pow()和Math.sqrt()來調(diào)用。 Static靜態(tài)方法只能直接調(diào)用靜態(tài)成員,不能直接調(diào)用非靜態(tài)成員。3、思考題1).什么是類的多態(tài)性。接口的多種不同的實現(xiàn)方式即為多態(tài)。同一段代碼在不同的地方,會執(zhí)行不同的操作。Java技術(shù)實驗報告實驗三: 2016 年10 月 11 日學(xué)院計算機(jī)與信息學(xué)院專業(yè)班級姓名成績課程名稱Java技術(shù)實驗項目名 稱實驗三 基于GUI的網(wǎng)絡(luò)通信程
16、序設(shè)計指導(dǎo)教師教師評語 教師簽名: 年 月 日一、實驗?zāi)康?. 掌握J(rèn)ava中GUI程序的編寫,包括事件監(jiān)聽機(jī)制。2掌握J(rèn)ava的網(wǎng)絡(luò)通信編程,ServerSocket,Socket類的使用。3掌握J(rèn)ava中多線程的編程,Thread類,Runnable接口的使用。4掌握用面向?qū)ο蟮姆椒ǚ治龊徒鉀Q復(fù)雜問題。二、實驗原理編寫程序完成以下功能:1.設(shè)計一個基于GUI的客戶-服務(wù)器的通信應(yīng)用程序,如圖1,圖2所示。圖1 Socket通信服務(wù)器端界面圖2 Socket通信客戶端界面2.圖1為Socket通信服務(wù)器端界面,點擊該界面中的【Start】按鈕,啟動服務(wù)器監(jiān)聽服務(wù)(在圖1界面中間的多行文本區(qū)域
17、顯示“Server starting”字樣)。圖2為Socket通信客戶端界面,點擊該界面中的【Connect】按鈕與服務(wù)器建立鏈接,并在圖2所示界面中間的多行文本區(qū)域顯示“Connect to server”字樣,當(dāng)服務(wù)器端監(jiān)聽到客戶端的連接后,在圖1界面中間的多行文本區(qū)域追加一行“Client connected”字樣,并與客戶端建立Socket連接。3.當(dāng)圖1所示的服務(wù)器端和圖2所示的客戶機(jī)端建立Socket連接后,編程實現(xiàn)這兩端的數(shù)據(jù)通信,每次將接收到對方的數(shù)據(jù)追加顯示在多行文本框中。三、思考題1. 對整個實驗進(jìn)行總結(jié),寫出實驗心得。2. 在完成上述實驗內(nèi)容的基礎(chǔ)上,嘗試實現(xiàn)服務(wù)器端能
18、夠與多個客戶機(jī)進(jìn)行通信。三、使用硬件、軟件環(huán)境PC 計算機(jī)一臺,配置為CPU為1.5G,內(nèi)存為512M,硬盤為40G,安裝WindowsXP操作系統(tǒng)。另外,使用JCreator,JDK1.6.0等軟件四、實驗過程、步驟及原始記錄(算法、原程序、測試結(jié)果,分析等)分別編寫兩個文件Client.java Server.java;這兩個代碼的結(jié)構(gòu)十分相似,都是先寫一個主類,再寫另一個實現(xiàn)類,主類通過創(chuàng)建實現(xiàn)類的對象來調(diào)用其構(gòu)造方法來實現(xiàn)功能。實現(xiàn)類中寫了很多方法,也寫了很多內(nèi)部類,方法層層調(diào)用。實現(xiàn)類在構(gòu)造方法中寫了調(diào)用了實現(xiàn)GUI的函數(shù),也為按鈕注冊了監(jiān)聽器。在不同的內(nèi)部類中寫了不同監(jiān)聽器所調(diào)用的
19、actioPerformed()方法。在服務(wù)器中創(chuàng)建ServerSocket對象來接受客戶端的連接請求,并指定端口號,客戶端通過Socket對象來向服務(wù)器的ip和端口發(fā)送連接請求。服務(wù)器在接到連接請求后,服務(wù)器會創(chuàng)建一個新的Socket對象與客戶端的Socket對象連接。連接成功后通過IO流來通信,服務(wù)器的輸入流是客戶端的輸出流,服務(wù)器的輸出流時客戶端的輸入流。服務(wù)器代碼如下:import java.awt.*;import java.awt.event.*;import java.util.*;import java.io.*;import .*;import javax.s
20、wing.*;public class Serverpublic static void main(String args)MyFrame serve = new MyFrame();serve.setVisible(true);serve.setResizable(false); /設(shè)置此窗體是否可由用戶調(diào)整大小serve.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /設(shè)置默認(rèn)關(guān)閉操作class MyFrame extends JFrameJTextField port;JButton start;JTextArea content;JTe
21、xtField cin;JButton say;Socket socket;MyFrame()init();StartListen sListen = new StartListen();SayListen stListen = new SayListen();start.addActionListener(sListen); /為按鈕start注冊一個監(jiān)聽器say.addActionListener(stListen); /為按鈕say注冊一個監(jiān)聽器void init() setLayout(new FlowLayout(); /設(shè)置窗體為流式布局setSize(400,400);setLo
22、cation(400,100);add(new JLabel(Port:);port = new JTextField(8888,25);add(port);start = new JButton(Start);add(start);content = new JTextArea(15,35);JScrollPane scroll = new JScrollPane(content); /設(shè)置滾動條add(scroll);add(new JLabel(Say:);cin = new JTextField(26);add(cin);say = new JButton(Say);add(say);
23、class StartListen implements ActionListenerpublic void actionPerformed(ActionEvent e) start.setEnabled(false);try ServerSocket s = new ServerSocket(Integer.parseInt(port.getText(); /創(chuàng)建一個服務(wù)器套接字對象s,形參為從port文本框中讀取的整型(端口號)socket = s.accept();PrintWriter out = new PrintWriter(new BufferedWriter(new Outpu
24、tStreamWriter(socket.getOutputStream(),true);/創(chuàng)建一個打印輸出流對象,其形參為從套接字socket對象中獲取的輸出流out.println(Connected); content.append(Client connected+n); /對兩個字符串進(jìn)行拼接ServerThread st = new ServerThread(); /創(chuàng)建一個ServerThread對象st,并調(diào)用其構(gòu)造方法st.start(); /啟動一個線程,并調(diào)用run()方法 catch (Exception ex) class SayListen implements A
25、ctionListenerString str;public void actionPerformed(ActionEvent e)try PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),true);/創(chuàng)建一個打印輸出流,形參為從套接字socket中獲取的輸出流str=cin.getText();if(!str.isEmpty()out.println(new Date()+n+str); /打印輸出日期 和 發(fā)送的消息(str)conten
26、t.append(new Date()+ n me:+str+n);out.flush(); /清空緩存區(qū)cin.setText(); catch (Exception ex) class ServerThread extends Threadpublic void run()try BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(); /創(chuàng)建一個緩沖輸出流,其形參為從套接字socket中獲取的輸入流String str;while(true)str = in.readLine
27、(); /按行讀取content.append( str+n); catch (Exception ex) 客戶端代碼如下:import java.awt.*;import java.awt.event.*;import java.util.*;import java.io.*;import .*;import javax.swing.*;import java.util.Calendar;public class Clientpublic static void main(String args)MyFrame client=new MyFrame();client.setV
28、isible(true); client.setResizable(false); /設(shè)置此窗體是否可由用戶調(diào)整大小client.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /設(shè)置關(guān)閉操作class MyFrame extends JFrame JTextField ip;JTextField port;JTextField cin;JTextArea content;JButton connect;JButton say;Socket socket;MyFrame()init();ConnectListen cListener=new Co
29、nnectListen();SayListen sListener = new SayListen();connect.addActionListener(cListener); /注冊監(jiān)聽器say.addActionListener(sListener); /注冊監(jiān)聽器void init()setLayout(new FlowLayout(); /設(shè)置窗體為流式布局setSize(440,500);setLocation(800,100);add(new JLabel(Server:ip);ip=new JTextField(,8);add(ip);add(new JLab
30、el(Server:port);port=new JTextField(8888,8);add(port);connect=new JButton(connect);add(connect);content=new JTextArea(16,35);JScrollPane scroll=new JScrollPane(content); /設(shè)置滾動條add(scroll);add(new Label(Say:);cin=new JTextField(25);add(cin);say=new JButton(say);add(say);class ConnectListen implements
31、 ActionListenerint portNum;public void actionPerformed(ActionEvent e)connect.setEnabled(false); /按下connect按鈕后,connect不可再次點擊try content.setText(Connect to server.n); /在文本區(qū)中顯示Connect to server.nportNum =Integer.parseInt(port.getText(); /讀取port文本框中的字符串,并將字符串轉(zhuǎn)化為整型賦給portNumsocket = new Socket(ip.getText(
32、),portNum); /定義對象socket,并指定主機(jī)號(host)和端口號portNumClientThread ct = new ClientThread(); /定義一個ClientThread類的對象ctct.start(); /啟動一個線程,并調(diào)用ClientThread類中的run()方法 catch (Exception ex) class SayListen implements ActionListenerString str;public void actionPerformed(ActionEvent e)try PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),true); /從socket獲取字節(jié)輸出流,并將其最終轉(zhuǎn)化為PrintWriterstr=cin.getText(); /從文本框中獲取字符串賦給strif(!str.isEmpty()out.println(new Date()+ n+ str); /打印日期和strcontent.append(new Date()+n me:+str+n);out.flush
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)勞動合同范本:全員適用版
- 追討合同違約金起訴書范本
- 快遞企業(yè)委托代理合同
- 汽車保險合同模板
- 土地租賃經(jīng)營權(quán)合同書樣本
- 技術(shù)研發(fā)勞動合同規(guī)定
- 機(jī)織服裝的綠色包裝設(shè)計考核試卷
- 無線傳輸技術(shù)在野生動物保護(hù)中的應(yīng)用考核試卷
- 方便食品市場趨勢與消費者需求分析考核試卷
- 批發(fā)商客戶關(guān)系持續(xù)優(yōu)化策略研究考核試卷
- 初中物理競賽及自主招生講義:第7講 密度、壓強與浮力(共5節(jié))含解析
- 高中主題班會 梁文鋒和他的DeepSeek-由DeepSeek爆火開啟高中第一課-高中主題班會課件
- 污水處理設(shè)施運維服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 一年級下冊書法教案 (一)
- 《浙江省應(yīng)急管理行政處罰裁量基準(zhǔn)適用細(xì)則》知識培訓(xùn)
- 2024年八年級語文下冊《經(jīng)典常談》第一章《說文解字》練習(xí)題卷附答案
- 華為基建項目管理手冊
- 《黑龍江省住房和城鄉(xiāng)建設(shè)系統(tǒng)行政處罰裁量基準(zhǔn)》
- 發(fā)育生物學(xué)1-9章全
- 基于單片機(jī)的交通信號燈模擬控制系統(tǒng)設(shè)計 答辯PPT
- 中國舞蹈家協(xié)會《中國舞蹈考級》 第四版教材
評論
0/150
提交評論