![JAVA實訓(xùn)報告聊天室_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/8/1fa145cf-67e2-4e58-93c0-560c8452b542/1fa145cf-67e2-4e58-93c0-560c8452b5421.gif)
![JAVA實訓(xùn)報告聊天室_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/8/1fa145cf-67e2-4e58-93c0-560c8452b542/1fa145cf-67e2-4e58-93c0-560c8452b5422.gif)
![JAVA實訓(xùn)報告聊天室_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/8/1fa145cf-67e2-4e58-93c0-560c8452b542/1fa145cf-67e2-4e58-93c0-560c8452b5423.gif)
![JAVA實訓(xùn)報告聊天室_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/8/1fa145cf-67e2-4e58-93c0-560c8452b542/1fa145cf-67e2-4e58-93c0-560c8452b5424.gif)
![JAVA實訓(xùn)報告聊天室_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/8/1fa145cf-67e2-4e58-93c0-560c8452b542/1fa145cf-67e2-4e58-93c0-560c8452b5425.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、java實訓(xùn)設(shè)計報告java實訓(xùn)設(shè)計報告電子信息工程學(xué)院專業(yè):軟件技術(shù)班級:1班 實訓(xùn):聊天室項目簡介項目名稱聊天室項目功能運用java程序編寫聊天室,實現(xiàn)簡單的聊天功能。它是圖形界面,線程,流與文件系統(tǒng)等技術(shù)的綜合應(yīng)用。其界面主要采用了java.awt包,java.swing包以及java.util包等。程序?qū)崿F(xiàn)了聊天室的基本功能,其中有:1、啟動服務(wù)器。2、進(jìn)入客戶端界面。3、登錄聊天室。4、發(fā)送信息(實現(xiàn)按回車鍵發(fā)送消息)。5、關(guān)閉服務(wù)器項目目的1.能在程序中熟練應(yīng)用java 多線程技術(shù)2.熟悉java c/s 程序的結(jié)構(gòu)和工作原理3.能開發(fā)客戶端應(yīng)用程序4.會編寫服務(wù)器端多線程應(yīng)用程序
2、。5.熟悉java 數(shù)據(jù)庫連接方法,能在程序中讀寫數(shù)據(jù)庫主要技術(shù)java編程語言、javaswing組件開發(fā)環(huán)境jdk1.6.0_10項目特點使用組件構(gòu)建的c/s應(yīng)用程序各項功能的組織合理搭配應(yīng)用圖標(biāo)控制功能實現(xiàn)技術(shù)重點構(gòu)建基于c/s架構(gòu)的應(yīng)用程序swing組件應(yīng)用事件監(jiān)聽的應(yīng)用方法的編寫技術(shù)難點swing組件的應(yīng)用事件監(jiān)聽器的使用異常處理方法簡便的選擇系統(tǒng)總體設(shè)計1、設(shè)計思路聊天系統(tǒng)的設(shè)計跟普通網(wǎng)站設(shè)計有著許多不同的地方,普通網(wǎng)站設(shè)計所考慮的因素,例如,普通網(wǎng)站需要對布局進(jìn)入大量美化以及動畫設(shè)計等等,而聊天室只要提供滿足訪客雙方直接實時聊天即可。因此,在設(shè)計聊天系統(tǒng)的過程中,必須要考慮好以下
3、幾個設(shè)計要點:在internet上的聊天程序一般都是以服務(wù)器提供服務(wù)端連接響應(yīng),使用者通過客戶端程序登錄到服務(wù)器,就可以與登錄在同一服務(wù)器上的用戶交談,這是一個面向連接的通信過程。因此,程序要在tcp/ip環(huán)境下,實現(xiàn)服務(wù)器端和客戶端兩部分程序。1首先通過繼承jframe類構(gòu)造服務(wù)器界面。2設(shè)計客戶端程序使其能夠完成正常的通信功能。3設(shè)計監(jiān)聽程序,使其顯示登錄的ip地址端口號,以及用戶昵稱,通過偵聽按鈕可以調(diào)用客戶端程序,實現(xiàn)聊天功能。2、各個模塊詳細(xì)的功能描述。1、服務(wù)器端功能描述:啟動服務(wù)器端。2、客戶端功能描述: 啟動客戶端;顯示登錄昵稱:顯示聊天記錄:發(fā)送信息;退出聊天室。系統(tǒng)詳細(xì)設(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類負(fù)責(zé)創(chuàng)建聊天室客戶端的主窗口,該類含有main方法,計算器從該類開始執(zhí)行。serverthread(主類)服務(wù)器 serverthread類負(fù)責(zé)創(chuàng)建聊天室服務(wù)器的主窗口,該類含有main方法,計算器從該類開始執(zhí)行。二詳細(xì)代碼設(shè)計聊天室程序設(shè)計詳細(xì)代碼如下:客戶端代碼: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("服務(wù)器:"); 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("連接失敗!請確認(rèn)服務(wù)器地址并且服務(wù)器已啟動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); 服務(wù)器端代碼: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)容里面會有圖紙預(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年五金交電購銷合同樣本(2篇)
- 2025年互相擔(dān)保合同模板(三篇)
- 2025年產(chǎn)品授權(quán)經(jīng)銷協(xié)議(三篇)
- 劇場裝修合同稅務(wù)解決方案
- 咨詢公司裝修工程施工協(xié)議
- 化工品運輸安全責(zé)任合同
- 商業(yè)街甜品店租賃居間合同
- 醫(yī)院擴(kuò)建抵押貸款合同樣本
- 攝影攝像居間合同文本范例
- 咖啡廳裝修修復(fù)合同
- 長江委水文局2025年校園招聘17人歷年高頻重點提升(共500題)附帶答案詳解
- 2025年湖南韶山干部學(xué)院公開招聘15人歷年高頻重點提升(共500題)附帶答案詳解
- 廣東省廣州市番禺區(qū)2023-2024學(xué)年七年級上學(xué)期期末數(shù)學(xué)試題
- 智研咨詢發(fā)布:2024年中國MVR蒸汽機(jī)械行業(yè)市場全景調(diào)查及投資前景預(yù)測報告
- IF鋼物理冶金原理與關(guān)鍵工藝技術(shù)1
- JGJ46-2024 建筑與市政工程施工現(xiàn)場臨時用電安全技術(shù)標(biāo)準(zhǔn)
- 煙花爆竹重大危險源辨識AQ 4131-2023知識培訓(xùn)
- 銷售提成對賭協(xié)議書范本 3篇
- 企業(yè)動火作業(yè)安全管理制度范文
- 家譜、宗譜頒譜慶典講話
- 中建一局醫(yī)院直線加速器室專項施工方案
評論
0/150
提交評論