JAVA實訓報告聊天室_第1頁
JAVA實訓報告聊天室_第2頁
JAVA實訓報告聊天室_第3頁
JAVA實訓報告聊天室_第4頁
JAVA實訓報告聊天室_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、java實訓設(shè)計報告java實訓設(shè)計報告電子信息工程學院專業(yè):軟件技術(shù)班級:1班 實訓:聊天室項目簡介項目名稱聊天室項目功能運用java程序編寫聊天室,實現(xiàn)簡單的聊天功能。它是圖形界面,線程,流與文件系統(tǒng)等技術(shù)的綜合應用。其界面主要采用了java.awt包,java.swing包以及java.util包等。程序?qū)崿F(xiàn)了聊天室的基本功能,其中有:1、啟動服務器。2、進入客戶端界面。3、登錄聊天室。4、發(fā)送信息(實現(xiàn)按回車鍵發(fā)送消息)。5、關(guān)閉服務器項目目的1.能在程序中熟練應用java 多線程技術(shù)2.熟悉java c/s 程序的結(jié)構(gòu)和工作原理3.能開發(fā)客戶端應用程序4.會編寫服務器端多線程應用程序

2、。5.熟悉java 數(shù)據(jù)庫連接方法,能在程序中讀寫數(shù)據(jù)庫主要技術(shù)java編程語言、javaswing組件開發(fā)環(huán)境jdk1.6.0_10項目特點使用組件構(gòu)建的c/s應用程序各項功能的組織合理搭配應用圖標控制功能實現(xiàn)技術(shù)重點構(gòu)建基于c/s架構(gòu)的應用程序swing組件應用事件監(jiān)聽的應用方法的編寫技術(shù)難點swing組件的應用事件監(jiān)聽器的使用異常處理方法簡便的選擇系統(tǒng)總體設(shè)計1、設(shè)計思路聊天系統(tǒng)的設(shè)計跟普通網(wǎng)站設(shè)計有著許多不同的地方,普通網(wǎng)站設(shè)計所考慮的因素,例如,普通網(wǎng)站需要對布局進入大量美化以及動畫設(shè)計等等,而聊天室只要提供滿足訪客雙方直接實時聊天即可。因此,在設(shè)計聊天系統(tǒng)的過程中,必須要考慮好以下

3、幾個設(shè)計要點:在internet上的聊天程序一般都是以服務器提供服務端連接響應,使用者通過客戶端程序登錄到服務器,就可以與登錄在同一服務器上的用戶交談,這是一個面向連接的通信過程。因此,程序要在tcp/ip環(huán)境下,實現(xiàn)服務器端和客戶端兩部分程序。1首先通過繼承jframe類構(gòu)造服務器界面。2設(shè)計客戶端程序使其能夠完成正常的通信功能。3設(shè)計監(jiān)聽程序,使其顯示登錄的ip地址端口號,以及用戶昵稱,通過偵聽按鈕可以調(diào)用客戶端程序,實現(xiàn)聊天功能。2、各個模塊詳細的功能描述。1、服務器端功能描述:啟動服務器端。2、客戶端功能描述: 啟動客戶端;顯示登錄昵稱:顯示聊天記錄:發(fā)送信息;退出聊天室。系統(tǒng)詳細設(shè)計

4、1、界面設(shè)計主要由類chatroom來實現(xiàn),界面實際總體如下:輸入昵稱的文本框,輸入ip地址的文本框以及輸入端口的文本框;連接的按鈕;退出按鈕;接受消息的文本域;發(fā)送消息文本框;發(fā)送按鈕。項目設(shè)計在設(shè)計聊天室時,編寫3個java源文件:client.java、frame1.java、serverthread.java;分別放在兩個包中,一個是client,放client.java、frame1.java;一個是server,放serverthread.java;聊天室除了上述java源文件所給出的類外,還需要java系統(tǒng)提供的一些重要類,如jbutton,jtextfield等。下面是java

