详细功能分析实施报告_第1页
详细功能分析实施报告_第2页
详细功能分析实施报告_第3页
详细功能分析实施报告_第4页
详细功能分析实施报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、-. z.一、软件简介本软件主要完成简单的多客户端实时通信,基于TCP协议的局域网聊天软件。首先启动效劳器,效劳器启动后等待客户端的请求,同时显示出离线用户列表。客户端通过输入账号和密码进展登录,如果登录成功,则进入聊天界面,同时显示当前在线好友列表和离线好友列表,如果登录失败,则提示用户账号或者密码错误。当多个客户端进入聊天室后,客户之间可以进展群聊,用户同时可以选择与当前在线的*一好友进展私聊。二、需求分析2.1、任务概述随着信息化时代的快速开展,互联网的应用越来越广泛,同时实时聊天通信技术变得日益重要,不管在学校、家庭或者是公司,局域网聊天已经离不开我们的日常生活。本软件所设计的局域网聊

2、天系统能够实现局域网的聊天、群聊、私聊等功能。2.2、需求规定该软件可以完成多客户端的通信,效劳器端包括:效劳器启动,离线用户列表和在线用户列表,同时还要完成客户端登录信息的验证,当有用户登录成功时,效劳器端实时刷新在先用户列表。客户端包括:用户登录,当用户登录成功后,进入聊天界面,用户之间可以进展群聊和私聊。2.3、对性能的规定、时间特性要求所有发送操作的响应的时间一般不超过1秒,大量的信息发送后,应该在5秒显示,如果未发送失败,会提示出相关的错误信息。当存在离线用户上线时,用户在线列表更新时间在3秒响应。、运行环境规定该软件只能在windows环境平台下运行,存在256M以上,硬盘1G空余

3、空间。三、总体设计3.1、软件总体功能构造图图(3.1) 软件总体功能构造图如图3.1所示为该软件总体功能构造图,其中主要包括两大局部:效劳器端和客户端。其中效劳器端主要包括:连接数据库、用户列表更新、客户端信息处理。客户端包括:客户端登录、在线用户列表、离线用户列表、用户群聊、用户私聊。3.2、软件工作流程图图(3.2) 软件工作流程图如图3.2所示,为整个软件工作的流程图,首先开启效劳器,效劳器等待客户端的请求连接,然后客户端发送连接请求发送账号和密码,然后等待效劳器的回应,效劳器收到连接请求后,验证客户信息,如果信息验证成功,则连接建立成功,好友之间通过效劳器端向客户端发送好友信息。3.

4、3、效劳器总体设计效劳器端主要功能:1数据库设计:设计数据库,用户存储客户信息,例如用户的账号、密码、昵称等。2客户端请求信息处理:主要用来处理用户登录验证,如果验证成功,则给客户端回复登录成功信息。3客户端信息转发:主要完成客户之间通信时,首先客户发送信息给效劳器,效劳器端然后在转发给其他的客户。4用户列表更新:主要用来处理当有新客户端登录成功后,对现在用户列表和离线用户列表进展更新。3.4、客户端总体设计客户端主要功能:1客户端登录:主要完成客户端的登录,客户端输入用户名和密码,然后进展登录,如果登录成功,则跳转到聊天模块,如果登录失败,则提醒用户名或者密码错误。2连接效劳器:通过当前输入

5、的账号和密码,连接效劳器开启的端口号。3实时通信模块:主要完成在线用户之间进展群聊和私聊。4用户列表更新:主要显示当前在线好友列表和离线好友列表。四、详细设计4.1、软件详细的功能流程图图(4.1)软件详细功能流程图4.2、数据库设计该系统采用的是微软的Access数据库,用来存放用户信息,数据字典如下表所示:表一用户信息字段名称备注账号昵称StrName密码strPass真实strRealName性别strSe*本系统将数据库操作封装为一个类,方便开发人员的操作,相关的函数介绍如下所示:翻开数据库函数:void OpenDataBase();关闭数据库函数:void CloseDataBas

6、e();翻开记录集:_RecordsetPtr& OpenRecordset(CString sql);关闭记录集:void CloseRecordset();4.3、程序中定义的核心数据构造1、定义消息头的数据构造typedef struct tagHeaderchar type;intlen; Header, *pHeader;以上构造体主要包含两个局部容,type为char型字符,用来存储用户发送的是什么类型的消息,type定义的取值如下所示:#define LOGIN_IO 1 /用户登录消息#define SEND_MESSAGE 3/用户发送消息#define PRIVATE_ME

7、SSAGE 4/用户私聊消息#define PASS_SUCCESS 5/用户密码验证成功消息#define PASS_FAILED 6/用户密码验证失败消息#define SERVER_STOP 7/效劳器停顿消息#define ASK_NUM 8/应答消息#define ASKNUM_FAILED 9/应答失败消息#define PRIVATE_ASK 10/私聊应答消息#define PRIVATE_REFUSE 11/私聊拒绝消息以上为该软件定义的头消息构造的类型,主要包括:用户登录消息、用户发送消息、用户私聊消息、用户密码验证成功消息、用户密码验证失败消息、效劳器停顿消息、应答消息、

