仿QQ聊天系統(tǒng)課程設(shè)計(jì)_第1頁
仿QQ聊天系統(tǒng)課程設(shè)計(jì)_第2頁
仿QQ聊天系統(tǒng)課程設(shè)計(jì)_第3頁
仿QQ聊天系統(tǒng)課程設(shè)計(jì)_第4頁
仿QQ聊天系統(tǒng)課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

目錄緒論 1一.需求分析 11.1軟件功能需求分析 21.2安全需求分析 2二.總體設(shè)計(jì) 32.1軟件結(jié)構(gòu)圖 32.2功能描述 32.2.1注冊功能概要 42.2.2登錄功能概要 42.2.3聊天功能概要 52.3安全設(shè)計(jì) 6三.?dāng)?shù)據(jù)庫設(shè)計(jì) 63.1概念結(jié)構(gòu)設(shè)計(jì) 63.2邏輯結(jié)構(gòu)設(shè)計(jì) 73.3物理結(jié)構(gòu)設(shè)計(jì) 7四.詳細(xì)設(shè)計(jì) 84.1用戶聊天模塊總體流程圖 84.2服務(wù)端模塊 84.3客戶端模塊 9五.編碼 14六.結(jié)論 16學(xué)習(xí)體會 17致謝 17參考文獻(xiàn) 17緒論隨著現(xiàn)代技術(shù)的不斷輸入和信息化的廣泛普及,移動網(wǎng)絡(luò)作為一種新興事物,在近些年得到了前所未有的普及和深入,移動網(wǎng)絡(luò)上的各種應(yīng)用層出不窮,給各個(gè)階層、各個(gè)年齡段的用戶提供了不同的個(gè)性化的服務(wù)。而現(xiàn)代中小型企業(yè)的領(lǐng)導(dǎo)認(rèn)識到進(jìn)一步提高企業(yè)信息化的必要性。為使企業(yè)能在瞬息萬變的信息時(shí)代生存下去,適應(yīng)激烈的市場競爭,現(xiàn)代企業(yè)要求加強(qiáng)員工之間的交流和通信能力,尤其是領(lǐng)導(dǎo)和員工之間的共同能力,實(shí)時(shí)的交流系統(tǒng)就是在這種條件下誕生的。在這個(gè)信息化時(shí)代,手機(jī)已成為繼固話之后最為通俗的交流工具,“聊天”成了生活的必需品,這就有了系統(tǒng)下人與人之間的多樣會話方式—QQ聊天。傳統(tǒng)會話聊天或許是面對面閑話家?;蛟S是通過打電話進(jìn)行交流,但都存在各種不便及弊端。而手機(jī)QQ,在手機(jī)系統(tǒng)下,占用手機(jī)相對很小的空間,系統(tǒng)的記錄了QQ好友的信息,不僅突破了各種條件的束縛,減輕了機(jī)主的負(fù)擔(dān),更方便了使用者的通訊交流。