5、源文件的總體設(shè)計。client(主類)客戶端client類負責創(chuàng)建聊天室客戶端的主窗口,該類含有main方法,計算器從該類開始執(zhí)行。serverthread(主類)服務器 serverthread類負責創(chuàng)建聊天室服務器的主窗口,該類含有main方法,計算器從該類開始執(zhí)行。二詳細代碼設(shè)計聊天室程序設(shè)計詳細代碼如下:客戶端代碼:package client;import javax.swing.uimanager;public class client public client() frame1 frame=new frame1(); frame.setvisible(true); frame.

6、validate(); public static void main(string args) try uimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname(); catch(exception e) e.printstacktrace(); new client(); package client;import java.awt.*;import java.awt.event.*;import javax.swing.*;import .*;import java.io.*;public class frame1

7、extends jframe implements runnable private jpanel contentpane; private textarea textarea1=new textarea(); private label label1=new label(); private jtextfield textfield1=new jtextfield(); private jbutton button1=new jbutton(); private jbutton button2=new jbutton(); private jbutton button3=new jbutto

8、n(); socket socket=null; bufferedreader in=null; printwriter out=null; jtextfield server=new jtextfield(); jlabel jlabel1=new jlabel(); jlabel jlabel2=new jlabel(); jtextfield port=new jtextfield(); jscrollpane jscrollpane1=new jscrollpane(); jlist jlist1=new jlist(); jlabel jlabel3=new jlabel(); de

