您的位置:首页 > 其它

团队项目--设计类图

2015-06-07 23:20 218 查看
团队项目-设计类图

负责人:董光耀

杨文雅

一、整体方案的制定



聊天工具的系统运行图

二、数据表设计

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

(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()方法接受客户程序的连接。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: