毕业答辩-基于QT的局域网聊天软件设计与实现_第1页
毕业答辩-基于QT的局域网聊天软件设计与实现_第2页
毕业答辩-基于QT的局域网聊天软件设计与实现_第3页
毕业答辩-基于QT的局域网聊天软件设计与实现_第4页
毕业答辩-基于QT的局域网聊天软件设计与实现_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Qt的局域网聊天软件

设计与实现太原科技大学华科学院毕业设计姓名:学号:班级:指导老师:主要内容课题的研究背景和意义应用需求分析与可行性分析基本原理以及系统分析系统设计总结与致谢课题的研究背景和意义一、课题的研究背景目前,大型的专业的局域网聊天软件主要有以下几种:通软联合GoCom、腾讯RTX、IBMLotusSametime等。局域网聊天软件在企业办公中起着非同一般的作用,极大的帮助了企业中员工之间的交流和资料的整合,为大部分企业提供了及时沟通和实时协作的平台,提高了工作的效率,注重了工作内容的时效性和有效性。局域网通讯的魅力在于可以更方便的交流,可以即时看到对方是否在线,是否可以接收到消息,有利于用户判别消息的有效性和真实性,方便的人们的生活,而不同于E-MAIL,只能简单的将消息发送而忽略了消息的时效性。一、课题的研究背景然而,作为局域网聊天软件这样的小型软件,更多的要求是界面的特殊性,独立性,以及美观性,对于功能的要求在目前市面上已经大相径庭,各种各样的软件层出不穷。对于这样的小型软件用户更多的需求是个性化和可移植性,以及精简短小,更容易更新和更改的软件。课题的研究背景和意义二、课题的研究意义当前的社会环境下,信息的交流沟通是必不可少的,即时聊天软件作为人与人之间交流的重要工具,具有着非同寻常的意义和必要性。虽然现在这个时代已经出现了许许多多各种各样的聊天软件,甚至于发展向广域网,全民化的节奏,但局域网内的交流与沟通仍然是不可或缺的。由于广域网的范围涵盖太大,安全系数大大降低,局域网作为家庭,工作的小型网络,安全性便大大提高了。当前社会人们对于隐私的保密需求越来越高,信息的安全性便显得尤为重要。二、课题的研究意义同时由于嵌入式系统存在的领域较多且市场广阔,并且人们的需求相对较高,电子消费也逐渐成为人们市场生活中必不可少的一部分,所以应用嵌入式系统开发聊天软件在聊天软件市场中占有着重要地位。这次的设计是开发一个局域网聊天软件,能够实现局域网中用户的日常聊天,可以更改字体,字号,保存聊天记录,删除聊天记录,传输小型文件等功能,具备基本的局域网聊天软件功能,使用QT开发,使其可以跨平台使用,为将来的软件移植打下坚实的基础。应用需求分析与可行性分析一、应用需求分析本软件应简单易用,并且占用资源少,包含局域网聊天软件的主要功能。根据局域网聊天软件的特点,该软件主要需要实现的就是即时通讯功能,其需要体现出用户的用户名,IP地址,当前状态等信息,主要功能就是实现客户端之间的通信,并能实时更新用户的信息,并使得UI界面美观大方,不会令人产生乏味感。应用需求分析与可行性分析二、可行性分析1.经济可行性本项目是作为毕业设计是由个人设计的,投入费用可忽略不计,主要经费开支主要是个人的日常生活费用,日常的运行和维护也全由个人完成,故经费较低。开发、运行和维护费用主要包括:购买和安装设备的费用:计算机硬件(已拥有);软件开发费用:使用Qt的Freelicenseversion(免费);人员费用:个人独自开发,日常生活费用;消耗品费用:除相关资料查询外暂无;二、可行性分析2.技术可行性技术可行性是指个人估计掌握的技术条件是否能够保证项目完成,开发所需工具能否满足项目的需求等等。该软件运用QT进行开发,QT作为被广泛使用的框架,具有强大的功能,而其中的TCP协议、UDP协议、Socket等也十分适合开发局域网聊天工具。进过几个月的学习和研究,已经初步掌握了QT开发过程,以及相关的类库,所以技术是可行的。二、可行性分析3.运行可行性本软件大小不超过90M,占用不超过不超过10M内存,可以在多种平台上安装运行,本次毕业设计只在windows7系统下的PC上测试和运行,运行可行。4.时间可行性在进行项目的同时也在找工作实习,平时只有周六日休息,每晚20点回到家,基本没有什么时间去做毕业设计,只有在周六日的时候加紧加班开发毕业设计,时间紧凑,但依旧在可行的范围之内。基本原理以及系统分析一、局域网聊天原理此次局域网聊天软件的设计主要采用TCP/IP协议完成,TCP/IP协议作为internet的核心协议,已经被广泛应用与日常的网络使用,目前已经成为事实上的国际标准。TCP/IP协议在网络参考模型中主要作用于网络层、传输层和应用层,支持TCP/IP协议的应用程序通常直接运行与传输层协议,而不需要表示层和会话层的支持。该协议可以在一台计算机需要连接另一台计算机时,帮助其建立一个连接,并控制其发送接受数据,以及终止连接,TCP/IP协议基本囊括了网络通讯的主要功能,同时具有相当的灵活性和自由性,使得计算机之间可以彼此连通。一、局域网聊天原理同时本次开发需要用到UPD协议,这是一种异步通信模式,需要采取请求接收的方式来进行通讯,但这样的好处是不需要接受网络吞吐量的限制,不需要维护连接状态,因此一台机器可以向多个机器发送相同的消息,其分发信息的功能在本次设计中起到了至关重要的作用。基本原理以及系统分析二、系统分析本软件主要实现:文字传输,上线提示,更改字体、字号,保存聊天记录,删除聊天记录,传输小型文件,实现窗口拖动等功能,使用QT开发,使其可以跨平台使用,为将来的软件移植打下坚实的基础。系统设计一、概要设计首先,要明确在系统需求分析中,首先要明确的是客户需求,作为局域网聊天软件,客户的需求首先是流畅的聊天,其次,美观性在当今的软件设计当中起到了决定性的作用,UI的设计就显得尤为重要,再者,软件的功能性全面和完善是一个完整的软件必不可少的。那么概要设计就明确了:1.深入了解设计局域网聊天的方式方法;2.设计完整的UI界面;3.完善软件的功能以及优化。系统设计二、软件结构设计局域网聊天系统登录界面用户名输入框UI界面窗体拖动聊天室界面文字输入工具栏字体字号调整文字颜色调整聊天记录保存聊天记录清空文件传输Btn消息显示用户列表UI界面窗体拖动TCP客户端端口/IP配置文件接收窗体拖动TCP服务端端口/IP配置文件发送窗体拖动系统设计三、详细设计1.用户登录界面用户登录界面作为软件的首个界面,必须要做到功能完整,UI设计引人注目,如图。三、详细设计2.聊天室界面聊天室界面作为本软件的主要界面,并且作为大部分功能的实现界面,将文字的传输和调整以及用户列表的显示全都囊括其中,为了使调理清晰,所以采用了TOOLBOX的方式进行排列和组织,如图。三、详细设计3.文件传输窗口文件传输作为聊天室里的附加功能,自然也不能在设计方面出现差错,同事又要符合程序设计的基本要求,所以采用TCP/IP协议来传输文件,UI的设计同样是与之前的界面相融合,如图。系统设计四、主要技术实现1.窗体拖动本次开发设计所采用的窗体拖动是主要是依靠mousePressEvent、mouseMoveEvent、mouseReleaseEvent三个功能函数来实现的。QWidget::mouseMoveEvent可以接收到来自鼠标的变量E在子类窗口中发送来的移动信号。Qwidget::mousePressEvent

