java实现仿QQ即时聊天[通俗易懂]

java实现仿QQ即时聊天[通俗易懂]这是我的java大作业,这里就直接贴上我的实验报告了。1.1项目介绍这是一个模仿QQ的即时聊天软件,可以通过运行在本地的服务端,实现两个客服端之间的通信,即聊天。采用的是javafx架构作为GUI设计架构,个人认为优点是可以自己设计css,使界面达到美观的目的。本项目共有登录、注册、重置密码、主界面发消息、添加好友、好友列表项、查看聊天记录、删除聊天记录、未读消息提醒、好友主页、我的主页等模块…

大家好,又见面了,我是你们的朋友全栈君。

这是我的java大作业,这里就直接贴上我的实验报告了。

2.0版已更新地址:Java仿QQ2.0版
项目已开源:github地址:imitate-qq 欢迎fork与star

仿微信Appcanary_chat

个人开源项目canary 欢迎您的使用

1.1项目介绍
这是一个模仿QQ的即时聊天软件,可以通过运行在本地的服务端,实现两个客服端之间的通信,即聊天。采用的是javafx架构作为GUI设计架构,个人认为优点是可以自己设计css,使界面达到美观的目的。本项目共有登录、注册、重置密码、主界面发消息、添加好友、好友列表项、查看聊天记录、删除聊天记录、未读消息提醒、好友主页、我的主页等模块。该项目还调用了短信验证码的api和图灵机器人的api。在进行注册和重置密码时,都会有发送验证码的按钮,通过输入的手机号接收验证码。每个人的账号都会有个聊天助手,聊天助手就是接入的图灵机器人,可实现自动智能回复。
二、系统分析与设计
2.1本程序需解决的关键技术问题
1、短信验证码和图灵机器人的api调用。
2、两个客户端通过服务端实现通信。
3、好友列表项的实现。把新加的好友直接添加到好友列表。
4、聊天记录的实现,两方发的消息一左一右的显示。
5、两个好友之间发消息的气泡的大小自动调整。
6、记住密码和自动登录的复选框的DIY设计
7、实现编辑我的资料时不跳转页面,即在我的主页直接进行编辑
8、实现我的信息数据在多个页面之间的调用。
2.2功能模块

三、项目设计与实现
3.2程序设计
Controller是个全局操作类,所有的登录、注册、运行、不同界面之间的连接等主要功能都在这里实现。Model里面都是一些数据库操作、气泡调整助手、验证码api、图灵api等,还有一些数据的操作类,View里面主要就是界面的设计及功能的实现。Main就是个主函数,运行controller以运行整个程序。

Companion表:我的好友,里面将每个账号都匹配自己的好友和好友的备注。
在这里插入图片描述

Dialog表:将已经登录的账号临时存储在这个表中,当账号注销后,自动清除。
在这里插入图片描述

Offlinemsg表:将发给不在线好友的离线消息存储起来,当对应好友读取完信息后就删除信息。
在这里插入图片描述

Save_pass表:把勾选了记住密码的账号和密码存储在这个表中,打开程序时自动显示到对应的文本框。

在这里插入图片描述
user表:存储用户所有信息的表
在这里插入图片描述

①登录界面:进行了账号和密码的验证,同时还有记住密码的选项,当你登录账号时勾选了该选项,下次将在登录界面展示前显示在输入框中。还会检查该账号是否已经登录,如果已经登录则不能再进行登录。如果该账号登录成功后会将该账号数据暂时存储在一个表dialog中。界面是仿QQ登录界面设计的,背景用的是类QQ登录界面的gif动画实现的。另外当鼠标焦距输入款时,对应的图标会发生变化,其实是背景图的变化。自定义了界面的最小化和关闭按钮以及记住密码复选框,使得界面更加的美观。
在这里插入图片描述

②注册界面:该界面有一些注册信息的验证,采用的是java的正则匹配。首先会对输入框进行验证,如果为空则显示提示信息。如果不符合正则匹配也会提示相应的错误信息。当你输入了手机号后,还要点击获取验证码的按钮,获取到一个六位数的随机验证码,当你正确输入验证码后才可以进行注册。另外这里还有一个选择头像的设置,点击选择头像,会展示系统自带的一些头像,你可以进行选择自己喜欢的。

在这里插入图片描述
在这里插入图片描述
③忘记密码:其实该界面跟注册界面类似,就是少了年龄和性别的输入。其他验证与验证码的获取都差不多,就不过多介绍了。

在这里插入图片描述

④主界面:首先左边是好友列表,列出了所有好友的头像和备注,以及在线状态。好友列表解释个listview,然后每个好友是个pane,在pane里面添加信息,再将pane添加到listview里就实现了添加到好友列表。在这里有个右键菜单,可以实现消息标为未读已读,查看好友资料,清除聊天记录,删除好友等功能。
中间是个发消息的模块,主要也是由listview和一些pane组成。和好友列表类似。一共定义了两种pane,好友消息是左,我的消息是右。这样就实现了一左一右的“添加”消息。在这里“我”发送的消息都会被传到服务端,然后服务端再传给对应的好友。如果好友不在线,就进行离线处理:将“我”发的所有消息以“我的账号+好友账号+消息”存在数据库的一张表offlinemsg中。当该好友上线时,就会出现消息提示,也就是我离线发的消息,好友读取消息后,这些数据就会在数据库中被删除,避免出现重复提醒相同消息。当好友在线时,也会实时提示好友未读的消息。实现效果大概是这样。当然这里还有好玩的聊天助手哦,那就是图灵机器人,可以实现无限陪聊的功能。
在右边就是我的主页信息了,上面展示我的一些基本信息:我的头像、姓名等,还有一些按钮,可以实现添加好友,查看我的更多资料,最小化、关闭等功能。

在这里插入图片描述
⑤好友主页:该页面显示的好友的全部资料信息,这里有个修改备注的按钮,当你点击后,就可以对备注文本框进行编辑,当编辑完成,点击完成按钮,信息就会在数据库中更新,并在好友列表上更新。

在这里插入图片描述
⑥我的个人主页:跟好友主页类似,就是增加了一点权限,可以更改所有信息。

在这里插入图片描述
⑦添加好友:当你输入账号,然后按回车键时,就会在下面显示对应的好友账号,并可以进行添加。如果账号不存在,或者是已经添加的好友则会报错。
*在这里插入图片描述*
四、个人小结
该项目一共花了我两周多的时间完成的,可以说是比较久了,个人对于最终的结果还是比较满意,期间也遇到了很多问题,出现了很多bug,最终都一个一个的解决了。但是现在的程序还是存在很多待进一步改善的地方,我将会在之后的时间里对它进行进一步完善。

chat客户端下载地址:https://download.csdn.net/download/qq_40663357/10888120
cheServer服务端下载地址:https://download.csdn.net/download/qq_40663357/10888123
欢迎访问我的博客网站:http://jie12366.xyz:8081

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/146517.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号