版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目 錄</b></p><p><b> 1概述聊天室2</b></p><p><b> 2. 設(shè)計(jì)依據(jù)2</b></p><p> 2.1 設(shè)計(jì)平臺(tái)2</p><p> 2.2 設(shè)計(jì)思想3</p><
2、p> 3. 各模塊功能簡介3</p><p><b> 4. 結(jié)構(gòu)分析4</b></p><p><b> 5. 界面設(shè)計(jì)5</b></p><p> 6. 附錄源代碼6</p><p><b> 概述聊天室系統(tǒng)</b></p><p
3、> 聊天室系統(tǒng)使用JAVA+SQL完成,ECLIPSE完成代碼編寫,JIGLOO完成界面設(shè)計(jì),SQL SERVER完成數(shù)據(jù)庫管理。聊天室通過輸入的對(duì)方IP,將JTextField中的內(nèi)容發(fā)送到擁有此IP的主機(jī)(前提是對(duì)方也啟動(dòng)了聊天室程序)。網(wǎng)絡(luò)的通信使用UDP協(xié)議,即時(shí)搜尋網(wǎng)絡(luò)上的短消息,并可恢復(fù)對(duì)方消息。</p><p> 數(shù)據(jù)庫的表只有一個(gè)User_Info,用戶通過用戶管理模塊登錄,注冊,修改密
4、碼。系統(tǒng)有三個(gè)類,MainWin、ChatRoom、jdbcodbc。MainWin是程序的入口類,界面是登陸,注冊,修改密碼的JFrame窗口。ChatRoom是聊天室的主窗口,負(fù)責(zé)搜發(fā)消息。jdbcodbc負(fù)責(zé)數(shù)據(jù)庫的連接,有一個(gè)構(gòu)造函數(shù),一個(gè)查詢方法,一個(gè)更新方法,三個(gè)返回方法。三個(gè)類都放在Com包里,Com包在Chat項(xiàng)目里。</p><p><b> 2. 設(shè)計(jì)依據(jù)</b><
5、;/p><p> 本系統(tǒng)要求實(shí)現(xiàn)一個(gè)兩人聊天室的Java 圖形用戶界面界面程序,主要包括如下功能:</p><p> 1.主人可以根據(jù)輸入的IP尋找要聊天的對(duì)象。</p><p> 2.主人和客人之間可以互相發(fā)送短消息進(jìn)行即時(shí)聊天。</p><p><b> 2.1 設(shè)計(jì)平臺(tái)</b></p><p
6、><b> 設(shè)計(jì)平臺(tái)是j2se</b></p><p> J2se 是一個(gè)開放源代碼的 Java 的可擴(kuò)展開發(fā)平臺(tái)。編寫代碼和運(yùn)行軟件都很方便。編寫過程中要是有錯(cuò)誤就有提示,非常方便用戶修改代碼。</p><p><b> 2.2 設(shè)計(jì)思想</b></p><p> 程序分為三個(gè)部分:數(shù)據(jù)庫連接,聊天室管理,
7、用戶管理。其中用戶管理分為用戶注冊,用戶登錄,用戶修改密碼。</p><p> 3. 各模塊功能簡介</p><p><b> 程序功能模塊圖</b></p><p><b> 4. 結(jié)構(gòu)分析</b></p><p><b> 主窗口對(duì)象</b></p>
8、<p> MainWin()方法:構(gòu)造函數(shù),調(diào)用initGUI()方法以及父類JFRAME的構(gòu)造函數(shù)。</p><p> main()方法:程序的入口。</p><p> initGUI()方法:加載窗口的各個(gè)組件以及事件處理。</p><p><b> 數(shù)據(jù)庫連接對(duì)象</b></p><p> jd
9、bcodbc():構(gòu)造函數(shù),加載數(shù)據(jù)庫驅(qū)動(dòng),建立數(shù)據(jù)庫連接。</p><p> CheckInfo():將查詢語句得到的數(shù)據(jù)庫內(nèi)容賦給數(shù)據(jù)集。</p><p> UpdateInfo():用插入語句使數(shù)據(jù)庫更新。</p><p><b> 聊天室對(duì)象</b></p><p> ChatRoom():構(gòu)造函數(shù),調(diào)用
10、initGUI()方法以及父類JFRAME的構(gòu)造函數(shù)。并用循環(huán)實(shí)現(xiàn)實(shí)時(shí)接受數(shù)據(jù)包里的消息。</p><p> initGUI():加載窗口的各個(gè)組件以及事件處理。</p><p><b> 5.界面設(shè)計(jì)</b></p><p> 用戶界面的設(shè)計(jì)是整個(gè)系統(tǒng)設(shè)計(jì)中比較關(guān)鍵的一環(huán)。通過用戶界面能更清晰的顯示出本系統(tǒng)所具有的功能、簡單的錯(cuò)誤警告及
11、處理能力。用戶界面的友好設(shè)計(jì),可以使操作人員更迅速的掌握其操作步驟,便于操作。</p><p><b> 客戶端窗口</b></p><p><b> 聊天室界面設(shè)計(jì)</b></p><p><b> 內(nèi)嵌“私聊”窗口</b></p><p><b> 實(shí)驗(yàn)總
12、結(jié)</b></p><p> 由于能力及時(shí)間的關(guān)系,這個(gè)Java聊天室程序沒能達(dá)到其要求,很有點(diǎn)失望,很有點(diǎn)遺憾。在建立通信和連接數(shù)據(jù)庫時(shí),雖然很認(rèn)真地在做,可總還是失敗,這也導(dǎo)致了整個(gè)聊天室的無法運(yùn)作(只有界面而已)。事實(shí)如此,不再贅言了。</p><p> 這次Java實(shí)習(xí),似乎量上過大,然而堅(jiān)持做下來,還有很有意義和收獲的。也許我的所得,對(duì)他人而言,可謂不值一提,但對(duì)
13、我來說,它們的確讓我在思想和能力上,更上了一層樓。下面我就談?wù)勎业捏w會(huì):</p><p> Jave與C語言編程相比,有著本質(zhì)的不同.前者面向?qū)ο?即面向問題而設(shè)計(jì)程序,后者則是分析問題后,面向問題解決的過程而設(shè)計(jì)程序.本質(zhì)的不同,導(dǎo)致程序設(shè)計(jì)的明顯差異.Java設(shè)計(jì)的程序,通過劃分類,通常都顯得通俗易懂,條理清晰,而且很簡捷.這是C語言所無法比擬的,除非它有很好的數(shù)據(jù)結(jié)構(gòu),但必須承認(rèn),就算如此,還是難以與之平
14、行的.用Jave編聊天室,其實(shí)也不是那么復(fù)雜,但要是換用C語言,我真不知道其工作量有多大了。由此,我看到了Java的優(yōu)越性,更堅(jiān)定了我學(xué)好Java的決心.</p><p> 用Java解決實(shí)際問題,分析問題是至關(guān)重要的。分析要合理、全面,只有這樣,劃分的類就不至于過大或過小。一個(gè)復(fù)雜的問題,就象這個(gè)聊天室吧,一開始不是什么都會(huì)做,先就完成簡單、容易的,然后再帶著小有的成就感,去征服難弄的部分。這種思想是處處適用
15、的。</p><p> 想說的,我已經(jīng)說完了。最后再說一句:雖然目前我的編程能力很差勁,可我心中已有了目標(biāo),也許我走不到終點(diǎn),但我一定會(huì)前進(jìn),絕不輕易放棄!夢想來之不易!</p><p><b> 6. 附錄源代碼</b></p><p><b> 程序主界面設(shè)計(jì)</b></p><p>
16、建立服務(wù)端窗口類:窗口程序如下</p><p> import java.awt.Button;</p><p> import java.awt.Color;</p><p> import java.awt.FlowLayout;</p><p> import java.awt.List;</p><p&g
17、t; import java.awt.TextArea;</p><p> import javax.swing.JFrame;</p><p> import javax.swing.JLabel;</p><p> import javax.swing.JScrollPane;</p><p> import javax.swi
18、ng.JTextField;</p><p> public class chatroomW {</p><p> JFrame f=new JFrame("局域網(wǎng)聊天室");</p><p> JLabel label1=new JLabel("端口");</p><p> JLabel la
19、bel2=new JLabel("發(fā)送");</p><p> Button button1=new Button("啟動(dòng)服務(wù)");</p><p> Button button2=new Button("發(fā)送");</p><p> Button button3=new Button("刷
20、新用戶列表");</p><p> JTextField text1=new JTextField(5);</p><p> JTextField text2=new JTextField(25);</p><p> TextArea area1=new TextArea(26,84);</p><p> List user
21、List=new List(27);</p><p> JScrollPane scro1,scro2;</p><p> public chatroomW(){</p><p><b> chat();</b></p><p><b> }</b></p><p>
22、 public void chat(){</p><p> area1.setBackground(new Color(204,255,255));</p><p> area1.setForeground(Color.black);</p><p> userList.setBackground(Color.gray);</p><p&
23、gt; userList.setForeground(Color.white);</p><p> f.setLayout(new FlowLayout());</p><p> f.add(area1);</p><p> f.add(userList);</p><p> f.add(label1);</p>&l
24、t;p> f.add(text1);</p><p> f.add(button1);</p><p> f.add(text2);</p><p> f.add(button2);</p><p> f.add(button3);</p><p> f.setBounds(300,200,750,4
25、85);</p><p> f.setResizable(false);</p><p> f.setVisible(true);</p><p> f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p> area1.setEditable(false);</p>
26、;<p> text1.setText("10000");</p><p> myEvent();</p><p><b> }</b></p><p> public static void main(String args[]){</p><p> new chatroom
27、W();</p><p><b> }</b></p><p> public void myEvent(){}</p><p><b> }</b></p><p><b> 建立客戶端窗口</b></p><p> import java.
28、awt.Color;</p><p> import java.awt.FlowLayout;</p><p> import java.awt.TextArea;</p><p> import javax.swing.JButton;</p><p> import javax.swing.JFrame;</p>&
29、lt;p> import javax.swing.JLabel;</p><p> import javax.swing.JScrollPane;</p><p> import javax.swing.JTextField;</p><p> public class ClientW {</p><p> JFrame f=
30、new JFrame("聊天室");</p><p> JScrollPane js;</p><p> TextArea area=new TextArea(19,67);</p><p> JTextField text1=new JTextField(12);</p><p> JTextField text
31、2=new JTextField(5);</p><p> JTextField text3=new JTextField(5);</p><p> JTextField text4=new JTextField(20);</p><p> JButton button1=new JButton("連接");</p><
32、p> JButton button2=new JButton("發(fā)送");</p><p> JButton button3=new JButton("私聊");</p><p> JLabel label1=new JLabel("服務(wù)器地址");</p><p> JLabel label
33、2=new JLabel("服務(wù)器端口");</p><p> JLabel label3=new JLabel("昵稱");</p><p> public ClientW(){</p><p><b> chat();</b></p><p><b> }&l
34、t;/b></p><p> public void chat(){</p><p> area.setBackground(new Color(204,255,255));</p><p> //area.setForeground(Color.black);</p><p> f.setLayout(new FlowLa
35、yout());</p><p> f.setBounds(300,200,500,410);</p><p> f.add(label1);</p><p> f.add(text1);</p><p> f.add(label2);</p><p> f.add(text2);</p>&l
36、t;p> f.add(button1);</p><p> f.add(area);</p><p> f.add(label3);</p><p> f.add(text3);</p><p> f.add(text4);</p><p> f.add(button2);</p>&l
37、t;p> f.add(button3);</p><p> f.setVisible(true);</p><p> f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p> f.setResizable(false);</p><p> area.setEditab
38、le(false);</p><p> text2.setText("10000");</p><p> text4.setText(null);</p><p> myEvent();</p><p><b> }</b></p><p> public void
39、myEvent(){}</p><p> public static void main(String args[]){</p><p> new ClientW();</p><p><b> }</b></p><p><b> }</b></p><p> c
40、lass netchat{</p><p> JFrame f=new JFrame("私聊");</p><p> JLabel label1,label2,label3;</p><p> Button button1,button2;</p><p> JTextField text1,text2,text3
41、,text4;</p><p> TextArea textarea;</p><p> public netchat(){</p><p> f.setLayout(new FlowLayout());</p><p> f.setBounds(300,200,400,310); //設(shè)置窗口大小和位置;</p>
42、<p> f.setResizable(false); //讓窗口大小固定;</p><p> label1=new JLabel("對(duì)方主機(jī)");</p><p> label2=new JLabel("本地端口");</p><p> label3=new JLabel("
43、;對(duì)方端口");</p><p> button1=new Button("連接");</p><p> button2=new Button("發(fā)送");</p><p> text1=new JTextField(7);</p><p> text2=new JTextField(
44、3);</p><p> text3=new JTextField(3);</p><p> text4=new JTextField(20);</p><p> textarea=new TextArea(13,53);</p><p> textarea.setEditable(false);</p><p&g
45、t; textarea.setBackground(new Color(204,250,255));</p><p> f.add(label1);</p><p> f.add(text1);</p><p> f.add(label2);</p><p> f.add(text2);</p><p>
46、f.add(label3);</p><p> f.add(text3);</p><p> f.add(button1);</p><p> f.add(textarea);</p><p> f.add(text4);</p><p> f.add(button2);</p><p&g
47、t; f.setVisible(true);</p><p> // f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);//關(guān)閉窗口程序同時(shí)關(guān)閉;</p><p> myEvent();</p><p><b> }</b></p><p> 客服端類繼承客戶端窗口類,
48、并內(nèi)嵌私聊程序</p><p> import java.awt.Button;</p><p> import java.awt.Color;</p><p> import java.awt.FlowLayout;</p><p> import java.awt.TextArea;</p><p> i
49、mport java.awt.event.ActionEvent;</p><p> import java.awt.event.ActionListener;</p><p> import java.awt.event.WindowAdapter;</p><p> import java.awt.event.WindowEvent;</p>
50、<p> import java.io.BufferedReader;</p><p> import java.io.InputStreamReader;</p><p> import java.io.PrintStream;</p><p> import java.net.DatagramPacket;</p><p&
51、gt; import java.net.DatagramSocket;</p><p> import java.net.InetAddress;</p><p> import java.net.Socket;</p><p> import javax.swing.JFrame;</p><p> import javax.sw
52、ing.JLabel;</p><p> import javax.swing.JTextField;</p><p> public class Client extends ClientW{</p><p> Socket s=null;</p><p> public Client(){}</p><p>
53、; public void myEvent(){</p><p> button1.addActionListener(new ActionListener(){</p><p> public void actionPerformed(ActionEvent e){</p><p><b> try{</b></p>&
54、lt;p> s=new Socket(text1.getText().toString(),Integer.parseInt(text2.getText()));</p><p> new Thread(new LinkC()).start();</p><p> area.append("[系統(tǒng)消息]:連接成功\n");</p><p&
55、gt; }catch(Exception ex){area.append("[系統(tǒng)消息]:連接失敗\n");}</p><p><b> }</b></p><p><b> });</b></p><p> button2.addActionListener(new ActionListene
56、r(){</p><p> public void actionPerformed(ActionEvent e){</p><p> new SentC();</p><p><b> }</b></p><p><b> });</b></p><p> butt
57、on3.addActionListener(new ActionListener(){</p><p> public void actionPerformed(ActionEvent e){</p><p> new netchat();</p><p><b> }</b></p><p><b>
58、 });</b></p><p><b> }</b></p><p> public static void main(String args[]){</p><p> new Client();</p><p><b> }</b></p><p>
59、 class LinkC implements Runnable{</p><p> public void run(){</p><p><b> try{</b></p><p> BufferedReader bufIn=</p><p> new BufferedReader(new InputStrea
60、mReader(s.getInputStream()));</p><p> String msg=null;</p><p> PrintStream ps=new PrintStream(s.getOutputStream());</p><p> ps.println(text3.getText());</p><p> whi
61、le(true){</p><p><b> try{</b></p><p> while((msg=bufIn.readLine())!=null){</p><p> area.append(msg+"\n");</p><p><b> }</b></p&
62、gt;<p> }catch(Exception ex){break;}</p><p><b> }</b></p><p> }catch(Exception e){}</p><p><b> }</b></p><p><b> }</b><
63、;/p><p> class SentC {</p><p> public SentC(){</p><p><b> try{</b></p><p> PrintStream ps=new PrintStream(s.getOutputStream());</p><p> if(!t
64、ext4.getText().equals("")){</p><p> ps.println(text4.getText());</p><p> // area.append(text4.getText()); //服務(wù)器自動(dòng)會(huì)返回</p><p> text4.setText(""
65、);</p><p><b> }</b></p><p> }catch(Exception e){}</p><p><b> }</b></p><p><b> }</b></p><p><b> //私聊類</b&g
66、t;</p><p> class netchat{</p><p> JFrame f=new JFrame("私聊");</p><p> JLabel label1,label2,label3;</p><p> Button button1,button2;</p><p> JT
67、extField text1,text2,text3,text4;</p><p> TextArea textarea;</p><p> public netchat(){</p><p> f.setLayout(new FlowLayout());</p><p> f.setBounds(300,200,400,310);
68、 //設(shè)置窗口大小和位置;</p><p> f.setResizable(false); //讓窗口大小固定;</p><p> label1=new JLabel("對(duì)方主機(jī)");</p><p> label2=new JLabel("本地端口");</p><p>
69、; label3=new JLabel("對(duì)方端口");</p><p> button1=new Button("連接");</p><p> button2=new Button("發(fā)送");</p><p> text1=new JTextField(7);</p><p&
70、gt; text2=new JTextField(3);</p><p> text3=new JTextField(3);</p><p> text4=new JTextField(20);</p><p> textarea=new TextArea(13,53);</p><p> textarea.setEditable(
71、false);</p><p> textarea.setBackground(new Color(204,250,255));</p><p> text2.setText("10000");</p><p> text3.setText("10000");</p><p> f.add(la
72、bel1);</p><p> f.add(text1);</p><p> f.add(label2);</p><p> f.add(text2);</p><p> f.add(label3);</p><p> f.add(text3);</p><p> f.add(but
73、ton1);</p><p> f.add(textarea);</p><p> f.add(text4);</p><p> f.add(button2);</p><p> f.setVisible(true);</p><p> // f.setDefaultCloseOperation(f.E
74、XIT_ON_CLOSE);//關(guān)閉窗口程序同時(shí)關(guān)閉;</p><p> myEvent();</p><p><b> }</b></p><p> public void myEvent(){</p><p> f.addWindowListener(new WindowAdapter()</p>
75、<p><b> {</b></p><p> public void windowClosing(WindowEvent e){</p><p><b> try{</b></p><p> DatagramSocket ds=new DatagramSocket();</p><
76、;p> byte[] buf="對(duì)方已下線".getBytes();</p><p> DatagramPacket dp=</p><p> new DatagramPacket(buf,buf.length,InetAddress.getByName(text1.getText()),Integer.parseInt(text3.getText()));
77、</p><p> ds.send(dp);</p><p> ds.close();</p><p> }catch(Exception ex){}</p><p><b> }</b></p><p><b> });</b></p><p&
78、gt; button2.addActionListener(new ActionListener()//事件源是button2</p><p><b> {</b></p><p> public void actionPerformed(ActionEvent e)</p><p><b> { </b>&l
79、t;/p><p> if(!text4.getText().equals(""))</p><p> new Thread(new Send()).start();</p><p><b> }</b></p><p><b> });</b></p><
80、p> button1.addActionListener(new ActionListener()//事件源是button1</p><p><b> {</b></p><p> public void actionPerformed(ActionEvent e)</p><p><b> { </b>&
81、lt;/p><p> new Thread(new Rece()).start();</p><p><b> }</b></p><p><b> });</b></p><p><b> }</b></p><p> class Send im
82、plements Runnable{</p><p> public void run(){ try{UdpSend();}catch(Exception e){textarea.append("[系統(tǒng)消息]:發(fā)送失敗\n");}}</p><p> public void UdpSend()throws Exception{</p><p>
83、; DatagramSocket ds=new DatagramSocket();</p><p> byte[] buf=text4.getText().getBytes();</p><p> DatagramPacket dp=</p><p> new DatagramPacket(buf,buf.length,InetAddress.getByNa
84、me(text1.getText()),Integer.parseInt(text3.getText()));</p><p> textarea.append("[我]: "+text4.getText()+"\n");</p><p> text4.setText("");</p><p> ds
85、.send(dp);</p><p> ds.close();</p><p><b> }</b></p><p><b> }</b></p><p> class Rece implements Runnable{</p><p> int index=0;&
86、lt;/p><p> public void run(){</p><p><b> try{</b></p><p> UdpRece();</p><p> }catch(Exception e){</p><p> textarea.append("[系統(tǒng)消息]:連接失敗\n
87、");</p><p><b> }</b></p><p><b> }</b></p><p> public void UdpRece()throws Exception{</p><p> while(true){</p><p> Datagra
88、mSocket ds=new DatagramSocket(Integer.parseInt(text2.getText()));</p><p> if(index==0){textarea.append("[系統(tǒng)消息]:連接成功\n");}</p><p> byte[] buf=new byte[1024];</p><p> Dat
89、agramPacket dp=new DatagramPacket(buf,buf.length);</p><p> ds.receive(dp);</p><p> String data=new String(dp.getData(),0,dp.getLength());</p><p> textarea.append(dp.getAddress()+
90、" "+data+"\n");</p><p><b> index++;</b></p><p> ds.close();</p><p><b> }</b></p><p><b> }</b></p><
91、;p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 參考文獻(xiàn)</b></p><p> [1] 耿祥義,Java2 實(shí)用教程,清華大學(xué)出版社,2008 <
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- java課程設(shè)計(jì)---聊天室系統(tǒng)
- java網(wǎng)絡(luò)聊天室課程設(shè)計(jì)
- java課程設(shè)計(jì)之簡單聊天室
- 網(wǎng)絡(luò)編程課程設(shè)計(jì)-java聊天室
- java課程設(shè)計(jì)---java聊天室的系統(tǒng)的設(shè)計(jì)與開發(fā)
- java課程設(shè)計(jì)報(bào)告---利用java實(shí)現(xiàn)簡單聊天室
- java聊天室設(shè)計(jì)
- java課程設(shè)計(jì)---java聊天室的系統(tǒng)的設(shè)計(jì)與開發(fā)(含代碼)
- java課程設(shè)計(jì)---java聊天室的系統(tǒng)的設(shè)計(jì)與開發(fā)(含代碼)
- web課程設(shè)計(jì)—— 聊天室
- Java課程設(shè)計(jì)---JAVA聊天室的系統(tǒng)的設(shè)計(jì)與開發(fā)(含代碼).doc
- java聊天室程序(java)
- tcp課程設(shè)計(jì)--網(wǎng)絡(luò)聊天室
- java網(wǎng)絡(luò)聊天室畢業(yè)課程設(shè)計(jì)報(bào)告(內(nèi)附代碼)
- 基于java聊天室系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)——課程論文
- java聊天室系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 基于java網(wǎng)絡(luò)聊天室設(shè)計(jì)
- 聊天室課程設(shè)計(jì)---聊天程序的設(shè)計(jì)和實(shí)現(xiàn)
- jsp課程設(shè)計(jì)報(bào)告--在線聊天室
- 網(wǎng)絡(luò)編程課程設(shè)計(jì)---網(wǎng)絡(luò)聊天室
評(píng)論
0/150
提交評(píng)論