详细功能分析报告.docx

上传人:b****3 文档编号:11575395 上传时间:2023-06-01 格式:DOCX 页数:17 大小:319.24KB
下载 相关 举报
详细功能分析报告.docx_第1页
第1页 / 共17页
详细功能分析报告.docx_第2页
第2页 / 共17页
详细功能分析报告.docx_第3页
第3页 / 共17页
详细功能分析报告.docx_第4页
第4页 / 共17页
详细功能分析报告.docx_第5页
第5页 / 共17页
详细功能分析报告.docx_第6页
第6页 / 共17页
详细功能分析报告.docx_第7页
第7页 / 共17页
详细功能分析报告.docx_第8页
第8页 / 共17页
详细功能分析报告.docx_第9页
第9页 / 共17页
详细功能分析报告.docx_第10页
第10页 / 共17页
详细功能分析报告.docx_第11页
第11页 / 共17页
详细功能分析报告.docx_第12页
第12页 / 共17页
详细功能分析报告.docx_第13页
第13页 / 共17页
详细功能分析报告.docx_第14页
第14页 / 共17页
详细功能分析报告.docx_第15页
第15页 / 共17页
详细功能分析报告.docx_第16页
第16页 / 共17页
详细功能分析报告.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

详细功能分析报告.docx

《详细功能分析报告.docx》由会员分享,可在线阅读,更多相关《详细功能分析报告.docx(17页珍藏版)》请在冰点文库上搜索。

详细功能分析报告.docx

详细功能分析报告

一、软件简介

本软件主要完成简单的多客户端实时通信,基于TCP协议的局域网聊天软件。

首先启动服务器,服务器启动后等待客户端的请求,同时显示出离线用户列表。

客户端通过输入账号和密码进行登录,如果登录成功,则进入聊天界面,同时显示当前在线好友列表和离线好友列表,如果登录失败,则提示用户账号或者密码错误。

当多个客户端进入聊天室后,客户之间可以进行群聊,用户同时可以选择与当前在线的某一好友进行私聊。

二、需求分析

2.1、任务概述

随着信息化时代的快速发展,互联网的应用越来越广泛,同时实时聊天通信技术变得日益重要,不论在学校、家庭或者是公司,局域网聊天已经离不开我们的日常生活。

本软件所设计的局域网聊天系统能够实现局域网的聊天、群聊、私聊等功能。

2.2、需求规定

该软件可以完成多客户端的通信,服务器端包括:

服务器启动,离线用户列表和在线用户列表,同时还要完成客户端登录信息的验证,当有用户登录成功时,服务器端实时刷新在先用户列表。

客户端包括:

用户登录,当用户登录成功后,进入聊天界面,用户之间可以进行群聊和私聊。

2.3、对性能的规定

2.3.1、时间特性要求

所有发送操作的响应的时间一般不超过1秒,大量的信息发送后,应该在5秒内显示,如果未发送失败,会提示出相关的错误信息。

当存在离线用户上线时,用户在线列表更新时间在3秒内响应。

2.3.2、运行环境规定

该软件只能在windows环境平台下运行,内存在256M以上,硬盘1G空余空间。

三、总体设计

3.1、软件总体功能结构图

图(3.1)软件总体功能结构图

如图(3.1)所示为该软件总体功能结构图,其中主要包括两大部分:

服务器端和客户端。

其中服务器端主要包括:

连接数据库、用户列表更新、客户端信息处理。

客户端包括:

客户端登录、在线用户列表、离线用户列表、用户群聊、用户私聊。

3.2、软件工作流程图

图(3.2)软件工作流程图

如图(3.2)所示,为整个软件工作的流程图,首先开启服务器,服务器等待客户端的请求连接,然后客户端发送连接请求(发送账号和密码),然后等待服务器的回应,服务器收到连接请求后,验证客户信息,如果信息验证成功,则连接建立成功,好友之间通过服务器端向客户端发送好友信息。

3.3、服务器总体设计

服务器端主要功能:

(1)数据库设计:

设计数据库,用户存储客户信息,例如用户的账号、密码、昵称等。

(2)客户端请求信息处理:

主要用来处理用户登录验证,如果验证成功,则给客户端回复登录成功信息。

(3)客户端信息转发:

主要完成客户之间通信时,首先客户发送信息给服务器,服务器端然后在转发给其他的客户。

(4)用户列表更新:

