一 需求分析

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

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

https://www.write-bug.com/article/184.html

转载于:https://www.cnblogs.com/ddgg5151/p/10091592.html

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

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

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

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

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

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

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

  4. [源码和文档分享]基于Java Swing JFream 组件的趣味推箱子小游戏

    一 需求分析 设计一个经典的推箱子小游戏,在窗体里有墙,箱子,胜利的标志,和工人,用户可以通过键盘上的"上"."下"."左"."右 ...

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

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

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

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

  7. [源码和文档分享]基于Java语言的电梯调度模拟程序

    一 需求分析 某一栋楼有20层,有5部互联的电梯.基于线程的思想,编写一个电梯调度程序.这五部电梯项目联结,即当一个电梯按钮按下去时,其它电梯相应按钮同时点亮,表示也按下去了. 二 程序设计 本项目采 ...

  8. 实验一基于 的词法分析实验_[源码和文档分享]基于JAVA实现的基于DFA的词法分析程序...

    1 实验目的 根据自己确定的正规表达式,编写.调试一个词法分析程序,对语句进行词法分析,从而更好理解词法分析原理. 2 内容描述 此程序用java编写.程序读取一个文本文件,并对其中的内容进行词法分析 ...

  9. [源码和文档分享]基于JAVA EE框架的在线考试系统平台的设计与实现

    在线考试系统以java作为开发语言,Struts2.Hibernate实现前后台数据管理,Spring实现业务逻辑管理,以MyEclipse作为开发工具,MySQL实现数据持久化,Tomcat部署整个 ...

最新文章

  1. ibatis 配置参数解析
  2. ITK:无写访问权限下遍历具有邻域的图像区域
  3. Cadence元器件库
  4. git推送本地分支到远程分支
  5. mysql boolean_产品操作MySQL第7篇 – 运算符 – IS NULL
  6. token要加编码decode吗_彻底弄明白Base64 编码
  7. java object转泛型_JAVA快速入门——基本结构、基本数据类型
  8. CentOS6_mini_安装后基本配置
  9. 自定义View(四) ViewGroup 动态添加变长Tag标签 支持自动换行
  10. Android Studio全局搜索Ctrl+Shift+F占用解决
  11. 20155327-20155329信息安全技术实验一实验报告
  12. 银河麒麟系统服务端命令_麒麟系统介绍
  13. 去掉桌面计算机快捷方式,电脑小技巧!去掉桌面快捷方式小箭头图标
  14. 基于单片机的水温液位自动控制系统设计
  15. 金蝶凭证序时簿在哪_金蝶K3总账凭证查询序时簿能否显示何引出核算项目
  16. ld cannot find -lbz2
  17. 1年赋能100家环保机构,阿里云发布“青山绿水”计划
  18. 盛大开幕!2019达索系统3D体验高峰论坛……
  19. RiskCloud双控平台(有效分享HAZOP软件篇)
  20. 你知道ArcGIS电子地图也有大字体地图吗(附下载方法)

热门文章

  1. 解决Apache CXF 不支持传递java.sql.Timestamp和java.util.HashMap类型问题
  2. WCF中服务继承多个契约的使用
  3. 写《回国驯火记》的那个安普若
  4. C语言程序设计 细节总结(第9章 结构体共用体枚举)
  5. usaco Job Processing(mark)
  6. iOS和android h5字体差异,关于移动hybrid开发中H5页面的字体应与系统保持一致的问题...
  7. 单片机彩灯移动实验_用S7-1200 PLC实现循环彩灯的控制,含源程序
  8. pythontkinter真实的例子_python小实例——tkinter实战(计算器)
  9. Gradient Descent和Back propagation在做什么?
  10. LabVIEW图像模式匹配(基础篇—11)