8、应答失败消息、私聊应答消息、私聊拒绝消息。用户通过发送不同的消息类型给效劳器,效劳器收到消息类型后进展判断,依据不同的消息类型进展不同的处理。2、定义用户登录信息数据构造typedef struct LogonUserCString name;CString password; User, *pUser;以上构造体主要包含两局部:用户名和密码。当用户登录时,客户端将用户发送给效劳器端,效劳器端接收到后,对用户名和密码进展验证。4.4、客户打量细设计1、用户登录模块1用户登录模块流程图图(4.2)用户登录模块流程图2程序描述对在用户登录信息界面中输入的各项信息进展初步检验。假设发现错误,提示用户

9、输入错误,让用户重新输入一次。假设未发现错误,转入主界面。其中的错误种类有:输入数据不匹配、账号数据库没有该账号、密码与对应账号的密码不匹配。在登录界面中,主要的函数为:判断是否为空:IdentifyNull(name,password,server);创立套接字:CreateSocket(server);发送账号:SendName(name);发送密码:SendPssword(password);其中发送账号和密码的函数为:/发送用户名void CDlgLogin:SendName(CString name)/设置发送类型head.type = LOGIN_IO;/发送长度head.len

10、= name.GetLength();/发送登陆LOGIN_IO命令字m_pSocket-Send(char *)&head,sizeof(Header);/发送账号m_pSocket-Send(name,name.GetLength();/发送密码void CDlgLogin:SendPssword(CString password)head.type = PASS_SUCCESS;head.len = password.GetLength(); /发送验证密码PASS_SUCCESS命令字m_pSocket-Send(char *)&head,sizeof(Header);m_pSocke

11、t-Send(password,password.GetLength();2、群聊模块1群聊模块流程图图(4.3)群聊模块流程图2程序描述群聊主要完成多客户端之间的通信,主要的函数及其功能如下:更新用户列表:UpdateUser()接收消息:GetSendMessage()发送消息:OnButtonSend()其中发送消息的详细程序代码如下:void CChatClientDlg:OnButtonSend() / TODO: Add your control notification handler code here/得到发送的消息容CString messaegeContent;m_sen

12、dMessage.GetWindowTe*t(messaegeContent);/判断发送的消息是否为空消息if(messaegeContent = )Af*MessageBo*(不能发送空消息!);/设置鼠标的焦点CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT_SENDINFO);pEdit-SetFocus();return;/发送消息的构造体Header head;/发送消息的命令字head.type = SEND_MESSAGE;/发送消息的长度head.len = messaegeContent.GetLength();/当前时间CTime ti

13、me = CTime:GetCurrentTime();/时间格式CString t = time.Format(%H:%M:%S);/昵称CString nikeName = theApp.m_strName;CString str = nikeName + + t + rn + +messaegeContent;/发送命令字m_pSocket-Send(char *)&head,sizeof(Header);/发送消息if(m_pSocket-Send(LPCTSTR)str, str.GetLength()/清空消息框m_sendMessage.SetWindowTe*t();CEdit

14、 *pEdit = (CEdit*)GetDlgItem(IDC_EDIT_CHATINFO);pEdit-SetFocus();elseAf*MessageBo*(网络传输错误!);3、私聊模块1私聊模块流程图图(4.4)私聊模块流程图2程序描述私聊模块主要实现点对点之间的通信,相关的函数如下所示:发送消息:OnButtonSend()获取消息:GetMessage(CString strPrivtMsg)其中发送消息的详细代码如下所示:void CPrivateDlg:OnButtonSend() / TODO: Add your control notification handler

15、code hereCString sendMsg;m_sendMessage.GetWindowTe*t(sendMsg);if(sendMsg = )Af*MessageBo*(不能发送空消息!);CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT_SEND);pEdit-SetFocus();return;Header head;if(theApp.PrivateOrLeave)head.type = LEAVE_MESSAGE;head.len = sendMsg.GetLength();CTime time = CTime:GetCurrentTime

16、();CString t = time.Format(%H:%M:%S);CString str1 = theApp.m_strName + + t + rn + +sendMsg+rn;CString str =theApp.m_strLeaveDesName+&+ theApp.m_strName +&+theApp.m_strName+t+rn + +sendMsg+rn+&;/目的主机名+本地主机名+时间+回车换行+消息m_pSocket-Send(char *)&head,sizeof(Header); /发送离线消息命令字 LEAVE_MESSAGE,发送用户名+时间+消息容if(

17、m_pSocket-Send(LPCTSTR)str, str.GetLength() /清空发送文本框m_sendMessage.SetWindowTe*t();/在接收文本框显示出来m_receiveMessage.ReplaceSel(str1);/在控件显示消息UpdateData(FALSE);CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT_SEND);pEdit-SetFocus();elseAf*MessageBo*(网络传输错误!);.4.5、效劳器打量细设计1、启动效劳器,等待客户连接 /创立socket对象CServerSocket *m_pSocket;m_pSocket = new CServerSocket;if(!m_pSocket-Create(9999)Af*MessageBo*(创立Socket失败!);return FALSE;if(!m_pSocket-Listen()Af*MessageBo*(创立侦听发生错误!);return FALSE;2、用户列表更新1用户列表更新流程图图(4.5)用户列表更新流程图2程序描述在线用户列表和离线用户列表实时更新: UpdateUser(CServerClientSocket *pSocket

温馨提示

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

评论

0/150

提交评论