主要用来处理当有新客户端登录成功后,对现在用户列表和离线用户列表进行更新。

3.4、客户端总体设计

客户端主要功能:

(1)客户端登录:

主要完成客户端的登录,客户端输入用户名和密码,然后进行登录,如果登录成功,则跳转到聊天模块,如果登录失败,则提醒用户名或者密码错误。

(2)连接服务器:

通过当前输入的账号和密码,连接服务器开启的端口号。

(3)实时通信模块:

主要完成在线用户之间进行群聊和私聊。

(4)用户列表更新:

主要显示当前在线好友列表和离线好友列表。

四、详细设计

4.1、软件详细的功能流程图

图(4.1)软件详细功能流程图

4.2、数据库设计

该系统采用的是微软的Access数据库,用来存放用户信息,数据字典如下表所示:

(一)用户信息

字段

名称

备注

账号

昵称

StrName

密码

strPass

真实姓名

strRealName

性别

strSex

本系统将数据库操作封装为一个类,方便开发人员的操作,相关的函数介绍如下所示:

打开数据库函数:

voidOpenDataBase();

关闭数据库函数:

voidCloseDataBase();

打开记录集:

_RecordsetPtr&OpenRecordset(CStringsql);

关闭记录集:

voidCloseRecordset();

4.3、程序中定义的核心数据结构

1、定义消息头的数据结构

typedefstructtagHeader

{

chartype;

intlen;

}Header,*pHeader;

以上结构体主要包含两个部分内容,type为char型字符,用来存储用户发送的是什么类型的消息,type定义的取值如下所示:

#defineLOGIN_IO1//用户登录消息

#defineSEND_MESSAGE3//用户发送消息

#definePRIVATE_MESSAGE4//用户私聊消息

#definePASS_SUCCESS5//用户密码验证成功消息

#definePASS_FAILED6//用户密码验证失败消息

#defineSERVER_STOP7//服务器停止消息

#defineASK_NUM8//应答消息

#defineASKNUM_FAILED9//应答失败消息

#definePRIVATE_ASK10//私聊应答消息

#definePRIVATE_REFUSE11//私聊拒绝消息

以上为该软件定义的头消息结构的类型,主要包括:

用户登录消息、用户发送消息、用户私聊消息、用户密码验证成功消息、用户密码验证失败消息、服务器停止消息、应答消息、应答失败消息、私聊应答消息、私聊拒绝消息。

用户通过发送不同的消息类型给服务器,服务器收到消息类型后进行判断,依据不同的消息类型进行不同的处理。

2、定义用户登录信息数据结构

typedefstructLogonUser

{

CStringname;

CStringpassword;

}User,*pUser;

以上结构体主要包含两部分:

用户名和密码。

当用户登录时,客户端将用户发送给服务器端,服务器端接收到后,对用户名和密码进行验证。

4.4、客户端详细设计

1、用户登录模块

(1)用户登录模块流程图

图(4.2)用户登录模块流程图

(2)程序描述

对在用户登录信息界面中输入的各项信息进行初步检验。

若发现错误,提示用户输入错误,让用户重新输入一次。

若未发现错误,转入主界面。

其中的错误种类有:

输入数据不匹配、账号(数据库没有该账号)、密码(与对应账号的密码不匹配)。

在登录界面中,主要的函数为:

判断是否为空:

IdentifyNull(name,password,server);

创建套接字:

CreateSocket(server);

发送账号:

SendName(name);

发送密码:

SendPssword(password);

其中发送账号和密码的函数为:

//发送用户名

voidCDlgLogin:

:

SendName(CStringname)

{

//设置发送类型

head.type=LOGIN_IO;

//发送长度

head.len=name.GetLength();

//发送登陆LOGIN_IO命令字

m_pSocket->Send((char*)&head,sizeof(Header));

//发送账号

m_pSocket->Send(name,name.GetLength());

}

//发送密码

voidCDlgLogin:

:

SendPssword(CStringpassword)

{

head.type=PASS_SUCCESS;

head.len=password.GetLength();

//发送验证密码PASS_SUCCESS命令字

m_pSocket->Send((char*)&head,sizeof(Header));

m_pSocket->Send(password,password.GetLength());

}

2、群聊模块

(1)群聊模块流程图

图(4.3)群聊模块流程图

(2)程序描述

群聊主要完成多客户端之间的通信,主要的函数及其功能如下:

更新用户列表:

UpdateUser()

接收消息:

GetSendMessage()

