




已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
目錄摘要1引言1第1章 系統概述21.1本課題的來源21.2本課題的目的、內容、要求31.3研究意義3第2章 技術選擇分析42.1 可行性分析42.2開發(fā)工具的選擇52.3開發(fā)技術的選擇5第3章 需求分析63.1項目概述63.2功能需求83.3質量性能需求11第4章 概要設計124.1目的124.2運行環(huán)境124.3條件與限制134.4體系結構概述134.5功能設計13第5章 詳細設計及實現195.1 客戶端注冊205.2 登錄225.3 公聊235.4 私聊245.5發(fā)送系統消息265.6字體設置275.7發(fā)送表情275.8記錄保存和顯示285.9 功能邏輯實現28小結29致謝29參考文獻30英文摘要30基于Java平臺上聊天系統的研究基于Java平臺上聊天系統的研究作者:任靜作者簡介:任靜,女,(1989.3 ),安徽省六安市人,漢族,2007年9月至2011年6月在安徽農業(yè)大學信息與計算科學專業(yè)學習。論文完成時間:2011年5月14日 指導老師:唐淼(安徽農業(yè)大學理學院信息與計算科學專業(yè) 學號: 07119020)摘要:網絡聊天室是一種應用廣泛網絡聊天方式,操作簡單,功能豐富,是教學和學習面向對象的編程思想的理想項目。可以使用多種編程語言設計和開發(fā)出功能完善的網絡聊天室。本畢業(yè)設計論文介紹用JAVA語言分析與設計一個網絡聊天室的過程,本系統采用C/S架構設計,整個項目分為服務器端和客戶端。使用了最新的Java 2標準Swing組件,開發(fā)出簡潔美觀和布局合理的用戶和服務器界面;通過對數據流操作的合理設計,實現信息傳遞、接受和數據保存。同時,采用多線程、多任務的設計思想,開發(fā)出性能穩(wěn)定,功能全面的服務器。通過本次畢業(yè)設計可以學到如何應用和實現面向對象的各種方法,如何使用Eclipse集成開發(fā)環(huán)境來創(chuàng)建和開發(fā)項目,從而研究系統的完整開發(fā)。關鍵詞:聊天室;Java; Swing組件;多線程引言隨著科學技術的發(fā)展和社會的進步,尤其是計算機大范圍的普及,網絡飛速發(fā)展的時代,網絡聊天成為人們生活中不可缺少的一部分,幾乎每個網民在上網的時候都會選擇聊天室與虛幻世界的人們進行各種各樣的交談,聊天室對于眾多網民來說并不陌生,它是網絡上大家討論交流的有效平臺。隨著聊天室使用的頻繁,各種各樣的聊天室相繼出現,由于Java強大的Internet網絡程序設計功能,很多聊天室服務器端都是采用Java語言進行實現,尤其是應用JAVA多線程的聊天室更為人們所關注。第1章 系統概述1.1本課題的來源中國互聯網絡信息中心(CNNIC)發(fā)布了第21次中國互聯網絡發(fā)展狀況統計報告,報告顯示,截至2007年12月,中國網民數已經達到了2.1億,略低于美國居世界第二位,其中寬帶用戶早已經突破1.37億,達到1.63億,另外手機上網人數與日劇曾,根據信息產業(yè)部公布的2007年10月通信行業(yè)統計月報,目前中國已有5.3億手機有效卡數。近幾年來,中國手機有效卡數增長一直維持在17%以上,平均每年增長6000萬張卡,增量非??捎^。 上網計算機已經達到了7800萬,網民的人均每月上網費用為74.9元;中國互聯網行業(yè)繼續(xù)了2006年快速發(fā)展的態(tài)勢。2007年一年中國網民增加了7300萬人,年增長率達到53.3%。相當于在過去一年中,平均每天增加網民20萬人,或平均每分鐘增加網民近140人。按照這個增長速度,預計2008年一月份過后,中國網民將超越美國成為全球第一。隨著網絡普及和上網人數的大增,在國內各大門戶網站都架設了大型聊天室。如:新浪聊天室、中華網社區(qū)聊天室、搜狐等都成為網民們的熱門聊天室。以新浪聊天室為例看,聊天室呈現積聚人氣作用,并開設不同主題的聊天室以使網民們具有針對性的使用聊天室。新浪開設許多主題鮮明的聊天室:如針對不同地域開設了“同城聯盟”,可以方便網民們和同鄉(xiāng)之間聯絡和方便開展一些地域性質的活動。為針對不同年齡層而開設的“同齡話題”,使各年齡層的用戶可以方便的選擇自己的聊天對象群體,找到自己的合適的聊天話題。并且針對目前社會流行的熱門話題和流行話題都有相應的主題室。隨著網絡技術的不段提高和改進,近些年來視頻聊天成為上網的熱門聊天方式,除了可以方便互相的交流外,可以更直觀的了解對方,真正實現面對面的即時聊天。并且現在隨著網絡聊天室的發(fā)展,其功能已經超越了普通的聊天活動,如新浪聊天室定期邀請當今社會知名人士、專家、業(yè)界領袖、優(yōu)秀人物、政府部門領導等開展一些社會活動、宣傳和討論等多種形式的活動。通過網絡的形式更直接的和人們進行互動,實現意見即時反饋,即時回答和解決網民們提出的問題,使活動的效果更快更好的得到發(fā)揮。發(fā)達國家的3G許可證發(fā)放工作都已經基本完成,隨著3G技術標準、網絡設備、終端和業(yè)務的逐步成熟,3G許可證的發(fā)放已經開始從歐美地區(qū)向亞洲、非洲和中東歐地區(qū)轉移。日韓是全球3G發(fā)展最為成熟的地區(qū),截止到2006年3月底,日本和韓國的3G用戶數分別占總移動用戶數的53%和94%。日本WCDMA用戶占全球WCDMA用戶的44%。韓國CDMA2000 1X EV-DO用戶占全球EV-DO用戶的52%。西歐移動通信市場整體發(fā)展比較成熟,移動用戶普及率處于飽和狀態(tài)。截止到2004年底,西歐移動用戶3.52億,普及率高達90.1%,個別國家像英國、丹麥、希臘等移動用戶普及率達到100%。到2007年4月底,我國移動用戶數為4.87億以上。從調查中可以得知,移動上網用戶顯著增多,對網絡聊天室的功能提出更多的要求和功能。同時網絡聊天室也是網絡應用中出現較早的應用軟件,其開發(fā)技術和設計思想都已經得到成熟的發(fā)展,并且已經具有許多成功的案例。在開發(fā)技術上已經沒有什么技術難題,并且具有廣泛的應用和市場空間。1.2本課題的目的、內容、要求1.目的網絡聊天室是一項應用廣泛,并且實用性強的一個應用,雖然其功能簡單,但是在其開發(fā)技術和過程中,能夠充分學習和使用JAVA的技術,如:開發(fā)各界面(登入、注冊、公聊、私聊等界面)使用 Swing組件技術,實現數據的保存使用JDBC數據庫連接和操作技術,并且在開發(fā)過程當中,能充分的使用和體會面向對象技術的原理和方法。2.內容一個網絡聊天室的運行,首先是要有一個完整穩(wěn)定的服務器端,并且擁有多個客服端。客服端要具有實現用戶注冊和用戶登入,在登入成功后,要顯示出公聊界面,實現聊天功能并且能夠發(fā)送表情和保存聊天內容和顯示聊天記錄等功能,在新用戶上線和用戶下線時要更新每個客戶端在線用戶列表名,并且可以和在線的用戶實現一對一的私聊功能。在服務器端可以實現不斷的監(jiān)聽客戶的連接,并且根據客戶端發(fā)送過來的不同信息,如注冊信息、登入信息、公聊信息、私聊信息、退出信息等,服務器端要作出不同的響應,并且要實現數據庫的操作,如根據用戶注冊的信息保存在數據庫中,根據登入時發(fā)送來的用戶名和密碼檢測是否合法用戶等。3.要求主要涉及圖形用戶界面的開發(fā)、布局和輸入/輸出流數據的控制,并且要通過Socket技術實現網絡功能,整個程序采用Swing圖形界面,要求熟練掌握Java圖形用戶界面的事件處理及部分Swing組件的使用。在代碼的編寫上要充分體現Java面向對象開發(fā)思想和多態(tài)性,提高代碼的重用性和高效性,要深入理解接口的作用和內部對象等特性等。1.3研究意義本系統具有較好的現實意義,特別是隨著科學技術的發(fā)展和社會的進步,尤其是計算機大范圍的普及,網絡飛速發(fā)展的今天,網絡聊天成為人們生活中不可缺少的一部分,幾乎每個網民在上網的時候都會選擇聊天室與虛幻世界的人們進行各種各樣的交談,隨著聊天室使用的頻繁,各種各樣的聊天室相繼出現,尤其是應用JAVA多線程的聊天室更為人們所關注。所以這一系統實現人們所期望的頁面流暢,美觀,負載能力強,靈活易用,性能穩(wěn)定的愿望。第2章 技術選擇分析2.1可行性分析在軟件開發(fā)之前對其進行可行性分析是十分必要的,可以知道該軟件是否合乎用戶的要求,以及行業(yè)標準,最重要的是軟件的造價是否合乎用戶的要求。1.經濟可行性由于該軟件是一個聊天室的開發(fā),操作系統是Windows 、后臺數據庫采用Micsoft Access,開發(fā)環(huán)境為Eclipse, 在軟件方面,都可以從網上直接下載。相關的學習資料也都可以從網上下載,也可以到圖書館查找,既經濟又方便。但在實際應用方面,既方便了用戶,又提高了網絡的管理水平,大大的節(jié)省了人力、財力、物力,聊天室的電擊率會大大提高。遠遠超出它的研發(fā)費用。由于以上的各項分析,該軟件運行靈活,又有一定的安全性,因此開發(fā)該系統具有經濟可行性。2.技術可行性(1) 就執(zhí)行平臺而言,必須考慮的問題之一是用戶可能使用的操作系統。用戶可能使用的是Windows Linux。JAVA語言具有平臺無關性,可以不需要任何修改就可以運行在支持JAVA的任何計算機上。(2) JAVA的Swing 組件開發(fā)技術可以開發(fā)豐富的圖形界面,并且Swing API類提供了豐富的外部接口和方法,可以方便實現系統功能。(3) 就項目開發(fā)而言,純粹的面向對象,加上數量巨大的類所提供的方法(函數)庫的支持,使得利用Java開發(fā)各種應用程序,可以說是易如反掌。此外,在程序除錯、修改、升級和增加新功能等方面,因其面向對象的特性,使得這些維護也變得非常容易。(4) Java支持內在的多線程運行,提供分布式的并發(fā)機制,運行效率高。(5) 異常處理,為了使Java程式更穩(wěn)定、更安全,Java引入了異常處理機制。能夠在程序中產生異常情況的地方,執(zhí)行相對應的處理,不至于因突發(fā)或意外的錯誤造成執(zhí)行中斷或是死機。通過這種異常處理,不僅能夠清晰地掌握整個程序執(zhí)行的流程,也使得程序的設計更為嚴謹。(6) 高性能,Java可以在運行時直接將目標代碼翻譯成機器指令。Sun用直接解釋器一秒鐘內可調用300,000個過程。翻譯目標代碼的速度與C/C+的性能沒什么區(qū)別。(7) 網絡功能,Java可以說是借助因特網而重獲新生的,自然具備編寫網絡功能的程序。不論是一般因特網局域網的程序,如Socket、Email、基于Web服務器的Servlet、JSP程序,甚至連分布式網絡程序,如CORBA、RMI等的支持也是非常豐富的,使用起來也很方便。(8) 源回收處理,GarbageCollection是由JVM對內存實行動態(tài)管理的。程序需要多少內存、哪些程序的內存已經不使用了,需要釋放歸還給系統,這些煩瑣且危險的操作全部交由JVM去管理。讓我們能夠更專心地編寫程序,而不需要擔心內存的問題。內存的統一管理,對于跨平臺也有相當大的幫助。綜上所述,基于Java平臺的聊天系統的開發(fā)設計具有技術可行性。2.2開發(fā)工具的選擇Java的開發(fā)工具很多,而且各有優(yōu)缺點,Eclipse是一個開放可擴展的集成開發(fā)環(huán)境(IDE)。它不僅可以用于Java的開發(fā),通過開發(fā)插件,它可以構建其他的開發(fā)工具。Eclipse是開放源代碼的項目,并可以免費下載。支持最新的Java標準,并且縮短了開發(fā)周期。一直以其友好的集成開發(fā)環(huán)境在業(yè)界受到廣泛的贊譽,這也是Eclipse一直是廣大程序員最喜愛的Java開發(fā)工具的原因之一。Eclipse的可視化集成開發(fā)環(huán)境包括文本編輯器、工程創(chuàng)建工具、對象瀏覽器和調試器等。用戶可以在集成開發(fā)環(huán)境中創(chuàng)建工程和打開工程,建立、打開和編輯文件,并可以編譯、運行和調試應用程序。可以說在Eclipse集成開發(fā)環(huán)境中開發(fā)Java程序,快速而且高效。其主要特點如下:1.開放的可擴展的IDE2.成功的底層圖形界面API3.強大的插件加載功能4.可以通過導入一些CVS相關的插件來實現版本管理的便易性2.3開發(fā)技術的選擇本課題選擇了java Socket技術開發(fā)網絡聊天室。什么是socket? socket是一種用于表達兩臺機器之間連接“終端”的軟件抽象。對于一個給定的連接,在每臺機器上都有一個socket,你可以想象一個虛擬的電纜工作在兩臺機器之間,“電纜”插在兩臺機器的socket上。當然,物理硬件和兩臺機器之間的“電纜”這些連接裝置都是未知的,抽象的所有目的就是為了讓我們不必了解更多的細節(jié)。簡單的說,一臺計算機上的socket同另一臺計算機通話創(chuàng)建一個通信信道,程序員可以用這個信道在兩臺機器之間發(fā)送數據。當你發(fā)送數據時,TCP/IP協議棧的每一層都給你的數據里添加適當的報頭。有個好消息是java語言隱藏了所有這些細節(jié),這也是為什么他們有時被叫做“流socket”。思考一下socket像電話聽筒一樣在電話的任意一端你和我通過一個專門的信道來進行通話和接聽。會話將一直進行下去直到我們決定掛斷電話(除非我們使用蜂窩電話),除非我們掛斷電話,否則我們各自的電話線路都會占線。如果你需要在兩臺機器之間進行通訊而不使用高級機制像ORBs(以及CORBA, RMI, IIOP等等),socket比較適合你。Socket的底層機制則相當棘手。幸運的是,java平臺給我們一些雖然簡單但是相當強大的高層抽象以至于我們創(chuàng)建和使用socket更加容易一些。一般而言,java socket有下面兩種類型:TCP socket(由Socket類實現,下面的章節(jié)我們將對其討論)UDP socket(由DatagramSocket類實現)TCP和UDP扮演同樣的角色,但是實現是不同的。兩者都接收傳輸協議數據包并把它們傳遞到表示層。TCP把信息分解成數據包(datagrams)并在接收端重新組裝起來。它還對丟失的數據包進行重新傳輸的請求。TCP減少了上層的擔憂。UDP沒有組裝和重傳請求的功能。它只是傳輸數據包。更高層的層必須確保信息的完整性以及組合順序的正確性。第3章 需求分析3.1項目概述1.產品描述人們日常生活中越來越多地使用這項新的技術來為自己的工作和學習服務。一個操作簡單、界面友好、運行穩(wěn)定的網絡聊天室對于小型局域網內的用戶可以起到很好的交流作用。本聊天室,所謂聊天室就是一個可以讓許多用戶同時互相通信的網上園地,個人用戶可以通過網上聊天室將自己融入整個主流社會中。由于目前上網的一般都是具有高學歷的新一代創(chuàng)業(yè)者,因此,在網上聊天室這個虛擬的社會中,可以結交各層次各地方的朋友,從而為自己獲取更多的知識和更多的閱歷。該小聊天室是為許多喜愛上網聊天的朋友開發(fā)設計的,希望能在現有的眾多聊天室中給大家多一種的選擇。和許多大型的網絡聊天室相比該小聊天室比較簡單,但能實現聊天的基本功能,點對多聊天,點對點聊天等,基于時間和技術的原因,很遺憾傳送文件的功能尚未實現。本聊天室主要由注冊界面、登錄界面、聊天室界面、私聊界面、查看聊天內容界面、功能設置界面等構成。整個設計簡潔明了、實用,使用簡單。客戶端登入通信功能設置記錄保存用戶登入用戶注冊公聊私聊字體顏色字體類型字體大小表情公聊記錄添加文字圖3-1 客戶端結構圖服務器監(jiān)聽情況發(fā)送系統消息顯示登入情況圖3-2 服務器結構圖2.產品功能本項目具有以下主要功能:(1)客戶端:n 用戶注冊功能,實現用戶的登入ID注冊和個人信息,并存入服務器數據庫 中。n 用戶登入功能,實現合法注冊用戶的登入。n 公聊功能,實現用戶和在線的所有用戶聊天方式。n 私聊功能,實現用戶和在線的其他用戶一對一的聊天方式。n 查看聊天記錄,實現用戶查看已聊天的歷史聊天內容,分為公聊記錄和私聊記錄。n 發(fā)送表情和設置聊天內容字體,并可以設置字體顏色和背景色等。(2)服務端:n 可以不斷的監(jiān)聽客戶端請求n 顯示登入客戶的信息n 發(fā)送系統消息3.2功能需求1.用戶注冊1) 需求描述:用戶填寫系統給出的注冊項目,并提交給系統,成功注冊后,系統生成用戶所注冊的登入ID,并保存在數據庫當中。2) 執(zhí)行者:用戶3) 前置條件:無4) 后置條件:無5) 正常過程:l 向服務端發(fā)送注冊請求l 服務端響應客戶端,客戶端彈出注冊信息表單l 用戶填寫完表單后將注冊數據傳給服務端處理,并保存在數據庫中l(wèi) 返回客戶端一個響應,顯示用戶注冊的ID,提示注冊成功。6) 異常過程(可選):l 用戶填寫表單的數據格式不正確或表單中存在空缺的項,客戶端給予提示信息,并將光標定位到出錯的地方。l 用戶注冊的項在數據庫中發(fā)生沖突,客戶端提示注冊不成功并提示用戶重新填寫表單。l 服務器未啟動或出現異常2.用戶登入1) 需求描述:用戶填寫登入ID 和密碼,經服務器驗證成功后進入聊天室主界面。2) 執(zhí)行者:用戶3) 前置條件:用戶成功注冊或已經擁有一個合法的ID號4) 后置條件:無5) 正常過程:l 向服務端請求連接,并發(fā)送登錄信息。l 服務端處理并查詢數據庫中的用戶信息l 返回客戶端一個響應,提示登錄成功,彈出聊天室主界面。l 刷新其他在線用戶的用戶列表信息6) 異常過程(可選):l 用戶填寫的ID或密碼與數據庫中的紀錄不匹配,客戶端提示登錄失敗。l 客戶端設置的服務器地址或端口有誤l 服務器未啟動或出現異常3.公聊1) 需求描述:用戶在聊天室公聊界面的發(fā)言內容,聊天室中的其他在線用戶可以正常接受并正確顯示(包括發(fā)送的表情和用戶設置的字體顏色)。2) 執(zhí)行者:登入用戶3) 前置條件:用戶登錄成功4) 后置條件:無5) 正常過程:l 客戶端用戶登入成功后,啟動客戶端功能線程l 客戶端將用戶發(fā)送的信息打包傳送給服務端,服務端進行數據分析后,并將用戶的信息進行正確的處理,傳給處在聊天室的所有在線其他用戶并正常顯示。6) 異常過程(可選):l 客戶端與服務端斷開連接,客戶端提示信息發(fā)送失敗。l 客戶端發(fā)送的內容為空或包含不合法的字符內容4.私聊1) 需求描述:用戶可選擇聊天室的在線用戶列表中其他用戶聊天。并且對方有消息提示,雙方發(fā)送的信息對于聊天室的其他用戶是不可見的。2) 執(zhí)行者:用戶3) 前置條件:用戶登錄成功,私聊的對方在線4) 后置條件:無5) 正常過程:l 客戶端與服務端建立通訊l 客戶端將用戶發(fā)送的信息打包傳送給服務端,服務端進行數據分析,查找目的用戶的ID,并將用戶的信息傳給目的用戶l 目的用戶收到服務器的信息后,正確的顯示并保存。6) 異常過程(可選):l 客戶端與服務端斷開連接,客戶端提示信息發(fā)送失敗。l 客戶端發(fā)送的私聊內容包含不合法的字符7) 特殊需求(可選):不能與不在線的用戶進行私聊5.發(fā)送表情1) 需求描述:用戶的聊天內容可以是表情圖片2) 執(zhí)行者:用戶3) 前置條件:用戶可以正常聊天4) 后置條件:無5) 正常過程:l 客戶端與服務端建立通訊l 客戶端將表情所表示的信息傳送給服務端l 服務器端進行數據分析后,查找目的用戶的ID,并將所處理的信息傳給目的用戶l 目的用戶端通過本地文件將信息翻譯成表情并正確顯示在顯示窗體中。6) 異常過程(可選):l 客戶端與服務端斷開連接,客戶端提示服務器異常。l 客戶端發(fā)送的表情信息不正確或本地文件不存在異常6.聊天記錄1) 需求描述:用戶可以查詢聊天的歷史紀錄,包括公聊記錄和私聊記錄。2) 執(zhí)行者:用戶3) 前置條件:用戶正確登入后4) 后置條件:無5) 正常過程:l 發(fā)送、接收信息的同時將信息保存在本地文件中l(wèi) 信息發(fā)送框中可以查詢歷史聊天記錄l 從本地文件中讀取信息,并顯示在記錄顯示匡中。6) 異常過程(可選):l 服務端異常導致客戶端退出,客戶端提示服務器異常。l 客戶端讀取信息時目標文件不存在7.系統消息1) 需求描述:在聊天室的每一個用戶都能接收服務端發(fā)送的的信息提示消息。2) 執(zhí)行者:服務端3) 前置條件:服務端正常運行4) 后置條件:無5) 正常過程:l 服務器向所有在線用戶發(fā)送消息l 客戶端接收到消息,進行消息處理,并正確顯示。6) 異常過程(可選):l 服務端異常,重啟服務器。l 出現網絡異常,發(fā)送系統消息失敗。8.字體屬性設置1) 需求描述:用戶可改變輸入消息的字體及顏色2) 執(zhí)行者:用戶3) 前置條件:用戶可以正常聊天4) 后置條件:無5) 正常過程:l 用戶為聊天信息選擇新的字體和顏色。l 客戶端將聊天信息及字體和顏色信息封裝,發(fā)送到服務端。l 服務端處理接受到的數據并正確轉發(fā)。l 目的客戶端將接收到的信息解包,根據信息的內容,改變信息顯示的字體及顏色,并在目的客戶端正確顯示出字體效果。6) 異常過程(可選):l 雙方系統庫中的字體不匹配,信息將以默認的字體顯示。l 對方不支持字體屬性的顯示9.用戶退出1) 需求描述:用戶在正常情況下退出聊天室。2) 執(zhí)行者:用戶3) 前置條件:用戶成功登錄聊天室4) 后置條件:無5) 正常過程:l 向服務器發(fā)送用戶登出消息l 服務器進行用戶退出的數據處理l 服務器向聊天室其他用戶發(fā)送登出消息l 刷新其他在線用戶的用戶列表信息3.3質量性能需求1.容錯性需求當出現代碼異常時,出現正確的提示,不會影響整個系統的運行。用戶之間信息傳輸不會因為數據封裝問題出現丟失或亂碼。因用戶的誤操作產生的異常應做出及時的處理或信息提示。2.穩(wěn)定性需求軟件應正常完成所有功能需求。服務器端應長時間運行無故障,故障修復時間一般控制在3小時內,除非出現惡性攻擊、病毒破壞、系統資源不足、硬件故障、操作系統或數據庫系統崩潰網絡中斷等情況,要求系統連續(xù)運行一周,不允許出現內存泄露。要求系統可以承受告警風暴和大數據量的沖擊,不出現內存溢出等現象。3.軟件可靠性需求要確定合適的模塊粒度,各模塊之間要求松耦合,高內聚;從而使整個系統的可靠性和穩(wěn)定性得到提高,并且便于系統維護,和新模塊的添加。4.安全性需求安全性是防止網絡方面的攻擊。5.拓展性需求系統建成后,應在現行系統上不需要做大的改動或不影響整個系統結構,就可以增加功能模塊,這就必須在系統設計時留有接口,使其具有可擴展性和維護性。6.易用性需求系統操作的界面必須簡潔、操作方便易用、設計合理。第4章 概要設計4.1目的該階段目的在于明確網絡聊天室系統的數據結構和軟件總體結構,各個軟件模塊的功能說明,數據結構的細節(jié),系統運行配置與應用方式以及使用的關鍵技術。4.2運行環(huán)境運行環(huán)境見下表:名 稱操作系統類型推薦操作系統版本推薦硬件(CPU/RAM/HD)數據庫客戶端Windows平臺windows 2000以上(IE6.0 以上)P4 1.7G/256M/40G服務器Windows平臺windows 2000以上P4 3.6G/8G/120G4.3條件與限制1.軟件設計應當表現出層次結構,它應巧妙地利用各個軟件部件之間的控制關系。2.設計應當是模塊化的,即該軟件應當從邏輯上被劃分成多個部件,分別實現各種特定功能和子功能。3.設計最終應當給出具體的模塊(例如子程序或過程),這些模塊就具有獨立的功能特性。4.應當應用在軟件需求分析期間得到的信息,采取循環(huán)反復的方法來獲得設計。4.4體系結構概述本系統采用C/S的結構設計模式,客戶端接收用戶的發(fā)送的信息到服務器,服務器通過處理轉發(fā)到另一個客戶端。客戶端采用圖形用戶界面,方便與用戶交互。服務器端用控制臺的方式方便控制操作。系統設計總體原則:本設計不限制用戶的組網方式。但對于互聯網環(huán)境下的安全問題,本系統不能保證解決。系統要具有較強的靈活性,包括對功能設置的管理。整個系統要使用簡單,界面要美觀、大方,具有人性化特點。模塊劃分盡量簡單明了,充分考慮用戶已經習慣的劃分分類??蛻舳朔譃橛脩糇?、用戶登錄、信息通訊、字體設置、表情和保存聊天記錄。用戶注冊和用戶登錄封裝在用戶登錄的界面中,用戶列表模塊封裝在系統的主界面中。信息通訊、字體設置、表情和保存聊天記錄模塊封裝在聊天界面中。服務端實現消息接收、消息記錄。4.5功能設計1.用戶注冊通過注冊模塊實現用戶的在線注冊,所填寫的注冊項目有:用戶名、頭像、口令、口令確認、性別、年齡、E-mail。用戶注冊界面正確填寫注冊項提交注冊成功服務器正確填寫錯誤圖4-1注冊活動圖2.用戶登入用戶用過登入界面,填寫登入用戶名和口令實現系統的登入用戶進入登界面輸入用戶名和密碼提交進入系統服務器登入信息合法登入信 息不合法圖4-2登錄活動圖3.公聊用戶登入成功后進入公聊界面,通過輸入聊天內容實現和其他的用戶聊天,并可以顯示其他用戶發(fā)送的公聊信息。用戶輸入信息發(fā)送消息服務器格式正確格式有誤圖4-3公聊活動圖4.私聊用戶通過選擇在線用戶列表的其他用戶,通過單擊列表中的用戶名顯示與其私聊的對話框,實現和選中的用戶進行私聊方式進行交流,其他用戶不可見。用戶選擇其他用戶輸入信息發(fā)送消息服務器格式正確格式有誤圖4-4私聊流程圖5.表情在用戶公聊或私聊時可以同時,可以單擊表情按鈕打開表情窗體,通過鼠標事件可將選擇的表情寫入發(fā)送窗口中,以增強聊天的表達方式和效果??梢允沽奶旃δ?、更豐富更有趣。用戶單擊表情功能表情框顯示表情在發(fā)送框發(fā)送表情圖4-5表情活動圖6.字體設置用戶在聊天界面的功能模塊中,單擊字體功能按鈕,在彈出的字體設置框中選擇所需要設置的字體類型、字體顯示方式,并在字體功能按鈕下通過改變三原色來改變字體的顏色設置的字體效果,并將設置好的字體屬性應用到自己的發(fā)送信息中。用戶單擊字體功能字體設置框顯示設置字體效果應用到發(fā)送消息中圖4-6字體設置活動圖 7.記錄保存用戶在公聊和私聊的過程的同時,將顯示在信息窗體中的聊天內容保存到本地文件中,用戶可以通過單擊查看記錄按鈕查看歷史聊天內容,并可以在本地機器下次登入后,查看歷史聊天的記錄。用戶信息顯示記錄按鈕記錄顯示框本地記錄文件單擊讀取保存信息圖4-7 記錄保存活動圖8.系統消息用戶管理員通過啟動服務器后,可以通過服務器操作界面象全部在線的用戶發(fā)送系統消息,用于發(fā)送公告,提示等系統消息,可以方便管理員和客戶的交流和管理。用戶顯示出系統消息發(fā)送系統消息用戶服務器啟動正確消息內容有誤圖4-8系統消息活動圖第5章 詳細設計及實現本系統采用C/S設計模式,系統分為客戶端和服務器端,客戶端包括注冊模塊、登入模塊、公聊模塊、私聊模塊、功能設置模塊、和客戶端功能實現模塊等。服務器端包括服務器界面,服務器功能實現模塊等。5.1 客戶端注冊圖5-1注冊時序圖用戶必須填寫注冊給定的全部選項,并且按照正確的格式輸入,如年齡一項只能輸入數字,的格式等等,并可以在申請注冊前驗證輸入的用戶名是否已被使用。實現該功能所寫的類為:(1)、Register類: 用于構建注冊的主界面主要成員變量:String name;String c_password;String c_age;String c_email;主要方法: Register() /實現界面元素和設定元素屬性 checkinfo() /發(fā)送提示的錯誤信息 mes() /點擊事件處理actionPerformed()(2)、SendRegInfoThread類 用來檢測注冊的用戶名是否已被使用主要成員變量:String username; Socket socket; ObjectInputStream o_in; ObjectOutputStream o_out;主要方法:public SendRegInfoThread(String name) username=name; /構造方法用于初始化public void run() /實現將信息的發(fā)送給服務器(3)、SendRegInfoSucThresd類 /發(fā)送注冊消息內容主要成員變量:Socket socket; ObjectOutputStream o_out; ObjectInputStream o_in; HashMap hm; Object info; 主要方法: public SendRegInfoSucThread(Object info) =info;/構造方法 public void run() /實現將注冊信息發(fā)送給服務器(4)、RegisterData /用戶發(fā)送給服務器端的注冊類型數據主要成員變量: private String userName; private String passWord; private String userAge; private String email; private String sex;主要方法:分別get,set上面的五個變量,獲得用戶的輸入的名字,密碼,年齡,電子郵件和性別的信息。5.2 登錄圖5-2登入時序圖在設置好IP和端口號的條件下,用戶在登入界面輸入已注冊好的用戶名和密碼登入,通過驗證后登入聊天室主界面,輸入錯誤返回提示。實現該功能的主要類和方法:(1)、Land類 /實現登入的主窗體 主要成員變量:String hostid; /服務器IP地址 int server_port; /服務端口 Socket client_socket; final File propertyFile; /屬性文件主要方法: public Land() /用于初始化登入界面的元素 public void actionPerformed(ActionEvent e) /連接服務器的方法體 public void run() /顯示登入主窗體主方法(2)、LoginData 類 /發(fā)送登入數據類型主要變量:private String userName; private String passWord;主要方法:非別用get,set方法獲得userName和passWord兩個變量的值。5.3 公聊圖5-3公聊時序圖用戶在公聊界面的信息輸入框中輸入要發(fā)送的信息和表情等,用戶可以通過功能設置按鈕設置自己定義的字體屬性 ,如:字體類型 、字體大小 、字體顏色 、字體顯示方式、表情等,并可以應用到信息輸入框中, 點發(fā)送按鈕實現信息的發(fā)送。并可以顯示其他用戶發(fā)送的公聊信息和系統所發(fā)送的系統信息,并且按照發(fā)送來的信息中包含好的顯示方式正確顯示出信息。用戶上線或下線時要在顯示窗體中給出提示,并刷新用列表中的用戶名。并可以通過雙擊用戶名彈出與該用戶進行私聊的對話窗體。實現該功能的主要類和方法:PublicChat類 /公聊界面本模塊主要要實現顯示在線用戶列表,可以保存聊天記錄,可以發(fā)送表情圖片,可以顯示對方發(fā)過來的字體信息,并且自己可以發(fā)送消息,顯示自己的用戶名的功能。并且有保存聊天記錄,背景,字體,表情的按鈕。5.4 私聊圖5-4私聊時序圖用戶在私聊界面的信息輸入框中輸入要發(fā)送的信息和表情等,用戶可以通過功能設置按鈕設置自己定義的字體屬性 ,如:字體類型 、字體大小 、字體顏色 、字體顯示方式、表情等,并可以應用到信息輸入框中, 點發(fā)送按鈕實現私聊信息的發(fā)送。并可以顯示其他用戶發(fā)送過來的私聊信息,并且按照發(fā)送來的信息中包含好的顯示方式正確顯示出信息。實現該功能所用的主要類和方法PersonalChat類 /私聊界面類其中包括顯示聊天內容的文本面板,顯示發(fā)送消息的文本面板,發(fā)送消息按鈕,關閉窗體按鈕,顯示聊天內容的按鈕等。5.5發(fā)送系統消息 圖5-4 系統消息時序圖服務器端收到用戶上線或下線時發(fā)送給其他在線用戶消息提示,并可以根據需要,主動發(fā)送消息給客戶,實現服務器端的管理。實現功能的主要類和方法(1)、ServerInterFace類 /服務器的用戶界面 private void initCompenent() / 組件初始化 class StartServer implements ActionListener / 內部類啟動和關閉監(jiān)聽(2)、TalentServer類 /服務器啟動模塊 public void run() / 發(fā)送系統消息 class SysinfoBuAction implements ActionListener /啟動服務器5.6字體設置每個用戶可以根據自己的個人喜好設置自己要發(fā)送的內容的字體屬性。并可以在其他目的客戶界面按照自己所設置的顯示方式顯示。主要設置了三種字體的屬性,分別為字體的樣式,大小和字型。實現該功能的主要類和方法 Fontset類 /字體設置窗體面板 public void actionPerformed(ActionEvent e) /實現選擇字體顏色,選擇字體類型,選擇字體大小,選擇字體顯示方式 功能 private void updataFont() /顯示更改后的字體表現5.7發(fā)送表情在用戶公聊或私聊時可以同時,可以單擊表情按鈕打開表情窗體,通過鼠標事件可以將選擇描述表情的語句選中,并跟隨所要發(fā)送的內容到聊天窗口中,以增強聊天的表達方式和效果??梢允沽奶旃δ?、更豐富更有趣。實現功能的主要類和方法 FaceFrame類 /顯示表情窗體5.8記錄保存和顯示本系統可以在應用中將用戶聊天的記錄保存在本地文件當中,用戶在本地下次登入后,可以查看歷史聊天記錄。方便用戶繼續(xù)聊天。實現該功能使用的主要類和方法(1)、ChatInfoSave類 /保存信息的方法類(2)、ChatInfoOpen類 /實現用戶查看聊天記錄5.9 功能邏輯實現本系統采用數據對象流的形式發(fā)送和接受信息。客戶端連接服務器成功后就啟動一個客戶端線程和服務器通信。客戶端發(fā)送的信息分為:注冊消息、注冊時用戶名驗證消息、登入消息、公聊消息、私了消息、下線消息等。服務器端啟動一個線程不斷的監(jiān)聽客戶的請求,當接受到客戶請求時就啟動一個和該客戶端通信的線程。服務器端發(fā)送的信息分為:注冊成功消息 注冊失敗消息、注冊時驗證用戶名成功消息、注冊時驗證用戶名失敗消息、登入成功消息、登入失敗消息、轉發(fā)公聊消息、轉發(fā)的私了消息、刷新列表名消息等。實現該功能使用的主要類(1)、TransferMap類 /用于客戶端與服務器之間的消息傳遞(2)、LoginData類 /用于登入時發(fā)送的信息對象類型(3)、RegisterData類 /用于注冊時發(fā)送的信息對象類型(4)、ChatInformation類 /用于用戶公聊或私聊時發(fā)送的信息對象類型(5)、ClientThread類 /客戶端連接服務器成功后啟動的線程(6)、ServerAffairThread類 服務器端為用戶啟動的服務器線程(7)、LineDialog類 /實現提示用戶私聊消息(8)、Display_chatifn類 /顯示信息內容小結本章講述了一個通用聊天系統的開發(fā)設計過程,詳細的講述了以下五個方面的內容: 系統概述:該部分主要講述了課題的來源背景,目的,要求以及意義。 技術選擇分析:對系統進行了可行性分析,重點是技術的可行性分析,并選擇好本課題的開發(fā)工具和技術 。 需求分析:介紹了系統的客戶端和服務器端的結構,并對系統所需要實現的功能進行了簡單的描述 概要設計:概要設計的工作就是設計系統的大體框架,對系統的用例分析析和關鍵用例的流程分析。用例是系統中需要實現的功能模塊,不同的用例可能歸屬于不同的角色。在本章中,我們主要介紹了用戶注冊、登錄、公聊、私聊、表情和保存信息的流程分析,并對數據庫進行了設計。 詳細設計及實現:本小節(jié)簡單的介紹了各個界面的設計以及它們之間的關聯,并實現基本功能。由于一直專注于功能的實現,從而忽略了界面的設計,本軟件今后可以為用戶添加不同的頭像和表情,并可以使窗體風格更合理和更美觀,并且要使用戶有更多的自定義功能,設置自己的喜好和風格。在功能方面可以進一步增加,如實現用戶間的文件傳輸,并可以進行視屏,共享音樂等高級功能。致謝:在這幾個月的畢業(yè)設計過程中,通過導師的指導,了解并熟悉了設計一個項目的具體過程和步驟,使自己在整個過程當中不段的學習解決問題的能力。我要衷心感謝唐淼導師在我的畢業(yè)設計過程中給予我的指導和幫助,本論文從選題到完成,每一步都是在導師的指導下完成的,傾注了導師大量的心血。在此,謹向導師表示崇高的敬意和衷心的感謝!感謝導師在繁忙的工作之余閱讀并給出的建議。同樣要感謝身邊周圍同學提供的意見和幫助,使我能夠及時、順利地完成此次的畢業(yè)設計;最后感謝各位專家導師對本論文的審閱!參考文獻(1)美 Joshua Bloch. Effective Java Programming Language Guide.Addison-Wesley Professional,05 June, 2001(2)美 Joshua Bloch.Effective Java: Second Edition.Addison-Wesley,28 May, 2008(3)美 Bruce Eckel.Thinking in Java (3rd Edition).Prentice Hall PTR,06 December, 2002(4)陳軼,姚曉昆編著.Java程序設計實驗指導.北京:清華大學出版社,2006(5)趙毅主編.跨平臺程序設計語言Java.西安:西安電子科技大學出版社,2006(6)吳其慶編著.Java程序設計實例教程.北京:冶金工業(yè)出版社,2006(7) 柳西玲,許斌編著.Java語言應用開發(fā)基礎.北京:清華大學出版社,2006(8)鄭莉,王行言.馬素霞編著.Java語言程序設計.北京:清華大學出版社,2006(9)陳更力,張青.基于Java Socket 網絡編程的一種新實現.電腦開發(fā)與應用,2006年06期(10) 參考新浪聊天室、 騰訊聊天室等英文摘要:Based on a Java platform chat system is studiedAbstract:The network chat room is a kind of applied extensive network chat method, operate in ease and the function is abundant, It can be used as a good case for learning of java design language and the Object- Oriented Programming language, There is many programming language of design to develop a network chat room with perfect function.This graduation thesis of design introduction how to use the java language design and carry out network chat room, The system adoption the C/ S structure design, the whole system is divided into the server and client .Used standard modules of Swing of latest Java2, develop a simple and direct beauty user interface ,We make use of the Socket technology to interconnect the server and client by net-work ;organiz
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 奶油膠活動策劃方案
- 學校建言活動方案
- 如何策劃群團活動方案
- 學習隊章活動方案
- 婦女節(jié)領樂高活動方案
- 奮斗精神活動方案
- 威海公司喬遷策劃方案
- 學校居家迎冬奧活動方案
- 婚介見面活動策劃方案
- 奢華手表抽獎活動方案
- 2025年重慶市中考歷史真題(解析版)
- 2025年四川省成都市中考語文真題(原卷版)
- 江蘇開放大學2025年春服務營銷1單項選擇題題庫
- 駕駛證a1教育考試試題及答案
- 2024-2025學年統編版小學語文六年級下冊教學工作總結(共三套)
- 儲備糧庫消防培訓課件
- 供暖管道焊接技術培訓
- 滋補品店鋪運營方案設計
- 2025年保密教育線上培訓考試題庫參考答案
- 安管員考試題庫及答案
- 《屹立在世界的東方》課件
評論
0/150
提交評論