局域网聊天工具毕业论文_第1页
局域网聊天工具毕业论文_第2页
局域网聊天工具毕业论文_第3页
局域网聊天工具毕业论文_第4页
局域网聊天工具毕业论文_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

安徽工业大学毕业设计(论文)安徽工业大学毕业设计(论文)说明书专 业 计算机科学与技术专业班 级 计 123姓 名 -学 号 -指导教师 -二一六 年 六 月 十 日安徽工业大学毕业设计(论文)安徽工业大学毕业设计(论文)任务书毕业设计(论文)的主要内容及要求:(1)按照软件工程的方法结合局域网聊天工具的设计的要求进行需求分析、总体设计、详细设计、编码和测试;课题名称 局域网聊天工具学 院 计算机科学与技术学院专业班级姓 名学 号安徽工业大学毕业设计(论文)(2)通过开发局域网聊天工具,学会数据库设计,熟练掌握 c+线程编程技术;(3)要求系统实现聊天的基本功能,即实现局域网内聊天功能,另外还实现附加功能:如字体更改,表情发送,公告管理等。(4)软件结构良好,具备一定的可维护性和可靠性;(5)论文字数 1.5-2 万字,并完成相关英文资料 3000 字的翻译。 参考文献资料不少于 8 篇,其中外文资料不少于 2 篇,中英文摘要约 300 字,关键词 3-5 个。指导教师签字: 安徽工业大学毕业设计(论文)摘 要如今网络的飞速发展,网络世界这一概念早已不再陌生,正是因为即时通讯软件的诞生,网络世界才蓬勃发展。即时通讯软件给人们提供了一个交流的平台,这种平台逐渐衍生发展成为一种特殊的社区,但是脱离这样的社区就会影响到人们的正常生活,工作和学习。随着通信,网络的整合,即时通讯软件将进一步发展成为新一代的通讯软件,有着巨大的发展前景。Na 局域网聊天软件正是介于这样的发展背景之下开发而成。本论文所设计的局域网聊天程序将采用软件工程学的设计流程,其所涉及专业技术主要包含 socket 网络编程, ODBC 数据库编程技术,Windows MFC 程序设计技术,多线程机制。本程序将以 VS 2012 作为系统开发工具。此聊天程序将采用 C/S 模式即客户端/服务器模式。客户端和服务器、客户端和客户端之间均采用 UDP 进行通信。服务器主要负责储存局域网内所有用户的信息,当用户信息发生变化时通知所有客户端。此外服务器还要负责分配用户的惟一标识 id。除此之外,服务器还能注销用户和群发系统消息。客户端具有用户注册、用户登录和向局域网内任何一个用户发送信息的功能。关键词:局域网聊天;即时通讯;通信;群聊天。安徽工业大学毕业设计(论文)IAbstractToday, the rapid development of the network, the concept of the online world is no longer strange, it is because of the birth of instant messaging software, the online world was booming. Instant messaging software to provide people with a communication platform that gradually rise to become a special kind of community, but from such communities will affect peoples normal life, work and study. With the integration of communications, networking, and instant messaging software will be further developed into a new generation of communications software, it has great prospects for development. Na LAN chat software it is under this context of development between developed.This paper is designed LAN chat program using software engineering design process, they involve expertise mainly comprises socket network programming, ODBC database programming technology, Windows MFC programming technology, multi-threading mechanism. This program will VS 2012 as a development tool. This chat program using C / S mode is a client / server model. It is used between the client and the server, client, and client UDP communication. The main server is responsible for storing information for all users within the LAN, to inform all clients when user information changes. In addition the server also responsible for assigning user unique identifier Uid. In addition, the server can log off users and mass system messages. Clients with user registration, user login, and send information to any user within the LAN.Key words: LAN chat;instant messaging; communication;group chat.安徽工业大学毕业设计(论文)目 录摘 要 .IAbstract.II1 系统概述 .11.1 程序简介 .11.2 系统实现技术 .11.2.1 MFC 窗口控件重绘 .11.2.2 Winsock 编程 .21.2.3 多线程编程 .32 系统分析 .52.1 需求分析 .52.2 可行性分析 .53 系统实施 .63.1 系统实施 .63.1.1 软件开发工具的选择 .63.1.2 开发平台 .63.1.3 模式选择 .63.1.4 程序设计与调试 .64 系统详细设计 .74.1 系统功能设计 .74.1.1 主要功能描述 .74.2.1 网络通信的实现 .84.2.2 登陆验证模块 .134.3 用户界面设计 .164.3.1 用户界面设计原则 .164.3.2 登陆会员界面 .164.3.3 注册会员界面 .174.3.4 已登陆界面 .194.3.5 表情与限制敏感词汇界面 .204.3.6 与个人进行私聊或者屏蔽个人界面 .214.3.7 公告界面 .224.3.8 密码修改界面 .234.3.9 系统设置界面 .245 系统测试 .255.1 测试的目的 .255.2 功能测试 .265.3 压力测试 .26总 结 .27安徽工业大学毕业设计(论文)致 谢 .28参考文献 .29附录 .30安徽工业大学毕业设计(论文)第 0 页 共 45 页1 系统概述1.1 程序简介NA 即时通讯程序是基于 windows 下的聊天程序,采用 Winsock 实现网络通讯,其设计架构为集中式的 P2P,即服务器为中心,所有相关的核心数据全部存放在服务器上,客户端只能按照规定的方式读取其数据。该软件主要采用 UDP 协议,但某些特殊情况也采用了 TCP 协议。比如,命令消息和聊天消息均基于 UDP 协议,而获取用户列表则采用的是 TCP 协议,两种协议的混用更能保证客户端与服务器通讯时的效率和准确性。NA 实现了在局域网下进行局域网下的聊天室聊天和个人聊天功能,其组成部份是客户端和服务器两大部分。其中服务器部分进行对会员,公告的修改等功能,并即时相应客户端发送而来的命令,进行相关的数据读写,并返回客户端相应的命令消息。客户端部分则是实现用户的操作界面,实现用户间的聊天以及聊天室聊天等功能。1.2 系统实现技术1.2.1 MFC 窗口控件重绘MFC(Microsoft Foundation Classes),是一个微软公司提供的类库( class libraries) ,以C+类的形式封装了 Windows 的 API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量 Windows 句柄封装类和很多 Windows 的内建控件和组件的封装类。的确,MFC 给我们提供了很便捷的编程方式,我们几乎可以不需要写任何代码就能生成一个带有菜单,工具栏和视图的窗口,MFC 也提供了丰富的控件类,在设计对话框的时候,我们也只需要直接将控件拖进对话框里,而不用写任何代码。 NA 就是典型的应用程序,采用了对话框设计框架,但是为了设计一个友好美观的操作界面,仅用微软提供的控件类库达不到预期的效果,因此,就必须重新绘制其对话框和控件的界面。而正由于微软将这些控件封装得很好,对于要修改它的属性,派生一些美观的子控件难度就显得比较大。一般来说,实现对控件的重绘技术主要有子类化,自绘和重绘技术,由于框架太过于标准化,因此实现这些技术也是有一定的难度,这必须要对框架的结构有一定的了解。NA 采用了的窗体背景重绘,listctrl 自绘,按钮贴图等方式实现了操作界面的美观。主要核心技术是双缓冲绘图。双缓冲绘图就是将待绘制的图片保存到内存里,当需要绘制到屏幕上时,再一次性投递到设备描述表里,这样既避免了窗口重绘时的闪烁,又提高了绘制的速度和效率。BOOL CDC:CreatieCompatibleDC(CDC* pDC)函数用来创建一个兼容 DC,即在内存里创建一个DC,以后的任何绘图所需的操作,如选用何种画笔,画刷,字体等,都将在内存中进行,而不是在真实设备上下文里。随后可以创建一张兼容位图,需要绘制的图像将,函数原型如下 BOOL CBitmap:CreateCiompatibleBitmap(CDC* pDC,int nWidth,int nHeight)。最后需要将兼容 DC 里的东西投射到真实的 DC 里, BOOL BitBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int nYSrc,DWORD dwRop )函数可以实现该功能,具体用法可参考 MSDN。安徽工业大学毕业设计(论文)第 1 页 共 45 页对话框的绘制比较容易,MFC 为对话框提供了 OnPaint 消息相应函数,但是在该函数下绘制并不能从根本上重绘对话框,因为该函数还会调用 CDialog:OnPaint 函数,在内部还会再去重绘背景,因此要实现完全意义上的重绘背景,就必须响应WM_ERASEBKGND 消息,在消息响应函数里实现我们自己的绘制方法,然后直接返回TRUE,不再调用 CDialog:OnEraseBkgnd()函数。为了实现像 QQ 那样的界面,必须将对话框的属性设置为 None 属性,即没有标题栏,因此只有自己去实现标题栏的功能。CListCtrl 重绘的方法有两种,一种是采用微软提供的 OWNERDRAW 属性,通过重载DrawItem 虚函数来进行重绘。另外一种就是 Custom-draw 属性,通过定义自绘消息响应函数来进行重绘。两种方式有不同之处,前者需要对整个 ListCtrl 绘制,必须考虑到每一个 item 项的绘制情况。而后者相对比较简便,系统会在四个状态的时候通知重绘,这四个状态分别是绘制前,绘制后,擦除前,擦除后,我们就可以按照自己的需要去绘制,并且我们只用考虑其中一项 item 的绘制方法,就可以应用于所有项。NA 采用了后者进行对列表控件的重绘,实现了好友列表控件,群列表控件类。对于 VC6 开发环境,微软提供的通用 button 控件的外观从现在看来的确不太美观,无法实现动态状态的效果。那么因此就必须重新创建一个派生于 CButton 的按钮类,由于该类将应用于本软件的所有按钮控件,因此做成可贴状态图的按钮控件最为合适。状态分为移出按钮,悬浮按钮,按下按钮,禁用按钮四种状态,我们只需要提供相应的状态的 Bitmap 就可以。具体重绘方法就是采用前面提到的 OWNERDRAW 属性,重载虚函数DrawItem。而捕获鼠标的移入移出消息可以使用_TrackMouseEvent 函数,通过设置TRACEMOUSEEVENT 结构体的值来捕捉该消息。其移出消息对应的是WM_MOUSELEAVE,移入按钮消息是 WM_MOUSEHOVER,分别定义其消息相应函数,这样就能实现状态的更替,再进行相应的绘制。1.2.2 Winsock 编程Windows 下网络编程的规范Windows Sockets 是 Windows 下得到广泛应用的、开放的、支持多种协议的网络编程接口。它实现了标准 socket 编成的函数,提供了一套属于windows 下的套接子 API。其通信的基础是套接字(Socket) ,一个套接字是通讯的一端。在这一端上你可以找到与其对应的一个名字。一个正在被使用的套接字都有它的类型和与其相关的进程。套接字存在于通讯域中。通讯域是为了处理一般的线程通过套接字通讯而引进的一种抽象概念。套接字通常和同一个域中的套接字交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序) 。Windows Sockets 规范支持单一的通讯域,即 Internet 域。各种进程使用这个域互相之间用 Internet 协议族来进行通讯(Windows Sockets 1.1 以上的版本支持其他的域,例如 Windows Sockets 2) 。套接字可以根据通讯性质分类;这种性质对于用户是可见的。应用程序一般仅在同一类的套接字间通讯。不过只要底层的通讯协议允许,不同类型的套接字间也照样可以通讯。用户目前可以使用两种套接字,即流套接字和数据报套接字。流套接字提供了双向的,有序的,无重复并且无记录边界的数据流服务。数据报套接字支持双向的数据流,但并不保证是可靠,有序,无重复的。也就是说,一个从数据报套接字接收信息的进程有可能发现信息重复了,或者和发出时的顺序不同。数据报套接字的一个重要特点是它保留了记录边安徽工业大学毕业设计(论文)第 2 页 共 45 页界。对于这一特点,数据报套接字采用了与现在许多包交换网络(例如以太网)非常类似的模型。其中 TCP 协议就是基于流套接字,而 UDP 协议基于数据报套接字,NA 聊天程序主要基于 UDP 协议,而在特殊操作下又采用 TCP 协议保证其数据的可靠性。在设计阶段,需分析该软件适用于什么样的地协议进行通讯,还必须分析该系统应该适合于何种套接字 IO 操作。目前,windows 提供了多种套接字 IO 模型,如阻塞式IO,非阻塞式 IO,事件 IO,重叠 IO(可提醒 IO) ,完成端口等,每一种 IO 模型都具有自身的优势和缺陷,其中完成端口可以达到目前 windows 平台下最高 IO 性能。由于是基于 UDP 协议,并且考虑到在同一时间处理得命令并不会很大的情况,服务器和客户端均采用基于非阻态的 IO 模型实现命令的传输。windows 提供了一个CAysncSocke 异步套接字类,它是基于非阻塞模型,对 Socket 函数进行了良好的封装,CAsyncSocket:Create()有一个参数指明了你想要处理哪些 Socket 事件,你关心的事件被指定以后,这个 Socket 默认就被用作了异步方式。CAsyncSocket 的 Create()函数,除了创建了一个 SOCKET 以外,还创建了个 CSocketWnd 窗口对象,并使用 WSAAsyncSelect()将这个 SOCKET 与该窗口对象关联,以让该窗口对象处理来自 Socket 的事件(消息),然而 CSocketWnd 收到 Socket 事件之后,只是简单地回调 CAsyncSocket:OnReceive()等虚函数。所以 CAsyncSocket 的派生类,只需要在这些虚函数里添加发送和接收的代码。因此介于微软提

温馨提示

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

评论

0/150

提交评论