mfc课程设计报告

上传人:第*** 文档编号:32690530 上传时间:2018-02-12 格式:DOC 页数:16 大小:512.50KB
返回 下载 相关 举报
mfc课程设计报告_第1页
第1页 / 共16页
mfc课程设计报告_第2页
第2页 / 共16页
mfc课程设计报告_第3页
第3页 / 共16页
mfc课程设计报告_第4页
第4页 / 共16页
mfc课程设计报告_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《mfc课程设计报告》由会员分享,可在线阅读,更多相关《mfc课程设计报告(16页珍藏版)》请在金锄头文库上搜索。

1、河海大学计算机及信息工程学院(常州)MFC课程设计报告题 目 聊天室程序设计 学 号 20062325 专 业 计算机科学与技术 授课班号 243002 学生姓名 邓燕 指导教师 景雪琴老师 完成时间 2008.12.30 题目:设计一个聊天室系统,实现多人一起聊天。一. 引言1.1 开发背景随着网络信息时代的来临,INTERNET 应用越来越广泛,人们越来越习惯于在网上获取和交流信息。据调查显示,80%以上的人上网都会打开聊天工具来聊天,而几乎每一个年轻人都会去聊天。使用网上聊天已经成为现代年轻人一种新的交往方式。聊天室更适合于陌生人之间进行较为主观、感兴化的讨论。所以有大部分的人会进入聊天

2、室聊天,它会给人一个完全自由的聊天世界。因此我联系所学的 MFC 知识,决定做一个简易的聊天室程序。1.2 开发环境以及运行环境1.2.1开发环境 Intel Pentium 4 2.0GHz,512M 内存,80G 硬盘 Microsoft Windows XP Professional Microsoft Visual C+ 6.01.2.2运行环境 Intel Pentium 2 及以上处理器,32M 以上内存,4G 以上硬盘 Microsoft Windows XP 操作系统 800*600 或以上的屏幕分辨率二需求分析1、 用 WINSOCK 实现简单的网络聊天;2、 在 MFC 开

3、发平台上编写一个聊天系统; 3、 得 server 和 client 之间可以相互通信; 4、多人能够发送信息至服务器,首先显示进入聊天室的成员名,然后显示对方名字和聊天信息,可以并发执行。三、算法分析建立连接过程流程图如下:S e r v e r 端 C l i e n t 端创建 C C l i e n t S o c k e t对象 , 在某个端口提供监听服务等待来自 C l i e n t端的服务请求接受 C l i e n t 端的请求 , 用返回的C C l i e n t S o c k e t 建立连接向用C C l i e n t S o c k e t 连接建立的流中读写数

4、据关闭 C C l i e n t S o c k e t ,结束与当前 C l i e n t 的通信 , 等待其他请求关闭 C C l i e n t S o c k e t 对象 , 结束监听服务创建 C C h a t S o c k e t 对象 , 向 S e r v e r 的监听端口发出请求向用 C C h a t S o c k e t连接建立的流中读写数据关闭C C h a t S o c k e t , 结束与当前 S e r v e r 端的通信建立连接拆除链路数据通路四、详细设计程序个模块代码如下:1.客户端(1)通过 AppWizard 生成基于对话框的应用程序 C

5、hatClient,在向导的第二步选择 WindowsSockets 的支持,其余步骤均用默认值。(2)增加一个登录服务器的对话框资源,其 ID 为 IDD_SETUP,然后通过ClassWizard 生成对应的基于 CDialog 的类 CSetupDlg。 (3)给对话框 CSetupDlg 增加 3 个编辑框,用来输入登录信息(聊天代号、服务器地址以及服务器端口号) ,(4)通过 ClassWizard 生成对应的基于 CSocket 的类 CChatSocket。(5)给 CChatSocket 类声明一个主对话框 CChatClientDlg 指针类型的私有成员变量,其代码如下:pr

6、otected:CChatClientDlg* m_pDlg;并且在 ChatSocket 类的头文件开始处增加如下代码:class CChatClientDlg; /主对话框类(6)给 ChatSocket 类重载一个构造函数,其定义如下:CChatSocket:CChatSocket(CChatClientDlg* pDlg)m_pDlg = pDlg;并且在 ChatSocket 类的 CPP 文件开始处增加如下语句:#include ChatClientDlg.h(7)通过 ClassWizard 响应类的 ChatSocket 的 OnReceive 函数,表示可以接收数据了,其代码

7、如下:/通知客户端可以接受数据void CChatSocket:OnReceive(int nErrorCode) CSocket:OnReceive(nErrorCode);if(m_pDlg)PlaySound(F:msg.wav,NULL,SND_ASYNC|SND_NODEFAULT);m_pDlg-ProcessPendingRead();(8)在主对话框 ChatClientDlg 的头文件中定义 ChatSocket 指针类型的私有成员变量,其代码如下:CChatSocket* m_pSocket;并且在 CChatClientDlg 类的头文件开始处增加如下代码:class C

