Java简易聊天室YYchat

目录

Java简易聊天室YYchat

此为大二《Java程序设计》结课项目考核内容。明明学的专业跟项目内容不符,不知道为什么要学Java Swing,浪费时间?虽说如此,但还是在辣鸡学校的水比老师的示例的基础上作了些更改,完成了Java简易聊天室的项目。项目全部文件(包括素材和源码)已上传到github上: ,欢迎克隆、交流学习。

一、项目环境

  1. 软件开发工具:Eclipse
  2. JDK:JDK1.8
  3. 数据库:SQL Server 2008 R2(水比老师用的是MySQL,看我写的好,还想叫我把代码改成用跟他同一个数据库的再发他一份,懂的都懂)
  4. 通信协议:TCP协议
  5. 项目结构:客户端/服务端结构
  6. 功能实现:在线离线聊天,消息记录,区别在线离线,注册,记住密码,隐身登录,找回密码,添加删除好友…等等(够你混项目创新展示了)
  7. 项目启动流程:先运行StartServer.java开启服务器,可多次运行ClientLogin.java登录,双击头像即可开启聊天

二、项目代码结构

https://i-blog.csdnimg.cn/blog_migrate/3ab7e155cb9587243843a0c0e2767fa7.png#pic_center

https://i-blog.csdnimg.cn/blog_migrate/d3072af6489fe702f02bbd4737fa86e8.png#pic_center

客户端代码结构:

  • com.yychat.model:

     	FriendTreeRender.java//好友列表的渲染模型
     	Message.java//传输中的消息类
     	MessageType.java//消息类型接口
     	User.java//操作用户类
     	UserType.java//用户类型接口
  • com.yychat.view

     	AddFriend.java//添加好友的窗体
     	ClientLogin.java//登录界面
     	FriendChat.java//聊天界面
     	FriendList.java//好友列表界面
     	PasswordBack.java//找回密码的窗体
  • com.yychatclient.control

      	ClientReceiverThread.java//客户端接收线程类
      	ManageAllChat.java//用于管理所有聊天
      	ManageAllList.java//用于管理所有好友列表
      	ManageAllThreads.java//用于管理所有客户端线程
      	YYchatClientConnection.java//用于初连接服务端

服务端代码结构

  • com.yychat.model

     	Message.java
     	MessageType.java
     	User.java
     	UserType.java
  • com.yychatserver.control

      	DBUtil.java//用于连接数据库进行数据库操作的工具类
      	ServerReceiverThread.java//服务端线程类
      	ManageAllThreads.java//用于管理所有服务端线程
      	YYchatServer.java//用于被开启服务端和初次连接
  • com.yychatserver.view

      	StartServer.java//服务端开启与关闭界面,日志界面

三、数据库结构

https://i-blog.csdnimg.cn/blog_migrate/dc0c85b4745f43a4555daba90386a541.png#pic_center

用的是sqljdbc.9.4.0.0,我GitHub中也有给,解压后有适用三个版本jdk的jdbc,若你用的不是jdk1.8记得在Eclipse中重新导入正确的适用的jdbc

表:

  • chatmessage:存放聊天信息
  • tempmessage:存放离线临时信息
  • user:存放用户信息
  • userrelation:存放用户间的好友关系

存储过程:

  • Register:注册操作
  • SeekMessage:搜寻历史聊天记录操作
  • SeekOfflineMessage:搜寻离线临时信息记录
  • SendPasswordEmail:通过邮箱找回密码操作
  • tempTomessage:临时信息转历史信息操作

四、项目运行部分截图如下:

https://i-blog.csdnimg.cn/blog_migrate/d8b5cb82956f21426cb6b987c777d90d.png

https://i-blog.csdnimg.cn/blog_migrate/ed8e5aa9a0468538fd98a46dcf98149b.png

https://i-blog.csdnimg.cn/blog_migrate/8eb3c202d5137f6737c5675280dd2f53.png

https://i-blog.csdnimg.cn/blog_migrate/83cb703a20605514129342d638cc71da.png

https://i-blog.csdnimg.cn/blog_migrate/998b593f07ef118563786133b62d3e76.png

  1. 不确定导出的SQL Server有没有导出了数据库邮件配置 https://i-blog.csdnimg.cn/blog_migrate/531e6e3db06ba96940feffc2fb5da37c.png#pic_center

    因此找回密码功能可能实现不了,你可以重新配置数据库邮件配置,再修改我的找回密码存储过程就可以了,很简单。

    导入SQL Server中平常需注意的我就不多说啦。

  2. 代码注释可能没写全,也有概率写错,所以借鉴学习下就好,不要盲目全信。

其实仔细端倪代码还有很多需要优化的地方,不过此文章也就想帮帮要挂科的学生罢了哈哈,懂的人也可以看看提建议互相学习哈。若想糊弄老师,混过去,就不要关心太多啦,直接拷贝项目进去就好啦!以后我也会优化好代码持续放上去