Java程序設(shè)計(jì)課程設(shè)計(jì)大作業(yè)服務(wù)端聊天系統(tǒng)_第1頁(yè)
Java程序設(shè)計(jì)課程設(shè)計(jì)大作業(yè)服務(wù)端聊天系統(tǒng)_第2頁(yè)
Java程序設(shè)計(jì)課程設(shè)計(jì)大作業(yè)服務(wù)端聊天系統(tǒng)_第3頁(yè)
Java程序設(shè)計(jì)課程設(shè)計(jì)大作業(yè)服務(wù)端聊天系統(tǒng)_第4頁(yè)
Java程序設(shè)計(jì)課程設(shè)計(jì)大作業(yè)服務(wù)端聊天系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(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、20112012學(xué)年第一學(xué)期java程序設(shè)計(jì)課程大作業(yè)題目: 服務(wù)端聊天系統(tǒng) 專業(yè): 計(jì)算機(jī) 班級(jí): 計(jì)算機(jī)1班 學(xué)號(hào): 090400224 姓名: 馬英俊 教師: 楊樹(shù)林 日期:2011年 12月 22 日項(xiàng)目?jī)?nèi)容單項(xiàng)分值總分選題1題目明確,系統(tǒng)功能較集中482題目難度適宜,有一定的綜合性4功能實(shí)現(xiàn)3功能完整,能夠正確運(yùn)行6244模塊劃分合理,程序結(jié)構(gòu)清晰65界面設(shè)計(jì)合理、易用、協(xié)調(diào)66設(shè)計(jì)與實(shí)現(xiàn)程序6規(guī)范性及文檔7代碼規(guī)范性及注釋5108文檔內(nèi)容齊全,格式規(guī)范5總體效果9完成總體質(zhì)量61210軟件功能及技術(shù)水平6答辯11講解清楚明了,功能演示流暢66評(píng)語(yǔ)總分一 課程設(shè)計(jì)目的java程序設(shè)計(jì)

2、是計(jì)算機(jī)相關(guān)專業(yè)的必修專業(yè)基礎(chǔ)課程,其實(shí)踐性、應(yīng)用性很強(qiáng)。實(shí)踐是必不可少的一個(gè)重要環(huán)節(jié)。java程序設(shè)計(jì)的設(shè)計(jì)目的是加深對(duì)理論內(nèi)容的理解和掌握,更加系統(tǒng)地掌握程序設(shè)計(jì)及其在開(kāi)發(fā)中的廣泛應(yīng)用,基本方法及技巧,為綜合運(yùn)用所學(xué)知識(shí),利用軟件工程為基礎(chǔ)進(jìn)行軟件開(kāi)發(fā)、并在實(shí)踐應(yīng)用方面打下一定基礎(chǔ)。二 課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境運(yùn)行windows 2007或xp以上微機(jī)系統(tǒng),jdk,netbean。三 課程設(shè)計(jì)主要內(nèi)容java語(yǔ)言的學(xué)習(xí)熱潮并沒(méi)有因?yàn)闀r(shí)間的推移而消退,相反,由于計(jì)算機(jī)技術(shù)的發(fā)展所帶來(lái)新應(yīng)用的出現(xiàn),java越來(lái)越流行,這種情況是以往程序設(shè)計(jì)語(yǔ)言在其生存周期內(nèi)所不多見(jiàn)的。java語(yǔ)言之所以這樣長(zhǎng)盛不衰

3、,一是因?yàn)槠浔姸嗟募夹g(shù)特點(diǎn)與現(xiàn)今的應(yīng)用十分合拍,可以覆蓋大部分的需求;二是因?yàn)閟un公司不斷推出新的版本,完善java自身的功能。有了這兩點(diǎn),java語(yǔ)言成為程序員首選的程序設(shè)計(jì)開(kāi)發(fā)工具就在情理之中了。服務(wù)端聊天系統(tǒng)是一個(gè)方便于兩端用戶溝通的軟件,通過(guò)輸入偵聽(tīng)方的端口號(hào)(例如:8888)來(lái)啟動(dòng)服務(wù)。當(dāng)服務(wù)啟動(dòng)時(shí),可進(jìn)行聊天;當(dāng)停止服務(wù)時(shí),聊天信息將不再接受。四 詳細(xì)設(shè)計(jì)程序詳細(xì)設(shè)計(jì)代碼如下:package org.adam;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.even

