# chat **Repository Path**: sodacat/chat ## Basic Information - **Project Name**: chat - **Description**: 互联网程序设计学习。大作业项目网络聊天室 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-06-27 - **Last Updated**: 2023-12-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 互联网程序设计大作业项目:网络聊天室 #### 一、设计思路 1、首先考虑仿QQ设计注册登录框,输入用户名和密码进行登录。这一步使用数据库进行验证。注册时如果用户不存在则向数据库中插入新数据(username、password)然后再进行登录,即在数据库中查询对应用户名和密码。 2、用户登陆后默认群聊功能,可以向所有用户发送消息。原本沿用了以前的输入IP和窗口连接服务器才能真正开始聊天,后来改掉用户手动连接服务器的操作,直接开始群聊。 3、为了增加聊天的可能性,加入私聊,可以通过获取用户名进行一对一私聊。为此增加了查询在线用户的功能,同时设置下线提示。 #### 二、程序整体结构与使用说明 **1、基于TCP协议实现的网络聊天室框架** (1)服务器程序主体框架基于第五讲多用户服务器程序设计(GroupServer),重命名为ChatServer。 (2)客户端程序基于查分服务器(LookUpScore) ,重命名为ChatClient,基本不用改动,直接使用。 (3)聊天室用户界面重构于查分UI界面(LookUpScoreFX),重命名为ChatFx。 (4)考虑使用数据库进行用户注册登录,复用第14讲的jdbc访问相关类,新建Register类进行注册登录验证。 **2、程序整体结构:** (1)用户界面:基本沿用课程内的fx界面,去除用户手动连接服务器的IP、port部分,增加指定成员私聊框。 ![输入图片说明](img/1.jpg) (2)注册登录界面:原本参考11讲使用两个fx调用的,后来改用Dialog对话框实现。 ![输入图片说明](img/image.png) **2 .2 主要功能实现** 1)注册和登录 演示时数据库已有账号: ![输入图片说明](img/sql.png) 登录账号不存在(用户名为ray的账号不在数据库内): ![输入图片说明](img/FailLogin.png) 设置了循环,未登录无法继续: ![输入图片说明](img/NotLogin.png) 由于ray未注册无法登录,于是选择注册: ![输入图片说明](img/register.png) 注册用户名重复时: ![输入图片说明](img/exist.png) 成功登录时默认群聊,同时所有人登录时默认收到在线用户名单,其余用户获得上线提示: ![输入图片说明](img/allUser.png) 私聊时,输入需要私聊用户名即可,恢复群聊可以不输入或者输入默认群聊 ![输入图片说明](img/chat.png) ![输入图片说明](img/chat2.png) 获取在线用户: ![输入图片说明](img/onlineUser.png) 加入下线提醒: ![输入图片说明](img/offLine.png) 三、使用说明 主要使用第二部分已经初步介绍了。 需要注意的点有以下几个: 1、由于用户界面未设置连接服务器,需要在ChatFX类中需要手动修改服务器地址: ![输入图片说明](img/8008.png) 2、由于设置了循环,点击连接之后不登录无法退出窗口,将会一直显示登陆界面: ![输入图片说明](img/circulate.png) 3、私聊使用的本质是发送了 xxx && xxxxx的消息到服务器,通过识别&&而拆分信息的,因此直接发送“用户名&&发送的信息”也可以进行私聊: ![输入图片说明](img/privateChat.png) 4、使用的myschool数据库中的users库,如有需要使用,需要修改数据库信息。