团队项目--设计类图
團隊項目-設計類圖
負責人:董光耀
? ? ? ? ? ?楊文雅
一、整體方案的制定
聊天工具的系統運行圖
?
二、數據表設計?
本聊天工具建立的數據庫中各個表的設計結果如下面表格所示。每個表格表示數據庫中的一個表。
(1) 用戶的基本信息表(表名personalinfo)
?
其中qnum字段為自動增加。(其他還可以添加諸如電話號碼等字段作為更多選擇)
(2)用戶的好友表(表名friend)
?
(3) 用戶的陌生人表(表名stranger)
?
(4) 用戶的黑名單表(表名blacklists)
?
?
就上述幾張表,下面給出表的E-R關系圖,如下圖所示:
?
?
三、類規范設計
類名: Server.java???
功能: 主要處理來自客戶端的請求
主要方法:
1、public void run() 作用:處理客戶端來的請求????
2、public static void main(String args[])??? 作用:無限監聽客戶端的請求,并且處理該請求???? 處理邏輯:新建一個SOCKET,無限的監聽來自客戶的請求,如果接收到來自用戶 的請求,就創建一個線程來處理該請求。???
類名: Login.java??????
功能:主要實現用戶的登陸還有提供用戶注冊界面的跳轉
主要方法:?????
1、private void jbInit()???? 作用:初始化登陸界面?????
2、void LButton_actionPerformed(ActionEvent e)????
作用:處理用戶登陸?? 處理邏輯:向服務器端發送用戶登陸請求,并等待服務器響應,然后驗證密碼和 QQ用戶? name status qnum petname? ip? password? picindex? 好友QQ? 好友? 1? n? name? status? qnum petname? ip? password? picindex 所填寫的密碼是否正確,如果正確就彈出主頁面。????
3、void RButton_actionPerformed(ActionEvent e)???? 作用:處理用戶注冊?????? 處理邏輯:如果用戶點擊注冊就彈出注冊框。????
類名:Register.java??
功能:主要實現用戶的注冊??
主要方法:?
1、void jButton1_actionPerformed(ActionEvent e) 作用:添加新注冊用戶信息到服務器;? 處理邏輯:如果判斷用戶名、密碼域不為空,以及兩次輸入的密碼相同,則向 服務器端發送新建用戶請求,并等待服務器響應。?????
類名:MainWain.java????
功能:主要實現用戶登陸后進入的界面??
主要方法:??????
1、public void? ConnectServer(int myqno)?????? 作用:該函數連接服務器???????
2、public MainFrame(int qno,String sername,int serport)??????? 作用:該函數主要是實現主界面的構造還有加載用戶好友,黑名單和陌生人信息?????? 處理邏輯:用Vevtor對象保存從服務器發來的用戶好友,黑名單和陌生人信息, 然后顯示在主界面,然后建立線程無限監聽來自好友發來的消息。???
類名:MessageSend.java??
功能:主要實現用戶間發送消息
主要方法:?????
1、void jButton2_actionPerformed(ActionEvent e)?????? 作用:發送消息響應事件????? 處理邏輯:創建消息包, 發送消息包, 將發送消息添加到聊天記錄中。??
類名:AddFriend.java????
功能:主要實現處理添加朋友信息的功能
主要方法:???????
1、 public class? AddFriend? implements?? Serializable??????? 作用:將AddFriendBox中的加對方為好友的理由和用戶和對方號碼串行化。
類名:AddFriendBox.java
功能:主要實現添加朋友的界面
主要方法:?
1、private void jbInit() 作用:初始化添加好友對話框?
2、void jButton1_actionPerformed(ActionEvent e) 作用:向對方發送添加信息??
類名:Find.java?????
功能:主要實現查找用戶的界面??
主要方法:??????
1、 private void jbInit()?????? 作用:初始化查找對話框???????
2、void findbutton_actionPerformed(ActionEvent e)?????? 作用:用號碼查找,并添加其為好友??????? 處理邏輯:如果對方在線就發送添加好友信息,對方確認后,系統添加,否則對 發不在線就留言等待,等對方確認后,系統添加。???
類名:FindResult.java????
功能:主要實現查找用戶的結果
主要方法:?????
1、private void jbInit()????? 作用:處理查詢結果????? 處理邏輯:連接服務器讀取信息,然后用表格形式顯示出來。??
類名:MessageReceive.java??
功能:主要實現用戶聊天信息的接受
主要方法:???? ?
1、public MessageReceive (Socket s)????? 作用:接收消息并且將消息顯示在聊天記錄中????
2、private void receive()???? 作用:接收消息?????
3、private? void?? showMessage()???? 作用:將消息顯示在聊天記錄中
處理邏輯:判斷此時與發送消息的蜜友的聊天對話框是否已經打開, 打開,則 將Mesage顯示在已經打開的聊天記錄中, 沒有,則打開并顯示。
類的UML圖如下圖所示:
?
類的UML圖
?
?
四、應用功能設計
1、新用戶的注冊?
當服務器收到用戶的注冊請求,便開始接受客戶傳第的信息,諸如客戶的呢稱啦, 性別,籍貫,頭像,個人資料等,接受完畢后,便通過JdbcOdbc與后臺數據庫連接,然后向數據庫添加記錄,如果成功,便向客戶返回其qnum號碼,客戶收到服務器返回的信息后,便打開主程序窗口。
?
2、登陸
在客戶端,用戶輸入其qnum號碼和密碼,然后建立與服務器的連接,告訴服務器我要登錄,服務器收到后,開始通過JdbcOdbc讀取數據庫,然后與用戶輸入的信息比較,如果相同就向客戶返回成功消息并將其Status字段設為1表示上線了,否則返回錯誤,如果客戶收到成功信息就打開主窗口,否則提示出錯。如果成功,便打開主程序窗口,并同時開始創建UDP以便在用戶之間建立聯系。然后客戶向服務器請求讀取好友、陌生人和黑名單,服務器收到該請求,開始讀取數據庫中的friend表、stranger表和blacklists表,得到好友、陌生人和黑名單的號碼后,再在表中讀取好友、陌生人和黑名單資料,然后向客戶端發送這些信息,客戶收到后就在主窗口顯示好友、陌生人和黑名單,比如頭像,呢稱。并且建立幾個矢量(Vector)用以存儲好友的呢稱,qnum號碼,頭像編號,ip地址等信息。
?
?
3、查詢朋友?
客戶登錄后,按查找按鈕后,開始向服務器發出查找請求,服務器讀取數據庫表personalinfo并向客戶返回其結果,客戶收到后在查找窗口中顯示,如果用戶選擇了一個好友,就向服務器發送添加好友請求,服務器收到后就向數據庫表friend中添加自己的號碼以及好友的號碼,并從personalinfo表中讀取其基本信息返回給客戶端,然后客戶收到并在主窗口顯示該好友。并且通過UDP通知該客戶,對方收到該消息后,可以選擇添加該用戶為好友或者不。
?
4、聊天消息的接受和發送?
? 用戶之間通過UDP連接來實現用戶間的通訊.每個用戶在該聊天工具進入主界面時便創建一個線程,無限監聽其他好友發來的消息,如果某個好友發來消息,便接受該消息并彈出聊天界面和顯示其發來的消息.
聊天消息的接受的部分的核心程序流程如下圖
?
聊天消息的發送的部分的核心程序流程如下圖
?
5、服務器端的設計?
服務器與客戶間通過套接口Socket(TCP)連接。在java中使用套接口相當簡單,Java API為處理套接口的通信提供了一個類java.net.Socket.,使得編寫網絡應用程序相對容易.服務器采用多線程以滿足多用戶的請求,通過JDBC與后臺數據庫連接,并通過創建一個ServerSocket對象來監聽來自客戶的連接請求,默認端口為8000,然后無限循環調用accept()方法接受客戶程序的連接。
?
?
轉載于:https://www.cnblogs.com/sitianya/p/4559701.html
總結
以上是生活随笔為你收集整理的团队项目--设计类图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 四则运算2单元测试
- 下一篇: poj2778DNA Sequence