2013-06-18《C++仿QQ系统设计与实…

仿QQ聊天系统

 

1.引言 1

1.1编写目的 1

1.2项目背景 1

1.3定义 2

1.4参考资料 2

2.总体设计 2

2.1需求概述 2

2.2软件结构 2

3.程序描述 2

3.1功能 3

3.2性能 3

3.3输入项目 3

3.4输出项目 3

3.5算法 3

3.6程序逻辑 3

3.7接口 3

3.8存储分配 3

3.9限制条件 3

3.10测试要点 3

 

 

1.引言

1.1编写目的

使用QQ的聊天工具要求简洁,操作简单,以处理各种事物为核心的,具有开放性和正确性,健壮性,高效性,安全性,简洁性,可以运行在各种使用TCP/IP协议作为通讯的网络上。

本系统设计分为服务器应用和客户端应用程序两大部分,采用WinSock套接字库进行网络编程。为了既有效保证数据传输的时效性,又能够保证数据正在传输的过程中不会造成数据的丢失,采用的UDPTCP/IP相结合的链接方式。同时采用多线程技术来避免程序阻塞,提高响应效率。

使用对象:局域网的成员,各单位办公区、联系密切的同学朋友及家人、公司同事等,使用前仔细阅读此软件说明是很必要的,以便更好的使用、管理和维护此系统

 

 

1.2项目背景

随着网络的普及,人类生活越来越依赖网络,人与人之间的交也更多的是在网络上进行, 于交流的实时性,即时通讯系统也被越来越多的人所使用。 即时通讯系统除了普通的生活上的交流,也在商业交流中越来越受到重视,它可以是 个很好的与客户之间即时交流的平台,在时间上它要比电子邮件更加具有实时性,而费用相对 电话交流也要经济的多。 

     在这种环境下,QQ聊天软件作为一种即时通讯工具,得到了很好的发展。 

A开发项目名称:模拟QQ聊天系统

B:本任务提出者:王文飞

C:开发者:网络工程   黄秀平  袁宁淑  程雪梅  李旭  

D:用户:使用QQ的用户


1.3定义

系统:模拟QQ聊天系统

采用UDPTCP/IP相结合的链接方式

使用C++网络编程


1.4参考资料

Visual C++网络编程开发与实践》 清华大学出版社

《数据库系统概论》(第四版)20065 王珊 萨师煊著    高等教育出版社

C++开发案例》 20085月 人民邮电出版社


2.总体设计

2.1需求概述

局域网通讯系统软件的运行环境为各单位,公司的局域网系统,主要适用于单位系统内部人员的通讯,目的在于方便交流,提高工作效率。使用用户可以使用备用登录功能,聊天功能,查询功能,娱乐功能,账号管理功能,申请功能的软件,主要用于聊天交流。

2.2软件结构

2013-06-18《C++仿QQ系统设计与实现-期末作业》

 

 

 


3.程序描述

一、通信模块

进行聊天需要建立服务器端Socket和客户端Socket,并且要链接上,这样才能够进行信息的传达,通信模块主要的就是这个部分Socket建立和链接。

2013-06-18《C++仿QQ系统设计与实现-期末作业》

服务器端的Socket建立和链接                  客户端的Socket建立和链接




         



 

二、声源采集模块

用户按语音聊天开始键以后,就可以开始语音聊天了,要进行数据传送,就得有声源采集模块,采集到声源以后把语音的数据缓冲到缓冲区。


 

三、声音数据传输模块

声源采集模块放到缓冲区里语音数据经过这个模块以后到达音频再生模块。在这里采集到的声源数据并不能保证完全保存并运行传达,因为可能会出现声源数据如果多于录音内存量的话不可能进行保存,而要等待经过音频再生模块并释放出来内存,然后再进行保存。

2013-06-18《C++仿QQ系统设计与实现-期末作业》

声音数据传输模块流程图


 

四、音频再生模块

五、经过处理过的语音数据通过音频处理模块传送到这个模块,当接收到语音数据以后它将经过录音的语音数据进行放音,然后把内存释放出来以备保存其他缓冲区里保存的声源信息。

2013-06-18《C++仿QQ系统设计与实现-期末作业》

音频再生模块

经过这个模块好后才完成语音聊天的建立,如果想结束聊天只要断开与对方建立的链接就可以了。


3.1功能

1、申请账号

服务器收到用户的申请账号的请求,便开始接受客户传递的信息,诸如客户的呢称,性别,籍贯,个人资料等,接受完毕后,通过与后台数据库连接,向数据库添加记录,如果成功,便向客户返回其号码。客户收到服务器返回的信息后,便打开主登陆窗口。 

2013-06-18《C++仿QQ系统设计与实现-期末作业》

2、登陆 

在客户端,用户输入其号码和密码,然后建立与服务器的连接,告诉服务器我要登录,服务器收到后,开始读取数据库,然后与用户输入的信息比较,如果成功,便打开主程序窗口。然后客户向服务器请求读取好友名单,服务器收到该请求,开始读取数据库中的表,得到好友的号码后,再在表中读取好友资料,然后向客户端发送这些信息,客户收到后就在主窗口显示好友,并且建立几个矢量用以存储好友的呢称,号码。

2013-06-18《C++仿QQ系统设计与实现-期末作业》

3、文件共享 

在启动文件传输服务器的共享文件功能之前,要设置它的IP号和端口,如果设置不好。好友将无法下看到这些共享的文件。还有一个重要的步骤就是添加共享文件或目录。最后启动文件共享。 

2013-06-18《C++仿QQ系统设计与实现-期末作业》

 

4下载文件 

