# 嵌入式LINUX平台网络聊天室设计
# 前 言
现今互联网已是我们生活中不可缺少的一部分,其中的聊天软件更是深入我们生活的每一处角落。网络聊天软件以其的快捷,即时以及基于互联网强大的跨地域联络性成为了人们交流新的选择。并且网络聊天软件也在不停的改革换代,各种子服务围绕着聊天软件客户群所运行。我们准备做的就是一款局域网聊天网聊天软件,是互联网聊天软件的雏形。
# 第1章 开发计划书
## 1.1 项目范围
- **群聊功能**:用户管理模块、点击私聊模块、发送文件模块、基本词语聊天模块、截图模块,字体设置模块
- **私聊用户**:截屏、基本词语聊天、字体设置,文件传输一步改进。减少bug数
## 1.2 项目成果
| 序号 | 内容 | 需求 | 计划时间(周) | 实际时间(周) | 状态 |
| ---- | ----------- | ------------ | ------- | ------- | ---- |
| 1 | 主界面 | 主界面显示 | 1 | 1 | 良好 |
| 2 | 字体调节功能 | 字体颜色,大小格式调节 | 2 | 2 | 一般 |
| 3 | 文件传输功能 | 传送文件与接收文件 | 2 | 2 | 良好 |
| 4 | 聊天记录另存与删除功能 | 聊天记录的保存和清屏功能 | 2 | 2 | 一般 |
| 5 | 截屏功能 | 截取屏幕 | 1 | 1 | 一般 |
| 6 | 摇屏 | 摇屏 | 1 | 1 | 一般 |
| 7 | 文字聊天模块 | 文字聊天 | 1 | 1 | 一般 |
## 1.3 资源需求
| 序号 | 资源 | 作用 | 占用时间 | 当前可用状态 | 获得途径 |
| ---- | --------- | ------------- | ----------------- | ------ | ----- |
| 1 | PC机 | 给餐饮点菜系统提供硬件支持 | 贯穿整个项目的构造阶段、走查过程中 | 可用 | 购买 |
| 2 | QT环境 | 项目运行 | 贯穿系统代码的编写、运行、调试阶段 | 可用 | 网上下载 |
| 3 | 安卓手机 | 项目运行 | 全程 | 可用 | 自带 |
| 4 | ARM开发板 | 项目运行 | 跨平台移植 | 可用 | 老师提供 |
| 5 | Windows 7 | 给系统提供操作系统支持 | 贯穿整个项目构造阶段、走查过程中 | 可用 | 下载、安装 |
| 6 | Ubuntu | 给系统提供操作系统支持 | 贯穿整个项目构造阶段、走查过程中 | 可用 | 下载、安装 |
# 第2章 需求规格说明书
## 2.1 问题陈述
嵌入式LINUX平台网络聊天室设计是用户实现局域网内聊天与文件传输的一个工具。主要问题就是局域网内的用户区分,并且注册对于局域网太过麻烦。我们需要能够便捷进行聊天和传输文件的系统。
## 2.2 要达到的目标
- 在用户管理中,在右侧显示在线人员的用户名、主机名、IP地址。选中其中一个,可以进行私聊
- 在聊天输入窗口上面,选中下拉列表,进行字体的设置,下划线,粗体,字体颜色等设置
- 选中右侧其中一个用户,然后点击发送文件那个图标,弹出选择文件资源管理器,选中某个文件,进行发送,另外一端客户,进行文件的接收和拒绝接受等操作
- 在图标栏,点击回收站图标,即可对聊天记录进行清除,点击保存图标,即可以文本的方式,把所有聊天记录保存在本地
- 点击图标栏的截屏按钮,即可进入截屏界面,利用鼠标或者触控笔,即可把选中区域进行截图保存在本地
- 摇动屏幕,在私聊界面,点击图标栏的摇动屏幕图标,即可提示对方摇动屏幕
## 2.3 具体的分析
### 2.3.1 界面功能模块
**用户名获取显示**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/aa8a0e16296eac7c932d1c9ba91b2a04.writebug)
**字体调节**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/5d87a57558031751debc194fa136fe3e.writebug)
**文件传输**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/0e3c9c2c064dde170b98ce448fe91f87.writebug)
**聊天记录管理**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/3819c6b365696b1ad511b22c257ed0ff.writebug)
**屏幕截图**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/959ba1bed85fe6ce37620a5e76ccfd12.writebug)
**摇屏**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/edce1f086cf897627ecc2320a7bbe4fb.writebug)
**文字聊天**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/4b1bb70c449af2d9aa70d051517c5b57.writebug)
# 第3章 网络聊天室设计书
## 3.1 命名规则
### 3.1.1 类命名规则
- Widget public继承Qwidget 负责群聊功能的实现
- Chat public继承Qdialog 负责私聊功能的实现
- FullScreenWidget public继承Qwidget 负责截图功能的实现
- Tcpclient public 继承Qdialog为socket文件传输的用户
- Tcpserver public继承Qdialog为socket文件传输的服务端
### 3.1.2 信号函数命名规则
- void setPixmap(QPixmap pixmap);
与FullScreenWidget交互(Widget类)
- void sendFileName(QString fileName);
与Tcpclient交互(Tcpserver类)
- void finishPixmap(const QPixmap &finishPixmap);
与鼠标事件交互(FullScreenWidget类)
### 3.1.3 槽函数命名规则
- void Widget::processPendingDatagrams() 接受udp数据
- void loadBackgroundPixmap(const QPixmap &bgPixmap)加载背景
- void sentFileName(QString)发送文件信息
- void sendMessage()发送数据
- void TcpClient::readMessage()读取消息
- void processPendingDatagrams()接收数据
- void savePixmap()保存截图
- void currentFormatChanged(const QTextCharFormat &format)
- void displayError(QAbstractSocket::SocketError socketError)错误
### 3.1.4 属性命名规则
- TotalBytes(数据总大小)
- bytesWritten(以发送数据大小)
- bytesToWrite (剩余大小)
- loadSize(每次发送大小)
- tcpPort(端口号)
- outBlock(缓冲数据)
### 3.1.5 文件命名规则:
| 定义文件 | 实现文件 | 界面UI文件 |
| ------------------ | -------------------- | ------------ |
| chat.h | chat.cpp | chat.ui |
| voice.h | voice.cpp | voice.ui |
| tcpclient.h | tcpclient.cpp | tcpclient.ui |
| tcpserver.h | tcpserver.cpp | tcpserver.ui |
| widget.h | widget.cpp | widget.ui |
| fullScreenWidget.h | fullScreenWidget.cpp | |
### 3.1.6 资源文件
- resource.qrc (图标文件)
包括:empty.png Floppy.png fileopen.png textitalic.png textunder.png screen.png User.png audio.png textcolor.png等
- msg.wav(声音文件)
## 3.2 屏幕设计
| **屏幕名** | **屏幕类型** | **描述** |
| ------- | -------- | --------------------------- |
| 群聊界面 | Qt页面 | 显示在线的用户和包括聊天传输文件在内的等全部功能界面 |
| 私聊界面 | Qt界面 | 与单人聊天的界面比群聊界面多了抖屏功能 |
| 传送文件界面 | Qt页面 | 该界面主要显示和选取要传输的文件,并确认文件是否被接收 |
| 文件接收界面 | Qt页面 | 该界面主要显示需要接收的文件 |
## 3.3 软件结构图
![](http://www.writebug.com/myres/static/uploads/2021/10/19/145fb2180cf196af43fb8f34149a7592.writebug)
## 3.4类图
### 3.4.1 私聊界面类
![](http://www.writebug.com/myres/static/uploads/2021/10/19/fc6272aec2433a7fe9a9ec99987ad284.writebug)
### 3.4.2 群聊界面类
![](http://www.writebug.com/myres/static/uploads/2021/10/19/ce7cea0fa5690f106de21f0be9877db6.writebug)
### 3.4.3 截图类
![](http://www.