# NEUQ Java课程设计 **Repository Path**: Xuan_945/neuq-java-course-design ## Basic Information - **Project Name**: NEUQ Java课程设计 - **Description**: Java课程设计 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-02-14 - **Last Updated**: 2024-06-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 题目描述 ## 使用JAVA语言实现简易聊天室(本程序含有GUI图形界面) ### (1)、服务器要求1:能够看到所有在线用户 ### (2)、服务器要求2:能够强制用户下线 ### (3)、客户端要求1:能够看到所有在线用户 ### (4)、客户端要求2:能够向某个用户发送消息 # 本系统实现如下系统功能: ### (1)、实现客户端账号密码登录 ### (2)、服务器启动即自动登录 ### (3)、用户可通过已登录的客户端给单独的好友发送消息 ### (4)、客户端可以实时看到在线的好友 ### (5)、服务器可以实时看到在线用户 ### (6)、服务器可以强制使用户下线 ### (8)、服务器可以读取所有消息 ### (7)、所有的状态和消息均通过窗口图形界面显示 ### 建立Java工程,能够通过窗口图形界面实现聊天,客户端将消息传送到服务器后通过TCP连接再传到客户端,客户端判断是否需要显示。用户可以选择发送给哪个好友,非在线好友为不可选中状态。工程中包括Login(登录界面),ChatView(聊天客户端主页面),Client(客户端主程序),ServerWindow(服务器界面),Server(服务器主程序)。运行Client主程序会先调用Login界面,输入用户名和密码后调用聊天客户端主页面。运行Server主程序会调用聊天界面。在客户端输入框写入文字后点击想要发送到的好友,消息就会通过服务器发送给该好友,而未选中好友不会显示该内容。服务器上有能够显示用户是否在线的按钮,并且点击后会发送提示信息后强制该用户下线。 ### 用户在使用过程中,在登录界面输入账号和密码后,点击登录按钮,点击动作通过lisetener监听器将源动作传输到LoginListener类,该类会将账户和密码与预先设定好的账号进行匹配,若存在则登录成功,客户端开始尝试获取主机地址和客户端套接字,成功后会新开一个线程,新建一个客户端窗口对象,并通知服务器和其他在线客户端本机已上线并获取其他用户的在线状态。若登录失败则会提示用户名密码错误的报错信息。退出则会通知服务器和其他用户本机已下线。客户端和服务器会将该用户按钮设置为不可点击状态。客户端和服务器间的通过BufferedReader,BufferedWriter,PrintWriter进行输入输出流和面板显示。每次发送数据都会先发送到缓存,数据送出后进行flush。 ### 在管理员使用服务端的过程中 ,运行Server主函数会新建一个ServerWindow,并获取各个用户在线状态,并在后台实时进行accept()阻塞式连接。运行时会实时刷新用户状态和消息内容。通过BufferedReader,BuffedWriter和TCP连接与客户端建立消息连接。当点击强制下线用户按钮后,服务器会通知客户端并断开连接。 # ## 本项目包含三个完整的Java聊天室功能,chatSystem和chatSystem2为普通版本的中英文版,chatSystemPlus为普通版本的升级版,添加了一些功能。 # 项目效果展示 ![项目结构](/figure/StructureFigure.png) ![类结构](/figure/ClassFigure.png) ![文件结构](/figure/ProjectStructure.png) ![登录界面](/figure/login.png) ![服务器](/figure/server.png) ![客户端](/figure/clint.png) ![功能展示](/figure/fuction.png)