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

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

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

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

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

仿微信App:canary_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

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

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 简图记录-曾国藩家训 观后感「建议收藏」

    简图记录-曾国藩家训 观后感「建议收藏」简图记录 总结~材料 郦波教授的百家讲坛 和 部分相关书籍  一个人疑惑的时候,总是希望通求知如过阅读找到自己的答案,读史可以使人明智,历史总是有借鉴意义,相对于空谈鸡汤无疑更有说服力。我认为向周围的人学习是个人成长一个非常重要的手段,周围的人都是真实的而且在一定范围是可交流讨论的,相对一些当代的名人 他们的事迹往往都是经过加工 或 胡编 鸡汤意味更浓一些,那么另外一条路就是找一些古代的贤…

    2022年6月4日
  • lm算法的实现方法_信赖域算法

    lm算法的实现方法_信赖域算法完整文章请查看这里。转载请注明出处:本文来自learnhard的博客:http://www.codelast.com/ & http://blog.csdn.net/learnhard/,并保持文章的完整性。 LM算法可用于解决非线性最小二乘问题。多用于曲线拟合等场合。LM算法的实现并不难,这里不讨论使用MATLAB等工具直接得到结果的过程,使用那些工具对于算法编程能力的提高无任何益处。 LM算法

    2022年9月27日
  • 漏斗模型和路径分析的区别_漏斗转化模型

    漏斗模型和路径分析的区别_漏斗转化模型在互联网数据化运营实践中,有一类数据分析应用是互联网行业所独有的,那就是漏斗模型和路径分析的应用漏斗模型通常是对用户在网页浏览中一些关键节点的转化程度所进行的描述,比如从浏览到实际购买产品都需要经历三个步骤:浏览商品、将商品加入到购物车、将购物车的东西提交到订单,直到订单完成在线支付,上面的三个步骤走下来,买家人数越来越少,这个过程就是漏斗模型,漏斗模型的主要分析目的是针对网站运营过程中的各个关键…

    2022年8月24日
  • Android手机端编程开发软件合集(一)

    Android手机端编程开发软件合集(一)在网上搜索了很久才找到的编程IDE高级解锁版,在这里记录并分享一下吧!一、合集地址:蓝奏云:https://huanxingke.lanzous.com/b0203kqjg密码:flyingdream二、软件合集截图如下:三、软件的一些介绍:★文件1:【QPython3H.apk】(1)Python编辑器。(2)优点:文件交互简单,界面简洁友好,支持androidhelper,可以很方便地调用Android的API。(3)缺点:支持的第三方库较少,无代码预测。(4)网上的介绍:

    2022年5月24日
  • MySQL数据库语法_mysql建立学生表数据库

    MySQL数据库语法_mysql建立学生表数据库mysql数据库基本语法DDL操作创建数据库语法:createdatabase数据库名;查看所有数据库语法:showdatabases;切换(使用)数据库语法:use+数据库名;创建一个表语法:createtable表名(字段名称1字段类型,字段名称2字段类型,字段名称3字段类型,…………);查看数据库中所有表语法:Showtables;查看表的结构语法:desc表名;添加字段语法:alterta

    2022年9月24日
  • Linux磁盘阵列

    Linux磁盘阵列一、磁盘阵列1基础知识磁盘阵列(RedundantArraysofIndependentDisks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。磁盘阵列是由很多价格较便宜的磁盘,以硬件(RAID卡)或软件(MDADM)形式组合成一个容量巨大的磁盘组,利用多个磁盘组合在一起,提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。磁盘阵列还能利用同位检查(ParityCheck)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算

    2022年5月25日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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