歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

《Java程序設計》課程設計大作業(yè)服務端聊天系統(tǒng)

  • 資源ID:26912622       資源大?。?span id="ggolmah" class="font-tahoma">146.05KB        全文頁數(shù):21頁
  • 資源格式: DOC        下載積分:15積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

《Java程序設計》課程設計大作業(yè)服務端聊天系統(tǒng)

20112012學年第一學期Java程序設計課程大作業(yè)題目: 服務端聊天系統(tǒng) 專業(yè): 計算機 班級: 計算機1班 學號: 090400224 姓名: 馬英俊 教師: 楊樹林 日期:2011年 12月 22 日項目內(nèi)容單項分值總分選題1題目明確,系統(tǒng)功能較集中482題目難度適宜,有一定的綜合性4功能實現(xiàn)3功能完整,能夠正確運行6244模塊劃分合理,程序結構清晰65界面設計合理、易用、協(xié)調(diào)66設計與實現(xiàn)程序6規(guī)范性及文檔7代碼規(guī)范性及注釋5108文檔內(nèi)容齊全,格式規(guī)范5總體效果9完成總體質(zhì)量61210軟件功能及技術水平6答辯11講解清楚明了,功能演示流暢66評語總分一 課程設計目的JAVA程序設計是計算機相關專業(yè)的必修專業(yè)基礎課程,其實踐性、應用性很強。實踐是必不可少的一個重要環(huán)節(jié)。JAVA程序設計的設計目的是加深對理論內(nèi)容的理解和掌握,更加系統(tǒng)地掌握程序設計及其在開發(fā)中的廣泛應用,基本方法及技巧,為綜合運用所學知識,利用軟件工程為基礎進行軟件開發(fā)、并在實踐應用方面打下一定基礎。二 課程設計的實驗環(huán)境運行windows 2007或XP以上微機系統(tǒng),JDK,NETBEAN。三 課程設計主要內(nèi)容Java語言的學習熱潮并沒有因為時間的推移而消退,相反,由于計算機技術的發(fā)展所帶來新應用的出現(xiàn),Java越來越流行,這種情況是以往程序設計語言在其生存周期內(nèi)所不多見的。Java語言之所以這樣長盛不衰,一是因為其眾多的技術特點與現(xiàn)今的應用十分合拍,可以覆蓋大部分的需求;二是因為SUN公司不斷推出新的版本,完善Java自身的功能。有了這兩點,Java語言成為程序員首選的程序設計開發(fā)工具就在情理之中了。服務端聊天系統(tǒng)是一個方便于兩端用戶溝通的軟件,通過輸入偵聽方的端口號(例如:8888)來啟動服務。當服務啟動時,可進行聊天;當停止服務時,聊天信息將不再接受。四 詳細設計程序詳細設計代碼如下:package org.Adam;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;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;/服務端的偵聽端口ServerSocket serverSocket;/服務端SocketImage icon;/程序圖標JComboBox combobox;/選擇發(fā)送消息的接受者JTextArea messageShow;/服務端的信息顯示JScrollPane messageScrollPane;/信息顯示的滾動條JTextField showStatus;/顯示用戶連接狀態(tài)JLabel sendToLabel,messageLabel;JTextField sysMessage;/服務端消息的發(fā)送JButton sysMessageButton;/服務端消息的發(fā)送按鈕UserLinkList userLinkList;/用戶鏈表/建立菜單欄JMenuBar jMenuBar = new JMenuBar(); /建立菜單組JMenu serviceMenu = new JMenu ("服務(V)"); /建立菜單項JMenuItem portItem = new JMenuItem ("端口設置(P)");JMenuItem startItem = new JMenuItem ("啟動服務(S)");JMenuItem stopItem=new JMenuItem ("停止服務(T)");JMenuItem exitItem=new JMenuItem ("退出(X)");JMenu helpMenu=new JMenu ("幫助(H)");JMenuItem helpItem=new JMenuItem ("幫助(H)");/建立工具欄JToolBar toolBar = new JToolBar();/建立工具欄中的按鈕組件JButton portSet;/啟動服務端偵聽JButton startServer;/啟動服務端偵聽JButton stopServer;/關閉服務端偵聽JButton exitButton;/退出按鈕/框架的大小Dimension faceSize = new Dimension(400, 600);ServerListen listenThread;JPanel downPanel ;GridBagLayout girdBag;GridBagConstraints girdBagCon;/* * 服務端構造函數(shù) */public ChatServer()init();/初始化程序/添加框架的關閉事件處理this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.pack();/設置框架的大小this.setSize(faceSize);/設置運行時窗口的位置Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();this.setLocation( (int) (screenSize.width - faceSize.getWidth() / 2, (int) (screenSize.height - faceSize.getHeight() / 2);this.setResizable(false);this.setTitle("聊天室服務端"); /設置標題/程序圖標icon = getImage("icon.gif");this.setIconImage(icon); /設置程序圖標this.setVisible(true);/* * 程序初始化函數(shù) */public void init()Container contentPane = getContentPane();contentPane.setLayout(new BorderLayout();/添加菜單欄serviceMenu.add (portItem);serviceMenu.add (startItem);serviceMenu.add (stopItem);serviceMenu.add (exitItem);jMenuBar.add (serviceMenu); helpMenu.add (helpItem);jMenuBar.add (helpMenu); setJMenuBar (jMenuBar);/初始化按鈕portSet = new JButton("端口設置");startServer = new JButton("啟動服務");stopServer = new JButton("停止服務" );exitButton = new JButton("退出" );/將按鈕添加到工具欄toolBar.add(portSet);toolBar.addSeparator();/添加分隔欄toolBar.add(startServer);toolBar.add(stopServer);toolBar.addSeparator();/添加分隔欄toolBar.add(exitButton);contentPane.add(toolBar,BorderLayout.NORTH);/初始時,令停止服務按鈕不可用stopServer.setEnabled(false);stopItem .setEnabled(false);/為菜單欄添加事件監(jiān)聽portItem.addActionListener(this);startItem.addActionListener(this);stopItem.addActionListener(this);exitItem.addActionListener(this);helpItem.addActionListener(this);/添加按鈕的事件偵聽portSet.addActionListener(this);startServer.addActionListener(this);stopServer.addActionListener(this);exitButton.addActionListener(this);combobox = new JComboBox();combobox.insertItemAt("所有人",0);combobox.setSelectedIndex(0);messageShow = new JTextArea();messageShow.setEditable(false);/添加滾動條messageScrollPane = new JScrollPane(messageShow,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);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)消息的事件偵聽sysMessage.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;girdBagCon.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);girdBagCon.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(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);downPanel.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.setConstraints(showStatus,girdBagCon);downPanel.add(showStatus);contentPane.add(messageScrollPane,BorderLayout.CENTER);contentPane.add(downPanel,BorderLayout.SOUTH);/關閉程序時的操作this.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)stopService();System.exit(0););/* * 事件處理 */public void actionPerformed(ActionEvent e) Object obj = e.getSource();if (obj = startServer | obj = startItem) /啟動服務端startService();else if (obj = stopServer | obj = stopItem) /停止服務端int j=JOptionPane.showConfirmDialog(this,"真的停止服務嗎?","停止服務",JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE);if (j = JOptionPane.YES_OPTION)stopService();else if (obj = portSet | obj = portItem) /端口設置/調(diào)出端口設置的對話框PortConf portConf = new PortConf(this);portConf.setVisible(true);else if (obj = exitButton | obj = exitItem) /退出程序int j=JOptionPane.showConfirmDialog(this,"真的要退出嗎?","退出",JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE);if (j = JOptionPane.YES_OPTION)stopService();System.exit(0);else if (obj = helpItem) /菜單欄中的幫助/調(diào)出幫助對話框Help helpDialog = new Help(this);helpDialog.setVisible(true);else if (obj = sysMessage | obj = sysMessageButton) /發(fā)送系統(tǒng)消息sendSystemMessage();/* * 啟動服務端 */public void startService()tryserverSocket = new ServerSocket(port,10);messageShow.append("服務端已經(jīng)啟動,在"+port+"端口偵聽.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.println(e);userLinkList = new UserLinkList();listenThread = new ServerListen(serverSocket,combobox,messageShow,showStatus,userLinkList);listenThread.start();/* * 關閉服務端 */public void stopService()try/向所有人發(fā)送服務器關閉的消息sendStopToAll();listenThread.isStop = true;serverSocket.close();int count = userLinkList.getCount();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);sysMessage.setEnabled(false);messageShow.append("服務端已經(jīng)關閉n");combobox.removeAllItems();combobox.addItem("所有人");catch(Exception e)/System.out.println(e);/* * 向所有人發(fā)送服務器關閉的消息 */public void sendStopToAll()int count = userLinkList.getCount();int i = 0;while(i < count)Node node = userLinkList.findUser(i);if(node = null) i +;continue;trynode.output.writeObject("服務關閉");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 +;continue;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 = sysMessage.getText() + "n"messageShow.append(message);/向所有人發(fā)送消息if(toSomebody.equalsIgnoreCase("所有人")sendMsgToAll(message);else/向某個用戶發(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ā)送消息欄的消息清空/* * 通過給定的文件名獲得圖像 */Image getImage(String filename) URLClassLoader urlLoader = (URLClassLoader)this.getClass().getClassLoader();URL url = null;Image image = null;url = urlLoader.findResource(filename);image = Toolkit.getDefaultToolkit().getImage(url);MediaTracker mediatracker = new MediaTracker(this);try mediatracker.addImage(image, 0);mediatracker.waitForID(0);catch (InterruptedException _ex) image = null;if (mediatracker.isErrorID(0) image = null;return image;public static void main(String args) ChatServer app = new ChatServer();五 測試分析服務端聊天系統(tǒng)初始化界面如圖(1)所示。圖(1)服務端聊天系統(tǒng)端口設置界面如圖(2)所示。 圖(2)服務端聊天系統(tǒng)啟動服務界面如圖(3)所示。 圖(3)服務端聊天系統(tǒng)發(fā)送消息結果如圖(4)所示。 圖(4)服務端聊天系統(tǒng)停止服務界面如圖(5)(6)所示。圖(5)圖(6)服務端聊天系統(tǒng)退出界面如圖(7)所示。圖(7)六 課程設計總結通過這學期學習JAVA語言,我學到很多知識,當然在這期間遇到的困難也數(shù)不勝數(shù)。我想做些復雜的程序,但實在是能力有限,最后終于決定做服務端聊天系統(tǒng)。.這個服務端聊天系統(tǒng)雖然理論上來講應該很簡單,但當我真正著手的時候才發(fā)現(xiàn),原來自己會的知識太少了。剛剛開始什么我什么都不太懂,于是我參閱了大量的資料,也不停的向同學們請教,終于漸漸的讓我從剛開始連如何運行程序,甚至類的作用等一些最基本的東西都不清楚到最后通過努力終于把程序成功的做出來。經(jīng)過編寫這個服務端聊天系統(tǒng),我認識到無論什么事情都應該注意細節(jié),雖然是很小的問題,但可以提高自己編程的能力,而且還可以培養(yǎng)自己的嚴謹性,同時還可以為以后的工作積累經(jīng)驗。除此之外讓我對JAVA編程語言又有了更深一步的了解??傊?,通過這次課程設計真的讓我學到了很多.。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

注意事項

本文(《Java程序設計》課程設計大作業(yè)服務端聊天系統(tǒng))為本站會員(仙***)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復下載不扣分。




關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!