基于JavaFX的类QQ的聊天工具

一. 功能描述

       现在,聊天工具的普及使得信息传递越来越方便,像QQ与微信这样的聊天工具已经可以说是占据了这个行业的半边天,逐渐成为人们日常生活工作间离不开的工具。

       因此本次我基于javafx+网络编程+mysql实现了自己的类似QQ的聊天工具,能实现基本的注册,登录,搜索查询已经注册的好友,添加好友,删除好友,查看好友资料,修改自己资料以及聊天发送文字,图片,文件以及发送已经添加的表情功能。每次打开聊天对话框能自己加载聊天记录以供查阅。

 

二. 数据库设计

       数据库中存在三个数据表,分别是user表,friend表,以及chat_record表。user表用于存放用户的个人信息数据对应自己定义的实体User,其中有用户名称,账号,密码,性别,年龄,生日,个性签名,图像存放的路径这些属性对应实体User中的各个属性。

       实体User中还存在属性为List<User>类型的用于存放好友,由于用户与好友之间是多对多的关系,所以在数据库中新增一个表为friends,其中有两个字段为uid和fid用于存放用户本身的账号与好友的账号。该表的主键应为所有的字段,uid字段对应着user表中的username字段,两者为外码的关系。

       对于聊天记录设计了一个表名为chat_record,有发送者账号,接收者账号,消息内容,发送时间,消息类型这五个字段。主键应为发送者账号和接受者账号以及时间,消息内容因为存在图片消息以及文件消息,消息内容应采用blob类型存放,对于不同的消息内容使用消息类型这个字段来判定。

图2.1 数据库设计E-R图

 

三. 类设计

实体类有User类,Message类,Record类。Message类和Record类有对应的选项接口为MessageType和RecordType。User类用来描述用户的信息,包括账号,密码,名称,性别,年龄,生日,个性签名以及头像路径和好友列表并且实现Serializable接口可以使其进行序列化和反序列化,方便传输。Message类用来通过Socket进行传输消息,即发送请求和接受响应使用的都是它。其中有发送者对象,接受者对象,消息内容,消息类型,发送时间五个属性。其中消息内容应为Object类型,因为无法确定具体发送的是什么,消息类型为定义在MessageType中的常量,用来表名发送的消息类型,服务器用于判断和接受处理。Record类连接dao层,是dao层写入数据库中聊天记录表的主要类,其中也有发送者对象账号,接收者对象账号,消息内容,发送时间以及消息类型几个属性,用于保存聊天记录,方便数据库操作。

图3.1 实体类设计类图

客户端分为服务类(service),显示类(view)。

服务类中存在主要的是用户服务类UserService,用于用户进行发送注册,登录,修改资料,查找用户,退出,得到好友列表,查看聊天记录的请求。消息服务MessageService类用于用户进行发送消息,发送文本消息,图片消息,文件消息以及添加好友请求。客户端线程类ClientThread,用于用户接收服务端发来的消息,并作出响应处理,每成功登陆一个客户端就开启一个客户端线程。

图3.2 客户端服务类中各类与类之间的关系图

图3.3 客户端服务类中各类的属性与方法图

客户端显示类中主要包含着几个页面,如登陆页面,注册页面,登陆加载页面,登陆之后显示好友列表的主页面,搜索用户页面,查看用户资料页面,修改用户资料页面,收到添加好友请求页面,聊天页面。以及一个程序入口类。

图3.4 客户端显示类之间的关系

服务端分为操作数据库类(dao)与服务类(service)。

操作数据库的类只有UserDao接口与它的实现类UserDaoImpl,有关于数据库的操作全部由它完成,例如根据账号和密码判断是否存在已经注册过的用户,注册用户添加记录,找寻数据库中已经注册的所有用户,添加好友,根据特定用户名或者名称查找用户等等。

图3.5 dao层UserDao的方法

服务类有Server类用于接收用户登录的请求,注册请求,修改用户信息的请求,得到好友列表的请求,搜索用户请求,且当每次登录成功之后就开启一个ServerThread线程。ServerThread线程类中主要有处理发送普通消息,图片消息,文件消息以及发送添加好友消息和是否添加好友成功消息以及客户端退出消息。

图3.6 服务端service类之间的关系

图3.7 服务端service类中的主要方法

 

四. 界面设计及说明

图4.1 登录界面

图4.2 注册界面

图4.3 登录加载界面

图4.4 主界面

图4.5 查看好友资料界面

图4.6 查看自己资料界面

图4.7 编辑修改资料界面

图4.8 查找添加好友界面

图4.9 聊天界面

 

大二小菜鸡一枚,不足地方多多担待

  • 30
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值