可以接收到来自鼠标的变量E在子类窗口中发送来的鼠标按下信号。QWidget::mouseReleaseEven

t可以接收到来自鼠标的变量E在子类窗口中发送来的鼠标抬起信号。四、主要技术实现2.文字内容传输及上线提醒文字内容传输主要使用了UPDSocket方式进行传输,这样可以单服务器发送多客户端接收。udpSocket=newQUdpSocket(this);port=4444;

udpSocket->bind(port,QUdpSocket::ShareAddress|QUdpSocket::ReuseAddressHint);connect(udpSocket,SIGNAL(readyRead()),this,SLOT(processPendingDatagrams()));sendMessage(NewParticipant);四、主要技术实现voidWidget::sendMessage(MessageTypetype,QStringserverAddress){ QByteArraydata;

QDataStreamout(&data,QIODevice::WriteOnly);

QStringlocalHostName=QHostInfo::localHostName();

QStringaddress=getIP(); out<<type<<userName<<localHostName; switch(type)

caseMessage:

if(ui->messageTextEdit->toPlainText()=="")

{

QMessageBox::warning(0,tr("警告"),tr("发送内容不能为空"),QMessageBox::Ok);

return;

}

out<<address<<getMessage();

ui->messageBrowser->verticalScrollBar()->setValue(ui->messageBrowser->verticalScrollBar()->maximum());

break;

}后略,详见附录四、主要技术实现3.文件传输在本程序中,采用了TCP/IP协议,文件的传输将使用这一协议进行传输,增大文件传输的安全系数,并提高文件的传输效率,减少文件破损和丢包率,缺点在于会收到网络吞吐量的限制。voidTcpServer::initServer(){playloadSize=64*1024;TotalBytes=0;bytesWritten=0;bytesToWrite=0;

ui->serverStatusLabel->setText(tr("请选择要传送的文件"));

ui->progressBar->reset();ui->serverOpenBtn->setEnabled(true);ui->serverSendBtn->setEnabled(false);

tcpServer->close();}//初始化四、主要技术实现voidTcpServer::sendMessage(){

ui->serverSendBtn->setEnabled(false);clientConnection=tcpServer->nextPendingConnection();connect(clientConnection,SIGNAL(bytesWritten(qint64)),this,SLOT(updateClientProgress(qint64)));

ui->serverStatusLabel->setText(tr("开始传送文件:

%1").arg(theFileName));localFile=newQFile(fileName);

if(!localFile->open(QFile::ReadOnly)){QMessageBox::warning(this,tr("应用程序"),

tr("无法读取文件%1:

\n%2").arg(fileName).arg(localFile->errorString()));return;}TotalBytes=localFile->size();QDataStreamsendOut(&outBlock,QIODevice::WriteOnly);sendOut.setVersion(QDataStream::Qt_5_3);time.start();QStringcurrentFile=fileName.right(fileName.size()-fileName.lastIndexOf("/")-1);

sendOut<<qint64(0)<<qint64(0)<<currentFile;TotalBytes+=outBlock.size();sendOut.device()->seek(0);sendOut<<TotalBytes<<qint64(outBlock.size()-sizeof(qint64)*2);bytesToWrite=TotalBytes-clientConnection->write(outBlock);qDebug()<<currentFile<<TotalBytes;outBlock.resize(0);}总结几个月以来,每天的生活和工作都十分忙碌,以至于很多学校组织的活动或者培训都没有能够及时的完成,我再次深表歉意。但这几个月的生活也非常充实,忙碌的工作中偷出闲来去完成我喜爱的毕业设计,是一件挺美好的事情。说起来要说到还在杰普接受培训的时候,当我接到我的毕业论题的那一刻起,我就开始查找

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论