[源碼和文檔分享]基於java 的仿QQ聊天工具


一 需求分析

本系統是基於java開發的聊天室。有用戶注冊、用戶登陸、修改密碼、忘記密碼、添加好友、用戶聊天、群聊功能。如果服務器還沒有啟動,則客戶端是不可以登陸、注冊、忘記密碼,如果在運行過程中,服務器斷開則系統會有提示,聊天對象如果下線發送消息后會有彈窗提示,添加好友后有是否添加好友成功提示。

二 概要設計

在客戶端:當用戶登錄后,生成唯一的socket, 存放在Client實體類中,在整個客戶端就一個Client類和一個socket。有一個窗口控制器——ChatUIList,用來記錄用戶和好友聊天框是否打開,當收到消息后,首先在ChatUIList中查詢是否有好友的窗口,如果沒有則新建聊天框彈出並顯示消息,如果存在與好友的窗口則將消息追加到原聊天框並重新着重顯示該窗口。在客戶端還擁有一個“命令控制中心”——ChatTread類,在ChatTread類中判斷並處理來自服務器中的命令(消息),如果是“message”那么客戶端收到是來自好友的消息,如果是“requeste_add_friend”則是好友申請命令,類似有“WorldChat”,“accept_add_friend”,“refuse_to_add”,“changepwd”等命令。

在服務端:有多個socket,用SockList管理連接成功的用戶名及其socket。同樣在服務端也有一個“命令控制中心”——ServerTread類,它負責處理來自客戶端的命令(消息),判斷命令的類型,並正確處理他們,給出處理結果和判斷是否處理成功,將處理后的命令轉發給正確的用戶。

功能設計如下:

  • 注冊功能

    設計一個注冊UI(RegisterUI)類,在打開程序后,模仿QQ在左下方有一個注冊按鈕,點擊注冊按鈕后彈出注冊頁面,用戶填完必填信息后由客戶端將命令發送給服務端(如果服務器在線),服務器收到“register”命令后,連接數據庫判斷,如果注冊成功則返回注冊成功消息並彈窗提示,如果失敗則彈窗提示注冊失敗。

  • 登錄功能

    打開客戶端后,類似QQ有登錄按鈕,當用戶填完用戶賬號和用戶密碼並提交后,客戶端將登錄請求發送給給服務端判斷(如果服務端在線),如果密碼正確則用戶登錄成功,顯示朋友列表(FriendsUI),否則提示密碼錯誤或賬號不存在。

  • 忘記密碼

    在客戶端右下側有忘記密碼按鈕,用戶點擊按鈕后彈出忘記密碼頁面(ForgetUI),用戶填寫用戶賬號后客戶端將消息發往服務器,服務器在數據庫中檢測該賬號是否存在,如果存在則顯示提示問題,如果不存在則提示賬號不存在。用戶填寫完后續相關信息后,點擊“重置密碼”按鈕后,如果找回密碼答案正確則向服務器發送修改密碼請求,如果失敗則彈窗提示密碼錯誤。最后服務器將處理結果(修改密碼是否成功)返還給客戶端。

  • 單獨聊天(私聊)

    用戶登錄成功后,雙擊好友后,首先判斷用戶與該好友是否有聊天框存在,如果不存在則創建新的聊天框(ChatUI)並在ChatUIList中登記,如果存在則將改聊天框突出顯示。用戶可以再聊天頁面(ChatUI)發送消息,如果好友不在線,服務器會返回好友不在線提示,客戶端彈窗提示,如果好友在線收到消息則無提示(類似Linux,沒有消息就是好消息)。好友收到消息時,在ChatUIList中查詢是否有與該好友的聊天窗口,如果沒有則新建窗口顯示並在ChatUIList中注冊,如果存在則直接將消息追加到聊天窗口上並突出顯示。

  • 多人聊天(群聊)

    這里實現的多人聊天式世界喊話,即在線用戶都能收到世界喊話的消息,沒有好友限制,實現與單獨聊天類似。不同的是,服務器收到“世界喊話”命令后,在SocketList中查詢當前在線用戶,並將世界喊話消息發送給這些用戶。

  • 添加好友

    在好友列表頁面左下角有添加好友按鈕,點擊該按鈕后彈出添加好友框(AddFriendUI),在添加好友框中重復輸入兩次欲添加的好友name便可向服務器發送好友請求。當用戶收到好友請求后,同意或拒絕都像添加方反饋,添加成功后重新登錄便可刷新好友列表。

  • 修改密碼

    在好友列表右下方有修改密碼按鈕,點擊該按鈕后彈出修改密碼框(ChangePwdUI),在這里只需要重復輸入兩次新密碼即可修改密碼,是否修改成功服務器都會做出應答,客戶端有彈窗提示。在服務端對數據庫進行操作,由於可能數據庫會出錯,如果數據庫未成功修改密碼,那么要提醒客戶。


參考文檔和完整的文檔和源碼下載地址:

https://www.write-bug.com/article/184.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM