版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
I第1章緒論1.1研究現(xiàn)狀和背景人們通常所說(shuō)的聊天軟件,是一種可以進(jìn)行文字傳輸、文件傳輸?shù)墓ぞ?,其在因特網(wǎng)上被廣泛使用。即時(shí)通訊軟件通??梢苑譃閮煞N類型,一種是基于服務(wù)器的,另一種是基于P2P的。隨著信息化的飛速發(fā)展,互聯(lián)網(wǎng)已成為影響人類生存和發(fā)展的一大要素?;ヂ?lián)網(wǎng)技術(shù)對(duì)于人類社會(huì)生產(chǎn)及生活的全面滲透使得網(wǎng)絡(luò)聊天工具成為了于人而言一種不可或缺的工具。相較于傳統(tǒng)聊天方式,應(yīng)用網(wǎng)絡(luò)聊天工具不僅見(jiàn)長(zhǎng)于較低的成本,且在速度及方便性等方面同樣有著突出性優(yōu)勢(shì)。REF_Ref10265\w\h[1]即時(shí)通訊工具能夠顯著提高效率和生產(chǎn)力,許多企業(yè)也認(rèn)識(shí)到了即時(shí)通訊工具的優(yōu)勢(shì),利用LAN來(lái)提供服務(wù),在有效進(jìn)行溝通的過(guò)程中快速地執(zhí)行,借此提高了日常工作中的協(xié)同性和反映快捷程度。當(dāng)前市面上也已經(jīng)出現(xiàn)了QQ、微信等聊天工具,但是它們?cè)诒憬菪灾?,娛?lè)、廣告、游戲等擴(kuò)展功能越來(lái)越多,在吸引用戶注意的同時(shí),軟件也愈發(fā)臃腫,網(wǎng)絡(luò)上對(duì)于追求純凈聊天工具的呼聲越來(lái)越高。因此,有必要開(kāi)發(fā)一款專注于信息交流的即時(shí)通訊軟件。1.2研究目標(biāo)論文敘述的是一款基于Java的在線聊天軟件,主要用于用戶和用戶間的交流。首先用戶要能夠注冊(cè)并登錄軟件,用戶在登錄軟件之后可以通過(guò)賬號(hào)查找好進(jìn)行添加,用戶與好友間能夠發(fā)送、接收信息,并且信息將被保存于服務(wù)器中。用戶能夠設(shè)置自己的資料卡,完善個(gè)人信息,也可以查看好友資料卡了解好友的信息。除了與好友聊天外用戶還能夠創(chuàng)建或加入群聊與更多用戶實(shí)現(xiàn)聊天。1.3論文組織架構(gòu)本文的結(jié)構(gòu)安排如下:第1章:緒論,介紹本文的研究現(xiàn)狀及背景、研究目標(biāo)和本文的結(jié)構(gòu)安排。第2章:介紹程序的開(kāi)發(fā)環(huán)境和相關(guān)技術(shù)工具。第3章:系統(tǒng)分析,詳細(xì)介紹了系統(tǒng)開(kāi)發(fā)的可行性,從技術(shù)、經(jīng)濟(jì)操作、法律方面等介紹,也介紹了系統(tǒng)開(kāi)發(fā)需求性從功能需求、非功能需求介紹。第4章:系統(tǒng)設(shè)計(jì),對(duì)該系統(tǒng)做相應(yīng)設(shè)計(jì),包括功能模塊設(shè)計(jì)和數(shù)據(jù)庫(kù)設(shè)計(jì)。第5章:系統(tǒng)實(shí)現(xiàn),對(duì)該系統(tǒng)的各個(gè)功能模塊功能進(jìn)行實(shí)現(xiàn)。第6章:系統(tǒng)測(cè)試,對(duì)該系統(tǒng)主要功能模塊進(jìn)行測(cè)試,并展示了測(cè)試結(jié)果。結(jié)論:對(duì)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)進(jìn)行總結(jié),并對(duì)今后的發(fā)展進(jìn)行展望。第2章相關(guān)理論和技術(shù)2.1Java簡(jiǎn)介Java在誕生之初只是一門面向?qū)ο蟮恼Z(yǔ)言,但如今Java已經(jīng)是世界上使用最廣泛的編程語(yǔ)言之一。Java開(kāi)始被用于開(kāi)發(fā)從Web應(yīng)用程序到移動(dòng)應(yīng)用程序再到批處理應(yīng)用程序的所有內(nèi)容。Java不僅具有廣泛的適用性,其在安全方面的也有很好的表現(xiàn),能有效的降低病毒對(duì)于程序的影響。Java語(yǔ)言是靜態(tài)面向?qū)ο缶幊陶Z(yǔ)言的代表,它將面向?qū)ο罄碚撨M(jìn)行了完善的實(shí)施,讓程序員可以用不同的思維方法來(lái)進(jìn)行某些復(fù)雜的編程。Java十分簡(jiǎn)潔,Java在語(yǔ)言學(xué)習(xí)上比C++更簡(jiǎn)單;Java語(yǔ)言能夠跨平臺(tái),只需要編譯一次,代碼便可在任何平臺(tái)運(yùn)行,JVM屏蔽了底層操作系統(tǒng)的差異;Java源代碼編寫后需要進(jìn)行一次編譯將源代碼編譯為字節(jié)碼,因此它的運(yùn)行速度很快;Java程序運(yùn)行于JVM中,因此它的安全性也較強(qiáng);Java具有動(dòng)態(tài)性,其類信息在JVM加載時(shí)會(huì)先進(jìn)行初始化。2.2MySQL MySQL是一種以C和C++為基礎(chǔ)的、由各種編譯程序?qū)崿F(xiàn)的、具有很高可移植能力的數(shù)據(jù)庫(kù)。它既能支持各種操作系統(tǒng),又能為各種編程語(yǔ)言提供相應(yīng)的應(yīng)用接口。其從算法上對(duì)SQL語(yǔ)句進(jìn)行了改進(jìn),使SQL語(yǔ)句的運(yùn)行性能得到了極大的提升,同時(shí)也使SQL語(yǔ)句的運(yùn)行速度得到了極大的提升。MySQL小巧,查詢速度快,并且是免費(fèi)開(kāi)源的,在本次開(kāi)發(fā)中已經(jīng)可以滿足要求,因此在本次開(kāi)發(fā)中選擇了MySQL數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的儲(chǔ)存。2.3Socket介紹Socket是一種被用來(lái)將通訊的兩人聯(lián)系在一起的技術(shù),它能夠在他們之間搭建一座通訊的橋梁,從而實(shí)現(xiàn)訊息的傳輸。然后在服務(wù)器端開(kāi)啟對(duì)應(yīng)的端口號(hào),等待客戶機(jī)接入。具體地說(shuō):在本系統(tǒng)的運(yùn)作過(guò)程中,首先要開(kāi)啟服務(wù)器,才能開(kāi)啟服務(wù)器的連線,并偵聽(tīng)服務(wù)器的連線,隨后等待其它使用者的連線。在收到其它使用者的連結(jié)訊息時(shí),這個(gè)使用者就會(huì)得到對(duì)應(yīng)的連結(jié)碼連結(jié)到服務(wù)端,進(jìn)而在服務(wù)器和客戶端間建立通訊通道,可以使用寫入Socket來(lái)進(jìn)行彼此之間的通信。如果有新的客戶機(jī)請(qǐng)求來(lái)進(jìn)行鏈接,服務(wù)器端本身就需要得到一個(gè)新的端口號(hào),來(lái)進(jìn)行被占據(jù)的老的端口號(hào)的偵聽(tīng)工作。以方便對(duì)新的客戶端請(qǐng)求做出響應(yīng),以此實(shí)現(xiàn)多客戶的服務(wù)功能,讓多個(gè)客戶可以以服務(wù)器為中介,來(lái)進(jìn)行簡(jiǎn)單、高效的通訊。Socket程序的工作過(guò)程:1、建立Socket連接:進(jìn)行通信的一方需要連接另一方時(shí),先對(duì)對(duì)方的IP地址和端口號(hào)進(jìn)行確認(rèn),在確認(rèn)完成后將會(huì)發(fā)送連接請(qǐng)求,等待對(duì)方回應(yīng)確認(rèn)是否接受自己的連接請(qǐng)求。2、數(shù)據(jù)通信:數(shù)據(jù)通信指的是在已經(jīng)建立的連接通道上進(jìn)行信息傳輸?shù)倪^(guò)程。3、關(guān)閉:在信息傳輸完成之后,為了讓其他客戶端的連接更順暢,需要拆除之前所建立的連接通道來(lái)釋放被占用的內(nèi)存。Socket信息交互原理圖如圖2.1所示:圖2.1Socket信息交互圖第3章系統(tǒng)分析3.1可行性分析程序的可行性分析在設(shè)計(jì)過(guò)程中是十分重要的,完善的分析能夠節(jié)約許多在程序開(kāi)發(fā)中的成本,為開(kāi)發(fā)的道路掃清不必要的障礙。因此需要對(duì)系統(tǒng)分別進(jìn)行技術(shù)可行性、經(jīng)濟(jì)可行性、操作可行性等方面進(jìn)行全面的分析。3.1.1技術(shù)可行性目前,網(wǎng)絡(luò)技術(shù)還在快速地發(fā)展著,它已經(jīng)與各種企業(yè)和個(gè)人密不可分。與此同時(shí),網(wǎng)絡(luò)技術(shù)的發(fā)展也越來(lái)越完善,各種以網(wǎng)絡(luò)技術(shù)為基礎(chǔ)的即時(shí)通訊平臺(tái)也逐漸地成為了企業(yè)公司、部門單位用來(lái)提升工作效率的一種良好工具。另外,即時(shí)通訊軟件的開(kāi)發(fā)已經(jīng)擁有了許多成功的實(shí)例,在技術(shù)方面開(kāi)發(fā)它的并不高,且開(kāi)發(fā)該軟件所需要的開(kāi)發(fā)軟件獲取較為簡(jiǎn)單,在開(kāi)發(fā)過(guò)程中沒(méi)有什么壓力,因此成功開(kāi)發(fā)是可行的。(1)系統(tǒng)軟件開(kāi)發(fā)系統(tǒng):能夠支持eclipse或IDEA運(yùn)行的各類系統(tǒng)均可開(kāi)發(fā)軟件:myeclipse或者eclipseWebServer:JBoss、Weblogic或者tomcat(2)開(kāi)發(fā)語(yǔ)言Java是一種簡(jiǎn)單易用并且具有很強(qiáng)的能力的技術(shù),因?yàn)槠渚哂锌缙脚_(tái)的特性,所以在開(kāi)發(fā)語(yǔ)言中占據(jù)著很大的優(yōu)勢(shì),不僅包括了C++語(yǔ)言中ObjectOriented的特性,還對(duì)C中十分復(fù)雜的指針、多繼承等特征進(jìn)行了優(yōu)化。與此同時(shí),還添加了垃圾回收的機(jī)制,從而大大簡(jiǎn)化了程序員的開(kāi)發(fā)過(guò)程,并能夠及時(shí)的釋放出存儲(chǔ)空間,讓開(kāi)發(fā)者不再浪費(fèi)時(shí)間和精力在優(yōu)化空間釋放上。3.1.2經(jīng)濟(jì)可行性基于Java的在線聊天APP開(kāi)發(fā)需要使用的工具能夠直接在各個(gè)官網(wǎng)免費(fèi)下載,不需要其他的經(jīng)濟(jì)支出;研發(fā)方面,本系統(tǒng)由本人自行開(kāi)發(fā),通過(guò)所學(xué)的知識(shí)以及互聯(lián)網(wǎng)完成,并無(wú)其它經(jīng)濟(jì)支出。這樣,在即時(shí)通訊軟件的開(kāi)發(fā)期間,所耗費(fèi)的資源就不會(huì)很難供給與維護(hù)了。從軟件價(jià)值角度來(lái)看,在軟件設(shè)計(jì)成功后,它可以給使用者帶來(lái)方便,同時(shí)它還可以給開(kāi)發(fā)初學(xué)者帶來(lái)一定的借鑒價(jià)值,因此,從上述兩個(gè)角度來(lái)看,這一點(diǎn)是可以實(shí)現(xiàn)的。3.1.3操作可行性本系統(tǒng)利用C/S結(jié)構(gòu)、Java語(yǔ)言技術(shù)、JavaSwing和Mysql數(shù)據(jù)庫(kù)等技術(shù),使本系統(tǒng)更加有效與穩(wěn)定,使系統(tǒng)設(shè)計(jì)的更加簡(jiǎn)單、易操作。這次設(shè)計(jì)的網(wǎng)絡(luò)聊天APP就是其中最基礎(chǔ)的一款應(yīng)用。本軟件只要打開(kāi)客戶端即可進(jìn)入,操作簡(jiǎn)單方便,便于使用者使用。3.1.4法律可行性基于Java的在線聊天APP是由個(gè)人獨(dú)立開(kāi)發(fā)的項(xiàng)目,不存在版權(quán)等法律糾紛。另外就是本項(xiàng)目的立題沒(méi)有不良引導(dǎo),意在幫助人們更方便快捷的溝通,對(duì)社會(huì)有益的,不存在違法違規(guī)等情況。因此本項(xiàng)目在法律上是完全可行的。3.2需求分析對(duì)軟件未來(lái)要實(shí)現(xiàn)的功能的假設(shè),也就是需求分析的過(guò)程,需要對(duì)用戶的需求和目的進(jìn)行確定,然后對(duì)目標(biāo)展開(kāi)分析,并給出解決方案。綜合考量在這其中有什么是必須要完成的,有什么是不能完成的,什么內(nèi)容要注重用戶體驗(yàn),什么內(nèi)容要注重可用性。因此,在開(kāi)發(fā)該軟件前,對(duì)其進(jìn)行需求分析就顯得尤為重要。主要的難點(diǎn)有:供需交流的困難,動(dòng)態(tài)變化的需求,以及后續(xù)的系統(tǒng)維護(hù)和維修。這對(duì)于一個(gè)軟件的壽命來(lái)說(shuō)是非常關(guān)鍵的,需求分析的成果常??梢钥刂埔粋€(gè)項(xiàng)目的整體發(fā)展趨勢(shì),因此,在項(xiàng)目的開(kāi)發(fā)中,有必要進(jìn)行需求分析。3.2.1功能需求分析應(yīng)用程序的主要工作是實(shí)現(xiàn)用戶和用戶間的信息交流。用戶首次使用只需通過(guò)填寫相應(yīng)的信息來(lái)完成賬號(hào)的注冊(cè),接著就能使用賬號(hào)和密碼登錄客戶端使用程序。用戶能夠通過(guò)修改資料卡詳細(xì)自己的個(gè)人信息,也能通過(guò)賬號(hào)查找用戶添加好友,用戶間能夠消息和傳輸文件,也能夠建立群聊實(shí)現(xiàn)一對(duì)多的信息溝通。用戶只需要安裝該應(yīng)用程序就能夠在自己的電腦上使用并完成相應(yīng)操作。數(shù)據(jù)庫(kù)為應(yīng)用程序?qū)崿F(xiàn)信息儲(chǔ)存和交換,以上就是在線聊天APP的大體功能。3.2.2非功能需求分析(1)系統(tǒng)的安全性信息的安全性一直是一個(gè)不容置疑的問(wèn)題,因此為了保證信息的安全性,必須對(duì)信息進(jìn)行多重加密。數(shù)據(jù)的一致性和完整性也是任何一個(gè)系統(tǒng)都要確保的,因此,在系統(tǒng)中生成的數(shù)據(jù)都要被定時(shí)地核實(shí)和檢查。另外,也要做好數(shù)據(jù)的備份,以防出現(xiàn)系統(tǒng)突發(fā)故障或者當(dāng)機(jī)而造成的數(shù)據(jù)損失。為了保證該系統(tǒng)能夠安全、有效地、長(zhǎng)久地運(yùn)轉(zhuǎn),其需要建立起與之對(duì)應(yīng)的網(wǎng)絡(luò)防火墻,與此同時(shí)還需要做好對(duì)數(shù)據(jù)進(jìn)行加密工作。一個(gè)好的系統(tǒng)還需要有能夠支持其運(yùn)行的環(huán)境,因此,必須也要考慮到硬件的問(wèn)題。(2)系統(tǒng)的響應(yīng)時(shí)間對(duì)一個(gè)軟件而言,反應(yīng)速度是評(píng)價(jià)軟件性能的一項(xiàng)關(guān)鍵因素,因此,在保證軟件功能的前提下,有必要進(jìn)一步提升反應(yīng)速度,從各方面來(lái)減少信息傳遞的間隔,使在用戶進(jìn)行登陸與實(shí)時(shí)聊天時(shí),不可以因?yàn)榈却械絽挓?。?)系統(tǒng)的易維護(hù)和易用性聊天系統(tǒng)是為用戶提供的,而用戶可能并不熟悉該系統(tǒng)中的各項(xiàng)設(shè)定,因此在遇到緊急情況時(shí),他們的反應(yīng)速度會(huì)比較慢。因此在這個(gè)時(shí)候,就需要要求開(kāi)發(fā)人員為其提供一個(gè)具有良好的人機(jī)交互界面和各類提示信息。這樣,使用者就可以更好地了解這個(gè)系統(tǒng),并且可以更好地解決一些使用過(guò)程中的簡(jiǎn)單問(wèn)題。由于這個(gè)聊天系統(tǒng)是要進(jìn)行長(zhǎng)時(shí)間的運(yùn)作,作為開(kāi)發(fā)者,必須要對(duì)用戶在平時(shí)工作過(guò)程中可能出現(xiàn)的一些濫用和誤用進(jìn)行處理,在面對(duì)這種情況的時(shí)候,開(kāi)發(fā)者必須要讓這個(gè)系統(tǒng)能夠自動(dòng)地做出相應(yīng)的緊急措施應(yīng)對(duì),或是給予用戶一定的提醒和引導(dǎo)。(4)系統(tǒng)的先進(jìn)性Socket技術(shù)已經(jīng)很完善了,Socket技術(shù)在用作網(wǎng)絡(luò)通信的時(shí)候也是十分受歡迎的。此外,本系統(tǒng)采用的是跨平臺(tái)的Java技術(shù),因此它對(duì)多種操作系統(tǒng)具有很好的兼容性。3.3系統(tǒng)流程圖3.3.1客戶端流程圖分析客戶端流程圖如圖3.1所示圖3.1客戶端流程圖3.3.2服務(wù)器端流程圖分析服務(wù)器流程圖如圖3.2所示。圖3.2服務(wù)器流程圖第4章系統(tǒng)設(shè)計(jì)4.1系統(tǒng)設(shè)計(jì)這個(gè)即時(shí)通訊系統(tǒng)采取的是C/S結(jié)構(gòu),它包括了兩個(gè)部分,一個(gè)是服務(wù)器端,一個(gè)是客戶端,服務(wù)器端可以在啟動(dòng)后監(jiān)聽(tīng)客戶端的信息的傳遞,還可以進(jìn)行對(duì)客戶端的各種監(jiān)視,而客戶端可以利用一個(gè)合理的接口,讓用戶在使用的時(shí)候可以更加便捷地進(jìn)行通信。在這兩個(gè)方面,本應(yīng)用程序進(jìn)行了具體的功能設(shè)計(jì)。其中,服務(wù)器端的功能是為了監(jiān)聽(tīng)和監(jiān)視客戶端,同時(shí)也是為了對(duì)已注冊(cè)的用戶進(jìn)行實(shí)時(shí)監(jiān)視,而客戶端的功能則是為了給用戶提供這個(gè)軟件的賬戶的申請(qǐng)和進(jìn)入到操作界面進(jìn)行操作的過(guò)程。其中功能包括個(gè)人資料卡的修改以及對(duì)于聊天好友和群聊的添加與管理等等。程序的功能圖如圖4.1所示:圖4.1程序功能層次圖4.2數(shù)據(jù)庫(kù)概念設(shè)計(jì)數(shù)據(jù)庫(kù)是該即時(shí)通訊系統(tǒng)的必不可少的結(jié)構(gòu)之一,數(shù)據(jù)庫(kù)模塊主要負(fù)責(zé)對(duì)用戶賬號(hào)信息和個(gè)人資料卡信息的存儲(chǔ),進(jìn)行信息處理的各個(gè)環(huán)節(jié)都是基于數(shù)據(jù)庫(kù)的,因此可以實(shí)現(xiàn)對(duì)各類數(shù)據(jù)的安全、完整的存儲(chǔ),并進(jìn)行合理的使用。(1)用戶資料實(shí)體圖圖4.2用戶資料實(shí)體圖(2)群聊資料實(shí)體圖圖4.3群聊資料實(shí)體圖好友實(shí)體圖圖4.4好友實(shí)體圖(4)群聊實(shí)體圖圖4.5群聊實(shí)體圖4.3數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)設(shè)計(jì)是把上一階段的實(shí)體圖結(jié)構(gòu)轉(zhuǎn)化成數(shù)據(jù)庫(kù)系統(tǒng)中對(duì)應(yīng)的邏輯結(jié)構(gòu),其中,數(shù)據(jù)庫(kù)模塊的作用是保存用戶賬戶信息和個(gè)人資料卡信息。(1)用戶表users“用戶表users”用來(lái)記錄注冊(cè)的用戶信息。用戶表的結(jié)構(gòu)如表4.6所示。表4.6基本信息表字段名稱類型長(zhǎng)度字段說(shuō)明主鍵idbirght主鍵主鍵usernumvarchar20賬號(hào)signvarchar100簽名namevarchar30昵稱sexvarchar20性別addressvarchar50地址birthvarchar10生日agevarchar5年齡nativeplacevarchar50故鄉(xiāng)iconvarchar10頭像(2)好友表friend“好友表friend”是用來(lái)建立好友關(guān)系信息。好友表的結(jié)構(gòu)如表4.7所示。表4.7好友表字段名稱類型長(zhǎng)度字段說(shuō)明主鍵idbright主鍵主鍵usernumvarchar20用戶賬號(hào)friendnumvarchar20好友賬號(hào)群聊信息表makegroup“群聊信息表makegroup”是用來(lái)群聊信息。群聊表的結(jié)構(gòu)如表4.8所示。表4.8群聊信息表字段名稱類型長(zhǎng)度字段說(shuō)明主鍵idbigint主鍵主鍵groupnamevarchar30群名稱groupnumvarchar20群號(hào)announcementvarchar100群公告(4)群聊表group“群聊表group”是用來(lái)記錄用戶和群聊關(guān)系的信息。群聊表的結(jié)構(gòu)如表4.9所示。表4.9群聊表字段名稱類型長(zhǎng)度字段說(shuō)明主鍵idbigint11主鍵主鍵usernumvarchar30用戶賬號(hào)groupnumvarchar30群聊賬號(hào)第5章系統(tǒng)實(shí)現(xiàn)該系統(tǒng)采用套接字技術(shù),以MySQL為基礎(chǔ),建立了一套完整的信息傳輸渠道。只需使用IDEA或eclipse來(lái)進(jìn)行程序的開(kāi)發(fā)。在基于Java的在線聊天APP的設(shè)計(jì)過(guò)程中,由于數(shù)據(jù)的復(fù)雜性并不高,使用MySQL數(shù)據(jù)庫(kù)就可以被開(kāi)發(fā)并運(yùn)行,已經(jīng)達(dá)到了需要,所以將MySQL數(shù)據(jù)庫(kù)用作數(shù)據(jù)的承載。5.1系統(tǒng)運(yùn)行環(huán)境和運(yùn)行工具操作系統(tǒng):windows系統(tǒng)數(shù)據(jù)庫(kù):MySQL8.0以上運(yùn)行工具:eclipse4.4WebServer:JBoss或者tomcatJDK版本:JDK1.85.2啟動(dòng)服務(wù)器用戶使用程序需要有服務(wù)器作為支撐,管理員需要事先打開(kāi)服務(wù)器。在保證數(shù)據(jù)庫(kù)被啟動(dòng)的前提下,管理員通過(guò)運(yùn)行相應(yīng)的文件,即可啟動(dòng)服務(wù)器,打開(kāi)服務(wù)器后會(huì)顯示相應(yīng)的服務(wù)器界面,在這個(gè)界面可以對(duì)已經(jīng)登錄的用戶進(jìn)行監(jiān)控。服務(wù)器界面如圖5.1所示。圖5.1服務(wù)器界面5.3聊天監(jiān)控在用戶發(fā)送信息時(shí),發(fā)送的信息會(huì)顯示在服務(wù)器界面下方框體中,管理員能夠以此對(duì)用戶的聊天信息進(jìn)行監(jiān)控。監(jiān)控框體如圖5.2所示。圖5.2監(jiān)控框體5.4賬號(hào)注冊(cè)登錄如果用戶是首次使用程序,在點(diǎn)擊注冊(cè)用戶時(shí)會(huì)將界面變換為用戶注冊(cè)界面,用戶注冊(cè)需要輸入昵稱、賬號(hào)、密碼和個(gè)人簽名,并需要再次確認(rèn)密碼,賬號(hào)為用戶自己設(shè)定,不可重復(fù)。注冊(cè)中的人臉登錄是可選選項(xiàng),如果賬號(hào)在注冊(cè)時(shí)錄入了人臉圖像,則能在登錄時(shí)直接使用人臉識(shí)別進(jìn)行登錄。用戶注冊(cè)界面如圖5.3所示。圖5.3角色注冊(cè)在用戶輸入的賬號(hào)并未被注冊(cè)過(guò)且輸入的信息符合規(guī)范后,彈出小窗口提示其注冊(cè)成功。提示注冊(cè)成功窗口如圖5.4所示。圖5.4提示注冊(cè)成功實(shí)現(xiàn)該功能的關(guān)鍵代碼如下: @IgnoreAuth @PostMapping(value="/login") publicRlogin(Stringusername,Stringpassword,Stringcaptcha,HttpServletRequestrequest){ UsersEntityuser=userService.selectOne(newEntityWrapper<UsersEntity>().eq("username",username)); if(user==null||!user.getPassword().equals(password)){ returnR.error("賬號(hào)或密碼不正確"); } Stringtoken=tokenService.generateToken(user.getId(),username,"users",user.getRole()); returnR.ok().put("token",token); } @IgnoreAuth @PostMapping(value="/register") publicRregister(@RequestBodyUsersEntityuser){ if(userService.selectOne(newEntityWrapper<UsersEntity>().eq("username",user.getUsername()))!=null){ returnR.error("用戶已存在"); }userService.insert(user);returnR.ok();}在用戶登錄頁(yè)面中,用戶必須先鍵入自己的帳號(hào)和密碼,然后點(diǎn)擊登錄按鈕才能登錄,如果帳號(hào)和密碼鍵入正確,就可以直接進(jìn)入首頁(yè)。首先確定帳號(hào)和密碼已經(jīng)被鍵入到欄中。如果沒(méi)有鍵入帳號(hào)或口令,則會(huì)提醒使用者帳號(hào)或密碼未輸入。在輸入帳號(hào)和口令之后,該程序?qū)①~號(hào)密碼信息傳送至服務(wù)器,并在服務(wù)器上對(duì)該帳號(hào)和密碼進(jìn)行驗(yàn)證,如果輸入的帳號(hào)和密碼是準(zhǔn)確的,則會(huì)進(jìn)入主界面。如果使用者輸入的帳號(hào)密碼不準(zhǔn)確,系統(tǒng)將顯示“帳號(hào)或口令有誤”。用戶登錄界面如圖5.5所示:圖5.5用戶登錄實(shí)現(xiàn)該功能的關(guān)鍵代碼如下。publicstaticvoidlogin(Stringqq,Stringpass,Stringip,intport)throwsException{Sockettotry2=newSocket(ip,port);DataOutputStreamout2=newDataOutputStream(totry2.getOutputStream());DataInputStreamin2=newDataInputStream(totry2.getInputStream());out2.writeUTF(qq);out2.writeUTF(pass);switch(in2.readUTF()){case"false":JOptionPane.showMessageDialog(newJLabel(),"賬號(hào)或密碼錯(cuò)誤!","提示",JOptionPane.INFORMATION_MESSAGE);totry2.close();break;case"true":newperson(totry2,in2.readUTF(),qq,ip,port,pass);break;case"onlyone":JOptionPane.showMessageDialog(newJLabel(),"賬號(hào)已經(jīng)登錄!","提示",JOptionPane.INFORMATION_MESSAGE);totry2.close();break;default:JOptionPane.showMessageDialog(newJLabel(),"無(wú)法連接服務(wù)器!","提示",JOptionPane.INFORMATION_MESSAGE);totry2.close();break;}}如果用戶在注冊(cè)賬號(hào)時(shí)錄入了人臉圖像,還可以使用人臉識(shí)別進(jìn)行登錄,點(diǎn)擊人臉識(shí)別按鈕后程序?qū)?huì)打開(kāi)攝像頭,通過(guò)AI對(duì)捕捉到的人臉和錄入圖像的相似度進(jìn)行評(píng)分,評(píng)分合格則可成功登錄相應(yīng)賬號(hào)。人臉識(shí)別界面如圖5.6所示。圖5.6人臉識(shí)別實(shí)現(xiàn)該功能的關(guān)鍵代碼如下。publicstaticvoidfacelogin2(Stringpath,Stringip,intport){Stringfacepath="d:\\"+path+".png";Stringlog=Sample.FaceSearch(facepath);intscoreweizhi=log.indexOf("score");if(scoreweizhi>0){Stringsc=log.substring(scoreweizhi+8,scoreweizhi+10);intsc2=Integer.parseInt(sc);intscorecontrol=70;if(sc2>=scorecontrol){intuseridweizhi=log.indexOf("user_id");Stringuserid=log.substring(useridweizhi+11);System.out.println("userid"+userid);Stringqq=userid.substring(userid.indexOf("ct")+2,userid.indexOf("PASS"));Stringpass=userid.substring(userid.indexOf("PASS")+4,userid.indexOf("\"",userid.indexOf("PASS")+4));try{login(chat,pass,ip,port);System.out.println("截取密碼:"+pass);}catch(Exceptione){e.printStackTrace();}}else{intwz;Stringerr=log.substring(wz=log.indexOf("score"),log.indexOf(",",wz));JOptionPane.showMessageDialog(newJLabel(),"評(píng)分低于"+scorecontrol+"\n"+"得分:"+err,"提示",JOptionPane.INFORMATION_MESSAGE);}}else{intwz;Stringerr=log.substring(wz=log.indexOf("error_msg"),log.indexOf(",",wz));JOptionPane.showMessageDialog(newJLabel(),"識(shí)別失敗\n"+err,"提示",JOptionPane.INFORMATION_MESSAGE);System.out.println("識(shí)別失敗\n"+err);System.exit(0);}}用戶在成功登錄后進(jìn)入用戶主界面,在這之后便可自行添加好友和加入群聊。主界面如圖5.7所示。圖5.7用戶主界面5.5添加好友群聊用戶通過(guò)輸入賬號(hào)或者群號(hào)添加好友或群聊,在用戶輸入相應(yīng)的賬號(hào)后,程序會(huì)將賬號(hào)信息送至服務(wù)器,判斷賬號(hào)輸入是否正確和是否添加過(guò)該好友或群聊,在符合要求后將該賬號(hào)和添加賬號(hào)建立聯(lián)系,實(shí)現(xiàn)添加好友跟群聊。在添加成功后,將會(huì)提示好友或群聊添加成功,并且好友和群聊會(huì)顯示在相應(yīng)列表中。添加界面如圖5.8所示,添加成功界面如圖5.9所示。
圖5.8添加好友界面圖5.9添加成功界面實(shí)現(xiàn)該功能的重要代碼如下。if(qqhao.length()>0){out.writeUTF("%%%");Stringaddsql="insertintoQQfriend(qqid,friend)"+"values("+myqq+","+qqhao+");";Stringaddsql2="insertintoQQfriend(qqid,friend)"+"values("+qqhao+","+myqq+");";Stringchasql="selectqqid"+"fromQQpersoninfo"+"whereqqid="+qqhao+";";out.writeUTF(chasql);if(in.readUTF().equals("成功")){cli.close();Socketcli2=newSocket(ip,port);DataOutputStreamout2=newDataOutputStream(cli2.getOutputStream());DataInputStreamin2=newDataInputStream(cli2.getInputStream());out2.writeUTF("%%%");out2.writeUTF(addsql+addsql2);if(in2.readUTF().equals("成功"))JOptionPane.showMessageDialog(qq,"好友添加成功","提示",JOptionPane.INFORMATION_MESSAGE);cli2.close();}else{JOptionPane.showMessageDialog(qq,"用戶不存在","提示",JOptionPane.INFORMATION_MESSAGE);}}5.6創(chuàng)建群聊點(diǎn)擊創(chuàng)建群聊跳轉(zhuǎn)創(chuàng)建群聊界面,輸入群昵稱和群號(hào)即可完成創(chuàng)建群聊。創(chuàng)建群聊界面界面如圖5.10所示。圖5.10創(chuàng)建群聊界面實(shí)現(xiàn)該功能的重要代碼如下。try{cli=newSocket(ip,port);out=newDataOutputStream(cli.getOutputStream());in=newDataInputStream(cli.getInputStream());}catch(UnknownHostExceptione1){e1.printStackTrace();}catch(IOExceptione1){e1.printStackTrace();}try{Stringsql1="insert"+"intoQQquninfo(qid,qgonggao,qname,qowner,qtx)values("+qid.getText()+",'"+gg.getText()+"','"+qname.getText()+"',"+myqq+","+icontxt.getText()+")"+";";Stringsql2="insert"+"intoQQqunmember(qid,qmember)values("+qid.getText()+","+myqq+")"+";";out.writeUTF("%%%");out.writeUTF(sql1+sql2);if(in.readUTF().equals("成功")){JOptionPane.showMessageDialog(gg,"創(chuàng)建成功!","提示",JOptionPane.INFORMATION_MESSAGE);}else{JOptionPane.showMessageDialog(gg,"創(chuàng)建失敗","提示",JOptionPane.INFORMATION_MESSAGE);}5.7好友列表和群聊列表添加好友和群聊后,好友會(huì)顯示在好友列表界面,群聊會(huì)顯示在群聊列表界面。程序通過(guò)循環(huán)讀取好友連接信息和群聊連接信息更新對(duì)應(yīng)的列表。好友列表界面和群聊列表界面如圖5.11所示。
圖5.11好友列表和群聊列表實(shí)現(xiàn)該功能的重要代碼如下。publicvoidhuaone(Stringname,Stringicon,Stringqqid,String[]oneinfo){Filedir=newFile(".//chatrecord");Filemydir=newFile(".//chatrecord//#"+myqq);if(!dir.exists()){dir.mkdirs();}if(!mydir.exists()){mydir.mkdirs();}Stringrecordpath=".//chatrecord//#"+myqq+"http://#"+qqid+"#"+myqq+".txt";Filemyrecord=newFile(recordpath);if(!myrecord.exists()){try{myrecord.createNewFile();}catch(IOExceptione){e.printStackTrace();}}5.8消息發(fā)送點(diǎn)擊好友或群聊頭像進(jìn)行即時(shí)通訊,在聊天框體內(nèi)輸入文字,點(diǎn)擊發(fā)送,對(duì)方即可收到消息。服務(wù)器通過(guò)接聽(tīng)指定端口是否有客戶端發(fā)送鏈接請(qǐng)求,在調(diào)用方法接收請(qǐng)求建立鏈接,通過(guò)IO流進(jìn)行服務(wù)器端和客戶端的信息交流,再將信息發(fā)送給另一個(gè)指定客戶端,以此完成信息。此后用戶的聊天記錄都將被保存于服務(wù)器中,在重新登錄后不會(huì)清除。消息發(fā)送如圖5.12所示。圖5.12消息發(fā)送實(shí)現(xiàn)該功能的重要代碼如下。privateStringreceive(){Stringstr="";try{str=dis.readUTF();}catch(IOExceptione){flag=false;CloseUtil.CloseAll(dis,dos);Server.list.remove(this);}returnstr;}privatevoidsend(Stringstr){try{if(str!=null&&str.length()!=0){dos.writeUTF(str);dos.flush();}}catch(Exceptionexception){flag=false;CloseUtil.CloseAll(dos,dis);Server.list.remove(this);}}5.9文件傳輸點(diǎn)擊發(fā)送文件可選擇文件進(jìn)行發(fā)送,使用IO字節(jié)流進(jìn)行傳輸,能夠發(fā)送各種圖片、音頻、視頻、文檔等各類格式文件。文件發(fā)送成功后,點(diǎn)擊窗口左邊下載文件即可選擇磁盤保存文件。文件傳輸如圖5.13所示。圖5.13文件傳輸實(shí)現(xiàn)該功能的重要代碼如下。publicstaticbyte[]file2ByteArr(Filefile){FileInputStreamfis=null;ByteArrayOutputStreambos=newByteArrayOutputStream(1000);try{fis=newFileInputStream(file);byte[]b=newbyte[1000];intn;while((n=fis.read(b))!=-1){bos.write(b,0,n);}byte[]data=bos.toByteArray();returndata;}catch(Exceptione){returnnull;}finally{if(fis!=null){try{fis.close();}catch(IOExceptione){e.printStackTrace();}}try{bos.close();}catch(IOExceptione){e.printStackTrace();}}}5.10更改個(gè)人資料卡在用戶登錄成功之后,用戶可以點(diǎn)擊主界面中的個(gè)人頭像,將會(huì)彈出一個(gè)個(gè)人資料卡的窗口,用戶可以通過(guò)點(diǎn)擊相應(yīng)內(nèi)容修改個(gè)人資料,然后可以選擇修改新信息到服務(wù)器上。在將信息發(fā)送到服務(wù)器之前,將會(huì)先對(duì)信息進(jìn)行格式判斷。當(dāng)用戶在修改的個(gè)人資料卡成功后,用戶的頭像,昵稱,個(gè)性簽名等將會(huì)在主界面中改變,如未修改成功,將不會(huì)改變。個(gè)人資料卡修改界面如圖5.14所示。圖5.14個(gè)人資料卡修改實(shí)現(xiàn)該功能的重要代碼如下。try{Stringsql1="updateQQpersoninfo"+"setqqname='"+name.getText()+"'"+"whereqqid="+myqq+";";Stringsql2="updateQQpersoninfo"+"setqqqianming='"+qm.getText()+"'"+"whereqqid="+myqq+";";Stringsql3="updateQQpersoninfo"+"setqqpassword='"+pass.getText()+"'"+"whereqqid="+myqq+";";Stringsql4="updateQQpersoninfo"+"setqqicon='"+icontxt.getText()+"'"+"whereqqid="+myqq+";";Stringsql5="updateQQpersoninfo"+"setbak1='"+bak1.getText()+"'"+",bak2='"+bak2.getText()+"'"+",bak3='"+bak3.getText()+"'"+",bak4='"+bak4.getText()+"'"+",bak5='"+bak5.getText()+"'"+",bak6='"+bak6.getText()+"'"+"whereqqid="+myqq+";";out.writeUTF("%%%");out.writeUTF(sql1+sql2+sql3+sql4+sql5);if(in.readUTF().equals("成功")){JOptionPane.showMessageDialog(qm,"修改成功!","提示",JOptionPane.INFORMATION_MESSAGE);}else{JOptionPane.showMessageDialog(qm,"修改失敗","提示",JOptionPane.INFORMATION_MESSAGE);}5.11查看資料卡在主界面右鍵好友頭像出現(xiàn)右鍵菜單,點(diǎn)擊查看資料即可查看好友或群聊資料。操作界面如圖5.15所示;好友資料卡界面如圖5.16所示;群聊資料卡界面如圖5.17所示。圖5.15右鍵操作界面圖5.16好友資料卡圖5.17群聊資料卡5.12刪除好友和群聊在主界面右鍵點(diǎn)擊頭像,出現(xiàn)右鍵菜單欄,選擇點(diǎn)擊“退出群”或“刪除好友”即可對(duì)群聊和好友進(jìn)行刪除,刪除成功后提示“已經(jīng)刪除好友”或“已經(jīng)退出群”,并重構(gòu)好友列表和群聊列表。界面如圖5.18所示。圖5.18刪除好友提示實(shí)現(xiàn)該功能的重要代碼如下。try{cli=newSocket(ip,port);DataOutputStreamout=newDataOutputStream(cli.getOutputStream());DataInputStreamin=newDataInputStream(cli.getInputStream());out.writeUTF("%%%");Stringsql1="delete"+"fromqqfriend"+"whereqqid="+myqq+"andfriend="+qq+";";Stringsql2="delete"+"fromqqfriend"+"whereqqid="+qq+"andfriend="+myqq+";";out.writeUTF(sql1+sql2);Stringflag=in.readUTF();if(flag.equals("成功")){JOptionPane.showMessageDialog(look,"已經(jīng)刪除好友","提示",JOptionPane.INFORMATION_MESSAGE);}}第6章系統(tǒng)測(cè)試在一個(gè)軟件的發(fā)展中,其中一個(gè)重要的環(huán)節(jié)就是測(cè)試。在開(kāi)發(fā)過(guò)程中,程序難免會(huì)有缺陷,所以要去尋找和處理那些缺陷,這就是系統(tǒng)測(cè)試所要實(shí)現(xiàn)的目標(biāo)。編程人員在完成某個(gè)功能模塊的設(shè)計(jì)之后,通常要對(duì)該軟件進(jìn)行一系列的測(cè)試,也就是所謂的“單元測(cè)試”。當(dāng)一個(gè)完整的應(yīng)用軟件被開(kāi)發(fā)出來(lái)以后,還需要對(duì)這個(gè)軟件進(jìn)行全面的功能測(cè)試,從而找到這個(gè)軟件中的漏洞。軟件測(cè)試的意義就是,它的第一個(gè)目的就是保證軟件的品質(zhì),第二個(gè)目的就是對(duì)功能能否達(dá)到自己的期望,進(jìn)行一種測(cè)驗(yàn),最后再對(duì)會(huì)不會(huì)出現(xiàn)與期望的不一樣的結(jié)果。黑盒測(cè)試是測(cè)試系統(tǒng)整體功能的一種手段,TESTERS首先從用戶的角度來(lái)看待黑盒,比較符合預(yù)期的功能測(cè)試用例,并幫助識(shí)別系統(tǒng)中存在的問(wèn)題。黑盒測(cè)試主要采用位移分析和閾值分析。系統(tǒng)錯(cuò)誤經(jīng)常發(fā)生在輸入和輸出值邊界上,概率比內(nèi)部高得多,因此閾值分析進(jìn)一步確定了系統(tǒng)的穩(wěn)定性和可靠性,在確定輸入和輸出范圍后選擇操作系統(tǒng)閾值來(lái)測(cè)試系統(tǒng)。6.1測(cè)試步驟單元、集成和核實(shí)測(cè)試為系統(tǒng)測(cè)試的主要三步驟。(1)單元測(cè)試是測(cè)試系統(tǒng)的最小功能模塊。對(duì)該模塊進(jìn)行性能檢測(cè),以判定其性能與所定義的性能要求是否相符。(2)集成測(cè)試是模塊安裝后的完整系統(tǒng),能夠?qū)M件間的界面、通訊進(jìn)行檢測(cè),并對(duì)與設(shè)計(jì)有關(guān)的編程結(jié)構(gòu)進(jìn)行驗(yàn)證。(3)核實(shí)測(cè)試是是為了確保系統(tǒng)配置的正確性,對(duì)用戶進(jìn)行分析時(shí)所需的數(shù)據(jù)進(jìn)行確認(rèn),以確定用戶所需的數(shù)據(jù)是否與所需數(shù)據(jù)一致。6.2測(cè)試預(yù)期結(jié)果在即時(shí)通訊系統(tǒng)中,初步預(yù)估目標(biāo)應(yīng)是:服務(wù)器能夠正常啟動(dòng)。用戶能夠注冊(cè)賬號(hào)。用戶能夠登錄賬號(hào)。用戶能夠添加好友和群聊。用戶能夠發(fā)送文件。6.3測(cè)試用例程序的功能測(cè)試預(yù)期需要結(jié)合實(shí)際數(shù)據(jù)經(jīng)行檢測(cè),再將得到的結(jié)果與預(yù)期結(jié)果進(jìn)行比較。將結(jié)果對(duì)比分析。若所得到的結(jié)果與期望的有出入,則測(cè)試失敗。如果運(yùn)行結(jié)果與期望的一致,則測(cè)試通過(guò)。6.3.1服務(wù)器啟動(dòng)測(cè)試啟動(dòng)服務(wù)器是運(yùn)行程序的首要步驟,能夠啟動(dòng)成功則是通過(guò)。如表6.1所示。表6.1服務(wù)器啟動(dòng)測(cè)試表測(cè)試編號(hào)測(cè)試目的操作步驟預(yù)期結(jié)果實(shí)際結(jié)果001服務(wù)器啟動(dòng)未連接數(shù)據(jù)庫(kù)啟動(dòng)失敗啟動(dòng)失敗002服務(wù)器啟動(dòng)無(wú)網(wǎng)絡(luò)連接啟動(dòng)失敗啟動(dòng)失敗003服務(wù)器啟動(dòng)已連接數(shù)據(jù)庫(kù)及網(wǎng)絡(luò)啟動(dòng)成功啟動(dòng)成功6.3.2注冊(cè)測(cè)試用例用戶在注冊(cè)時(shí)填寫的信息符合規(guī)范則可注冊(cè)成功。如表6.2所示。表6.2注冊(cè)測(cè)試用例表測(cè)試編號(hào)測(cè)試目的操作步驟預(yù)期結(jié)果實(shí)際結(jié)果001注冊(cè)測(cè)試不填寫任何數(shù)據(jù)注冊(cè)失敗注冊(cè)失敗002注冊(cè)測(cè)試不填寫個(gè)性簽名注冊(cè)成功注冊(cè)成功003注冊(cè)測(cè)試輸入兩次密碼不一致注冊(cè)失敗注冊(cè)失敗004注冊(cè)測(cè)試頭像超過(guò)限制注冊(cè)失敗注冊(cè)失敗005注冊(cè)測(cè)試不填寫昵稱注冊(cè)失敗注冊(cè)失敗006注冊(cè)測(cè)試個(gè)性簽名過(guò)長(zhǎng)注冊(cè)失敗注冊(cè)失敗007注冊(cè)測(cè)試填寫正確內(nèi)容注冊(cè)成功注冊(cè)成功008注冊(cè)測(cè)試不錄入人臉登錄注冊(cè)成功注冊(cè)成功6.3.3登錄測(cè)試用例用戶通過(guò)輸入正確的賬號(hào)密碼登錄賬號(hào)。如表6.3所示。表6.3登錄測(cè)試用例表測(cè)試編號(hào)測(cè)試目的操作步驟預(yù)期結(jié)果實(shí)際結(jié)果001登錄測(cè)試輸入正確的用戶名和密碼登錄成功登錄成功002登錄測(cè)試不輸入內(nèi)容登錄失敗登錄失敗003登錄測(cè)試未輸入密碼登錄失敗登錄失敗004登錄測(cè)試未輸入賬號(hào)登錄失敗登錄失敗005登錄測(cè)試輸入錯(cuò)誤的密碼登錄失敗登錄失敗6.3.4添加好友測(cè)試用例用戶在添加好友時(shí),需要輸入正確的好友賬號(hào)。如表6.4所示。表6.4添加好友測(cè)試用例表測(cè)試編號(hào)測(cè)試目的操作步驟預(yù)期結(jié)果實(shí)際結(jié)果001添加好友測(cè)試輸入正確的好友賬號(hào)添加成功添加成功002添加好友測(cè)試輸入錯(cuò)誤的好友賬號(hào)添加失敗添加失敗003添加好友測(cè)試添加已添加過(guò)的好友添加失敗添加成功6.3.5添加群聊測(cè)試用例用戶在添加群聊時(shí),需要輸入正確的群聊賬號(hào)。如表6.5所示。表6.5添加群聊測(cè)試用例表測(cè)試編號(hào)測(cè)試目的操作步驟預(yù)期結(jié)果實(shí)際結(jié)果001添加群聊測(cè)試輸入正確的群號(hào)添加成功添加成功續(xù)表6.5添加群聊測(cè)試用例表測(cè)試編號(hào)測(cè)試目的操作步驟預(yù)期結(jié)果實(shí)際結(jié)果002添加群聊測(cè)試輸入錯(cuò)誤的群號(hào)添加失敗添加失敗003添加群聊測(cè)試添加已添加的群聊添加失敗添加失敗6.3.6發(fā)送文件測(cè)試用例用戶在聊天時(shí)可以發(fā)送各類格式的文件。如表6.6所示。表6.6發(fā)送文件測(cè)試用例表測(cè)試編號(hào)測(cè)試目的操作步驟預(yù)期結(jié)果實(shí)際結(jié)果001發(fā)送文件測(cè)試發(fā)送png格式文件發(fā)送成功發(fā)送成功002發(fā)送文件測(cè)試發(fā)送mp4格式文件發(fā)送成功發(fā)送成功003發(fā)送文件測(cè)試發(fā)送mp3格式文件發(fā)送成功發(fā)送成功004發(fā)送文件測(cè)試發(fā)送doc格式文件發(fā)送成功發(fā)送成功005發(fā)送文件測(cè)試發(fā)送psd格式文件發(fā)送成功發(fā)送成功6.4測(cè)試結(jié)論經(jīng)過(guò)使用多個(gè)測(cè)試用例對(duì)系統(tǒng)的部分功能進(jìn)行了全面測(cè)試,整個(gè)系統(tǒng)在測(cè)試過(guò)程中,不管是從系統(tǒng)的功能上、還是從系統(tǒng)的使用上,基本上都能達(dá)到當(dāng)初預(yù)計(jì)的結(jié)果。結(jié)論通過(guò)數(shù)個(gè)月的學(xué)習(xí)與努力,終于完成了本次畢業(yè)設(shè)計(jì)題目的設(shè)計(jì)和實(shí)現(xiàn)。本文通過(guò)對(duì)開(kāi)發(fā)基于Java的在線聊天APP相關(guān)技術(shù)的研究,針對(duì)目前市面上常用的即時(shí)通訊軟件進(jìn)行分析,解決它們被廣大用戶詬病的問(wèn)題。隨著社會(huì)的快速發(fā)展,傳統(tǒng)的信息交流方式已經(jīng)不能滿足人們的日常需求,而現(xiàn)今人們的生活也已經(jīng)無(wú)法離開(kāi)即時(shí)通訊軟件。本次設(shè)計(jì)摒棄了大多數(shù)聊天軟件臃腫的設(shè)計(jì),在界面設(shè)計(jì)上簡(jiǎn)潔美觀,操作上簡(jiǎn)單方便,實(shí)現(xiàn)了一對(duì)一以及一對(duì)多高效、快捷、簡(jiǎn)潔的信息交流,同樣解放了用戶使用軟件的內(nèi)存壓力和儲(chǔ)存壓力。本系統(tǒng)仍然有許多不足之處,本次設(shè)計(jì)雖然已經(jīng)完成了一款即時(shí)通訊系統(tǒng)的重要功能,但由于技術(shù)限制尚不能完成視頻聊天和語(yǔ)音聊天功能,僅僅是能使用文字交流和文件傳輸,在日常使用這方面尚顯不足,所使用的JavaSwing在界面設(shè)計(jì)精美度上不如其他技術(shù),后期仍需要一定的優(yōu)化,在接下來(lái)的工作中仍需鞏固技能,提高水平,使系統(tǒng)其趨于完善。參考文獻(xiàn)[1]歐陽(yáng)桂秀.基于Java和MySQL的數(shù)據(jù)庫(kù)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].信息記錄材料,2022,23(09):240-242.[2]蘇碧霞.探析JavaSwing工具包在圖形用戶界面設(shè)計(jì)中的應(yīng)用[J].信息與電腦,2019(10):151-152.[3]張丹丹.淺析JavaSwing組件窗體設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2020,16(21):160-161.[4]王素蘋.一種基于JavaSwing的網(wǎng)絡(luò)聊天室的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2020(20):64-67.[5]張丹丹.淺析使用模型參數(shù)構(gòu)造JavaSwing組件[J].電腦知識(shí)與技術(shù),2020,16(26):214-215.[6]金瀾.MySQL索引是如何形成的[J
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《GA 1052.6-2013警用帳篷 第6部分:60m2棉帳篷》專題研究報(bào)告
- 養(yǎng)老院入住老人生活照料服務(wù)規(guī)范制度
- 企業(yè)員工培訓(xùn)與能力建設(shè)制度
- 企業(yè)內(nèi)部溝通協(xié)作制度
- 紀(jì)檢監(jiān)督檢查培訓(xùn)課件
- 2026湖北武漢人才服務(wù)發(fā)展有限公司招聘初中教師派往江岸區(qū)公立學(xué)校1人參考題庫(kù)附答案
- 2026湖南醫(yī)發(fā)投養(yǎng)老產(chǎn)業(yè)有限公司子公司高級(jí)管理人員招聘2人備考題庫(kù)附答案
- 2026福建廈門市集美區(qū)樂(lè)海幼兒園頂崗教職工招聘2人備考題庫(kù)附答案
- 2026福建省面向清華大學(xué)選調(diào)生選拔工作參考題庫(kù)附答案
- 2026秋季威海銀行校園招聘參考題庫(kù)附答案
- DB31-T 1502-2024 工貿(mào)行業(yè)有限空間作業(yè)安全管理規(guī)范
- 2022版義務(wù)教育(物理)課程標(biāo)準(zhǔn)(附課標(biāo)解讀)
- 肺結(jié)核患者合并呼吸衰竭的護(hù)理查房課件
- 井噴失控事故案例教育-井筒工程處
- 地源熱泵施工方案
- GB/T 16947-2009螺旋彈簧疲勞試驗(yàn)規(guī)范
- 硒功能與作用-課件
- 《英語(yǔ)教師職業(yè)技能訓(xùn)練簡(jiǎn)明教程》全冊(cè)配套優(yōu)質(zhì)教學(xué)課件
- PKPM結(jié)果分析限值規(guī)范要求和調(diào)整方法(自動(dòng)版)
- 同步工程的內(nèi)涵、導(dǎo)入和效果
- 喪假證明模板
評(píng)論
0/150
提交評(píng)論