团队项目-设计类图

负责人:董光耀

杨文雅

一、整体方案的制定

聊天工具的系统运行图

二、数据表设计

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

(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

团队项目--设计类图相关推荐

  1. 毕业论文系统的设计类图

    毕业论文系统的设计类图: ER图: 转载于:https://www.cnblogs.com/zjm97/p/8735300.html

  2. 在线购物系统——设计类图

    一.实验链接 问题陈述:https://blog.csdn.net/jie_flght/article/details/80081940 用况图:https://blog.csdn.net/jie_f ...

  3. 火车售票管理系统 设计类图

    目录 1 开发文档版本更新记录 2 1. 历史链接 3 2. 设计类图 4 3. 类描述 5 3.1 Person 5 3.2 SystemAdmin 6 3.3 User 6 3.4 Ticket ...

  4. 单例模式访问mysql设计类图_如何应用策略设计模式分离JDBC数据库连接中的外部环境信息...

    软件项目实训及课程设计指导--如何应用策略设计模式分离JDBC数据库连接中的外部环境信息 1.什么是策略(Strategy)设计模式 策略设计模式把"算法"(也就是软件应用系统中的 ...

  5. 使用powerdesigner设计类图并生成代码

    创建模型:OOM:Class Diagram:下面选中语言类型Java: 类图工具条:第二个是类图: 在设计视图画一个类图:然后输入属性:类名: 输入类的属性,成员变量: 输入类的方法: 选中一个方法 ...

  6. OOAD教学管理系统 设计类图

    实体类设计: 一.选课管理类图 (1)类学生: 学生 整体说明: 类名:学生 类的责任:用于参与课程 继承:类用户 被引用情况:选课情况 属性说明: 除了从用户继承的属性,无新属性生成 操作说明: + ...

  7. 休假管理系统——设计类图

    类图文档 Version 2.2 日期 I版本 描述 作者 19/04/2019 V1.0 类图文档 潘嘉茹 22/05/2019 V2.0 修改类图文档 郑承波 24/05/2019 V2.1 增加 ...

  8. OEA 扩展属性系统 - 主要设计类图

    时间有限,简单快速的完成本篇博客--(很多问题在此就不细说清楚了,主要还是记录一下成果.) * 先是整个子系统要完成的需求列表: * 然后是对它的分析,以及整个逻辑方案的结构. 图中的"概要 ...

  9. 单例模式访问mysql设计类图_利用单例模式设计数据库连接Model类

    之前在<[php]利用php的构造函数与析构函数编写Mysql数据库查询类>(点击打开链接)写过的Mysql数据库查询类还不够完美,利用<[Java]单例模式>(点击打开链接) ...

最新文章

  1. 网页素材大宝库:50套非常精美的图标素材
  2. OpenStack实践(一):Ubuntu16.04下DevStack方式搭建p版OpenStack
  3. python--微信小程序获取手机号码报错
  4. python elasticsearch update_使用python的elasticsearch部分更新
  5. 前端小白该如何学习?前端开发工程师掌握哪些能力
  6. python如何保存计算数据_python如何将客户的数据一直保存
  7. 支付人必读:一文彻底搞清楚银联和现代支付系统运行过程
  8. shell脚本编程基础(三)
  9. 周信静-从职高到MIT计算机博士录取
  10. 各种字符集和编码详解(转)
  11. 某程序员吐槽阿里给自己侮辱性薪资!阿里定级P6+,目前薪资33k,阿里才给35k,没有股票!...
  12. 解决vuecli-vue2项目ie浏览器白屏
  13. MIT6.824 Lab1 MapReduce
  14. Ip探针_信息探针_社工查询个人信息php网站源码
  15. AutoSar DaVinci Developer工具的基本介绍
  16. 自动化工具Pyautogui和Pywinauto详细介绍和使用
  17. MEncoder的基础用法—6.4. 编码为Sony PSP视频格式
  18. excel将一个工作表根据条件拆分成多个sheet工作表
  19. 共享文件夹在本机桌面创建快捷方式
  20. (毕业设计资料)基于单片机智能输液器监控系统的设计

热门文章

  1. vue 一直加载_Vue无限加载vue-infinite-loading使用详解
  2. springmvc登录拦截器访问报错 SyntaxError: expected expression, got ''
  3. Qt文档阅读笔记-RadioButton的基本使用
  4. Qt文档阅读笔记-OpenGL Window Example的解析笔记
  5. Qt工作笔记-使用setFilterKeyColumn实现model的单行过滤
  6. Qt工作笔记-Qt之自定义属性Q_PROPERTY
  7. 大四课程设计之基于RFID技术的考勤管理系统(二)读取COM口数据
  8. Django获取request header信息
  9. gcc编译c文件 python.h 未找到
  10. 3dmax体积雾渲染不出来_corona渲染,非常实用的小技巧