綜上所述,本課題主要研究基于Android的移動聊天系統(tǒng),以更好的用戶體驗(yàn)性為目的開發(fā)出界面簡潔,用戶易操作的移動即時(shí)通信聊天工具。該聊天工具的主要功能:用戶注冊,登錄,好友一對一聊天,添加新好友,修改個(gè)人信息等。在該即時(shí)通信工具中利用Bmob實(shí)現(xiàn)Android端與Bmob服務(wù)端的數(shù)據(jù)操作。Bmob對數(shù)據(jù)的增刪改查找做了很好地封裝,以及其批量的處理??蛻舳酥g通過服務(wù)器對數(shù)據(jù)的轉(zhuǎn)發(fā)實(shí)現(xiàn)相互通信。需求分析隨著經(jīng)濟(jì)全球化的推進(jìn)以及企業(yè)激烈的競爭,改善企業(yè)內(nèi)部及整個(gè)供應(yīng)鏈各環(huán)節(jié)的管理、調(diào)度資源配置,迅速適應(yīng)客戶的新需求和市場新機(jī)遇,是企業(yè)贏得競爭勝利的決定性因素。需求分析是軟件分析中的一個(gè)重要步驟。它的基本任務(wù)是要準(zhǔn)確地分析出系統(tǒng)應(yīng)用者的需要,以及系統(tǒng)目標(biāo)必須具備哪些功能。這些功能必須準(zhǔn)確地,完整地體現(xiàn)出用戶的要求。1.1軟件功能需求分析通過對用戶需求的市場調(diào)查的分析,確定反應(yīng)用戶需求的系統(tǒng)邏輯模型,把整個(gè)設(shè)計(jì)劃分成3個(gè)單元,分別是程序啟動、用戶界面、后臺服務(wù)。使用Android和java編程語言及網(wǎng)絡(luò)數(shù)據(jù)庫相結(jié)合,編寫一個(gè)基于android端的移動聊天系統(tǒng)軟件。這個(gè)系統(tǒng)提供多個(gè)用戶及時(shí)并發(fā)通信的平臺。未注冊用戶可以注冊成系統(tǒng)成員,已注冊用戶可以通過登錄進(jìn)入聊天系統(tǒng)。在系統(tǒng)中用戶可以選擇與某一個(gè)用戶聊天,用戶可以查找好友或附近的人,可以添加好友或把好友加黑名單等。用戶注冊:用戶在注冊界面填入相關(guān)正確信息后,后臺對其進(jìn)行處理。用戶登錄:用戶輸入自己的QQ帳號及密碼后,點(diǎn)擊登錄,后臺對其進(jìn)行驗(yàn)證,以及好友的查找,登錄成功后返回該用戶的會話界面。聊天:用戶選定聊天對象后,對其發(fā)送信息,信息將由后臺轉(zhuǎn)發(fā)給選定的聊天對象,進(jìn)行,提示,顯示。后臺運(yùn)行用戶可以退出主界面,將聊天軟件在后臺運(yùn)行,當(dāng)有消息傳入時(shí),消息會用廣播的形勢顯示。后臺管理:對用戶的管理。1.2安全需求分析由于Android系統(tǒng)自身具備的開放源碼的特征,它的安全性能成為信息安全領(lǐng)域研究的一個(gè)重要課題。Android的安全性能主要體現(xiàn)在兩個(gè)方面:Android的系統(tǒng)安全和數(shù)據(jù)安全。Android系統(tǒng)安全是指智能終端本身的安全,是對操作系統(tǒng)的保護(hù),防止未授權(quán)的訪問及對授權(quán)用戶服務(wù)的拒絕或?qū)ξ词跈?quán)用戶服務(wù)的允許,包括行為檢測、記錄等措施。Android的數(shù)據(jù)安全指確保存儲數(shù)據(jù)完整性、合法性二個(gè)方面,要求做到系統(tǒng)正確地傳輸數(shù)據(jù),授權(quán)程序順利地讀取數(shù)據(jù)。

