# ChatRoom **Repository Path**: WTY2002/chat-room ## Basic Information - **Project Name**: ChatRoom - **Description**: 一个简单的网络在线聊天室 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2025-08-31 - **Last Updated**: 2025-11-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 网络聊天室项目 ## 项目简介 本项目是一个基于 C++ 和 Qt 框架开发的网络在线聊天室,支持用户注册、登录、好友管理和实时私聊功能。项目采用客户端-服务器架构,客户端通过 TCP 协议与服务器通信,采用模块化设计,分为网络通信层、数据模型层、界面层和控制层。项目旨在提供一个轻量级、易扩展的即时通讯工具,支持基本的用户交互和消息管理功能。 ### 核心功能 - **用户管理**:支持用户注册、登录、退出登录,查看和编辑个人信息 - **好友管理**:添加好友、查看好友列表、实时更新好友在线状态、好友搜索 - **实时聊天**:支持私聊消息发送与接收,显示历史消息和未读消息计数 - **界面交互**:提供友好的图形界面(基于 Qt),包括登录、注册、主界面、聊天窗口和用户信息窗口 ### 设计特点 - **单例模式**:DataManager 和 NetworkManager 确保数据和网络连接的唯一性 - **信号槽机制**:实现模块间松耦合通信 - **JSON 格式**:用于客户端与服务器的数据交互 - **模块化架构**:便于维护和功能扩展 - **异步通信**:基于 Boost.Asio 的高性能异步网络通信 ## 项目结构 ``` ├── chat_server_linux/ # 服务端代码 │ ├── chat_server_linux/ # 服务端核心实现 │ │ ├── main.cpp # 服务端入口 │ │ ├── server.hpp/cpp # 服务器核心类 │ │ ├── authService.hpp # 认证服务 │ │ ├── chatService.hpp # 聊天服务 │ │ ├── friendService.hpp # 好友服务 │ │ └── global_data.hpp # 全局数据结构 │ ├── chatroom.sql # 数据库结构 │ └── chat_server_linux.sln # Visual Studio 解决方案 ├── dev-client/ # 客户端代码 │ ├── controller/ # 控制层 │ │ └── chatclient.h/cpp # 主控制器 │ ├── data/ # 数据模型层 │ │ ├── datamanager.h/cpp # 数据管理器 │ │ ├── userinfo.h/cpp # 用户信息 │ │ ├── friendinfo.h/cpp # 好友信息 │ │ ├── message.h/cpp # 消息模型 │ │ └── friendrequestnotice.h/cpp # 好友请求通知 │ ├── network/ # 网络通信层 │ │ └── networkmanager.h/cpp # 网络管理器 │ ├── ui/ # 界面层 │ │ ├── loginwindow.h/cpp/ui # 登录窗口 │ │ ├── registerwindow.h/cpp/ui # 注册窗口 │ │ ├── mainwindow.h/cpp/ui # 主窗口 │ │ ├── chatwindow.h/cpp/ui # 聊天窗口 │ │ ├── addfriendwindow.h/cpp/ui # 添加好友窗口 │ │ └── userinfowindow.h/cpp/ui # 用户信息窗口 │ ├── resources/ # 资源文件 │ ├── main.cpp # 客户端入口 │ └── chatclient.pro # Qt 项目文件 └── README.md # 项目说明文档 ``` ## 技术架构 ### 服务端技术栈 | 技术 | 说明 | 版本 | 备注 | | ----------------------- | ---------- | ------ | ------------------ | | **C++** | 编程语言 | C++11+ | 核心逻辑开发语言 | | **Boost.Asio** | 异步网络库 | 1.70+ | 高性能异步网络通信 | | **nlohmann/json** | JSON 库 | 3.x | JSON 解析和序列化 | | **MySQL Connector/C++** | 数据库连接 | 8.0+ | MySQL 数据库访问 | | **MySQL** | 数据库 | 8.0+ | 数据持久化存储 | ### 客户端技术栈 | 技术 | 说明 | 版本 | 备注 | | -------------- | ---------- | ------- | -------------- | | **Qt** | 跨平台框架 | 5.12.2+ | GUI 和网络通信 | | **Qt Widgets** | 界面框架 | 5.12.2+ | 构建图形界面 | | **Qt Network** | 网络模块 | 5.12.2+ | TCP 客户端通信 | | **C++** | 编程语言 | C++11+ | 客户端核心逻辑 | ### 数据库设计 项目使用 MySQL 数据库存储用户数据,主要包含以下表: - **users**: 用户基本信息表 - **friend_requests**: 好友申请表 - **friendships**: 好友关系表 - **messages**: 聊天消息表 详细的数据库结构请参考 `chat_server_linux/chatroom.sql` 文件。 ## 环境搭建 ### 开发工具 | 工具 | 说明 | 版本 | 备注 | | ----------------- | --------- | ------ | ---------------- | | **Qt Creator** | 开发 IDE | 5.12.2 | Qt 应用程序开发 | | **Visual Studio** | C++编译器 | 2022 | Windows 平台编译 | | **GCC/Clang** | C++编译器 | 7.0+ | Linux 平台编译 | | **MySQL** | 数据库 | 8.0+ | 数据存储 | | **Git** | 版本控制 | 2.0+ | 代码版本管理 | ### 开发环境 | 平台 | 版本 | 备注 | | ----------- | ------------ | -------------- | | **Windows** | 10/11 | 客户端开发环境 | | **Linux** | Ubuntu 22.04 | 服务端部署环境 | ### 依赖库安装 #### Windows (客户端) ```bash # 安装 Qt 5.12.2 或更高版本 # 下载并安装 Qt Creator # 配置 Qt 环境变量 ``` #### Linux (服务端) ```bash # 安装 Boost 库 sudo apt-get install libboost-all-dev # 安装 MySQL 开发库 sudo apt-get install libmysqlcppconn-dev # 安装 nlohmann/json (如果系统没有) sudo apt-get install nlohmann-json3-dev # 安装 MySQL 服务器 sudo apt-get install mysql-server ``` ## 安装和运行 ### 1. 数据库配置 ```bash # 启动 MySQL 服务 sudo systemctl start mysql # 创建数据库和用户 mysql -u root -p < chat_server_linux/chatroom.sql ``` ### 2. 编译服务端 ```bash cd chat_server_linux # 使用 Visual Studio 打开 chat_server_linux.sln # 或者使用 CMake 编译 mkdir build && cd build cmake .. make ``` ### 3. 编译客户端 ```bash cd dev-client # 使用 Qt Creator 打开 chatclient.pro # 或者使用命令行编译 qmake chatclient.pro make ``` ### 4. 运行项目 ```bash # 启动服务端 (默认端口 12345) ./chat_server_linux # 启动客户端 ./chatclient ``` ## 功能特性 ### 用户认证 - 用户注册和登录 - 密码加密存储 - 会话管理 ### 好友系统 - 好友搜索和添加 - 好友申请处理 - 好友列表管理 - 在线状态实时更新 ### 聊天功能 - 实时消息发送和接收 - 历史消息查询 - 消息状态跟踪 - 未读消息计数 ### 界面特性 - 现代化 Qt 界面设计 - 多窗口管理 - 实时状态更新 - 用户友好的交互体验 ## 开发进度 | 模块/功能 | 状态 | 完成度 | 备注 | | -------------- | --------- | ------ | ---------------------- | | **项目架构** | ✅ 完成 | 100% | 整体框架搭建完成 | | **用户认证** | ✅ 完成 | 100% | 注册、登录、密码加密 | | **好友管理** | ✅ 完成 | 100% | 添加、搜索、状态管理 | | **实时聊天** | ✅ 完成 | 100% | 消息收发、历史记录 | | **界面设计** | ✅ 完成 | 100% | 所有窗口和交互完成 | | **网络通信** | ✅ 完成 | 100% | TCP 连接、JSON 协议 | | **数据库设计** | ✅ 完成 | 100% | MySQL 表结构和关系 | | **错误处理** | ✅ 完成 | 90% | 基础错误处理完成 | | **性能优化** | 🔄 进行中 | 70% | 连接池、消息队列 | | **安全加固** | 🔄 进行中 | 60% | 输入验证、SQL 注入防护 | ## 贡献指南 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 联系方式 如有问题或建议,请通过以下方式联系: - 提交 Issue - 发送邮件至项目维护者 - 参与项目讨论 --- **注意**: 本项目仅供学习和研究使用,请勿用于商业用途。