9、faultlistmodel l1=new defaultlistmodel(); public frame1() try init(); catch(exception e) e.printstacktrace(); private void init() throws exception server.settext(inetaddress.getlocalhost().gethostaddress(); server.setbounds(new rectangle(69,252,74,22); contentpane=(jpanel)this.getcontentpane(); text

10、area1.seteditable(false); textarea1.setfont(new java.awt.font("dialog",font.plain,14); textarea1.setbounds(new rectangle(11,9,383,199); textarea1.setbackground(new color(66,00,233); textarea1.setforeground(new color(255,00,00); contentpane.setlayout(null); this.setsize(new dimension(506,31

11、4); this.settitle("客戶端"); label1.setfont(new java.awt.font("dialog",font.plain,12); label1.setforeground(new color(110,110,250); label1.settext("消息:"); label1.setbounds(new rectangle(26,213,32,27); button1.setactioncommand("發(fā)送"); button1.setbounds(new rectangl

12、e(334,216,62,23); button1.setenabled(false); button1.setfont(new java.awt.font("dialog",font.plain,12); button1.settext("發(fā)送"); button1.setforeground(new color(110,110,250); button1.addactionlistener(new java.awt.event.actionlistener() public void actionperformed(actionevent e) bu

13、tton1_actionperformed(e); ); button2.setbounds(new rectangle(266,251,58,24); button2.setfont(new java.awt.font("dialog",font.plain,12); button2.settext("連接"); button2.setforeground(new color(110,110,250); button2.addactionlistener(new java.awt.event.actionlistener() public void a

14、ctionperformed(actionevent e) button2_actionperformed(e); ); button3.setbounds(new rectangle(333,251,62,22); button3.setfont(new java.awt.font("dialog",font.plain,12); button3.settext("退出"); button3.setforeground(new color(110,110,250); button3.addactionlistener(new java.awt.even

15、t.actionlistener() public void actionperformed(actionevent e) button3_actionperformed(e); ); jlabel1.setfont(new java.awt.font("dialog",font.plain,12); jlabel1.settooltiptext(""); jlabel1.sethorizontalalignment(swingconstants.right); jlabel1.sethorizontaltextposition(swingconstan

16、ts.right); jlabel1.settext("服務器:"); jlabel1.setforeground(new color(110,110,250); jlabel1.setbounds(new rectangle(11,254,58,20); jlabel2.setfont(new java.awt.font("dialog",font.plain,12); jlabel2.settooltiptext(""); jlabel2.sethorizontalalignment(swingconstants.right);

17、jlabel2.sethorizontaltextposition(swingconstants.right); jlabel2.settext("端口:"); jlabel2.setforeground(new color(110,110,250); jlabel2.setbounds(new rectangle(172,253,27,18); port.settext("8000"); port.setbounds(new rectangle(202,251,40,22); jlist1.setfont(new java.awt.font("

18、;dialog",font.plain,12); jlabel3.setbounds(new rectangle(406,254,91,21); jlabel3.setforeground(new color(110,110,250); textfield1.setbounds(new rectangle(58,215,271,24); jscrollpane1.setbounds(new rectangle(404,14,94,226); jscrollpane1.getviewport().add(jlist1); contentpane.add(button3,null); c

19、ontentpane.add(button2,null); contentpane.add(button1,null); contentpane.add(server,null); contentpane.add(jlabel1,null); contentpane.add(textfield1,null); contentpane.add(textarea1,null); contentpane.add(jlabel2,null); contentpane.add(port,null); contentpane.add(label1,null); contentpane.add(jscrol

20、lpane1,null); contentpane.add(jlabel3,null); jlist1.setmodel(l1); void button1_actionperformed(actionevent e) out.println(jlabel3.gettext()+"對"+l1.getelementat(jlist1.getselectedindex()+"說:"+textfield1.gettext(); out.flush(); textfield1.settext(""); void button3_actionp

21、erformed(actionevent e) try out.println("大家盡情聊,再見!"); out.flush(); catch(exception e2) finally system.exit(0); void button2_actionperformed(actionevent e) thread thread=new thread(this); thread.start(); public void run() try socket=new socket(server.gettext(),integer.parseint(port.gettext(

22、); in=new bufferedreader(new inputstreamreader(socket.getinputstream(); out=new printwriter(socket.getoutputstream(); button1.setenabled(true); receiver r=new receiver(); thread t=new thread(r); t.start(); textarea1.append("歡迎加入聊天室n"); / button2.setenabled(false); catch(exception e) textar

23、ea1.append("連接失??!請確認服務器地址并且服務器已啟動n"); private class receiver implements runnable public void run() string s1=null; try s1=in.readline(); while(s1!=null) if(s1.equals("clear users!") l1.removeallelements(); l1.addelement("大家"); jlist1.setselectedindex(0); else if(jlabel3

24、.gettext().equals("") jlabel3.settext(s1); else if(s1.length()<8&&!jlabel3.gettext().equals(s1) l1.addelement(s1); else if(!jlabel3.gettext().equals(s1) textarea1.append(s1+"n"); s1=in.readline(); in.close(); out.close(); socket.close(); catch(exception e) button1.sete

25、nabled(false); 服務器端代碼:package server;import .*;import java.io.*;public class serverthread implements runnableserversocket server=null;bufferedreader in=null;printwriter out=null;inetaddress myserver=null;object users=new object1000;static int usercount=0;public serverthread()tryinit();catch(exceptio

26、n e)e.printstacktrace();private void init() throws exceptionthread thread=new thread(this);thread.start();public void run()tryserver=new serversocket(8000);socket socket;while(true)socket=server.accept();if(socket!=null)usersusercount=socket;receiver r=new receiver(socket,usercount);thread t=new thr

27、ead(r);t.start();usercount+;catch(exception e)e.printstacktrace();private class receiver implements runnablesocket socket;int user;receiver(socket socket,int user)this.socket=socket;this.user=user;public void run()bufferedreader in=null;printwriter out=null;string s1=null;int userno;tryout=new print

28、writer(socket.getoutputstream();out.println("user"+user);out.flush();for(int j=0;j<usercount;j+)if(usersj=null)continue;out=new printwriter(socket)usersj).getoutputstream();out.println("clear users!");out.flush();for(int k=0;k<usercount;k+)out.println("user"+k);out.flush();in=new bufferedreader(new inputstreamreader(socket.getinputstream(); s1=in.readline(); while(!s1.equals("大家盡情聊,再見!") int te

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論