使用文件传输的客户端要正确配置好服务器的IP和端口号,以及下载好的文件的存放目录。如果其中之一配置不好,文件下载将会失败。设置好以后,点击“连接”按钮,如果配置正确,这时将会看到服务器共享的文件。目前不能支持文件夹下载,当看到一个文件夹以后,可以双击该文件夹并查看文件夹里面的文件。


3.2性能

首先要求程序要完全可靠,可以应对种种由于系统问题产生的错误,比如初始网络失败,对方突然下线等。要求提前设想到类似的尽可能多的可能发生的事件,做出相应的应对措施,并向用户提交简单易懂的提示信息。

程序要有良好的容错性,当用户进行非法操作的时候或者系统本身出现问题时要能够以最好的方式退出程序,避免发生程序假死现象。

开发文件要有好的以理解性,如果系统又要交由别人接手来发开,或者自己由于种种原需要进行二次开发,那么要保证以后能够清晰整个系统的设计思路和实现细节。

 

要求程序对运行之系统硬件的要求尽可能的低,运行时占用的内存尽可能小,影响速度尽可能快。并且不发生内存泄漏之类的影响系统运行的错误事件。同时应该易于维护及发展。所以应该采用模块化的开发,各个模块之间不要有太多的联系,以避免维护的困难。


3.3输入项目

登录界面的数据输入要求:

账号输入必须是整型,它是一个用户登录的账号

密码可以设置为字符类型,它的字符类型可以随意

如果用户设置不正确的话将会导致登录不成功,系统会弹出一个错误的提示

 

注册界面的输入要求:

昵称,密码,个性签名可以是任意的字符

Email必须是Email地址的格式,中间必须有@的字符,否则会输入不正确

 

共享界面的输入要求:

服务器IP:填入本机的IP地址,格式如:172.168.1.253  

端口号:随便一个可以未被占用的端口都行(最好是2000以上)


3.4输出项目

数据的输出:

用户注册的信息必须写入数据库中。 

 下载的文件存放到的指定的目录中,如果未指定就存放到默认路径中

,当默认路径不存在的时候给提示用户路径不存在


3.5算法

Win32编程原理及MFC框架

多线程处理

 

Win32 API 多线程编程

3.6程序逻辑

2013-06-18《C++仿QQ系统设计与实现-期末作业》

数据模型E-R图



 

 

 

 

 

 

 

 

 

 

 

 

 

2013-06-18《C++仿QQ系统设计与实现-期末作业》

主框架模块由两个类构成:CChatApp类和CChatDlg类,结构如上:

 

用户登录和服务器端

2013-06-18《C++仿QQ系统设计与实现-期末作业》

 

登陆成功

2013-06-18《C++仿QQ系统设计与实现-期末作业》

 

用户2和用户huang登录

2013-06-18《C++仿QQ系统设计与实现-期末作业》

 

 

发送消息:

2013-06-18《C++仿QQ系统设计与实现-期末作业》

 

接受到消息

2013-06-18《C++仿QQ系统设计与实现-期末作业》

 

3.7接口

本软件应用WinSock实现对数据库的操作,基于ODBC数据库访问技术。 客户端之间或者与服务器段之间通过UDP建立连接,本产品的用户一般需要通过终端进行操作,进入主界面后点击相应的窗口,分别进入相对应的界面(如:输入界面、查询界面)。用户对程序的维护,最好要有备份。 数据通信协议:Tcp/Ip,UDP 协议等


3.8存储分配

暂未定


3.9限制条件

移动客户端需要500MHz及以上的处理器

移动客户端需要256MB及以上的ROM空间

移动客户端需要256MB及以上的RAM空间

移动客户端需要WIFI/GRPS网络链接模块,能正常链接到网络

服务端需要P4 1.6GHz及以上的处理器

服务器需要80GB的硬盘空间

服务器需要1G以上的内存空间


3.10测试要点

测试在开发软件过程中是一个不可缺少的部分。因为在开发软件系统的漫长过程中,面对着极其错综复杂的问题,人的主观认识不可能完全符合客观现实,与工程密切相关的各类人员之间的通信和配合也不可能完美无缺,因此,在软件生命周期的各个阶段都不可避免地产生差错。我们力求在每个阶段结束之前通过严格的技术审查,尽可能早地发现并纠正错误;但是,经验表明审查并不能发现所有的差错,此外在编码过程中还不可避免地会引入一些新的错误。如果在软件生产性运行之前,没有发现并纠正软件中的大部分差错,则这些错误迟早在生产过程中暴露出来,那时不仅仅改正这些错误的代价更高,而且往往会造成很恶劣的后果。测试的目的就是在软件投入生产运行之前,尽可能多地发现并纠正软件中的错误。基于上述的原因,我在编码过程中进行了模块测试,编码结束进行了系统测试和验收测试。下面将介绍测试方案,测试过程和测试结果。 

 

一、 模块测试 

(一)测试方案 

采用了白盒测试,即按照程序内部的逻辑结构,检验程序中的每条通路是否都按预定要求正常工作。 

(二)测试过程 

检验模块之间的接口。 

每个被调用模块是否正确接受参数。 

每个调用模块是否能调用每个自己想要调用的模块。 3 测试结果 

测试结果表明,每个模块之间的接口都吻合,即被调用模块都能正确接受参数,调用模块能调用自己想要调用的每个模块。 

二、  功能测试 

(一)测试方法 

采用了黑盒测试,即检查程序功能是否能要求进行,是否适当地接受数据产生正确的输出信息,并且保持外部信息的完整性。 

(二) 测试过程 

主要检验是否能正确实现每个功能。

 A 每个功能是否按要求正常进行。

 B 用户界面是否友好 



By-弋曦

 

 

 

 

 

 

 

你可能感兴趣的:(《计算机科学与技术》)