模拟QQ聊天程序设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

模拟QQ聊天程序设计报告

----网络软件创新实验报告

一. 需求分析

1.1 开发背景

在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似QQ、网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一个类似QQ的网络聊天工具的;而且通过制作该程序还能更好的学习网络软件编程知识。

1.2 功能要求

(1)登录功能。

(2)客户可以通过服务器转发,实现一对一和多对多聊天。

(3)实现呼叫功能。

(4)客户端程序应该可以实时显示目前其它用户的状态。

(5)应该具有易用、美观的图形界面。

1.3 运行环境

本系统基于WIN NT 和ACCESS XP设计,适用于WIN2000/WIN XP等系统,并需要安装office2000/office xp.

1.4 功能实现

1.登录验证功能。

2. 客户通过服务器转发,实现聊天功能。

3. 实时显示目前其它用户的状态。

4. 保存并能察看聊天纪录。

5.申请新的用户号码。

6. 易用、美观的图形界面,实现系统托盘。

二.技术路线

2.1 总体方案

为实现网络聊天的功能,采用Windows Socket编程,服务器与客户端采用了TCP/IP 连接方式,在设计聊天方案时,实行将所有信息发往服务器端,再由服务器进行分别处理的思路,服务器端是所有信息的中心。

由于服务器端要保存用户信息,我们利用数据库来实现这一功能,因此首先需要建立用户信息数据库。

在客户端保存聊天纪录和用户号码这一功能的实现中,采用了文件系统设计。

在信息到来及好友上线时,通过闪动托盘图标和播放不同的音乐进行提示。

建立消息链表来保存用户接收的各种消息。

服务器及客户端的功能可划分为以下模块:

客户端:

1)登陆功能:建立与服务器的连接并登陆,能显示登陆错误信息。

2)界面显示:将在线好友显示在好友列表中,并实现系统托盘,加入工具栏便于操作。3)聊天功能:与好友聊天。

4)聊天纪录:能保存聊天纪录,并能察看聊天纪录。

5)信息提示:闪动托盘图标提示到来信息,并播放不同音乐来提示。

6)其他:用户登陆成功,将保存其号码,以便下次登陆时,不必再输入而可以直接选择,显示登陆时间。

服务器端:

向各个客户端发布系统消息。

接受来自客户端的各种信息并分别处理。

1)登陆信息:检查登陆信息是否正确,并向客户端返回登陆信息,如信息正确。就将

在线用户发给该用户,并将该用户的状态发给各在线用户。同时在服务器端显示出来。

2)聊天信息:转发给消息指定的用户。

3)申请信息:自动分配8位用户号码,并保存该用户,同时将信息返回给客户端。

4)用户下线:将此用户下线消息发给各客户端,并改写用户在服务器端的状态。

程序中主要变量及类的功能说明如下:

客户端:

CLoginDlg --- 登陆到服务器

COptionsDlg ---- 设置要连接的服务器的地址及端口号CReplyDlg ---- 显示好友发送的信息

CSendMsgDlg ---- 给好友发送信息

CApplyDlg ----- 申请新的用户

CServerInfo ---- 显示服务器消息

CLogDlg ----- 显示聊天纪录

服务器端:

用户及发送信息结构体类型:

struct UserInfo//---用户信息结构体

{

char _QQnum[9];//号码

char _QQname[10];//昵称

int _nSex;//性别,

char _Ip[20];//ip

int _Port;//端口号

bool _bState;//当前状态

char _nFace[5]; //头像

}

struct MsgInfo //消息结构体

{

UserInfo _pSender;//发消息人

char _cRecieverNum[9];//接收人

char _msg[255];//消息内容

long _nTime;//发送时间

char _cPasswd[11];//登陆密码

int _nType; //消息类型

}

2.2 详细设计

---见详细设计说明书。

三.工程进度

3.1 计划进度

计划进度如下:

四设计总结:

3.1 程序的应改进之处:

1.使用非模态对话框代替模态对话框。

2.聊天记录文件应该加密。

3.将不在线用户也显示出来,并能给不在线用户发送信息,在服务器端建立消息缓存。4.只显示用户的好友,可以添加好友并修改信息。

3.2 个人小结

在做这次网络创新实验之前基本上还没接触过网络编程,这次实验是在边学习边实践的基础上完成的。本学期课和其他实验也很多,因此做的时间不多,做的结果不太好,与自己原来的设想有些差距。通过“计算机网络基础”自己对网络的基础知识也打下了很好的基础。这次网络实验可以说是在理解网络的基础上对Windows Socket 编程的一次学习过程,虽然做的不好,但也学到了很多知识,对自己以后进行网络开发有很大的帮助。

在做本次实验时,我尽可能的将上一学期学的软件工程思想运用到这次开发实验中来。在进行详细设计之前,先进行需求功能分析,在功能分析的基础上,划分程序的框架,创建类来分担不同的功能,并根据类的功能加入函数和变量,这对详细设计有一个总纲的作用。这收到了很好的效果。

相关文档
最新文档