版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、畢業(yè)論文(設(shè)計)基于Android的即時通信系統(tǒng)的設(shè)計與實現(xiàn)學(xué)生姓名:劉珍珠指導(dǎo)教師:孫庚(副教授)專業(yè)名稱:計算機科學(xué)與技術(shù)所在學(xué)院:信息工程學(xué)院2014年6月大連海洋大學(xué)本科畢業(yè)論文(設(shè)計)目 錄目 錄摘 要IAbstractII1 引 言11.1 本課題的研究背景11.2 研究的目的及意義11.3 基于安卓的即時通信的現(xiàn)狀12 系統(tǒng)相關(guān)技術(shù)與理論22.1 Dalvik VM與JVM的比較22.2 JAVA基礎(chǔ)介紹22.3 Android特征32.4 AVD模擬器52.5 SQL server 數(shù)據(jù)庫52.6 Socket編程52.7 關(guān)于TCP/IP協(xié)議52.8 服務(wù)器和客戶機63 系統(tǒng)
2、分析73.1 可行性分析73.2 需求分析83.3 分析總結(jié)94 總體設(shè)計104.1 面向?qū)ο蟮脑O(shè)計104.2 數(shù)據(jù)庫設(shè)計124.3 客戶端和服務(wù)器端設(shè)計145 詳細設(shè)計155.1 客戶端155.2 網(wǎng)絡(luò)服務(wù)端235.3 顯示系統(tǒng)時間306 系統(tǒng)測試316.1 系統(tǒng)測試的對象316.2 系統(tǒng)測試的方案316.3 測試結(jié)果評價36結(jié)論與建議37參 考 文 獻38致 謝39大連海洋大學(xué)本科畢業(yè)論文(設(shè)計)摘 要摘 要2012年,3G/4G移動互聯(lián)網(wǎng)的到來使即時通信(Instant Messenge)無論從技術(shù)上還是速度上都有嶄新的提高。即時通信從簡單的短信到時下最流行的微信,設(shè)備上從PDA到UMP
3、C,中間穿插了很多其他過渡作品,我本次的設(shè)計是基于安卓類似QQ的聊天系統(tǒng)??傮w來看,數(shù)字通信可以分為:進行語音通信的一代,附加功能數(shù)據(jù)接收到的二代,和三代的高速度的蜂窩移動技術(shù)。三代技術(shù)讓我們在通訊上得到了非常方便的使用,不僅速度快,接收的功能也很多。 本文介紹了基于Android的即時通訊系統(tǒng)的實現(xiàn)過程,運用JAVA語言,SQL Server作為程序的數(shù)據(jù)庫,采用TCP/IP的網(wǎng)絡(luò)協(xié)議。通過客戶端發(fā)送信息,服務(wù)器端接收,接收后通過廣播的形式轉(zhuǎn)發(fā)給客戶端。本設(shè)計中,僅有兩個用戶,即客戶和管理者。聊天對象包括用戶、朋友和群。設(shè)計名叫YQ,它的功能與QQ類似,第一步申請注冊賬號,成功后登陸便能添加
4、好友,與好友隨時隨地的溝通。它的其他功能有刪除好友,群聊天等?,F(xiàn)在人們需要隨時掌握實時更新的消息,關(guān)注周圍,隨時與身邊的家人、好友、同事等保持聯(lián)系,即時通信的出現(xiàn),讓人們生活拉近距離。選擇安卓開發(fā)是考慮到以下幾個原因:一它的設(shè)備便宜;二它的手機市場占有率相當高;三是它開源開放,是基于JAVA語言的程序開發(fā)便于上手,開發(fā)工具采用Eclipse。它已經(jīng)擺脫了單線程操作,不再是一個一個處理,而是同時運行多個線程,提高對服務(wù)器端的利用資源,采用的多線程。通過這次實踐,總結(jié)了許多關(guān)于安卓開發(fā)的經(jīng)驗,為以后的學(xué)習打下基礎(chǔ)。關(guān)鍵詞: Android;Eclipse;Sql Sever;多線程;客戶機/服務(wù)器
5、 - I -大連海洋大學(xué)本科畢業(yè)論文(設(shè)計)AbstractAbstractIn 2012, the arrival of 3G/4G mobile Internet enables instant messaging in terms of new technology or the speed has improved. Instant messaging from simple text messages to the most popular micro-channel, the device from the PDA to the UMPC, interspersed with a
6、lot of other transition work, I The design is based on Andrews similar QQ chat system. Overall, digital communication can be divided into: carry generation, additional features of voice communication data received by the second generation and third generation high-speed cellular technology. Three ge
7、nerations of communications technology allows us to get in a very easy to use, not only fast, but also received a lot of features.This article describes the implementation process of Android-based instant messaging system, using JAVA language, SQL Server as the database program, using the TCP / IP n
8、etwork protocol. Sends through the customer information, the server receives, after receiving forwarded to the client in the form of broadcasting. In this design, only two users, that customers and managers. Chat objects including users, friends and groups. Design called YQ, similar to its function
9、and QQ, the first step in applying for registration account, after the successful landing will be able to add friends, communicate with friends anytime, anywhere. Its other features are deleted friends, group chat and so on.Now people need to keep track of real-time updates of news, concerns around,
10、 keep in touch with their family members, friends, colleagues, etc., appear instant messaging, allowing people to live closer together. Select Andrews was developed taking into account the following reasons: It's a cheap device; two of its mobile phone market share is very high; Third, it is ope
11、n source, is based on the JAVA language development program easy to use, development tools using Eclipse. It has got rid of the single-threaded operation, is no longer a one process, but running multiple threads simultaneously, improve the use of resources on the server side, the use of multi-thread
12、ing. Through this practice, summed up a lot of experience on Android development, laying the foundation for future learning.Key Words: android;Eclipse;Sql sever; multithreading;Client/Sever system- II -大連海洋大學(xué)本科畢業(yè)論文(設(shè)計)1 引 言1 引 言1.1 本課題的研究背景IM是三位年輕人在1996年開發(fā)的,系統(tǒng)的開始取名為 ICQ意思是我找你,IM是兩人或兩人以上進行交流的程序,可以信息交
13、流,語言交流,視屏交流,也可以進行文件傳送,功能十分強大,現(xiàn)在人們的生活已經(jīng)不可或缺??梢允謾C對手機,手機對電腦之間的相互交流,包括網(wǎng)站之間都可以。即時通訊與e-mail的不同在于它的交談是即時的。網(wǎng)絡(luò)上頗受歡迎的即時通訊服務(wù)有:ICQ、QQ、微信、anychat、人人桌面等。根據(jù)顯示:中國有觀調(diào)查數(shù)據(jù)市場終端客戶在2008年就已達到2236萬人,與2007年相比,增長了23.3%。即時通訊的發(fā)展由剛開始的PC轉(zhuǎn)向手機客服端,有以下幾個特點:省錢、方便、可靠、功能超強等1。 1.2 研究的目的及意義許多年前,只有摩托羅拉資深的工程師才能做移動開發(fā),而現(xiàn)在我們掌握了移動互聯(lián)網(wǎng)就是掌握了未來,誰抓
14、住了互諒網(wǎng)的機會,也就意味著誰游客未來成功的門票。了解當下的環(huán)境,做出適當?shù)恼{(diào)增。然而安卓占據(jù)很大的空間。我們本次設(shè)計是基于安卓的即時通信,本身也是通過做一個軟件來系統(tǒng)的學(xué)習和了解安卓,通過老師的幫助,和自己的努力,來完成這個設(shè)計。經(jīng)過這個畢業(yè)設(shè)計的磨練,對移動通訊行業(yè)有了更深的了解,也有了更多的知識來充實自己的大腦。學(xué)習了JAVA語言,了解了Android,也對數(shù)據(jù)庫的應(yīng)該用加深了學(xué)習。集成多媒體的應(yīng)用有著更強的吸引力,為用戶提供更多個性化的服務(wù),將成為未來移動即時通信發(fā)展的一個趨勢。1.3 基于安卓的即時通信的現(xiàn)狀即時通信分為個人即時通訊和企業(yè)即時通訊。個人即時通訊在中國最有影響力度的首推
15、QQ。它的不只聊天功能強大注重保護個人隱私,娛樂性也很強。但是它還是有很多競爭對手,比如說阿里旺旺,是專業(yè)的商人和客戶互相之間的聊天,這與現(xiàn)在風靡全球的網(wǎng)購有關(guān);飛信是中國移動推出的服務(wù);歪歪是專門對網(wǎng)絡(luò)玩家創(chuàng)辦的聊天系統(tǒng);人人是專門設(shè)計給在校生的即時聊天系統(tǒng),國內(nèi)還有很多其他安卓軟件供于用戶使用,在此不介紹了。根據(jù)上面介紹的可以看出,人們早已經(jīng)被即時通訊包圍,并以適應(yīng),熟悉使用。競爭激烈的安卓即時通訊系統(tǒng),未來的會越來越人性化,通過程序的服務(wù),得到客戶。- 1 -大連海洋大學(xué)本科畢業(yè)論文(設(shè)計)6 系統(tǒng)測試2 系統(tǒng)相關(guān)技術(shù)與理論本次開發(fā)用到的平臺是Dalvik VM,前端編寫語言是JAVA,
16、涉及到的相關(guān)技術(shù)包括數(shù)據(jù)創(chuàng)建和存儲、組件間的通信、界面布局的管理等。2.1 Dalvik VM與JVM的比較 (1)Dalvik 和Java虛擬機(JVM)的首要區(qū)別:Dalvik 基于寄存器, JVM 基于棧。(2)Dalvik 和 Java 字節(jié)碼的區(qū)別。圖2.1 java資源代碼的運行(3)Dalvik 與 Java SDK的SDK不同。(4) Dalvik 與 Java 運行環(huán)境的區(qū)別: Dalvik虛擬機在android 2.2后使用JIT(Just-In-Time)技術(shù),和傳統(tǒng)JVM的JIT不完全相同,Dalvik虛擬機有自己的 bytecode,并不是使用 Java byteco
17、de2。2.2 JAVA基礎(chǔ)介紹(1)初始化對象由一個類生成一個對象時,為這個對象確定的初始狀態(tài),也就是它的數(shù)據(jù)成員賦初值時,初始化對象就是調(diào)用構(gòu)造方法為對象的屬性賦初值。(2)關(guān)于繼承(3)關(guān)于構(gòu)造方法使用構(gòu)造方法進行初始化是為了避免在生成對象后沒催都調(diào)用對象的初始化的方法,構(gòu)造方法內(nèi)部成員遵循全面局部變量的使用規(guī)則。構(gòu)造方法可以被重載。(4) 抽象類Abstract不能與final并列修飾一個類;Abstract不能與private、static、final修飾同一個方法。(5) 多重繼承一個類繼承一個類和接口時,必須將類寫在前面,接口寫在后面,接口之間用逗號隔開。接口之間可以多重繼承3。
18、2.3 Android特征2.3.1 Android平臺結(jié)構(gòu)安卓的主流程序是Eclipse+ADT+AndroidSDK。開發(fā)環(huán)境比傳統(tǒng)的手機操作系統(tǒng)快,調(diào)試更方便。它提供了眾多體現(xiàn)個性化的功能。Android支持虛擬鍵盤和物理鍵盤,豐富用戶的輸入選擇。安卓的應(yīng)用程序可以嵌入到HTML、JavaScript等。安卓上的平臺應(yīng)用間的通信至少有四種,這與其他應(yīng)該用程序相比,已經(jīng)是無障礙溝通了。就算是撥號、Home這些核心組件也一樣,它的所有程序都是可替換和可拓展的。安卓的應(yīng)用程序權(quán)限是由開發(fā)者決定,這與訪問某些限制級的API相比,就幸福的多,只要自己的應(yīng)用配置里更改下API就行,這樣大大降低了安卓
19、程序開發(fā)的開發(fā)成本,最重要的是,安卓的平臺是免費的開源的,而且得到更多人的追捧,這是我們很容易的接觸4。2.3.2 Android系統(tǒng)構(gòu)架圖2.2 Android體系構(gòu)架圖從圖2.2看出Android分為四個框架,從低至高為Lunix內(nèi)核層、系統(tǒng)運行庫層、應(yīng)用框架層、應(yīng)用層。(1)Lunix內(nèi)核層主要包括進程管理、內(nèi)存管理、驅(qū)動、網(wǎng)絡(luò)協(xié)議棧等組件。(2)系統(tǒng)運行庫層是必須采用NDK,java才能訪問的硬件,java本身不能直接訪問硬件。這個層是對應(yīng)用框架的提供支持的層。(3)應(yīng)用框架層石油開發(fā)人員直接調(diào)用的層,由View、活動管理器(ActivityManager)、通知管理器(Notific
20、ationManager)等API。(4)應(yīng)用層是由日歷、瀏覽器、地圖、聯(lián)系人管理等運行在Dalvik虛擬機上的應(yīng)用程序組成5。2.3.3 Android應(yīng)用組件Android沒有Main方法,使用一系列組件構(gòu)成的程序,這些組件都能單獨的實例化,應(yīng)用程序?qū)Ψ窒砉δ芤彩峭ㄟ^以下四組組件實現(xiàn)的。(1)Activity 組件(安卓的窗體)Activity是安卓的核心類。通過setContentView方法將View放到Activity中。綁定后顯示視圖上的控件。一個安卓界面是由很多個Activity組成的,應(yīng)用程序的業(yè)務(wù)邏輯決定了這些Activity的工作如何做,他們之間有什么依賴關(guān)系。一般的安卓軟
21、件是通過菜單按鈕等顯示其他的Activity。安卓自帶的程序有很多這種軟件。其中,Broadcast Receive的功能就是接收廣播動作,然后對廣播做出反應(yīng)。(2)Intent 組件Component name /指定要啟動的Activity;Action /描述Intent所觸發(fā)動作名稱的字符串;Data /傳送的數(shù)據(jù);Category
22、; /對目標組件類別信息的描述;Extras /額外信息;Flags /標志;(3)Service 組件Service沒有可視化的接口,但是可以在后臺運行,當用戶在其他操作時,可以利用服務(wù)在后臺工作。(4)ContentProvider 組件Content Provider是內(nèi)容提供者,可以為其他程序提供數(shù)據(jù),這些數(shù)據(jù)保存在文件系統(tǒng)中。每個內(nèi)容的提供者都是有一個類。在Content Provider類中,可以定義一個方法,根據(jù)這些方法,使用其他提供者提供的數(shù)據(jù)6。2.4 AVD模擬器對于
23、初學(xué)安卓開發(fā),身邊沒有安卓設(shè)備的開發(fā)者,AVD虛擬器就解決了這個問題。它可以實現(xiàn)多個虛擬器同時在線,并互相發(fā)送消息并接受消息。開發(fā)者只需要自己創(chuàng)建自己想要的手機環(huán)境即可,非常簡單并節(jié)省了開發(fā)者的資金。如下圖所示,配置了一個名叫Androidsdk22的手機,它的版本是2.2,API等級為8,點擊Start,手機就創(chuàng)建好了,就可以使用。圖2.4 AVD虛擬器實例上圖為本設(shè)計的虛擬器中實現(xiàn)的圖,YQ是本設(shè)計的軟件名稱。2.5 SQL server 數(shù)據(jù)庫微軟開發(fā)的數(shù)據(jù)庫,有Master數(shù)據(jù)庫(是SQL最重要的數(shù)據(jù)庫,記錄了SQL Server的所有系統(tǒng)信息)、Model數(shù)據(jù)庫、Msdb數(shù)據(jù)庫、Te
24、mpdb臨時數(shù)據(jù)庫。2.6 Socket編程服務(wù)器端:使用ServerSocket監(jiān)聽指定的窗口,用戶端發(fā)送請求,建立連接,服務(wù)端接受客戶端發(fā)送的請求并給與相應(yīng),客戶端可以發(fā)送回話,在完成會話后,關(guān)閉連接??蛻舳耍菏褂肧ocket發(fā)送請求給服務(wù)器端,接受客戶端發(fā)送的回應(yīng),連接成功。發(fā)送會話,結(jié)束會話,關(guān)閉連接7。2.7 關(guān)于TCP/IP協(xié)議TCP/IP協(xié)議是一種可靠的數(shù)據(jù)流服務(wù),圖2.5是該協(xié)議的網(wǎng)絡(luò)關(guān)系圖。圖2.5 網(wǎng)絡(luò)協(xié)議關(guān)系圖2.8 服務(wù)器和客戶機使用服務(wù)器和客戶機模式,可以降低調(diào)試維護費用,提高資源利用率,滿足用戶需求,方便用戶的使用。3 系統(tǒng)分析即時通訊的需求分析,第一步要了解用戶需
25、求,即實現(xiàn)簡單快捷和節(jié)省的聊天模式,可增加、更改、刪除好友等功能,交流時可以發(fā)送信息、圖片、文件、甚至視頻等等,用戶可以收藏聊天記錄,還可以設(shè)置黑名單。3.1 可行性分析3.1.1 技術(shù)可行性選擇安卓為開發(fā)工具,就是因為它簡單易操作功能強大,我們選擇SQL Server作為數(shù)據(jù)庫,也是因為它功能強大。它的通知服務(wù)、報表服務(wù)等都非常的簡單易操作。選用JAVA作為開發(fā)工具,是它的指令、控制語句為系統(tǒng)提供了保障,有利于以后的修改和拓展,滿足客戶的要求。3.1.2 執(zhí)行可行性(1) 移動客戶端需500MHz及以上的處理器(2) 移動客戶端需Android2.3以上(3) 移動客戶端需256MB及以上的
26、ROM空間(4) 移動客戶端需256MB及以上的RAM空間(5) 移動客戶端需具有WiFi/GRPS網(wǎng)絡(luò)接收模塊,能正常連接到網(wǎng)絡(luò)(6) 服務(wù)端需具有P4 1.6GHz及以上的處理器(7) 服務(wù)端CPU:Pentium3 以上的處理器(8) 服務(wù)端存儲器: 512MB以上的RAM(9) 服務(wù)端其他: SQL serve 2005(10) 服務(wù)端下載JDK、AndroidSDK、Eclipse、ADT(11) 服務(wù)端安裝JDK并配置環(huán)境變量(12) 服務(wù)端運行SDK Manager.exe(13) 服務(wù)端安裝ADT插件 (14) 服務(wù)端關(guān)聯(lián)AndroidSD在配置好環(huán)境后,將客戶端代碼導(dǎo)入到Ec
27、lipse,服務(wù)端代碼裝入ADT,數(shù)據(jù)庫放在SQL Server,運行ADT,或裝入手機,注冊登錄即可進行聊天等其他程序功能,操作簡單。3.1.3 經(jīng)濟可行性開發(fā)此系統(tǒng)是畢業(yè)課程設(shè)計,所需的硬件普通電腦即可操作。軟件環(huán)境可以從網(wǎng)站下載,無需投入額外的設(shè)備購買等。系統(tǒng)成本主要集中在這個管理系統(tǒng)的開發(fā)與維護上,對用戶不造成經(jīng)濟負擔。本系統(tǒng)的使用節(jié)省人力,物力和財力,方便快捷。目標系統(tǒng)不復(fù)雜,開發(fā)的周期較短,人員經(jīng)濟支出少,而且極大限度的方便了用戶,也為系統(tǒng)的推廣創(chuàng)造了條件。所節(jié)省的大量人力、財力產(chǎn)生的效益將遠遠大于本系統(tǒng)的開發(fā)成本,所以從經(jīng)濟方面講開發(fā)此系統(tǒng)是可行的。3.1.4 法律可行性本系統(tǒng)不
28、涉及侵犯個人隱私和個人責任方面等的問題,使用本系統(tǒng)也不會引起法律方面的問題,所以開發(fā)本系統(tǒng)具有法律可行性。3.2 需求分析本系統(tǒng)通過用戶登陸客戶端、服務(wù)器響應(yīng)實現(xiàn)的每個功能。(1)服務(wù)器端處理用戶注冊處理用戶登錄處理用戶發(fā)送信息處理用戶得到信息處理用戶增刪改請求處理用戶退出(2)客戶端 用戶注冊界面及結(jié)果用戶登錄界面及結(jié)果用戶發(fā)送信息界面及結(jié)果用戶得到信息界面及結(jié)果用戶請求增刪改及結(jié)果用戶退出界面及結(jié)果圖3-1 即時通訊系統(tǒng)客戶端系統(tǒng)分析后,基本功能確定,使用者也確定。本設(shè)計的使用者為:用戶和系統(tǒng)管理人員。用戶:是即時通訊的主要使用者,對系統(tǒng)進行書寫發(fā)送接收信息等操作,但不能對系統(tǒng)進行管理。系
29、統(tǒng)管理人員:即時通訊系統(tǒng)的管理者,進行系統(tǒng)的日常維護,并進行系統(tǒng)的日常管理,對用戶及其相關(guān)信息進行各種管理,響應(yīng)用戶要求,比如添加、刪除、修改及查詢用戶及其相關(guān)信息,更改用戶的權(quán)限等。3.3 分析總結(jié)(1)實用性:讓用戶無障礙隨時可以進行登陸聊天,非常的實用。(2)操作簡單:系統(tǒng)頁面簡單明了,操作性強,只需根據(jù)文字進行點擊操作即可實現(xiàn)。(3)技術(shù)先進:最簡單的方法和頁面實現(xiàn)即時聊天系統(tǒng)。(4)安裝使用簡便:一切都是以簡單明了為設(shè)計精髓,所以安裝也是根據(jù)數(shù)字點擊安裝實用即可。(5)代碼可讀性好:因為作為初學(xué)者,所以代碼也是簡單,可讀性強,很容易理解。達到了見文知意。4 總體設(shè)計本系以實現(xiàn)方便快捷
30、的即時通訊系統(tǒng)為目標,遵照界面友好,操作簡單,數(shù)據(jù)庫的同步更新,功能完善的原則對即時通訊進行統(tǒng)合性設(shè)計。實現(xiàn)的評估系統(tǒng),應(yīng)按照需求,完成切合用戶評估辦法的系統(tǒng)設(shè)計。根據(jù)第二章所做的定義及分析,本課題在此基礎(chǔ)上利用JAVA,Android和Eclipse技術(shù)構(gòu)建基于Sql server數(shù)據(jù)庫的開發(fā)的、信息共享的、動態(tài)的交互模式平臺,該平臺基于安卓使用8??蛻舳送ㄟ^IP連接到服務(wù)器,或者通過域名連接。服務(wù)端通過ServerSocket對象將服務(wù)端的IP地址和端口綁定,然后客戶端可以通過同一個網(wǎng)絡(luò)的IP地址和端口訪問服務(wù)端程序。在TCP/IP環(huán)境下,服務(wù)器創(chuàng)建服務(wù)端監(jiān)聽Socket,第二步等待然后接
31、收請求,接收到請求后連接Socket。這時用戶創(chuàng)建連接Socket向服務(wù)器端發(fā)送請求。服務(wù)器與客戶建立連接,處理請求后用戶開始通信。通過用戶的輸入流給服務(wù)器,服務(wù)器接收后轉(zhuǎn)為輸入流給客戶轉(zhuǎn)發(fā)。完成后,關(guān)閉Socket。4.1 面向?qū)ο蟮脑O(shè)計面向?qū)ο蟮脑O(shè)計讓設(shè)計者容易著手于設(shè)計,遵循的原則,設(shè)計的框架等都比較合理。在編寫代碼前設(shè)計者們要多花時間考慮選用哪種設(shè)計模式和規(guī)則。面向?qū)ο蟮脑O(shè)計模式包含很多種,比如工廠模式、觀察者模式、MVC模式等,下面我們了解本次設(shè)計的MVC模式。客戶端是采用MVC模式,即是模型、視圖、控制。控制器連接了模型和視圖。MVC的設(shè)計是由輸入、處理和輸出強制分開,它們個字處理
32、自己的任務(wù)。模型是根據(jù)用戶要求設(shè)計的,它擁有最多的處理任務(wù)。通過模型返回的數(shù)據(jù)與數(shù)據(jù)格式無關(guān),它是中立的。模型寫一次就可以被其他視圖選用,所以減少了制作的重復(fù),非常省力。 視圖是為了讓美觀,讓用戶用著舒服滿意。所以很多公司會專門招聘UI設(shè)計師。視圖沒有實質(zhì)性的東西,它簡單的提供一些控制接口。提供模型和控制器是使用9??刂破魇菍蛻舳说幕貞?yīng)。在安卓應(yīng)用中,客戶通過Activity完成請求,控制端響應(yīng)客戶請求10。(1)系統(tǒng)服務(wù)器端流程圖系統(tǒng)流程如圖4.1所示,啟動服務(wù)器后判斷啟動信息,符合信息后進入下一步登錄客戶端,如果有賬號直接登錄,如果沒有賬號注冊登錄。登錄服務(wù)器,退出服務(wù)器后退出。開始否啟
33、動服務(wù)器判斷啟動信息是啟動客戶端是注冊用戶判斷登陸信息登錄服務(wù)器退出服務(wù)器退出圖4.1 系統(tǒng)服務(wù)器端流程圖(2)系統(tǒng)客戶端流程圖圖4.2 系統(tǒng)客戶端流程圖4.2 數(shù)據(jù)庫設(shè)計系統(tǒng)定義四個表:yq_user、yq_group、yq_group_member、yq_buddy。(1)yq_user是用戶的基本信息。(2)yq_group是組的基本信息。(3)yq_group_member是組成員信息。(4) yq_buddy是用戶好友的基本信息。4.2.1 yq_useryq_user是我們這個設(shè)計程序的用戶,下面定義了它的常用信息,比如說賬號、密碼、消息、頭像、性別和年齡等。有一些可以為空,有些則
34、不能為空值,比如說賬號。因為其他人要搜尋某用戶時使用賬號搜尋。但是性別、年齡就可以為空值,對此不作要求。其中Uaccount為主鍵,通過賬號,查看其他的各種信息。表4.1 yq_user變量名稱類型空間是否為空Uaccountint/主鍵Upasswordnvarchar20NOT NULLUnicknvarchar20NOT NULLUavatarint/NULLUtrendsnvarchar50NULLUsexnvarchar10NULLUageint/NULLUlevint/NULLUisonlineint/NULLUtimenvarchar30NULL4.2.2 yq_groupyq_
35、group是yq的群的設(shè)置數(shù)據(jù)庫信息,它的主鍵為gaccount,其他信息為:信息、管理者、數(shù)量,與yq_user類似,它也是某些變量可以為空,某些變量不能為空。表4.2 yq_group變量名稱類型空間是否為空gaccountint/主鍵gnicknvarchar50NOT NULLgtrendsnvarchar50NULLgmanagerint/NOT NULLgcountint/NOT NULL4.2.3 yq_group_memberyq_ group_member 的設(shè)置比較簡單,在主鍵群賬號后,只設(shè)置了群成員,這兩個變量都不能為空。說明:gmember的類型為int型,是根據(jù)賬號來
36、的,與gaccount關(guān)系為多對一。表4.3 yq_group_member變量名稱類型空間是否為空gaccountint/主鍵gmemberint/NOT NULL4.2.4 yq_buddyyq_buddy是指用戶的好友,定義buddy時我們也只是定義了賬戶和朋友兩個變量。說明:bbuddy是int類型,與baccount是多對一關(guān)系。表4.4 yq_buddy變量名稱類型空間是否為空baccountint/主鍵bbuddyint/NOT NULL即時通訊系統(tǒng)4.3 客戶端和服務(wù)器端設(shè)計服務(wù)器端客戶端用戶注冊登錄好友添加刪除用戶信息更新好友信息查詢好友消息轉(zhuǎn)發(fā)好友信息請求實時聊天新信息請求
37、注冊登錄請求好友添加刪除圖4.3 系統(tǒng)實現(xiàn)層次圖 根據(jù)圖4.3系統(tǒng)實現(xiàn)層次圖顯示,即時通訊系統(tǒng)的實現(xiàn)是通過客戶端和服務(wù)器端分別實現(xiàn)的,客戶端進行注冊登錄請求,服務(wù)器端響應(yīng)接收客戶端發(fā)來的注冊登錄信息。登陸成功后,可進行好友添加刪除請求,服務(wù)器端回應(yīng)好友添加刪除包。當客戶端發(fā)送新信息時,服務(wù)器端進行用戶信息更新。客戶端進行好友信息請求時服務(wù)器端給與回應(yīng)??蛻舳诉M行實時聊天時,服務(wù)器端進行好友消息轉(zhuǎn)發(fā)。4.3.1 客戶端設(shè)計 根據(jù)客戶端實現(xiàn)的功能,將代碼分為common和client兩個文件,common功能是對用戶的屬性定義,時間,聊天消息進行編輯。client包括model和view。其中,v
38、iew創(chuàng)建RegisterActivity即注冊活動;LoginActivity為登陸活動;BuddyActivity為好友活動;ChatActivity為聊天活動;GroupActivity為群聊天,延伸更多功能為MoreActivity。4.3.2 服務(wù)器端設(shè)計服務(wù)器端的設(shè)計包括common和server。Common里包括用戶、消息、消息類型。server里包括dao數(shù)據(jù)庫(包括用戶數(shù)據(jù)庫、群數(shù)據(jù)庫)、model模板(轉(zhuǎn)發(fā)用戶信息、管理用戶、服務(wù)線程、服務(wù)器)、view視圖(MainFrame)。5 詳細設(shè)計5.1 客戶端5.1.1 用戶注冊(1)數(shù)據(jù)庫中的數(shù)據(jù)讀取,輸入要求的用戶名、密
39、碼,服務(wù)器端會保存并且用戶登錄時會驗證匹配。(2)客戶端請求注冊客戶端使用注冊頁面注冊,根據(jù)注冊頁面要求,輸入十個以內(nèi)的數(shù)字作為賬號,3-13為的數(shù)字作為密碼,輸入賬號名,點擊男或女完成注冊。定義一個RegisterActivity類繼承Activity,定義一個字符串sex,系統(tǒng)默認性別為男。編輯賬戶、密碼、信息符合要求后性別為女。進入界面調(diào)用Activity的onCreate()方法,完成窗口初始化,讓組件相對應(yīng)的ID對應(yīng)起來當被點擊就會被回調(diào)。設(shè)置按鈕觸發(fā),創(chuàng)建監(jiān)聽器OnClickListener(),User實例化javabin,獲取后賦值賬號、密碼、用戶信息、動態(tài)、默認頭像為4,新注
40、冊的用戶沒有動態(tài),用戶默認時間為系統(tǒng)登錄時間。accountEt、passwordEt.為空,則提示賬戶或密碼不能為空。toString()是在Object里面就有的方法,在不同的子類里面有不一樣的實現(xiàn)方法。注冊成功后跳轉(zhuǎn)到RegisterActivity界面。以下是代碼:public class RegisterActivity extends Activity /注冊活動繼承活動;String sex="男"/字符串 sex定義為“男”;protected void onCreate(Bundle savedInstanceState) /初次進入界面時會調(diào)用的方法;s
41、uper.onCreate(savedInstanceState);/調(diào)用Activity的onCreate()方法,完成窗口初始化;requestWindowFeature(Window.FEATURE_NO_TITLE);/ 啟用窗體的擴展特性;this.setContentView(R.layout.activity_register);/設(shè)置這個這句話所在的Activity采用R.layout下的activity_register布局文件進行布局;findViewById(R.id.rigister_btn_register).setOnClickListener(new OnClic
42、kListener()public void onClick(View arg0) /在線;EditText accountEt=(EditText) findViewById(R.id.register_account);/編輯賬號;EditText passwordEt=(EditText) findViewById(R.id.register_password);/編輯密碼;EditText nickEt=(EditText) findViewById(R.id.register_nick);/編輯信息;RadioGroup group = (RadioGroup)findViewByI
43、d(R.id.register_radiogroup);/編輯動態(tài);group.setOnCheckedChangeListener(new OnCheckedChangeListener() /編輯好友;public void onCheckedChanged(RadioGroup arg0,int id) if(id=R.id.register_radio_nv)/如果符合id;sex="女"/性別為女;);if(accountEt.getText().equals("") | passwordEt.getText().equals("&q
44、uot;)/如果賬號或者密碼為空;Toast.makeText(RegisterActivity.this, "賬號或密碼不能為空!", Toast.LENGTH_SHORT).show();/提示:“賬號或密碼不能為空!”;else User user=new User();/否則 創(chuàng)建賬號成功;user.setAccount(Integer.parseInt(accountEt.getText().toString();/用戶賬號;user.setPassword(passwordEt.getText().toString();/用戶密碼;user.setNick(ni
45、ckEt.getText().toString();/用戶信息;user.setTrends("該用戶暫時沒有動態(tài)");/用戶動態(tài);user.setSex(sex);/用戶性別;user.setAvatar(4);/用戶頭像;user.setLev(0);/用戶等級;user.setAge(0);/用戶年齡;user.setTime(MyTime.geTimeNoS();/用戶建立時間;user.setOperation("register");/用戶的“注冊”操作; boolean b=new YQClient(RegisterActivity.thi
46、s).sendRegisterInfo(user);/b的值是否等于注冊時輸入的信息;if(b)/如果是/注冊成功跳轉(zhuǎn)到登陸Toast.makeText(RegisterActivity.this, "恭喜你,注冊成功 !", Toast.LENGTH_SHORT).show();/頁面顯示:"恭喜你,注冊成功 !"startActivity(new Intent(RegisterActivity.this,LoginActivity.class);/開始登陸界面登陸;);5.1.2 用戶登錄打開YQsrcorgyhnyqclientmodel里YQCl
47、ient,看用戶名是否存在,如果存在繼續(xù)下一步,如果不存在則不顯示。onCreate是Activity創(chuàng)建時被系統(tǒng)調(diào)用,是一個Activity生命周期的開始。Bundle類型數(shù)據(jù)是以主鍵數(shù)值的形式存儲數(shù)據(jù)。Activity結(jié)束前,狀態(tài)以主鍵數(shù)值的形式放在savedInstanceState中;這樣在一個Activity被創(chuàng)建時,就從onCreate的參數(shù)saveInsanceState中獲得狀態(tài)數(shù)據(jù)。狀態(tài)參數(shù)可以讓聊天記錄保存,下次啟動時可以繼續(xù)聊天。requestWindowFeature啟動窗口,加載布局后,輸入注冊的賬號和密碼。獲取到界面上的某一個button賦值給聲明的Button類型
48、的變量,定義一個public類run,定義一個布爾類型b如果賬號密碼與注冊賬號相符,用戶可直接登錄,如果賬號或密碼某項為空,顯示賬號或密碼不能為空!其中toast是主要管理消息的提示,makeText()為顯示信息。Toast.LENGTH_LONG,是你指你提示消息,顯示的時間,這個是稍微長點兒,對應(yīng)的另一個是ToastLENGTH_SHORT,這個時間短點兒,本設(shè)計中設(shè)置為一秒。另外show()表示toast消息提醒,系統(tǒng)運行到這兒顯示。系統(tǒng)通過LoginActivity.java用戶登陸界面,用戶登陸程序代碼如下:protected void onCreate(Bundle savedI
49、nstanceState) /響應(yīng)窗口;super.onCreate(savedInstanceState);/調(diào)用onCreate屬性;requestWindowFeature(Window.FEATURE_NO_TITLE);/啟用窗口的擴展性; setContentView(R.layout.activity_login); /加載布局; accountEt=(EditText) findViewById(R.id.et_account);/賬號等于編輯的賬號; passwordEt=(EditText) findViewById(R.id.et_password);/密碼等于編輯的密碼
50、; Button btnLogin=(Button) findViewById(R.id.btn_login);/ 獲取到界面上的某一個button賦值給聲明的Button類型的變量; btnLogin.setOnClickListener(new OnClickListener()/創(chuàng)新在線聽眾;public void onClick(View arg0) /設(shè)置點擊;if(accountEt.getText().equals("") | passwordEt.getText().equals("")/如果賬號或者密碼為空;Toast.makeText
51、(LoginActivity.this, "賬號或密碼不能為空!", Toast.LENGTH_SHORT).show();/提示"賬號或密碼不能為空!";else/否則;dialog = ProgressDialog.show(LoginActivity.this, null, "正在登陸中 ", true, true);/顯示"正在登陸中 ";handler.post(new Runnable()/處理運行;public void run() /定義run;boolean b=login (Integer.pa
52、rseInt(accountEt.getText().toString(), passwordEt.getText ().toString();/判斷b等于賬號和密碼;if(b)/如果是;Message m=new Message(); /定義一個消息; m.what=1; handler.sendMessage(m);/轉(zhuǎn)到主界面;startActivity(new Intent(LoginActivity.this, MainActivity.class);/轉(zhuǎn)到開始界面;else /否則;Toast.makeText(LoginActivity.this, "登陸失??!&quo
53、t;, /提示“登錄失敗”;Toast.LENGTH_SHORT).show();/顯示時間為1秒;dialog.dismiss();/關(guān)閉對話框;5.1.3 用戶實現(xiàn)的部分功能(1)用戶打開聊天頁面后,有以下幾個功能:操作、發(fā)起會話、刪除好友、查看好友資料。ContextMenu類似于電腦上的右鍵。menu.add表示目錄添加,這個部分有三個目錄。代碼如下:public void onCreateContextMenu(ContextMenu menu,View arg1, ContextMenuInfo arg2) /目錄;menu.setHeaderTitle("操作"
54、;);/功能操作信息;menu.add(0,0,0,"發(fā)起會話");/位置0,0,0,目錄添加發(fā)起臨時會話功能;menu.add(0,1,0,"刪除好友");/位置0,1,0, 目錄添加"刪除好友"功能;menu.add(0,2,0,"查看好友資料");位置0,2,0, 目錄添加"查看好友資料"功能;(2)刪除好友功能代碼如下:給listview設(shè)置Listener,當點擊刪除后直接刪除,刪除后應(yīng)當給服務(wù)器發(fā)送一個刪除好友的包,服務(wù)器端更新數(shù)據(jù)庫中的數(shù)據(jù)。switch和case語句是切換語句,用
55、break斷開。在case0中,聊天頁面打開后,暫時存儲了Avatar、Account、Nick,開始聊天界面;case1中通過向服務(wù)器端發(fā)送一個刪除好友的包實現(xiàn)刪除好友。定義如果賬號相等于設(shè)置賬號,則服務(wù)器端移除。case 0:/打開聊天頁面;Intent intent=new Intent(BuddyActivity.this,ChatActivity.class);/實例化intent;intent.putExtra("avatar", temp.getAvatar();/avatar的鍵值;intent.putExtra("account",temp.getAccount();/account的鍵值;intent.putExtra("nick", temp.getNick();/nick的鍵值;startActivity(intent);/開始活動;break;/切斷
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大學(xué)中藥學(xué)(中藥資源開發(fā))試題及答案
- 2025年高職物聯(lián)網(wǎng)工程技術(shù)(物聯(lián)網(wǎng)組網(wǎng))試題及答案
- 2025年大學(xué)天文學(xué)(宇宙學(xué))試題及答案
- 2025年高職酒店管理與數(shù)字化運營(餐飲運營管理)試題及答案
- 司年產(chǎn)9800萬副眼鏡配件技改項目可行性研究報告模板-申批備案
- 2026學(xué)年上海市文來中學(xué)(高中)教師招聘備考題庫及答案詳解(易錯題)
- 2025新中產(chǎn)健康生活趨勢報告
- 2026中國科學(xué)院機關(guān)招聘應(yīng)屆畢業(yè)生5人備考題庫及一套完整答案詳解
- 2025浙江麗水市蓮都區(qū)土地和房屋征收工作指導(dǎo)中心招聘見習生1人備考題庫及一套參考答案詳解
- 2022-2023學(xué)年廣東深圳龍崗區(qū)九年級上學(xué)期階段性訓(xùn)練英語試題及答案
- 山西省臨汾市2025-2026年八年級上物理期末試卷(含答案)
- (2025年)員工安全培訓(xùn)考試試題(含答案)
- GB/T 36132-2025綠色工廠評價通則
- 2025-2026學(xué)年北師大版八年級數(shù)學(xué)上冊期末復(fù)習卷(含答案)
- 2026四川成都九聯(lián)投資集團有限公司招聘12人筆試參考題庫及答案解析
- 【二下數(shù)學(xué)】計算每日一練60天(口算豎式脫式應(yīng)用題)
- 殘疾人服務(wù)與權(quán)益保護手冊(標準版)
- 2025年1月-12月時事政治歸納總結(jié)(備考必背)
- 2025年安徽省普通高中學(xué)業(yè)水平合格性考試英語試卷(含答案)
- (高清版)DG∕TJ 08-2068-2019 超高壓噴射注漿技術(shù)標準
- 運城市大數(shù)據(jù)項目可研報告(參考范文)
評論
0/150
提交評論