《面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)》_第1頁(yè)
《面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)》_第2頁(yè)
《面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)》_第3頁(yè)
《面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)》_第4頁(yè)
《面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)》_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1.功能分析。(進(jìn)行問(wèn)題的描述及確定程序?qū)⒁獙?shí)現(xiàn)的具體功能,用文字描述即可)該課程設(shè)計(jì)為c/s模式的聊天室,分為兩個(gè)部分,一個(gè)是客戶端程序,一個(gè) 是服務(wù)端程序,需要先開(kāi)啟服務(wù)器,再開(kāi)啟客戶端才能使用。1.1.服務(wù)端程序需要完成的一些基本功能。(1) 啟動(dòng)服務(wù)器。(2) 停止服務(wù)器。(3) 退岀服務(wù)器。(4) .接受客戶端發(fā)送過(guò)來(lái)的消息,把消息顯示在服務(wù)器的文本區(qū)上。(5) 可以向客戶端程序發(fā)送消息。(6) 實(shí)現(xiàn)背景色的更換。(7) 幫助功能。(8) 實(shí)現(xiàn)在線用戶的統(tǒng)計(jì)。(9) .還可以增加其他功能,比如統(tǒng)計(jì)在線客戶的人數(shù)等。1. 2.客戶端程序需要完成的一些基本功能。(1) 啟動(dòng)客戶端,登錄服

2、務(wù)器。(2) .退出客戶端。(3) .向服務(wù)器發(fā)送消息。(4) 接受客戶端發(fā)來(lái)的消息。(5) 更好背景色。(6) 幫助功能。(7) .還可以增加其他的功能,比如向某個(gè)客戶端發(fā)送消息進(jìn)行私聊等。2系統(tǒng)設(shè)計(jì)。(制定程序功能實(shí)現(xiàn)的具體設(shè)計(jì)思路及主要類說(shuō)明,并檢查流程設(shè)計(jì)。類說(shuō)明用表格描述即可)2. 1.該聊天室功能實(shí)現(xiàn)的具體設(shè)計(jì)思路:聊天室分為兩個(gè)部分,服務(wù)器端和客戶端部分。服務(wù)器端的功能設(shè)計(jì)是先 運(yùn)行服務(wù)器,再啟動(dòng)服務(wù)器等待客戶端的連接,當(dāng)連接成功后通知客戶端 可以進(jìn)行聊天。在聊天的時(shí)候可以更換背景色,可以統(tǒng)計(jì)在線人數(shù)。還冇 停止服務(wù)器和退出服務(wù)器功能。當(dāng)開(kāi)啟服務(wù)器的停止功能后,客戶端就不 能進(jìn)行

3、交互。服務(wù)器端還可以增加其他的功能,比如統(tǒng)計(jì)客戶在線人數(shù), 實(shí)現(xiàn)客戶端之間的私聊功能等??蛻舳说墓δ茉O(shè)計(jì)是先運(yùn)行客戶端,然后 登錄連接服務(wù)器,當(dāng)連接成功后便可以進(jìn)行聊天功能??蛻舳诉€可以增加 其他的功能,比如,需要客戶先進(jìn)行注冊(cè),注冊(cè)成功后再登錄連接服務(wù)器 才能進(jìn)行聊犬功能等。2. 1. 1.聊天室服務(wù)器端模塊主要有以下兒部分組成2. 1. 1. 1.主框架類(mds_serverchat. java)該文件包含名為mds_scrvcrchat的public類,其主耍功能是定義服 務(wù)器的界而。添加事件偵聽(tīng),事件處理。利用套接字serversocket 和socket的對(duì)彖進(jìn)行消息的收發(fā)。2.

4、1.1.2.服務(wù)器用戶上線偵聽(tīng)類.該類實(shí)現(xiàn)了 runnable類,重寫(xiě)了 runnable類中的run方法,在run方法中實(shí) 現(xiàn)對(duì)服務(wù)器用戶的上線偵聽(tīng)。網(wǎng)絡(luò)聊天超案信止 退岀脈務(wù)器英啟動(dòng) 春戶隨鳳進(jìn)入左送涓息2. 1. 1. 3.服務(wù)器的啟動(dòng)和發(fā)送類。該類 實(shí)現(xiàn)了 actionlistcncr 類,重寫(xiě)了 actionlistcncr 類 的 actionperformed方法。在actionperformed方法屮實(shí)現(xiàn)對(duì)服務(wù)器 的啟動(dòng)。實(shí)現(xiàn)對(duì)服務(wù)器消息的發(fā)送工作。國(guó)網(wǎng)絡(luò)聊麺務(wù)器-° d信l 退出務(wù)器已經(jīng)啟動(dòng) 戶隨鳳邊入 務(wù)器發(fā)送了我是serverchatttlserverchat2