Android安全中的一個(gè)重要的設(shè)計(jì)點(diǎn)是在默認(rèn)的情況下應(yīng)用沒有權(quán)限執(zhí)行對其他應(yīng)用程序、操作系統(tǒng)或用戶的有害操作,這些操作包括讀取用戶的隱私數(shù)據(jù),訪問網(wǎng)絡(luò),保持設(shè)備活動等等,應(yīng)用程序的進(jìn)程是一個(gè)安全的黑盒子,在沒有給它權(quán)限的時(shí)候它不能干擾其他應(yīng)用程序。總體設(shè)計(jì)系統(tǒng)采用流行的C/S結(jié)構(gòu)模式。系統(tǒng)的分析設(shè)計(jì)采用面向?qū)ο蟮募夹g(shù),應(yīng)用Visio等工具進(jìn)行輔助設(shè)計(jì)。2.1軟件結(jié)構(gòu)圖退出退出聯(lián)系人附近的人添加好友設(shè)置消息提醒個(gè)人資料黑名單注冊登錄會話與陌生人與好友 圖2.1軟件結(jié)構(gòu)圖2.2功能描述進(jìn)入該軟件,進(jìn)入登錄界面,如果沒有賬號,則可以點(diǎn)擊立即注冊,進(jìn)入注冊界面進(jìn)行注冊,登錄進(jìn)入主界面,顯示會話、聯(lián)系人、設(shè)置,通過選擇相應(yīng)菜單進(jìn)行相關(guān)操作。2.2.1注冊功能概要輸入注冊需要的信息,且保證正確參與者:用戶執(zhí)行者:用戶前提條件:開啟程序,進(jìn)入注冊界面用戶注冊流程圖:開始開始注冊成功存儲用戶信息用戶信息注冊填寫個(gè)人信息驗(yàn)證信息完整性驗(yàn)證信息格式否圖2.2.1用戶注冊流程圖2.2.2登錄功能概要判斷輸入信息格式服務(wù)器驗(yàn)證輸入信息跳轉(zhuǎn)進(jìn)入好友列表界面登錄流程圖:服務(wù)器驗(yàn)證服務(wù)器驗(yàn)證登錄成功判斷QQ號及密碼是否為空進(jìn)入輸入QQ號及密碼失敗成功圖2.2.2登錄功能流程圖2.2.3聊天功能概要用戶點(diǎn)擊聯(lián)系人列表中的一個(gè)好友時(shí),進(jìn)入聊天界面在輸入框輸入信息,點(diǎn)擊發(fā)送按鈕,發(fā)送信息好友回復(fù)消息是在該聊天頁面顯示當(dāng)有好友發(fā)消息過來時(shí),系統(tǒng)會通過Toast提示當(dāng)QQ在后臺運(yùn)行時(shí)有好友發(fā)送消息過來時(shí),系統(tǒng)會通過廣播的形勢告訴用戶用戶聊天后退出聊天界面后,聊天信息保留用戶聊天模塊總體流程圖:接收信息,處理,轉(zhuǎn)發(fā)(根據(jù)賬號)用戶B接收信息,處理,轉(zhuǎn)發(fā)(根據(jù)賬號)用戶B成功登錄/返回主界面點(diǎn)擊好友進(jìn)入聊天界面輸入信息用戶A成功登錄/返回主界面點(diǎn)擊好友進(jìn)入聊天界面輸入信息傳輸好友回復(fù)的消息傳輸好友回復(fù)的消息封裝信息進(jìn)行傳輸封裝信息進(jìn)行傳輸圖2.2.3用戶聊天模塊總體流程圖2.3安全設(shè)計(jì)通過為不同的用戶設(shè)計(jì)不同的用戶視圖,和為每一個(gè)登錄的用戶設(shè)置密碼來實(shí)現(xiàn)數(shù)據(jù)庫的安全設(shè)計(jì)要求。三.?dāng)?shù)據(jù)庫設(shè)計(jì)3.1概念結(jié)構(gòu)設(shè)計(jì)好友賬號好友賬號消息編號聊天注冊時(shí)間性別賬號昵稱會話密碼注冊時(shí)間性別賬號昵稱會話密碼發(fā)送/接收消息時(shí)間好友頭像消息內(nèi)容圖3.1總體E-R圖3.2邏輯結(jié)構(gòu)設(shè)計(jì)用戶信息(用戶編號,用戶賬號,用戶密碼,性別,昵稱,頭像)會話信息(消息編號,好友賬號,好友頭像,發(fā)送/接收消息時(shí)間,消息內(nèi)容)3.3物理結(jié)構(gòu)設(shè)計(jì)表3-1用戶信息-Users明細(xì)字段類型主鍵外鍵唯一可為空用戶編號objectIdString是否賬號UsernameString是是是否密碼PasswordString否否性別sexbool是昵稱nickstring頭像表3-2會話信息-Bmobmsg明細(xì)字段類型主鍵外鍵唯一可為空消息編號messageIdstring是否好友賬號Usernamestring是是是否好友頭像否是發(fā)送/接收消息時(shí)間S/Rtimedata是是消息內(nèi)容Contentstring否是詳細(xì)設(shè)計(jì)4.1用戶聊天模塊總體流程圖接收信息,處理,轉(zhuǎn)發(fā)(根據(jù)賬號)接收信息,處理,轉(zhuǎn)發(fā)(根據(jù)賬號)用戶B成功登錄/返回主界面點(diǎn)擊好友進(jìn)入聊天界面輸入信息用戶A成功登錄/返回主界面點(diǎn)擊好友進(jìn)入聊天界面輸入信息傳輸好友回復(fù)的消息傳輸好友回復(fù)的消息 封裝信息進(jìn)行傳輸封裝信息進(jìn)行傳輸圖4.1.1用戶聊天模塊總體流程圖4.2服務(wù)端模塊在該即時(shí)通信工具中利用Bmob實(shí)現(xiàn)Android端與Bmob服務(wù)端的數(shù)據(jù)操作。Bmob對數(shù)據(jù)的增刪改查做了很好地封裝,以及其批量的處理。客戶端之間通過服務(wù)器對數(shù)據(jù)的轉(zhuǎn)發(fā)實(shí)現(xiàn)相互通信。服務(wù)端具體功能:注冊信息:自動分配10位對象標(biāo)識,并保存該用戶信息,同時(shí)將信息返回給客戶端。登錄信息:檢查登錄信息是否正確,并向客戶端返回登錄信息。如信息正確,則用戶可以成功登錄,若登錄信息不正確,則會提示是哪種登錄錯(cuò)誤聊天信息:轉(zhuǎn)發(fā)給消息指定的用戶。用戶間的聯(lián)系:將各用戶間的關(guān)系保存在服務(wù)器端,可以在服務(wù)器端看出所以QQ用戶間的關(guān)系。4.3客戶端模塊客戶端具體功能登錄功能:建立與服務(wù)器的連接并登錄,能顯示登錄錯(cuò)誤信息。界面顯示:將好友顯示在聯(lián)系人列表中,并可以通過點(diǎn)擊進(jìn)入會話界面,進(jìn)行與好友的聊天聊天功能:當(dāng)好友發(fā)送消息時(shí)顯示在會話界面。用戶也同時(shí)可以在輸入框中輸入相應(yīng)信息點(diǎn)擊發(fā)送與好友聊天。聊天紀(jì)錄:能保存聊天紀(jì)錄,并能察看聊天紀(jì)錄。信息提示:系統(tǒng)彈出信息提示到來信息,并有聲音提示。發(fā)送端提示聊天的對方。后臺運(yùn)行:當(dāng)用戶將客戶端進(jìn)行后臺運(yùn)行時(shí),如果有消息傳輸過來,系統(tǒng)會直接通過廣播的形勢顯示消息的來源以及內(nèi)容。用戶在客戶端點(diǎn)擊應(yīng)用程序圖標(biāo)后啟動應(yīng)用如下圖:圖4.3.1客戶端啟動界面注冊登錄以后就進(jìn)入主界面,界面下方有會話、聯(lián)系人、設(shè)置選項(xiàng),通過選擇相應(yīng)菜單進(jìn)入相應(yīng)功能界面,聯(lián)系人界面如下圖所示:圖4.3.2聯(lián)系人界面通過點(diǎn)擊聯(lián)系人右面的加號添加好友并進(jìn)入查找好友界面,前提是服務(wù)器端存在此用戶才能搜索成功,例如搜索456用戶,如下圖所示:圖4.3.3查找好友界面點(diǎn)擊添加按鈕,則ymm用戶向456用戶發(fā)送好友添加申請,如果456用戶在登錄狀態(tài)則會收到此申請,如果同意ymm的請求添加好友申請,則可以單擊同意按鈕,如下圖:圖4.3.4好友添加請求界面單擊同意按鈕,則同意ymm的好友添加請求,否則忽視此條好友添加申請消息:圖4.3.5同意好友請求界面同意ymm的申請后,則ymm用戶就是自己的好友了,可以與ymm進(jìn)行對話圖4.3.6與ymm聊天界面退出456賬號,登錄ymm賬號查看,此時(shí)可以看到456用戶給自己發(fā)送的消息提醒條數(shù)并可查看相關(guān)聊天信息圖4.3.7456用戶收到回話提醒及查看消息編碼ChatActivity.java用戶聊天代碼/***聊天界面*/publicclassChatActivityextendsActivityBaseimplementsOnClickListener, IXListViewListener,EventListener{ privateButtonbtn_chat_emo,btn_chat_send,btn_chat_add,btn_chat_keyboard,btn_speak,btn_chat_voice; XListViewmListView; EmoticonsEditTextedit_user_comment; StringtargetId=""; BmobChatUsertargetUser; privatestaticintMsgPagerNum; privateLinearLayoutlayout_more,layout_emo,layout_add; privateViewPagerpager_emo; privateTextViewtv_picture,tv_camera,tv_location; //組裝聊天對象 targetUser=(BmobChatUser)getIntent().getSerializableExtra("user"); targetId=targetUser.getObjectId();// BmobLog.i("聊天對象:"+targetUser.getUsername()+",targetId="http:// +targetId); //注冊廣播接收器 initNewMessageBroadCast(); initView(); } /***加載消息歷史,從數(shù)據(jù)庫中讀出*/ privateList<BmobMsg>initMsgData(){ List<BmobMsg>list=BmobDB.create(this).queryMessages(targetId,MsgPagerNum); returnlist; } /***界面刷新*/ privatevoidinitOrRefresh(){ if(mAdapter!=null){ if(MyMessageReceiver.mNewNum!=0){//用于更新當(dāng)在聊天界面鎖屏期間來了消息,這時(shí)再回到聊天頁面的時(shí)候需要顯示新來的消息 intnews=MyMessageReceiver.mNewNum;//有可能鎖屏期間,來了N條消息,因此需要倒敘顯示在界面上 intsize=initMsgData().size(); for(inti=(news-1);i>=0;i--){ mAdapter.add(initMsgData().get(size-(i+1)));//添加最后一條消息到界面顯示 } mListView.setSelection(mAdapter.getCount()-1); }else{ mAdapter.notifyDataSetChanged(); } }else{ mAdapter=newMessageChatAdapter(this,initMsgData()); mListView.setAdapter(mAdapter); } }publicvoidonSuccess(){ ShowLog("發(fā)送成功"); ((BmobMsg)values) .setStatus(BmobConfig.STATUS_SEND_SUCCESS); parentV.findViewById(R.gress_load).setVisibility( View.INVISIBLE); parentV.findViewById(R.id.iv_fail_resend) .setVisibility(View.INVISIBLE); parentV.findViewById(R.id.tv_send_status) .setVisibility(View.VISIBLE); ((TextView)parentV.findViewById(R.id.tv_send_status)) .setText("已發(fā)送"); }/***新消息廣播接收者**/ privateclassNewBroadcastReceiverextendsBroadcastReceiver{ @Override publicvoidonReceive(Contextcontext,Intentintent){ Stringfrom=intent.getStringExtra("fromId"); StringmsgId=intent.getStringExtra("msgId"); StringmsgTime=intent.getStringExtra("msgTime"); //收到這個(gè)廣播的時(shí)候,message已經(jīng)在消息表中,可直接獲取 BmobMsgmsg=BmobChatManger.getInstance(ChatActivity.this).getMessage(msgId,msgTime); if(!from.equals(targetId))//如果不是當(dāng)前正在聊天對象的消息,不處理 return; //添加到當(dāng)前頁面 mAdapter.add(msg); //定位 mListView.setSelection(mAdapter.getCount()-1); //取消當(dāng)前聊天對象的未讀標(biāo)示 BmobDB.create(ChatActivity.this).resetUnread(targetId); //記得把廣播給終結(jié)掉 abortBroadcast(); }

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論