基于qt的局域网聊天软件设计与实现论文内容摘要:

业版权,从此, Qt mobile 由诺基亚负责,而 Qt Commercial 由 Digia 负责, 2020 年, Qt 正式被诺基亚公司作为资产剥离方式出售给 Digia 公司, Qt 开始了真正的跨平台发展。 由于 Qt 具有的强大的跨平台优势,可以操作运行与绝大多数目前流行使用的平台,并且具有模块化度高,可重用性好的面向对象 开发方式,可以使用signals/slots 的安全类型来替代 callback,使得各个模块之间的协同工作变得非常简单,以及大量的 API 支持, Qt当之无愧作为本次开发的主要工具。 局域网聊天原理 此次局域网聊天软件的设计主要采用 TCP/IP 协议完成, TCP/IP 协议作为inter 的核心协议,已经被广泛应用与日常的网络使用,在局域网和广域网中都屡见不鲜,目前已经成为事实上的国际标准。 TCP/IP 协议在网络参考模型中主要作用于网络层、传输层和应用层,支持 TCP/IP 协议的应用程序通常直接运行与传输层协议,而不需要表示层和会话层的支持。 该协议可以在一台计算机需要连接另一台计算机时,帮助其建立一个连接,并控制起发送接受数据,以及决定性的终止连接, TCP/IP 协议基本囊括了网络通讯的主要功能,同时具有相当的灵活性和自由性,使得计算机之间可以彼此通信、联通。 同时本次开发需要用到 UPD 协议,也就是用户数据包协议,这是一种异步通信模式,需要采取请求接受的方式来进行通讯,但这样的好处是不需要接受网络 吞吐量的限制,同时可以完整的接受发送数据,这样的好处是不需要维护连接状态,因此一台机器可以向多个机器发送相同的消息,虽然 UPD 协议不是一个可靠协议,但其分发信息的功能在本次设计中起到了至关重要的作用。 本次局域网聊天软件的设计思路如下: 假定 A为发送方, B为接收方 ,首先发送方流程如下:。 建立一个广播 Scoket A用户登录 8 太原科技大学华科学院毕业设计(论文) Y Y 然后,接收方流程如下: 用 A的用户名、主机名和 IP 地址建立一个 Socket 接收 A的用户名、主机名、 IP 地址 是否接到消息 B用户登录 显示聊天内容 发送聊天内容 是否需要发送消息 用聊天 Socket发送消息 连接接收信号和槽函数hasPendingDatagrams() 将 Socket绑定到本地 IP 和聊天端口 N N 9 太原科技大学华科学院毕业设计(论文) Y 回复信息 是否发送消息 显示 A发送的消息 N 10 太原科技大学华科学院毕业设计(论文) 第 4 章 系统分析 系统实现目标 本软件 主要实现: 实现局域网中用户的日常聊天,文字传输,上线提示,可以更改字体、字号,保存聊天记录,删除聊天记录,传输小型文件,实现窗口拖动等功能,具备基本的局域网聊天软件功能,使用 QT开发,使其可以跨平台使用,为将来的软件移植打下坚实的基础。 系统体系结构 图 系统结构图 聊天记录保存: 可以保存当前的聊天记录到 TXT文档。 更改字体、字号: 可以根据用户的喜好自行更改字体、字号、颜色等聊天文字。 登录 : 使用用户喜欢的用户名进行登录。 上线提示 文件传输 文字传输 窗口拖动 登录 关闭服务器 配置服务器 开启服务器 客户端 服务器 局域网聊天系统 11 太原科技大学华科学院毕业设计(论文) 文字传输: 实现聊天的基本功能。 上线提示: 用户上线发出上线提示。 文件传输: 可以传输小型文件。 窗口拖动: 点击聊天软件窗口可以自由拖动。 12 太原科技大学华科学院毕业设计(论文) 第 5 章 系统设计 该 软件 要求功能 齐全 ,界面 美观简介,符合当代人的基本审美要求 , 进行合格 的软件 开发 ,功能模块 开发 是 重中之重。 概要设计 首先,要明确在系统需求分析中,首先要明确的是客户需求,作为局域网聊天软件,客户的需求首先是流畅的聊天,其次,美观性在当今的软件设计当中起到了决定性的作用, UI 的设计就显得尤为重要,再者,软件的功能性全面和完善是一个完整的软件必不可少的。 那么概要设计就明确了: ; UI界面;。 软件结构设计 模块化在软件结构设计中起着尤为重要的作用,能否将一个应用合理的模块化是一个项目能否成功的关键。 模块化是说,将一个复杂的软件分解成为若干个小模块,逐级划分,层层嵌套,使整个软件具有明显的层级和规则,每个模块完成一个特定的功能,将各个模块组织起来之后,就可以形成一个完整的软件。 将软件模块化的原因是为了让软件的各个功能更加明确,易于将来的修改和维护,同时也增加了软件的可读性,使得更多人可以为这个软件增加新的功能和优化。 但值得一提的是,软件的模块化并不是任意的,而是具有相应的层级和相应的规则的,层层嵌套,一环扣一 环,使得各个模块间的借口尽量的联系少且简单,从而省去很多不必要的麻烦,尽量做到高内聚低耦合,增强各个模块的单独使用性,为日后提高软件质量做准备。 在本次软件的设计中,软件被细化成了如下几个部分: 一. 登录界面 1. 用户名输入框 13 太原科技大学华科学院毕业设计(论文) 2. UI 界面 3. 窗体拖动 二. 聊天室界面 1. 文字输入框 2. 工具栏 1) 字体调整 2) 字号调整 3) 颜色调整 4) 聊天记录保存 5) 聊天记录清空 6) 文件传输 3. 消息显示框 4. 用户列表框 5. UI 界面 6. 窗体拖动 三. TCP 客户端 1. 端口、 IP 地址配置 2. 文件接收 3. 窗体拖动 四. TCP 服务器 1. 端口、 IP 地址配置 2. 文件发送 3. 窗体拖动 详细设计 登录界面 用户登录界面 ,如图。 14 太原科技大学华科学院毕业设计(论文) 图 用户登录 图 主要 UI设计代码如下: ?xml version= encoding=UTF8? ui version= classDialog/class widget class=QDialog name=Dialog property name=geometry rect x0/x y0/y width400/width height184/height /rect /property property name=windowTitle stringDialog/string /property widget class=QPushButton name=enterBtn property name=geometry rect x300/x y110/y width61/width 15 太原科技大学华科学院毕业设计(论文) height61/height /rect /property property name=cursor cursorShapePointingHandCursor/cursorShape /property property name=styleSheet string notr=trueQPushButton{ borderimage: url(:/imgs/)。 } QPushButton::hover{ borderimage: url(:/imgs/)。 } QPushButton::pressed{ borderimage: url(:/imgs/)。 }/string /property property name=text string/ /property property name=flat booltrue/bool /property /widget widget class=QPushButton name=exitBtn property name=geometry rect x364/x y0/y width30/width height30/height /rect /property 16 太原科技大学华科学院毕业设计(论文) property name=styleSheet string notr=trueQPushButton{ borderimage: url(:/imgs/)。 } QPushButton::hover{ borderimage: url(:/imgs/)。 } QPushButton::pressed{ borderimage: url(:/imgs/)。 }/string /property property name=text string/ /property property name=flat booltrue/bool /property /widget widget class=QLineEdit name=usrEdit property name=geometry rect x50/x y135/y width211/width height31/height /rect /property property name=font font familyAdobe Gothic Std B/family pointsize11/pointsize weight75/weight boldtrue/bold 17 太原科技大学华科学院毕业设计(论文) /font /property /widget widget class=QWidget name=widget native=true property name=geometry rect x0/x y0/y width400/width height184/height /rect /property property name=styleSheet string notr=truewidget{backgroundimage: url(:/imgs/)。 } /string /property /widget zorderwidget/zorder zorderenterBtn/zorder zorderexitBtn/zorder zorderusrEdit/zorder /widget resources/ connections connection senderexitBtn/sender signalpressed()/signal receiverDialog/receiver slotclose()/slot 18 太原科技大学华科学院毕业设计(论文) hints hint type=sourcelabel x378/x y14/y /hint hint type=destinat。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。