4、t.*;import .*;import java.io.*;import org.adam.portconf;import org.adam.serverlisten;/* * * author administrator */public class chatserver extends jframe implements actionlistenerpublic static int port = 8888;/服務(wù)端的偵聽(tīng)端口serversocket serversocket;/服務(wù)端socketimage icon;/程序圖標(biāo)jcombobox combobox;/選擇發(fā)送消息的接受者

5、jtextarea messageshow;/服務(wù)端的信息顯示jscrollpane messagescrollpane;/信息顯示的滾動(dòng)條jtextfield showstatus;/顯示用戶連接狀態(tài)jlabel sendtolabel,messagelabel;jtextfield sysmessage;/服務(wù)端消息的發(fā)送jbutton sysmessagebutton;/服務(wù)端消息的發(fā)送按鈕userlinklist userlinklist;/用戶鏈表/建立菜單欄jmenubar jmenubar = new jmenubar(); /建立菜單組jmenu servicemenu = n

6、ew jmenu (服務(wù)(v); /建立菜單項(xiàng)jmenuitem portitem = new jmenuitem (端口設(shè)置(p);jmenuitem startitem = new jmenuitem (啟動(dòng)服務(wù)(s);jmenuitem stopitem=new jmenuitem (停止服務(wù)(t);jmenuitem exititem=new jmenuitem (退出(x);jmenu helpmenu=new jmenu (幫助(h);jmenuitem helpitem=new jmenuitem (幫助(h);/建立工具欄jtoolbar toolbar = new jtool

7、bar();/建立工具欄中的按鈕組件jbutton portset;/啟動(dòng)服務(wù)端偵聽(tīng)jbutton startserver;/啟動(dòng)服務(wù)端偵聽(tīng)jbutton stopserver;/關(guān)閉服務(wù)端偵聽(tīng)jbutton exitbutton;/退出按鈕/框架的大小dimension facesize = new dimension(400, 600);serverlisten listenthread;jpanel downpanel ;gridbaglayout girdbag;gridbagconstraints girdbagcon;/* * 服務(wù)端構(gòu)造函數(shù) */public chatserver

8、()init();/初始化程序/添加框架的關(guān)閉事件處理this.setdefaultcloseoperation(jframe.exit_on_close);this.pack();/設(shè)置框架的大小this.setsize(facesize);/設(shè)置運(yùn)行時(shí)窗口的位置dimension screensize = toolkit.getdefaulttoolkit().getscreensize();this.setlocation( (int) (screensize.width - facesize.getwidth() / 2, (int) (screensize.height - face

9、size.getheight() / 2);this.setresizable(false);this.settitle(聊天室服務(wù)端); /設(shè)置標(biāo)題/程序圖標(biāo)icon = getimage(icon.gif);this.seticonimage(icon); /設(shè)置程序圖標(biāo)this.setvisible(true);/* * 程序初始化函數(shù) */public void init()container contentpane = getcontentpane();contentpane.setlayout(new borderlayout();/添加菜單欄servicemenu.add (po

10、rtitem);servicemenu.add (startitem);servicemenu.add (stopitem);servicemenu.add (exititem);jmenubar.add (servicemenu); helpmenu.add (helpitem);jmenubar.add (helpmenu); setjmenubar (jmenubar);/初始化按鈕portset = new jbutton(端口設(shè)置);startserver = new jbutton(啟動(dòng)服務(wù));stopserver = new jbutton(停止服務(wù) );exitbutton =

11、 new jbutton(退出 );/將按鈕添加到工具欄toolbar.add(portset);toolbar.addseparator();/添加分隔欄toolbar.add(startserver);toolbar.add(stopserver);toolbar.addseparator();/添加分隔欄toolbar.add(exitbutton);contentpane.add(toolbar,borderlayout.north);/初始時(shí),令停止服務(wù)按鈕不可用stopserver.setenabled(false);stopitem .setenabled(false);/為菜單

12、欄添加事件監(jiān)聽(tīng)portitem.addactionlistener(this);startitem.addactionlistener(this);stopitem.addactionlistener(this);exititem.addactionlistener(this);helpitem.addactionlistener(this);/添加按鈕的事件偵聽(tīng)portset.addactionlistener(this);startserver.addactionlistener(this);stopserver.addactionlistener(this);exitbutton.add

13、actionlistener(this);combobox = new jcombobox();combobox.insertitemat(所有人,0);combobox.setselectedindex(0);messageshow = new jtextarea();messageshow.seteditable(false);/添加滾動(dòng)條messagescrollpane = new jscrollpane(messageshow,jscrollpane.vertical_scrollbar_as_needed,jscrollpane.horizontal_scrollbar_as_ne

14、eded);messagescrollpane.setpreferredsize(new dimension(400,400);messagescrollpane.revalidate();showstatus = new jtextfield(35);showstatus.seteditable(false);sysmessage = new jtextfield(24);sysmessage.setenabled(false);sysmessagebutton = new jbutton();sysmessagebutton.settext(發(fā)送);/添加系統(tǒng)消息的事件偵聽(tīng)sysmessa

15、ge.addactionlistener(this);sysmessagebutton.addactionlistener(this);sendtolabel = new jlabel(發(fā)送至:);messagelabel = new jlabel(發(fā)送消息:);downpanel = new jpanel();girdbag = new gridbaglayout();downpanel.setlayout(girdbag);girdbagcon = new gridbagconstraints();girdbagcon.gridx = 0;girdbagcon.gridy = 0;gird

16、bagcon.gridwidth = 3;girdbagcon.gridheight = 2;girdbagcon.ipadx = 5;girdbagcon.ipady = 5;jlabel none = new jlabel( );girdbag.setconstraints(none,girdbagcon);downpanel.add(none);girdbagcon = new gridbagconstraints();girdbagcon.gridx = 0;girdbagcon.gridy = 2;girdbagcon.insets = new insets(1,0,0,0);gir

17、dbagcon.ipadx = 5;girdbagcon.ipady = 5;girdbag.setconstraints(sendtolabel,girdbagcon);downpanel.add(sendtolabel);girdbagcon = new gridbagconstraints();girdbagcon.gridx =1;girdbagcon.gridy = 2;girdbagcon.anchor = gridbagconstraints.line_start;girdbag.setconstraints(combobox,girdbagcon);downpanel.add(

18、combobox);girdbagcon = new gridbagconstraints();girdbagcon.gridx = 0;girdbagcon.gridy = 3;girdbag.setconstraints(messagelabel,girdbagcon);downpanel.add(messagelabel);girdbagcon = new gridbagconstraints();girdbagcon.gridx = 1;girdbagcon.gridy = 3;girdbag.setconstraints(sysmessage,girdbagcon);downpane

19、l.add(sysmessage);girdbagcon = new gridbagconstraints();girdbagcon.gridx = 2;girdbagcon.gridy = 3;girdbag.setconstraints(sysmessagebutton,girdbagcon);downpanel.add(sysmessagebutton);girdbagcon = new gridbagconstraints();girdbagcon.gridx = 0;girdbagcon.gridy = 4;girdbagcon.gridwidth = 3;girdbag.setco

20、nstraints(showstatus,girdbagcon);downpanel.add(showstatus);contentpane.add(messagescrollpane,borderlayout.center);contentpane.add(downpanel,borderlayout.south);/關(guān)閉程序時(shí)的操作this.addwindowlistener(new windowadapter()public void windowclosing(windowevent e)stopservice();system.exit(0););/* * 事件處理 */public

21、 void actionperformed(actionevent e) object obj = e.getsource();if (obj = startserver | obj = startitem) /啟動(dòng)服務(wù)端startservice();else if (obj = stopserver | obj = stopitem) /停止服務(wù)端int j=joptionpane.showconfirmdialog(this,真的停止服務(wù)嗎?,停止服務(wù),joptionpane.yes_option,joptionpane.question_message);if (j = joptionp

22、ane.yes_option)stopservice();else if (obj = portset | obj = portitem) /端口設(shè)置/調(diào)出端口設(shè)置的對(duì)話框portconf portconf = new portconf(this);portconf.setvisible(true);else if (obj = exitbutton | obj = exititem) /退出程序int j=joptionpane.showconfirmdialog(this,真的要退出嗎?,退出,joptionpane.yes_option,joptionpane.question_mess

23、age);if (j = joptionpane.yes_option)stopservice();system.exit(0);else if (obj = helpitem) /菜單欄中的幫助/調(diào)出幫助對(duì)話框help helpdialog = new help(this);helpdialog.setvisible(true);else if (obj = sysmessage | obj = sysmessagebutton) /發(fā)送系統(tǒng)消息sendsystemmessage();/* * 啟動(dòng)服務(wù)端 */public void startservice()tryserversocket

24、 = new serversocket(port,10);messageshow.append(服務(wù)端已經(jīng)啟動(dòng),在+port+端口偵聽(tīng).n);startserver.setenabled(false);startitem.setenabled(false);portset.setenabled(false);portitem.setenabled(false);stopserver .setenabled(true);stopitem .setenabled(true);sysmessage.setenabled(true);catch (exception e)/system.out.pri

25、ntln(e);userlinklist = new userlinklist();listenthread = new serverlisten(serversocket,combobox,messageshow,showstatus,userlinklist);listenthread.start();/* * 關(guān)閉服務(wù)端 */public void stopservice()try/向所有人發(fā)送服務(wù)器關(guān)閉的消息sendstoptoall();listenthread.isstop = true;serversocket.close();int count = userlinklist.g

26、etcount();int i =0;while( i count)node node = userlinklist.finduser(i);node.input .close();node.output.close();node.socket.close();i +;stopserver .setenabled(false);stopitem .setenabled(false);startserver.setenabled(true);startitem.setenabled(true);portset.setenabled(true);portitem.setenabled(true);

27、sysmessage.setenabled(false);messageshow.append(服務(wù)端已經(jīng)關(guān)閉n);combobox.removeallitems();combobox.additem(所有人);catch(exception e)/system.out.println(e);/* * 向所有人發(fā)送服務(wù)器關(guān)閉的消息 */public void sendstoptoall()int count = userlinklist.getcount();int i = 0;while(i count)node node = userlinklist.finduser(i);if(node

28、 = null) i +;continue;trynode.output.writeobject(服務(wù)關(guān)閉);node.output.flush();catch (exception e)/system.out.println($+e);i+;/* * 向所有人發(fā)送消息 */public void sendmsgtoall(string msg)int count = userlinklist.getcount();/用戶總數(shù)int i = 0;while(i count)node node = userlinklist.finduser(i);if(node = null) i +;cont

29、inue;trynode.output.writeobject(系統(tǒng)信息);node.output.flush();node.output.writeobject(msg);node.output.flush();catch (exception e)/system.out.println(+e);i+;sysmessage.settext();/* * 向客戶端用戶發(fā)送消息 */public void sendsystemmessage()string tosomebody = combobox.getselecteditem().tostring();string message = sy

30、smessage.gettext() + n;messageshow.append(message);/向所有人發(fā)送消息if(tosomebody.equalsignorecase(所有人)sendmsgtoall(message);else/向某個(gè)用戶發(fā)送消息node node = userlinklist.finduser(tosomebody);trynode.output.writeobject(系統(tǒng)信息);node.output.flush();node.output.writeobject(message);node.output.flush();catch(exception e)/system.out.println(!+e);sysmessage.settext();/將發(fā)送消息欄的消息清空/* * 通過(guò)給定的文件名獲得圖像 */image getimage(string fil

溫馨提示

  • 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)論