团队项目--设计类图

团队项目-设计类图

负责人:董光耀

           杨文雅

一、整体方案的制定

聊天工具的系统运行图

 

二、数据表设计 

本聊天工具建立的数据库中各个表的设计结果如下面表格所示。每个表格表示数据库中的一个表。

(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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值