5、. 1.1. 4.服務(wù)器的接收類。run方法中實(shí)該類實(shí)現(xiàn)了 runncible類,重寫(xiě)了 runnable類中的run方法,在 現(xiàn)對(duì)服務(wù)器用戶消息的接收工作。網(wǎng)絡(luò)觀天服務(wù)器奔器已經(jīng)啟動(dòng) 戶隨風(fēng)進(jìn)入 奔器發(fā)送了我是serverchat 風(fēng)說(shuō):serverchat正左工作嗎?發(fā)送消息我是 serverchat2. 1. 2.聊天室客戶端模塊主要有以下兒部分組成2. 1. 2. 1.主框架類(mds_clientchat. java)該文件包含名為mds_clientchat的public類,-其主要功能是定 義客戶端的界面。添加事件偵聽(tīng),事件處理。矍錄側(cè)網(wǎng)絡(luò)聊天客戶搗用戶名發(fā)送消身2. 1.2.2

6、向客戶端發(fā)送消息類。該類實(shí)現(xiàn)了 actionlistener 類,重寫(xiě)了 actionlistener 類的 actionperformed方法。在actionperformed方法屮實(shí)現(xiàn)對(duì)客戶 端的啟動(dòng)和登錄服務(wù)器及向服務(wù)器發(fā)送消息的工作。如果增加了 多個(gè)客戶端,還可以和其他客戶端進(jìn)行交互等。ill網(wǎng)絡(luò)聊天客戶端一 o用戶名登錄退出serverchat 很馬?發(fā)送消息和成功連接到服務(wù)器,可以進(jìn)行耶天了! 諷發(fā)送了 serverchat在嗎?2. 1.2.3.客戶端接收消息類。該類實(shí)現(xiàn)了 runnable類,調(diào)用了 runnable類中的run方法來(lái)實(shí)現(xiàn)對(duì)服務(wù)器發(fā)過(guò) 來(lái)的消息進(jìn)行接收工作。如果

7、還增加了其他的客戶端,那么也可以和 其他的客戶端進(jìn)行交互,實(shí)現(xiàn)私聊功能。網(wǎng)絡(luò)聊天客戶端用戶名陋戸登錄 退岀罔成功連接到服務(wù)器,可以進(jìn)行聊天云7 serverchat 在嗎?朋令器說(shuō):恩恩,serverchat 在嗎?發(fā)注消息2.2.主要類說(shuō)明。類、接口功能jframej frame類的實(shí)例就是一個(gè)底層容器,即通常所說(shuō)的窗口。 在該程序中是mds clientchat類的父類。mds_c1ientchat其主耍功能是定義服務(wù)器的界面。添加事件偵聽(tīng),事件處 理。actionlisteneractionlistener 接口 中只有一個(gè) actionperformed ()方 法。當(dāng)發(fā)生action

8、event事件時(shí),監(jiān)視器調(diào)用接口中的 actionpcrformcd (actionevent c)方法對(duì)發(fā)生的事件作 出處理rurm able聲明一個(gè)實(shí)現(xiàn)runnable接口的類并實(shí)現(xiàn)run()方法。在 調(diào)用start ()方法時(shí),將創(chuàng)建一個(gè)新的控制線程,接著它 將調(diào)用run()方法。run()方法屮的代碼定義執(zhí)行線程所 需的功能socket在套接字通信屮客戶端的程序使用socket類建立與服務(wù) 器套接字連接serversocket服務(wù)器端程序使用serversocket類建立接收客戶套接字 的服務(wù)器套接字2. 3檢杳流程設(shè)計(jì)。聊天終止3.系統(tǒng)實(shí)現(xiàn)。(附上具體源代碼)3. 1. mds_se

9、rverchat> javapackagemadingsheng;importjava.awt*;importjavax.swing *;importjavaawtevent*;import .*;import java.io.*;publicclassmds serverchatextendsjframeimplementsactionlistenerrunnable privateintport=8888;privateserversocketserver;priva te socket die nt;privatebufferedreadercin;privateprintwrit

10、ercout;private thread chatthread;privatedpanelpl;privatedbuttonstartbutton;privatedbuttonstopbutton;privatedbuttonexitbutton;privatedscrollpanescrollpanel;privatejtextareamessage;privatedpanelp2;privatedtextfieldservermessage;privatejbuttonmessagebutton;privatedpanelp3;private3combobox<string>

11、comboxl;privatejcombobox<string>combox2;privatedmenubarmenubar;privatedmenumenu,menul;privatedmenultemiteml,item2 item3,item4, item5; publicmds_serverchat()super (*網(wǎng)絡(luò)聊天服務(wù)器“);menubar=newdmenubar(); menu=new3menu(n 更換背景色"); menul=newdmenu("幫助”); iteml=new3menuitem(11 灰色”); item2=newdme

12、nuitem(11 藍(lán)色”); item3=new3menuitem(11 白色”); item4=new3menuitem ("時(shí)間"); item5=new3menuitem("其他”); menuadd(iteml);menuadd(item2); menuadd(item3); menuladd(item4); menul.add(item5); menubaradd(menu); menubar.add(menul); setjmenubar(menubar); iteml.addactionlistener(newactionlistener() pu

13、blicvoidactionperformed(actionevente) message setbackground(color.gray););item2 addactionlistener(newactionlistener() publicvoidactionperformed(actionevente) message.setbackground(color.blue););item3addactionlistener(newactionlistener() publicvoidac tion performed(ac tion everite) message.setbackgro

14、und(color.white););pl=new3panel(); startbutton=newjbutton("啟動(dòng)"); stopbutton=newd button ("停止"); exitbutton=newdbutton (“退出”);startbuttonaddactionlistener(this);stopbuttonaddactionlistener(this);exitbutton.addactionlistener(this);pl>add(startbutton);pl.add(stopbutton);pl.add(ex

15、itbutton);add (pl border layout .a/orth);message=new3textarea();scrollpanel=new3scrollpane(message?3scrollpane.ufrticzil_sc/?ollb/l/?_4s_/vfedfd?3scrollpane.ho ri zonta l_scrol l bar_as_needed );add (sc rollpanel border layout .ce/vier);p2=new3panel();servermessage=new3textfield(15);messagebutton=ne

