資源描述:
《面向對象程序設計課程設計報告---網絡聊天工具編程聊天網網聊天程序程序設計網絡聊天》由會員上傳分享,免費在線閱讀,更多相關內容在工程資料-天天文庫。
1、課程設計報告課程名稱:面向對象程序設計課程設計任課教師:設計題目:網絡聊天工具所學專業(yè):信息管理與信息系統(tǒng)班級學號:學生姓名:報告完成tl期:2012年01月10日目錄1一、項目目標2二、功能描述31.服務器端功能32.客戶端功能3三、設計思路4(一)總體設計41.服務器端設計42.客戶端設計4(二)代碼思路51.定義服務端類CServer繼承Frame類52.定義CC1ient類繼承Frame類5四、具體設計7總結10、項目目標實現(xiàn)基于C/S模式的聊天室程序。聊天室共分為服務器端和客戶端兩部分。、功能描述1.服務器端功能(1)提供多線程的聊天服務處理。(2)在服務器端屏
2、幕上提示客戶端進入,顯示客戶端聊天內容。(3)當某客戶端輸入字符“quit”時斷開該客戶端的連接。2.客戶端功能(1)可以配置要連接服務器的1P地址和端口號。(2)配置用戶昵稱后連接。(3)可以向所有人發(fā)送消息。(4)顯示本聊天室中的該用戶登錄后的所有消息。(5)顯示在該用戶登錄之后登錄的用戶登錄信息。圖服務器端管理用例圖三、設計思路(一)總體設計1.服務器端設計定義一個服務端類,實現(xiàn)服務器端功能。(1)定義內部類,此內部類采用多線程,實現(xiàn)多客戶端接入。(2)當初始化界而時,啟動服務器。(3)當某客戶端輸入字符“quit”時斷開該客戶端的連接,關閉服務器窗口時關閉與客戶端
3、的連接。(4)服務器接收客戶端信息,并把這些信息發(fā)送到連接服務器的客戶端。2?客戶端設計定義一個客戶端類,實現(xiàn)客戶端功能。(1)定義三個內部類,以實現(xiàn)連接按鈕的監(jiān)聽、信息接收、對自己信息的監(jiān)聽。(2)定義輸入服務器的IP地址、端口號的控件和用戶昵稱,在連接時把這些信息傳給服務器。(3)發(fā)送消息時,通過對系統(tǒng)的監(jiān)聽顯示自己發(fā)送的消息,其他用戶發(fā)送的信息通過服務器轉發(fā)。(二)代碼思路1?定義服務端類CScrvcr繼承Frame類(1)定義兩個構造方法,一個構造方法實現(xiàn)客戶端不傳參數(shù)時服務器窗口標題為空,另外一個構造方法實現(xiàn)客戶端傳參數(shù)時服務器窗口標題為此參數(shù)值。都要執(zhí)行窗口的
4、初始化操作。(2)init()方法即窗口初始化方法,實現(xiàn)服務端界面,在界面中定義一個文本區(qū)域,設定窗口關閉時系統(tǒng)退出,并啟動服務器。(3)boradCast(Stringstr,Socketsocket)方法,即向所有在服務器中的客戶端廣播方法,有兩個參數(shù),一個傳遞只顯示的字符串,另一個傳遞套接字。該方法要判斷發(fā)送信息的用戶是否是自己。(4)slanServer()方法,啟動服務方法。等待客戶端的請求,接收到請求后,產生socket對彖,交給多線程的聊天服務處理。(5)定義內部類Service類,實現(xiàn)Runnable接口。有兩個屬性套接字socket和用戶名name。①定
5、義兩個構造方法,一個沒有參數(shù)實現(xiàn)為空,另一個以套接字socket作參數(shù),并獲取用戶名。②nin()方法,沒有參數(shù)。當用戶發(fā)送“quit”時,關閉客戶連接。用戶發(fā)送其他信息時廣播信息。(6)定義主方法,實例化CServer類。2.定義CClient類繼承Frame類(1)把界面組件定義為屬性,在init()方法屮構建界面,并調用與服務器連接的方法。(2)connect()方法實現(xiàn)與服務器的連接。(3)Recive()方法實現(xiàn)接收服務器發(fā)送的信息。(4)sendName()方法實現(xiàn)向服務器發(fā)送用戶姓名。(5)定義內部類connBttnListener,實現(xiàn)ActionLIst
6、ener?(6)定義內部類Recive,實現(xiàn)線程。(7)定義內部類MyListener,實現(xiàn)ActionLIstener。(8)定義close()方法,實現(xiàn)關閉輸出流,關閉套接字。(9)定義主方法,實例化CClient類。CClienttextArea:TextAreatextField:TextFieldnickName:TextFieldaddress:TextFieldport:TextFieldsendBttn:ButtonconnBttn:Buttonpanel1:Panelpane!2:Panelsocket:SocketprintStream:PrintSt
7、reamServersocket:Socketname:StringService(Socket)Service()nin()CClient()CClient(String)init()connet()recive()sendName()CServertextArea:TextAreasocket:Socketsocket1:Sockethashtable:HashtableCServer()CServer(String)init()boradCast(String,Socket)startServer()圖自定義的類四.具體