发送消息:

OnButtonSend()

其中发送消息的详细程序代码如下:

voidCChatClientDlg:

:

OnButtonSend()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

//得到发送的消息内容

CStringmessaegeContent;

m_sendMessage.GetWindowText(messaegeContent);

//判断发送的消息是否为空消息

if(messaegeContent=="")

{

AfxMessageBox("不能发送空消息!

");

//设置鼠标的焦点

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_EDIT_SENDINFO);

pEdit->SetFocus();

return;

}

//发送消息的结构体

Headerhead;

//发送消息的命令字

head.type=SEND_MESSAGE;

//发送消息的长度

head.len=messaegeContent.GetLength();

//当前时间

CTimetime=CTime:

:

GetCurrentTime();

//时间格式

CStringt=time.Format("%H:

%M:

%S");

//昵称

CStringnikeName=theApp.m_strName;

CStringstr=nikeName+""+t+"\r\n"+""+messaegeContent;

//发送命令字

m_pSocket->Send((char*)&head,sizeof(Header));

//发送消息

if(m_pSocket->Send((LPCTSTR)str,str.GetLength()))

{

//清空消息框

m_sendMessage.SetWindowText("");

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_EDIT_CHATINFO);

pEdit->SetFocus();

}

else

{

AfxMessageBox("网络传输错误!

");

}

}

3、私聊模块

(1)私聊模块流程图

图(4.4)私聊模块流程图

(2)程序描述

私聊模块主要实现点对点之间的通信,相关的函数如下所示:

发送消息:

OnButtonSend()

获取消息:

GetMessage(CStringstrPrivtMsg)

其中发送消息的详细代码如下所示:

voidCPrivateDlg:

:

OnButtonSend()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CStringsendMsg;

m_sendMessage.GetWindowText(sendMsg);

if(sendMsg=="")

{

AfxMessageBox("不能发送空消息!

");

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_EDIT_SEND);

pEdit->SetFocus();

return;

}

Headerhead;

if(theApp.PrivateOrLeave)

{

head.type=LEAVE_MESSAGE;

head.len=sendMsg.GetLength();

CTimetime=CTime:

:

GetCurrentTime();

CStringt=time.Format("%H:

%M:

%S");

CStringstr1=theApp.m_strName+""+t+"\r\n"+""+sendMsg+"\r\n";

CStringstr=theApp.m_strLeaveDesName+'&'+theApp.m_strName+'&'+theApp.m_strName+t+"\r\n"+""+sendMsg+"\r\n"+'&';

//目的主机名+本地主机名+时间+回车换行+消息

m_pSocket->Send((char*)&head,sizeof(Header));

//发送离线消息命令字LEAVE_MESSAGE,发送用户名+时间+消息内容

if(m_pSocket->Send((LPCTSTR)str,str.GetLength()))

{

//清空发送文本框

m_sendMessage.SetWindowText("");

//在接收文本框显示出来

m_receiveMessage.ReplaceSel(str1);

//在控件显示消息

UpdateData(FALSE);

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_EDIT_SEND);

pEdit->SetFocus();

}

else

{

AfxMessageBox("网络传输错误!

");

}

}

…….

}

4.5、服务器端详细设计

1、启动服务器,等待客户连接

//创建socket对象

CServerSocket*m_pSocket;

m_pSocket=newCServerSocket;

if(!

m_pSocket->Create(9999))

{

AfxMessageBox("创建Socket失败!

");

returnFALSE;

}

if(!

m_pSocket->Listen())

{

AfxMessageBox("创建侦听发生错误!

");

returnFALSE;

}

2、用户列表更新

(1)用户列表更新流程图

图(4.5)用户列表更新流程图

(2)程序描述

在线用户列表和离线用户列表实时更新:

UpdateUser(CServerClientSocket*pSocket,CStringm_usrLeaveName,inttype)

离线用户列表显示:

ListCloseUser()

3、其他函数介绍

验证用户信息:

IdentifyUser(CStringname,CStringpassword)

通过账号得到用户名:

GetNameByNum(CStringnum)

通过账号得到密码:

GetPassByNun(CStringnum)

五、实现和运行结果

1、服务器端

图(5.1)服务器监听图(5.2)客户登录成功,服务器显示信息

2、客户端

图(5.3)客户端登录界面

图(5.4)群聊模块

图(5.5)私聊请求模块

图(5.6)私聊模块

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 辩护词

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2