8、ChatSocket;/基于 CSocket 的新类 CChatSocket(9)给对话框 CChatClientDlg 增加处理接收数据的共有成员函数ProcessPendingRead,其定义如下:void CChatClientDlg:ProcessPendingRead()/处理接收的数据/定义缓冲区char bufferBUFFER_SIZE;/接收数据int nReceived = m_pSocket-Receive(buffer,BUFFER_SIZE,0);buffernReceived = 0;/将数据在列表框中显示出来CString str;str.Format(%s,bu

9、ffer);m_ctrlMsgs.AddString(str); (10)给对话框 CChatClientDlg 增加发送数据的私有成员函数 SendMsg:/发送数据到服务器void CChatClientDlg:SendMsg(CString strMsg)CString str;str.Format(%s:%s,m_strClientName,strMsg);m_pSocket-Send(str.GetBuffer(0),str.GetLength(),0);并且在 CChatClientDlg 类的头文件开始处定义缓冲区的大小,其代码如下:#define BUFFER_SIZE 200

10、(11)给对话框 CChatClientDlg 增加表示聊天代号的 CString 类型私有成员变量 m_strClientName。(12)在对话框 CChatClientDlg 的 OnInitialUpdate 函数中增加登录服务器的代码:BOOL CChatClientDlg:OnInitDialog()/登录服务器CDialog:OnInitDialog();ASSERT(IDM_ABOUTBOX ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR); pSysMenu-AppendMenu(MF_STRING,IDM_ABOUTBOX, strA

11、boutMenu);SetIcon(m_hIcon, TRUE); / Set big iconSetIcon(m_hIcon, FALSE); / Set small icon /显示登录对话框CSetupDlg dlg;if(dlg.DoModal()=IDOK) /创建一个新的 Socketm_pSocket = new CChatSocket(this);if (!m_pSocket-Create() delete m_pSocket;m_pSocket = NULL;AfxMessageBox(create socket failed);return FALSE;/连接服务器whil

12、e (!m_pSocket-Connect(dlg.m_strServer,dlg.m_nPort + 700) if (AfxMessageBox(Failed to connect to servernTry again?,MB_YESNO) = IDNO) delete m_pSocket;m_pSocket = NULL;return FALSE;m_strClientName = dlg.m_strName;elsereturn FALSE;/发送登录消息给服务器SendMsg(进入聊天室);return TRUE; / return TRUE unless you set the

13、focus to a control(13)给主对话框 CChatClientDlg 增加一个 CListBox 类型的变量m_strMsg。(14)给住对话框 CChatClientDlg 增加一个输入发送信息的编辑框,并生成对应的 CString 类型的变量 m_strMsg。(15)给主对话框 CChatClientDlg 增加一个【send】按钮,其响应函数定义如下:void CChatClientDlg:OnSend() /响应控件 sendUpdateData(TRUE); SendMsg(m_strMsg);m_strMsg.Empty();/清空编辑区UpdateData(FA

14、LSE); (16)给主对话框增添一个【离开】按钮,其响应函数定义如下:void CChatClientDlg:leave()/离开SendMsg(离开聊天室);m_ctrlMsgs.AddString(离开状态);m_pSocket-Close();(17)给主对话框增添一个【连接】按钮,其响应函数如下:void CChatClientDlg:land()/连接OnInitDialog();2.服务器端(1)通过 AppWizard 生成基于对话框的应用程序 ChatServer,在向导的第二步选择 WindowsSockets 的支持,其余步骤均用默认值。(2)增加一个登录服务器的对话框资

15、源,其 ID 为 IDD_INT,然后通过ClassWizard 生成对应的基于 CDialog 的类 CInitDlg。(3)给对话框 CInitDlg 增加 1 个输入端口号的编辑框,并生成对应的整形变量 m_nPort。(4)通过 ClassWizard 生成对应的基于 CSocket 的类 CListeningSocket,用来监听服务器。(5)给 CListeningSocket 类声明一个主对话框 CChatServerDlg 指针类型的私有成员变量,其代码如下:protected:CChatServerDlg* m_pDlg;并且在 CListeningSocket 类的头文件开始处增加如下代码:class CChatServerDlg; /主对话框类(6)给 ChatSocket 类重载一个构造函数,其定义如下:CChatSocket:CClientSocket(CChatServerDlg* pDlg) m_pDlg = pDlg; 并且在 CListeningSocket 类的 CPP 文件开始处增加如下语句:#include ChatServerDlg.h(7)通过 ClassWizard 响应类的 CListeningSocket 的 OnAcc

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号