簡易聊天應(yīng)用程序的設(shè)計與實(shí)現(xiàn)_第1頁
簡易聊天應(yīng)用程序的設(shè)計與實(shí)現(xiàn)_第2頁
簡易聊天應(yīng)用程序的設(shè)計與實(shí)現(xiàn)_第3頁
簡易聊天應(yīng)用程序的設(shè)計與實(shí)現(xiàn)_第4頁
簡易聊天應(yīng)用程序的設(shè)計與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

/Java網(wǎng)絡(luò)程序設(shè)計大作業(yè)分組報名表項目名稱簡易閑聊應(yīng)用程序的設(shè)計和實(shí)現(xiàn)項目功能網(wǎng)絡(luò)閑聊室通常直稱閑聊室,是一種人們可以在線交談的網(wǎng)絡(luò)論壇,在同一閑聊室的人們通過廣播消息進(jìn)行實(shí)時交談。運(yùn)用java程序編寫閑聊室,實(shí)現(xiàn)簡潔的閑聊功能。它是圖形界面,線程,流和文件系統(tǒng)等技術(shù)的綜合應(yīng)用。程序?qū)崿F(xiàn)了閑聊室的基本功能,其中有:1.啟動服務(wù)器。2.啟動登陸界面。3.進(jìn)入客戶端界面。4.發(fā)送信息。5.離開客戶端界面。6.關(guān)閉服務(wù)器。團(tuán)隊成員姓名性別年級院、系、專業(yè)學(xué)號備注計算機(jī)科學(xué)和技術(shù)計算機(jī)科學(xué)和技術(shù)計算機(jī)科學(xué)和技術(shù)計算機(jī)科學(xué)和技術(shù)指導(dǎo)老師姓名探討方向軟件設(shè)計職稱團(tuán)隊聯(lián)系方式聯(lián)系人姓名聯(lián)系電話郵件地址郵編

目錄一、團(tuán)隊介紹及人員分工 11.1團(tuán)隊介紹 11.2人員分工 1二、作品概述 12.1創(chuàng)作背景 12.2功能概要 12.3相關(guān)技術(shù) 22.4作品可行性分析 3三、需求分析 33.1功能性需求 33.2非功能性需求 6四、作品實(shí)現(xiàn) 64.1服務(wù)端界面實(shí)現(xiàn) 64.2客戶端界面實(shí)現(xiàn) 84.3登錄實(shí)現(xiàn) 94.4閑聊功能實(shí)現(xiàn) 114.5退出功能實(shí)現(xiàn) 12五、作品設(shè)計、實(shí)現(xiàn)難點(diǎn)分析 145.1難點(diǎn)分析 145.2解決方案 145.3測試結(jié)果 15 一、團(tuán)隊介紹及人員分工1.1團(tuán)隊介紹吳益帆:有良好的統(tǒng)籌實(shí)力和領(lǐng)導(dǎo)力,能合理支配各組員工作。張咪:踏實(shí)耐性,有良好的創(chuàng)新實(shí)力和策劃實(shí)力。沈丹丹:勤奮刻苦、有鉆研精神,對待編程工作熱忱細(xì)心,孜孜不倦。吳曉曉:對待工作細(xì)致專注,設(shè)計實(shí)力較強(qiáng)。團(tuán)隊成員之間有較好的默契度及協(xié)作性。分工明確,各司其職,在共同的努力及相互的協(xié)作下,共同解決程序中出現(xiàn)的困難并盡可能的優(yōu)化程序,最終完成整個項目。1.2人員分工吳益帆:負(fù)責(zé)程序最終的整理,完成部分功能及錯誤的處理。張咪:負(fù)責(zé)程序的編碼部分及項目具體功能的實(shí)現(xiàn)。沈丹丹:負(fù)責(zé)程序的界面部分,為改程序搜尋解決的方案。吳曉曉:負(fù)責(zé)程序的策劃部分,項目的可行性分析及文檔的編寫工作。二、作品概述2.1創(chuàng)作背景網(wǎng)絡(luò)閑聊室通常直稱閑聊室,是一種人們可以在線交談的網(wǎng)絡(luò)論壇,在同一閑聊室的人們通過廣播消息進(jìn)行實(shí)時交談。在當(dāng)今信息時代,越來越多的閑聊工具被應(yīng)用,java語言是當(dāng)今流行的網(wǎng)絡(luò)編程語言,它具有面對對象,和平臺無關(guān),平安,多線程等特點(diǎn)。運(yùn)用java語言不僅可以實(shí)現(xiàn)大型企業(yè)級的分布式應(yīng)用系統(tǒng),還能夠?yàn)樾⌒偷牡?,嵌入式設(shè)備進(jìn)行應(yīng)用程序的開發(fā)。面對對象的開發(fā)是當(dāng)今世界最流行的開發(fā)方法,它不僅具有更貼近自然地語義,而且有利于軟件的維護(hù)和繼承,熬煉我們嫻熟地應(yīng)用面對對象的思想和設(shè)計方法解決實(shí)際問題的實(shí)力。2.2功能概要運(yùn)用java程序編寫閑聊室,實(shí)現(xiàn)簡潔的閑聊功能。它是圖形界面,線程,流和文件系統(tǒng)等技術(shù)的綜合應(yīng)用。其界面主要接受了java.awt包,java.swing包等。程序?qū)崿F(xiàn)了閑聊室的基本功能,其中有:(1)服務(wù)器端功能描述:

啟動服務(wù)器端:點(diǎn)擊“開啟”按鈕,啟動服務(wù);

端口服務(wù):輸入服務(wù)器的某個端口號,開啟服務(wù)器的這個端口;

顯示在線用戶信息:在右邊的用戶列表顯示全部在線的用戶信息;

顯示用戶閑聊信息:在左邊的閑聊信息區(qū)域內(nèi)顯示全部用戶所發(fā)的信息;

服務(wù)端關(guān)閉:點(diǎn)擊“關(guān)閉’按鈕,關(guān)閉服務(wù)。

(2)客戶端功能描述:啟動客戶端:運(yùn)行客戶端程序,啟動客戶端;選擇服務(wù)器端口號:輸入想要連接的服務(wù)器的端口號;用戶登錄:填入用戶名,點(diǎn)擊“登錄”按鈕,連接相應(yīng)服務(wù)器;顯示在線用戶:在右邊的用戶列表中可以看到當(dāng)前在線的用戶;發(fā)送/接受閑聊消息:在下面的文本輸入?yún)^(qū)域輸入要發(fā)送的內(nèi)容,點(diǎn)擊發(fā)送可以在左邊的閑聊信息區(qū)域內(nèi)顯示自己以及其他用戶所發(fā)的信息;用戶離線:點(diǎn)擊“離線”按鈕,和服務(wù)器斷開連接;客戶端關(guān)閉:關(guān)閉客戶端圖形用戶界面,關(guān)閉客戶端。2.3相關(guān)技術(shù)(1)Java概述JAVA語言有下面一些特點(diǎn):簡潔、面對對象、分布式、說明執(zhí)行、魯棒、平安、體系結(jié)構(gòu)中立、可移植、高性能、多線程以及動態(tài)性。豐富的類庫JAVA供應(yīng)了大量的類以滿足網(wǎng)絡(luò)化、多線程、面對對象系統(tǒng)的須要。語言包供應(yīng)的支持包括字符串處理、多線程處理、數(shù)學(xué)函數(shù)處理等,可以用它簡潔地實(shí)現(xiàn)JAVA程序的運(yùn)行平臺。好用程序包供應(yīng)的支持包括哈希表、堆棧、可變數(shù)組、時間和日期等。輸入輸出包用統(tǒng)一的"流"模型來實(shí)現(xiàn)全部格式的I/O,包括文件系統(tǒng)、網(wǎng)絡(luò)、輸入低級網(wǎng)絡(luò)包用于實(shí)現(xiàn)Socket編程。抽象圖形用戶接口包實(shí)現(xiàn)了不同平臺的計算機(jī)的圖形用戶接口部件,包括窗口、菜單、滾動條、對話框等,使得JAVA可以移植到不同平臺的機(jī)器。網(wǎng)絡(luò)包支持Internet的TCP/IP協(xié)議,供應(yīng)了和Internet的接口。它支持URL連接,WWW的即時訪問,并且簡化了用戶/服務(wù)器模型的程序設(shè)計。(2)套接字Socket,簡稱套接字,用于實(shí)現(xiàn)網(wǎng)絡(luò)上客戶和服務(wù)器之間的連接。也就是說網(wǎng)絡(luò)上兩個或兩個以上雙工方式通信的進(jìn)程之間總有一個連接,這個連接的端點(diǎn)成為套接字,套接字是在比較低的層次上通信的。具體的說:一個服務(wù)器應(yīng)用程序一般偵聽一個特定的端口等待客戶端的連接請求,當(dāng)一個連接請求到達(dá)時,客戶端和服武器端建立一個通信連接,在連接過程中,客戶端被支配一個本地端口和一個Socket建立連接,客戶端通過寫Socket來通知服務(wù)器,以讀Socket中的信息,類似的服務(wù)器也獲得一個本地端口,它須要一個新的端口號來偵聽原始端口上的其他連接請求。服務(wù)器也通過它的本地端口連接一個Socket,通過讀寫和客戶端通信。Socket程序的工作過程:1.建立Socket連接:在通信起先之前由通信雙方確認(rèn)身份,建立一條專用的虛擬連接道。2.數(shù)據(jù)通信:利用虛擬連接通道傳送數(shù)據(jù)信息進(jìn)行通信。3.關(guān)閉:通信結(jié)束時,再將所建的虛擬連接拆除。2.4作品可行性分析由于本軟件學(xué)問一個閑聊程序,程序只供應(yīng)用戶之間的閑聊功能,故對網(wǎng)絡(luò)傳輸數(shù)據(jù)要求不是很高,只要正常的傳輸速度就可以了。三、需求分析 3.1功能性需求本閑聊室分為閑聊室服務(wù)端和閑聊室客戶端,服務(wù)端和客戶端之間通過套接字Socket(TCP)連接。在java中運(yùn)用套接字相當(dāng)簡潔,JavaAPI為處理套接口的通信供應(yīng)了一個類.Socket.,使得編寫網(wǎng)絡(luò)應(yīng)用程序相對簡潔.服務(wù)器接受多線程以滿足多用戶的請求,并通過創(chuàng)建一個ServerSocket對象來監(jiān)聽來自客戶的連接請求,默認(rèn)IP地址為:localhost默認(rèn)端口為8888。(1)閑聊室服務(wù)端模塊,包括端口服務(wù)、啟動服務(wù)、關(guān)閉服務(wù)、顯示在線用戶、顯示用戶閑聊信息,如圖3.1所示;圖3.1閑聊室服務(wù)端模塊圖端口服務(wù):輸入要偵聽的端口,默認(rèn)為8888;啟動服務(wù):啟動服務(wù)器,并起先在設(shè)置的端口中偵聽,客戶端用戶可以登錄并起先閑聊;關(guān)閉服務(wù):關(guān)閉服務(wù)器,偵聽結(jié)束??蛻舳擞脩舨荒茉匍e聊;顯示在線用戶:服務(wù)器列表顯示在線用戶數(shù)和全部在線用戶名稱;顯示用戶閑聊信息:在文本區(qū)中顯示全部用戶閑聊信息和登錄、退出信息。(2)閑聊室客戶端模塊,包括用戶登錄、用戶離線、連接設(shè)置、發(fā)送和接收閑聊信息、顯示在線用戶、退出,如圖3.2所示:圖3.2閑聊室客戶端模塊圖用戶登錄:只能在閑聊室服務(wù)端已開啟的狀況下,用戶點(diǎn)擊“按鈕”才能登錄,用戶登錄之后才能起先閑聊,登錄后不能再修改用戶設(shè)置和連接設(shè)置;用戶離線:用戶點(diǎn)擊“離線”按鈕,退出閑聊,和服務(wù)器斷開連接;連接設(shè)置:用戶可以設(shè)置自己連接的服務(wù)器的IP地址和端口號,默認(rèn)的連接地址為:localhost:8888;發(fā)送和接收閑聊信息:用戶可以給全部人發(fā)送信息,并能看到其他用戶發(fā)送給全部人的消息;顯示在線用戶:服務(wù)器列表顯示在線用戶數(shù)和全部在線用戶名稱;退出:關(guān)閉全部閑聊并退出客戶端。(3)程序流程:首先啟動服務(wù)器,用戶打開客戶端,輸入服務(wù)器端口號,再輸入用戶名就可以登錄,登錄以后會顯示當(dāng)前在線的用戶信息,用戶可以看到其他用戶所發(fā)的信息,自己也可以發(fā)送信息。用戶點(diǎn)擊離線就會和服務(wù)器斷開連接,最終關(guān)閉服務(wù)器,如圖3.3所示:圖3.3程序流程圖3.2非功能性需求(1)平安需求本程序能防衛(wèi)禁止未登錄用戶進(jìn)行通信,防止數(shù)據(jù)丟失,須要輸入用戶名、端口號連接相應(yīng)的服務(wù)器才允許用戶間的通信。(2)性能需求本程序運(yùn)用的對象是全部運(yùn)行該程序的用戶,用戶在連接服務(wù)器可以進(jìn)行客戶端之間的通信。(3)易用性需求本程序的運(yùn)用對象計算機(jī)水平一般,有確定的易用性上的要求,程序應(yīng)當(dāng)存在著一些友好性的提示,提高程序的友好度。(4)可維護(hù)性需求本程序能夠剛好發(fā)覺并訂正系統(tǒng)故障,對系統(tǒng)數(shù)據(jù)進(jìn)行備份,有系統(tǒng)還原功能。(5)健壯性需求本程序在遭遇非法輸入數(shù)據(jù),能夠解除該數(shù)據(jù)并接著運(yùn)行;對于系統(tǒng)異樣有完備的預(yù)警預(yù)防處理機(jī)制。四、作品實(shí)現(xiàn)4.1服務(wù)端界面實(shí)現(xiàn)在服務(wù)端啟動后,要顯示“簡易閑聊室服務(wù)器”的圖形用戶界面,如圖6.1所示:圖6.1服務(wù)端圖形用戶界面“簡易閑聊室服務(wù)器”的圖形用戶界面實(shí)現(xiàn)的主要代碼如下:privateLabelsvrIP=newLabel("服務(wù)器IP:");privateTextFieldshowSvrIP=newTextField();privateLabelsvrPort=newLabel("服務(wù)器端口:");privateTextFieldgetSvrPort=newTextField("8888");privateButtonenter=newButton("啟動");privateTextAreaoutput=newTextArea();privateLabeluser=newLabel("當(dāng)前在線用戶(0)");privateListlist=newList();privatevoidsetup(){ Paneltop=newPanel(); top.setLayout(newFlowLayout()); top.add(svrIP); svrIP.setBackground(bg); top.add(showSvrIP); showSvrIP.setBackground(bg); top.add(svrPort); svrPort.setBackground(bg); top.add(getSvrPort); getSvrPort.setBackground(bg); top.add(enter); enter.setBackground(bg); Paneleast=newPanel(); east.setLayout(newBorderLayout()); east.add("North",user); user.setBackground(bg); east.add("Center",list); list.setBackground(bg); setLayout(newBorderLayout()); add("North",top); top.setBackground(bg); add("East",east); east.setBackground(bg); add("Center",output); output.setBackground(bg); setBackground(bg); }點(diǎn)擊“啟動”按鈕,開啟默認(rèn)的服務(wù)器8888端口,如圖6.2所示:圖6.2服務(wù)端端口開啟8888端口開啟實(shí)現(xiàn)代碼如下:try{ server=newServerSocket(Integer.parseInt(getSvrPort .getText())); rightNow=Calendar.getInstance().getTime() .toLocaleString(); output.append(rightNow+"\n開啟服務(wù)器.\n\n"); enter.setLabel("關(guān)閉"); ht=newHashtable(); ht_s=newHashtable(); st=newServerThread(); serving=true; }catch(IOExceptionioe){ output.append("Error:"+ioe+"\n\n"); }4.2客戶端界面實(shí)現(xiàn)在客戶端啟動后,顯示“簡易閑聊室客戶端”的圖形用戶界面,如圖6.3所示:圖6.3客戶端圖形用戶界面“簡易閑聊室客戶端”的圖形用戶界面實(shí)現(xiàn)的主要代碼如下:privateButtonB_login=newButton("登陸");privateButtonB_logout=newButton("離線");privateButtonB_send=newButton("發(fā)送");privateLabeluserName=newLabel("您的用戶名:");privateTextFieldgetUserName=newTextField();//獲得用戶名privateLabelsvrIP=newLabel("當(dāng)前服務(wù)器IP:");privateTextFieldgetSvrIP=newTextField();//獲得服務(wù)器IP地址privateLabelsvrPort=newLabel("當(dāng)前服務(wù)器端口:");privateTextFieldgetSvrPort=newTextField();//獲得服務(wù)器端口privateTextAreainput=newTextArea();//輸入文本框privateTextAreaoutput=newTextArea();//輸出文本框privateLabeluser=newLabel("當(dāng)前在線用戶(0)");privateListlist=newList();privatevoidsetup(){ Paneltop1=newPanel(); top1.setLayout(newBorderLayout()); top1.add("West",userName); userName.setBackground(bg); top1.add("Center",getUserName); getUserName.setBackground(bg); Paneltop2=newPanel(); top2.setLayout(newBorderLayout()); top2.add("West",svrIP); svrIP.setBackground(bg); top2.add("Center",getSvrIP); getSvrIP.setBackground(bg); Paneltop3=newPanel(); top3.setLayout(newBorderLayout()); top3.add("West",svrPort); svrPort.setBackground(bg); top3.add("Center",getSvrPort); getSvrPort.setBackground(bg); Paneltop4=newPanel(); top4.setLayout(newBorderLayout()); top4.add("North",top1); top4.add("Center",top2); top4.add("East",top3); Paneleast=newPanel(); east.setLayout(newBorderLayout()); east.add("North",user); user.setBackground(bg); east.add("Center",list); list.setBackground(bg); Panelcenter=newPanel(); center.setLayout(newBorderLayout()); center.add("Center",output); output.setBackground(bg); center.add("South",input); input.setBackground(bg); center.add("East",east); east.setBackground(bg); Panelsouth=newPanel(); south.setLayout(newFlowLayout()); south.add(B_login); B_login.setBackground(bg); south.add(B_send); B_send.setBackground(bg); south.add(B_logout); B_logout.setBackground(bg); setLayout(newBorderLayout()); add("North",top4); add("Center",center); add("South",south); setBackground(bg); }4.3登錄實(shí)現(xiàn)在客戶端輸入用戶名,點(diǎn)擊“登陸”,客戶端顯示系統(tǒng)時間和“您已成功登陸”(如圖6.4所示),并將用戶名發(fā)送給服務(wù)端。服務(wù)端接收來自客戶端的數(shù)據(jù),顯示“sdd登陸”以及將用戶名顯示在用戶列表中(如圖6.5所示),并將用戶數(shù)據(jù)發(fā)送給全部在線的客戶端。圖6.4用戶登錄用戶登錄代碼實(shí)現(xiàn)如下:if(login)return;booleanaccepted=false,refused=false;Stringline=newString("");try{ connection=newSocket(getSvrIP.getText(), Integer.parseInt(getSvrPort.getText())); in=newDataInputStream(connection.getInputStream()); out=newDataOutputStream(connection.getOutputStream()); out.writeUTF("L"+getUserName.getText()); while(!accepted&&!refused){ line=in.readUTF(); if(line.charAt(0)=='R'){refused=true;} if(line.charAt(0)=='A'){accepted=true;} } if(refused){ rightNow=Calendar.getInstance().getTime().toLocaleString(); output.append(rightNow+"\n登錄失敗請運(yùn)用合法用戶名.\n\n"); } if(accepted){ rightNow=Calendar.getInstance().getTime().toLocaleString(); output.append(rightNow+"\n您已成功登陸.\n\n"); login=true;}}圖6.5服務(wù)端顯示用戶服務(wù)端向在線用戶發(fā)送當(dāng)前在線用戶列表代碼實(shí)現(xiàn)如下:login=true;list.add(userName);user.setText("User("+list.getItemCount()+")");String[]str=list.getItems();line="A";//acceptedfor(inti=0;i<str.length;i++){line+=(str[i]+"");}out.writeUTF(line);line="L"+userName;rightNow=Calendar.getInstance().getTime().toLocaleString();output.append(rightNow+"\n"+userName+"登陸.\n\n");客戶端獲得當(dāng)前在線用戶列表代碼實(shí)現(xiàn)如下:String[]str=line.split("");for(inti=1;i<str.length;i++){ list.add(str[i]);}user.setText("當(dāng)前在線用戶("+list.getItemCount()+")");4.4閑聊功能實(shí)現(xiàn)開啟多個客戶端,并登錄。在輸入框中輸入信息,點(diǎn)擊“發(fā)送”,數(shù)據(jù)傳送至服務(wù)端(如圖6.6所示),再由服務(wù)端數(shù)據(jù)發(fā)送給其他客戶端。每個客戶端都接收服務(wù)端發(fā)送過來的數(shù)據(jù),并顯示在消

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論