16、w3button("發(fā)送消息”);messagebutton.addactionlistener(this);p2> add(servermessage);p2add(messagebutton);add(p2,borderlayout.south);p3=new3panel();comboxl=new3combobox<string>();combox2=new3combobox<string>();comboxl. addltem(" 在線人數(shù)一");comboxl.addltem("不祥");comboxl

17、addltem("不祥");comboxl addltem("不詳");p3.add(comboxl);add(p3 borderlayout.east);p3 setbackground (color .ggy);setdefaultcloseoperatio n( jfarmexi匸 oqclose);setbounds(800,100500,400); setvisible(true);publicvoidactionperformed(actionevente)if(e.getsource()=startbutton)plsetbackgroun

18、d(color.green);tryserver=newserversocket(po rt); /client=server>accept();catch(exception ex)chatthread=new thread(this); chatthread start();start button.setvisible(false); message.append("服務(wù)器已經(jīng)啟動(dòng) “+“n”);elseif(e.getsource()=stopbutton)chatthread=null; startbutton.setvisible(true);if(cout!=nu

19、ll)cout printin("stop");tryif(server!=null)plsetbackground(color.red); server.close();catch(exception exp)elseif(e.getsource()=exitbutton)chatthread=null;if(cout!=null)cout.println("exith);system.exl£(0);elseif(egetsource()=messagebutton)if(chatthread!=null)cout.println(servermes

20、sage.gettext()+"n”); message. append(”服務(wù)器發(fā)送了 : "+servermessage.gettext()+”n”);publicvoid run()while(true)trydie nt二server.accept();serverchatthreadsct=newserverchatthread(client);thread t=newthread(sct);tstart();catch(exception ex)publicstaticvoid main(string args)mps serverchatserverchat=

21、newmds serverchat();classserverchatthreadimplements runnableprivate socket dient2;servercha tthread(socke t die nt)die nt2=clie nt;publicvoid run()while(true)cin二newbufferedreader(newinputstreamreader(client2get: nputstream();cou t=newprin twrit er(clie nt 2.getou tputstr eamotrue); string username=

22、cinreadline();if(username!=null)message.append(h客戶:l,+username+,1 進(jìn)入,+,nh); cout.println(,ok,');string aline="while(chatthread!=null)aline=cinreadline(); if(aline>equals(hexit”)break;elsemessage.append(username+”說(shuō):"+aline); catch(exception e)3. 2. mds_c1ientchat javapackagemadingshe

23、ng; importjava.awt*;importjavaawtevent*;importjavax.swing.*;import javanetimport java.io.*;publicclassmds clientchatextendsjframeimdlementsactionlistener,runnableprivateintport二8888; private socke t die nt; privatebufferedreadercin; privateprintwritercout; private thread chatthread;privatejpanelpl;

24、privatelabelusernamelabel; privatedtextfieldusername; privatedbuttonloginbutton;privatejbuttonexitbutton;privatedscrollpanescrollpanel; privatedtextareamessage;privatejpanelp2; privatedtextfieldclientmessage; priva tejbu tton die nt but ton;privatejmenubarmenubar; privatedme numennul;privatejmenulte

25、miteml item2, itcm3, item4, item5; publicmds_clientchat()super (”網(wǎng)絡(luò)聊天客戶端”);menubar=new3menubar(); menu=new3menu("更換背景色”); menul=newdmenu("幫助”); iteml=newdmenuitem(11 灰色"); item2=new3menuitem(11 藍(lán)色”); item3=new3menuitem(n h色"); item4=newjmenuitem("時(shí)間"); item5=newdmenuite

26、m("jt他”); menu.add(iteml);menu.add(item2); menu.add(item3);menul.add(item4);menuladd(item5); menubar.add(menu);menubar.add(menul);setjmenubar(menubar);iteml.addactionlistener(newactionlistener()publicvoidactionperformed(actionevente) message setbackground(color.gray););item2.addactionlistener(n

27、ewactionlistener()publicvoidactionperformed(actionevente)message setbackground(color.blue););item3 addac tion liste nencnewac tion liste)publicvoidactionperformed(actionevente)message.setbackground(color.white););pl=newjpanel();usernamelabel=new3 label (h jij 八名”);username=newjtextfield(10);loginbut

28、ton=newjbutton(h 登錄");exitbutton=newjbutton("退岀”);loginbuttonaddactionlistener(this);exitbuttonaddactionlistener(this);pladd(usernamelabel);pl.add(username);pladd(loginbutton);pl.add(exitbutton);add(pl,borderlayout.north);message=new3textarea();scrollpanel=new3scvollpane(message,3scrollp3n

29、e.vertical_scrollbar_as_needed,3scrollpane.horizontal_scrollbar_as_needed);add (sc roll panels border layout .cf/vter);p2=new3panel();die nt message=new3textfield(15); clientbutton=new3 button (n 發(fā)送消息”); die nt button addac tion lis ten er(this); p2.add(clientmessage);p2.add(clientbutton);add(p2, bo

30、rderlayout .sol/th);setdefaultcloseoperation(3frame.exi70a/_c£osf); setbounds(100,100 500,400);setvisible(true);publicvoidactionperformed(actionevente)if(e.getsource()=loginbutton)if(loginserver(usernamegettext()pl.setbackground(color>green);chatthread二new thread(this);chatthreadstart();else

31、if(egetsource()=exitbutton)chatthread=null;if(cout!=null)cout printin("exit");system.exit(0);elseif(e.getsource()=clientbutton)if(chatthread!=null)cout print in (die ntmessage g ettext(); message .appe nd (user name .get text () + "發(fā)送了 "+clientlvlessage gettext ()+" n")

32、;publicbooleanloginserver(string username)die nt=new socke t(tocalhos t jpor t);cin=newbufferedreader(newinputstreamreader(client.getinputstream(); cout=newprintwriter(clientgetoutputstream(),true);coutprintln(username);string aline=cin.readline();if(aline.equals("ok")message.append(h 連接到服務(wù)器”+”n”);returntrue;elsemessage append(u 連接到服務(wù)器,+"n"); returnfalse;catch(exception e)returnfalse;publicvoid run()string aline="trywhile(chatthread!=null&& (aline=cinreadline()!=null) if(alineequals("stop”) | alineequals("exit”)pl setbackground(color.red);mess

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論