一 需求分析

本系统是基于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),在这里只需要重复输入两次新密码即可修改密码,是否修改成功服务器都会做出应答,客户端有弹窗提示。在服务端对数据库进行操作,由于可能数据库会出错,如果数据库未成功修改密码,那么要提醒客户。

参考文档和完整的文档和源码下载地址:

基于java的聊天工具_[源码和文档分享]基于java 的仿QQ聊天工具相关推荐

  1. java记事本技术参数_[源码和文档分享]基于JAVA的记事本

    一.绪论 现如今,电脑已经成为了每家每户甚至是每个人手头都必有的一种实用性工具,它改变了人们的生活,大大提高了人们的工作效率.在此基础上,电脑端的记事本应用一直是每台电脑所必备的实用性应用,不管是在台 ...

  2. java rpg对战_[源码和文档分享]基于java的RPG回合制游戏

    一.工作积累总结 该项目是一个回合制RPG游戏,讲述了动物主角对抗人类,自逃出动物园开始,一路与人类对抗,提升能力,并寻找新队友组成团体,逼得人类不得不与之谈判,最终与人类达成了和平协议的故事.玩家可 ...

  3. 局域网抓包分析工具_[源码和文档分享]基于Libpcap实现的局域网嗅探抓包发包解析工具...

    第一章 需求分析 1.1 设计目的 1.1.1 基本要求 完成一个基于Libpcap的网络数据包解析软件,具有易用.美观的界面. 1.1.2 具体要求 能够解析本地或局域网的数据包,例如TCP包,UD ...

  4. python中文聊天机器人_[源码和文档分享]基于python的中文聊天机器人

    前言 发布这篇 Chat 的初衷是想和各位一起分享一下动手来做聊天机器人的乐趣,因此本篇文章适合用于深度机器学习的研究和兴趣发展,因为从工业应用的角度来看使用百度.科大讯飞的 API 接口会更加的适合 ...

  5. 基于jsp的网上商城_[源码和文档分享]基于S2SH框架的JSP和MySQL的网上商城系统

    随着网络技术的飞速发展,网络已经成为人们获取和交换信息的最有效途径,通过网络进行商品交易已经成为一种新型的购物方式.网上商城系统是将商品销售和计算机网络功能结合起来的一种新型的电商系统,是当前新技术革 ...

  6. 基于mysql实现的网站_[源码和文档分享]基于JavaScript和MySQL的文化平台网站的设计与实现...

    中国文化源远流长,自古就有文人雅士作诗赋词,舞文弄墨,尽显风雅.现今则有歌手作家思想成文,心绪为曲,亦现儒雅.文化是传承的,是流传不息的,也是众多人所追求的.从各种各样的文化中,我们提升自己,丰富自己 ...

  7. 和java通信_[源码和文档分享]基于JAVA的即时通信软件

    一.设计任务书 1.1 设计任务 本文设计的是一个简单的即时通信软件,利用 Java Socket 进行点到点通信,其工作机制模仿即时通信软件的基本功能,已实现的功能有:客户端登录 客户端退出 群组成 ...

  8. c#养老院老人信息管理系统源码 论文_[源码和文档分享]基于JSP和MYSQL实现的学生信息管理系统...

    摘 要 进行学生信息管理是学校的重要工作之一.传统的学生信息管理由于是手工操作,工作量大且容易出错.随着计算机和网络技术的迅速发展,越来越多的院校都拥有了自己的学生信息管理系统,而采用B/S架构的学生 ...

  9. java飞机大战编程_[源码和文档分享]Java飞机大战游戏设计与实现

    1 概述 本次Java课程设计是做一个飞机大战的游戏,应用Swing编程,完成一个界面简洁流畅.游戏方式简单,玩起来易于上手的桌面游戏.该飞机大战项目运用的主要技术即是Swing编程中的一些窗口类库. ...

  10. java 仿qq庅_[源码和文档分享]基于java 的仿QQ聊天工具

    一 需求分析 本系统是基于java开发的聊天室.有用户注册.用户登陆.修改密码.忘记密码.添加好友.用户聊天.群聊功能.如果服务器还没有启动,则客户端是不可以登陆.注册.忘记密码,如果在运行过程中,服 ...

最新文章

  1. 23种设计模式的基本介绍
  2. VC++ 自定义消息学习总结
  3. lg g7 android9,随着Android 11的临近 LG G7 ThinQ在其最后一家美国运营商处获得了Android 9更新...
  4. 如何通过SQL按内容拆分字段(将一个字段值拆分两个字段)
  5. Linux 常见命令之Find \; +结合其它命令使用案例详解
  6. java引用变量_java代码声明引用变量经验
  7. 关闭edge任务栏预览_如何在Microsoft Edge中关闭选项卡预览
  8. java 双重检查锁_Java中可怕的双重检查锁定习惯用法
  9. win10主题更换_还不升级? win10精简版不到10G,运行比win7还快,旧电脑的福音
  10. java 内存模型 多线程_Java 高并发三:Java内存模型和线程安全详解
  11. html5 乱码解决方案
  12. SQL Server问题之The remote procedure call failed. [0x800706be]
  13. 【恋上数据结构】MySQL的索引底层为何使用 B+树?
  14. JointJS绘制流程图
  15. Windows程序设计与C语言的主要区别是什么?
  16. JMM(Java内存模型)详解
  17. 华为手机fastboot解锁
  18. react异常 Each child in a list should have a unique “key” prop
  19. GPS测量中四参数、七参数的概念及意义
  20. 征途mysql安装配置_征途服务端的配置和安装

热门文章

  1. 关于void *para的传递
  2. 【QCM2150】WFA 11ac 4.2.5/4.2.5A吞吐量不达标问题及解决方案
  3. FLUXNET 2015数据集下载
  4. “中国物流公司管理模式”成功案例
  5. typescript配置允许隐式声明any
  6. 不甘互联网惨败 三星新推一手机图片社交工具
  7. 转化率双倍暴涨——客户自助服务门户
  8. 机器学习领域经典书籍推荐
  9. 【UML】基本介绍与类图(依赖、泛化、实现、关联、聚合、组合关系)
  10. 数据挖掘,人工智能,机器学习会议总结