企业QQ通信系统设计与实现毕业设计-(DOC 33页)

上传人:痛*** 文档编号:206583885 上传时间:2023-05-04 格式:DOC 页数:38 大小:592.50KB
收藏 版权申诉 举报 下载
企业QQ通信系统设计与实现毕业设计-(DOC 33页)_第1页
第1页 / 共38页
企业QQ通信系统设计与实现毕业设计-(DOC 33页)_第2页
第2页 / 共38页
企业QQ通信系统设计与实现毕业设计-(DOC 33页)_第3页
第3页 / 共38页
资源描述:

《企业QQ通信系统设计与实现毕业设计-(DOC 33页)》由会员分享,可在线阅读,更多相关《企业QQ通信系统设计与实现毕业设计-(DOC 33页)(38页珍藏版)》请在装配图网上搜索。

1、宜宾职业技术学院毕业设计企业QQ通信系统设计与实现系 部 _ 专 业 名 称 _ 班 级 _姓 名 _学 号 _ 指 导 教 师 _ 2013 年 09 月 28 日企业QQ通信系统设计与实现摘 要企业QQ通信系统可作为企业内部的交流工具使用,虽然通信的安全性不是很高,但是要求信息的响应速度要较快,能让企业内部员工充分享受到网络即时消息的方便和快捷,从而提高工作质量和效率。本设计采用Visual C+ 6.0程序,使用C+编程语言进行软件的开发。主要实现了用户注册、用户登录、用户之间文字聊天、文件传输、语音聊天、视频聊天功能,构成一个实用的、功能完善的聊天软件,达到预期目标;通过运行、测试与分

2、析说明,该多功能聊天软件运行稳定、可靠,具有一定的实用价值。关键词:QQ系统;企业通信;Visual C+ 6.0;C+;数据库目 录1 引 言11.1 课题背景11.2 国内外主要聊天工具的发展状况11.3 本课题研究的意义32 系统需求分析42.1 系统的功能需求分析42.2 系统的可行性分析42.2.1 可行性要求、目标42.2.2 技术可行性分析52.2.3 经济可行性分析53 系统设计63.1 系统拓扑结构图63.2 系统功能结构图63.3 网络通信原理分析73.4 开发环境83.5 数据库设计94 服务器端设计104.1 服务器端主窗体模块104.1.1 服务器端主窗体概述104.

3、1.2 窗口设计104.1.3 关键代码分析114.2 服务器端账户管理模块154.2.1 服务器端账户管理概述154.2.2 窗口设计154.2.3 关键代码分析164.3 服务器端系统组织结构管理模块194.3.1 服务器端系统组织结构概述194.3.2 窗口设计194.3.3 关键代码205 客户端关键技术215.1 客户端概述215.2 客户端的关键技术216 系统测试246.1 软件测试基础理论246.2 系统测试246.3 测试结果26结束语27致谢28参考文献29企业QQ通信系统设计与实现1 引 言1.1 课题背景21世纪将是网络化、信息化的世纪,信息的融合已经成为社会发展的主流

4、方向。简易版企业QQ聊天系统将不断与信息交流领域的系统相互集成和渗透,扩展其自己的功能和应用范围,满足未来话音,数据和视频的多媒体应用需要,使即时消息以更丰富的接入方法,更高的服务质量,更友好的面貌呈现在世人的面前。从功能角度来看,简易版企业QQ聊天系统向支持全媒体方向发展,随着多媒体技术在网络应用中的发展,简易版企业QQ聊天系统承载的媒体,不再局限于原来的文字、语音和文件的信息交换,信息载体扩展到图形、图像和流媒体等多媒体业务上。目前ICQ和QQ预设了部分简单的表情图像,通过传输图像代码来传递表情图像,可以被视为即时消息开发商开发支持图形、图像为载体的即时消息软件的开端。从应用范围角度来看,

5、简易版企业QQ聊天系统集中在Internet个人用户之间的信息交流应用,随着网络技术应用的发展,简易版企业QQ聊天系统应用范围向园区化、集团化拓展,应用领域突破个人,而用于远程教学、远程医疗、远程演示、网络会议等领域。1.2 国内外主要聊天工具的发展状况中国的大部分网络用户都拥有自己的QQ号码。腾讯计算机系统有限公司成立于1998年11月。1999年2月,腾讯自主开发了基于Internet的即时通信网络工具腾讯即时通信Tencent InstantMessenger,简称TIM或腾讯QQ。腾讯QQ经过三年时间的发展,到2002年,其用户群成为中国最大的互联网注册用户群,注册用户达到1亿6000

6、万,其中活跃用户总数超过5000万。自此腾讯QQ成为中国最大的即时通信服务提供商。腾讯公司是中国最早也是目前中国市场上最大的本土互联网即时通信软件开发商。公司成立10多年以来,一直以追求卓越的技术为导向,始终处于稳健、高速发展的状态。腾讯QQ超过6亿的注册用户群体现了网络用户对腾讯QQ这一聊天工具的广泛应用。在当今市场经济高速发展的前提下,腾讯QQ也在不断自我完善,渐渐地演变为一个人性化、市场化的多功能的聊天工具软件,它可以给网络聊天用户带来越来越多的人性化服务:从原来单一的文字聊天过渡到集语音、视频、文件传输等多功能于一身的聊天软件。ICQ和MSN是在国外比较盛行的即时聊天工具,腾讯QQ的开

7、发对MSN和ICQ都进行了借鉴。ICQ是I Seek You(我找你)的缩写,最初是一家以色列公司开发出来的免费软件,中文名称目前可以称之为“网络呼叫器”,它在全球拥有超过4000万的用户。事实上这种软件最主要的功能就是让用户知道网络上的朋友现在有没有上线(前提是对方也有安装ICQ),然后可以互送Messages(消息)交谈或是交换档案等等,比电子邮件更具即时性。正如一位ICQ软件的最初程序设计员所说: “当你登录因特网之后,你周围都是些自己熟悉的人,而且,你还可以和他们分享这种体验,这的确是一件令人激动的事情。”MSN是微软推出的聊天软件,是一套类似ICQ的网上即时通讯软件,它以最简单的方式

8、为用户提供强有力的即时消息支持,同时能使Microsoft OutlookExpress(R)和MSN Hotmail(R)变得更简单易用。MSN Messenger Service还可使用户间的联机交谈变得更加轻松愉快,了解谁在联机以及查看用户何时联机并与其交换即时消息。用户间可以进行单独的聊天,或者在同一个对话窗口中与多达四个的联系人进行聊天。自动的输入指示器可让用户知道何时联系人正在输入答复,还可以进行全球电话呼叫以非常低的费用呼叫世界的任何地方。用户可以选择所要使用的电话服务提供商,从服务提供商的列表中选择最适合的提供商。用交谈取代键盘输入,使用计算机上的话筒和扬声器就可以和位于世界各

9、地的朋友进行交谈,甚至可以呼叫联系人将文本消息发送到联系人的移动电话和传呼机上(注:此特性仅适用于美国和加拿大),而进入 “聊天室”结识新朋友,或加入与名人聊天,此特性在所有地区都适用。用户可以使用MSN Messenger与朋友交换照片、喜爱的音乐或任何其他文件,也可以监视新的电子邮件并查看用户有多少新的电子邮件。MSN Messenger能在收到新的Hotmail邮件时通知用户,还能邀请联系人进行联机DirectPlay兼容游戏。1.3 本课题研究的意义此次开发的企业QQ通信系统可作为个人的交流工具使用,通信的安全性不是很高,但要求信息的响应速度要较快,让用户充分享受到网络即时消息的方便和

10、快捷。本聊天工具由服务器端程序和客户端程序两部分组成,整体采用Visual C+ 6.0平台开发,并使用Access 2003管理数据库数据。服务器是可以监听和查看用户的基本操作;客户端程序面向实际用户,它有必要的界面的按钮,向用户提供网络即时消息的功能。2 系统需求分析2.1 系统的功能需求分析本系统的设计目标是实现一个企业内部局域网通信系统,企业内部职工可以方便的进行交流,可以大大的提高职工的工作效率。根据企业对局域网通信的需求,本系统主要包括信息通信、系统设置、搜索用户、访问公共资源、访问对方主机五大功能。各功能概述:信息通信:信息通信是企业内部通信系统的核心功能,它用于不同职工之间的通

11、信,这种通信方式能够实现多个职工之间的通信,而不存在类似电话占线的问题,增加了任务分配的新方式,从而提高企业的工作效率。系统设置:系统设置用于设置用户界面、公共路径、公告栏等的功能。用户搜索:用户搜索用于搜索企业局域网内的其他用户,系统会根据用户所设置的IP搜索范围搜索所有计算机上的用户。访问公共资源:本功能用于实现企业内部公共服务器上资源访问的功能。访问对方主机:本功能用于两人聊天情况下对对方主机的访问和控制的功能。 第一次使用系统的用户通过填写个人信息来注册,服务器返回一个注册ID号给注册用户,用来登录。已经注册的用户在登录界面填写完相关登录信息,通过服务器的验证后就可以进入客户端界面。在

12、线用户在添加好友时可以查看所要添加用户的列表信息。当对要添加的好友发送请求添加的信息后,由该好友验证是否通过请求,同意后会向请求方发送同意添加的消息。当请求方添加完成后,服务器端会把相关信息存入到好友表的数据库中。完成以上操作以后,两人即可进行在线聊天。 2.2 系统的可行性分析2.2.1 可行性要求、目标企业内部通信系统必须提供网络通信功能,在通信过程中禁止使用聊天表情、文件传送等功能,避免资料外泄,或因发送错误而导致上机资料的丢失以及其他损失。最重要的是必须适应任何操作系统,也就是实现跨平台技术,因为企业内部的工作需要,工作环境中使用了多个操作系统来完成不同的工作。另外,系统不需要使用服务

13、器中转和记录通信内容,可以独立完成通信任务,排除职工对领导监视工作进度等行为的逆反心理。企业内部通信系统的目标是实现企业的信息化通信,提高企业通信能力,提高任务理解和执行能力,减少没有必要的人员流动和资金损耗,以最快的速度提升企业的市场竞争力。2.2.2 技术可行性分析局域网通信系统的技术已经非常成熟,首先,从硬件上讲,计算机硬件速度现在已经不是问题,高速便捷的网络已经十分普遍,这些为本系统的运行打下坚实的基础。从软件的角度上讲,数据库技术已经相当成熟(目前用得比较多的有SQL Server, Visual C+ 6.0等),并且处理能力也非常强,这为海量数据的存储和处理打下了坚实的基础,同时

14、,使用Visual C+ 6.0开发程序也相当普遍。有了这些技术的支持,我们成功开发一个局域网通信系统没有任何技术风险。2.2.3 经济可行性分析经济可行性主要是对项目的经济效益进行评价。本系统开发完成后可缩减工作时间,提高工作效率,而且简单易操作,不需对使用人员进行培训,不管是在资金上还是效率上都能达到预期的效果。本系统开发经费对于企业在经济上是可以接受的,并且本系统实施后可以显著提高工作效率,有助于企业的信息化管理,所以该企业内部通信系统在经济上是可行的。3 系统设计3.1 系统拓扑结构图企业QQ通信系统分为客户端和服务器端,并且多个客户端可以连接同一个服务器端,通信系统的拓扑结构如图3.

15、1所示。图3.1 企业QQ通信系统拓扑结构图3.2 系统功能结构图企业QQ通信系统分为客户端和服务器端两个项目。其中服务器端不但提供接收客户端的链接,还能够对账户进行管理。服务器端的主要模块如图3.2所示。客户端只要实现相互之间的消息和文件传递,客户端的主要模块如图3.3所示。图3.2 服务器端图3.3 客户端3.3 网络通信原理分析企业QQ通信系统使用TCP和UDP两种连接方式进行连接。客户端使用TCP连接服务器,服务器端是使用UDP进行通信,系统连接模式如图3.4所示。图3.4 连接模式服务器端和客户端使用Socket建立通信连接的过程如下:(1)服务器端建立m_SvrSock和m_Org

16、Sock两个套接字句柄。m_OrgSock和OnOrgMsg函数建立异步通信,端口1201,接收客户端发送的连接请求(FD_ACCEPT)。在OnOrgMsg函数内将org.xml文件发送到客户端。m_SvrSock和OnNetEvent函数建立异步通信,端口1200,接收客户端发送的连接请求,接收到客户端的心跳测试和登录请求(登录后将端口1201的信息发送过去,并判断是否已经登录),定时向客户端发送心跳包,每隔10s发送一次,如果5次没有心跳回复,则认为掉线。(2)客户端建立m_ClientSock和m_UdpSock两个套接句柄,m_ClientSock连接方式为TCP,m_UdpSock

17、连接方式为UDP,端口都是随机获取的。m_ClientSock和OnNetEvent函数建立异步通信。m_UdpSock和OnOrgMsg函数建立异步通信。客户端首先使用m_ClientSock建立连接,连接服务器的IP地址和端口。首先发送PT_LOGINREQUEST和本机UDP端口(m_nUdpPort)到服务器,如果用户名和密码正确,则得到PT_LOGINACCEPT和1201端口,此时服务器会向每个客户端发送刚登录客户端的IP地址和UDP端口(PT_USERINFO)。客户端接收到PT_LOGINACCEPT后,创建m_OrgSock套接字,本地端口随机,连接到服务器端的1201端口,

18、准备获取org.xml文件。客户端发送消息首先会创建taskSock套接字(客户端为A),因为用户在双击要发送消息的用户时(OnDblclkOrgtree),会获得它的UDP端口和IP地址,然后发送PT_REQUESTUDPPORT到客户端B,B新生成的UDP连接端口号后,返回PT_RETURNUDPPORT消息给A。每次创建taskSock套接字都会启动一个接收数据的线程(SendTaskProc),此时客户端A和B都启动了接收数据的线程。A接收到PT_RETURNUDPPORT后,返回PT_STREAM及相应的数据。发送文件和发送消息流程相同,创建taskSock套接字后启动的是SendF

19、ile进程,A接收到PT_RETURNUDPPORT后,返回PT_FILE。3.4 开发环境企业QQ通信系统的开发环境如下:系统开发平台:Visual C+ 6.0。系统开发语言:C+。数据库管理系统软件:Access 2003。运行平台:Windows XP(SP2)/Windows 2000(SP4)/Windows Server 2003(SP1)。分辨率:最佳效果1024768像素。3.5 数据库设计服务器端使用Access 2003作为后台数据库,用来储存组织结构及账户信息,数据库命名为SvrInfo,其中包含2张数据表。tb_Account表:tb_Account表储存的是账户信息

20、。账户信息如表3.1所示。表3.1 账户信息表字段名数据类型长度描述字段名数据类型长度描述AccountID数字4账户HeaderShip文本20职务Username文本12姓名OfficePhone文本22办公电话Password文本18密码Handset文本22手机Sex文本2性别E-mail文本32电子邮件Age数字4年龄Address文本50联系地址OrgID数字4部门Picture文本20图片,以账户命名OrgName文本50部门名称tb_OrgInfo表:tb_OrgInfo表用于储存组织信息。组织信息如表3.2所示。表3.2 组织信息表字段名数据类型长度描述OrgID数字4组织编

21、号OrgName文本20组织姓名ParentID数字4上一级编号4 服务器端设计4.1 服务器端主窗体模块4.1.1 服务器端主窗体概述服务器端可以对组织结构及账户进行管理,并且提供通信服务,负责将组织结构信息和账户信息发送给各个客户端、提供通信服务,负责将组织结构信息和账户信息发送给各个客户端、验证账户的登录权限、检查客户端是否保持在线。客户端主窗体模块主要负责通信服务,并且可以调用组织信息管理模块和账户信息管理模块。服务器端主界面效果如图4.1所示。图4.1 服务器端主界面4.1.2 窗口设计创建一个对话框,向对话框中添加两个按钮控件。设置控件属性如表4.1所示。表4.1控件属性控件类型资

22、源值对应类成员名称属性设置ButtonIDC_ORGMANAGEOnOrgmanage组织信息管理默认ButtonIDC_ACCOUNTMANAGEOnAccountManage账户信息管理默认4.1.3 关键代码分析在对话框初始化函数中,对数据库进行初始化,创建套接字并绑定本机IP地址和一个端口,然后开始监听,并将网络设置为异步通信。为什么要使用异步通信?异步通信有什么好处?可以通过OnInitDialog()函数的应用来了解。部分代码如下:BOOL CQQServerDlg:OnInitDialog()CDialog:OnInitDialog();/ Add About. menu ite

23、m to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX m_Sock = accept(m_SvrSock, (sockaddr*)&Addr, &nAddrSize);if (client-m_Sock = INVALID_SOCKET)/接受连接失败catch(.)/修改密码失败CPackage Package;Package.m_Type =PT_PT_UPDATEPASSFAI

24、LD;send(wParam, (char*)&Package, sizeof(CPackage), 0);delete pBuffer;break;return S_OK;服务器端创建两个端口,并使用TCP进行数据传输,TCP是传输控制协议,是一种提供可靠数据传输的通信协议。它在网际协议模块和TCP模块之间的传输,该协议允许两个应用程序建立一个连接,并在全双工方向上发送数据,然后终止连接,每一个TCP连接可靠地建立并完善地终止,在终止发生前,所有数据都会被可靠地传输。TCP通过3次握手建立可靠的连接,所谓3次握手指通信双方彼此交换3次信息。3次握手是在存在数据报丢失、重复和延迟的情况下,确保

25、通信双方信息交换确定性的充分必要条件。使用TCP协议建立通信的步骤如图4.2所示。图4.2 TCP通信连接过程在应用程序是指定时器用来做什么,从OnTimer的实现代码中可以看出。判断用户是否在线需要使用定时器,每隔一段时间就向客户端发送一个消息,如果客户端能够回复消息,说明客户端在线,否则认为客户端已经掉线。将服务器端发送给客户端的这条信息称为心跳包,消息类型PT_TEST就代表该包是心跳包。服务器端保存有在线客户的列表,如果客户端掉线了,就在列表中将客户端删除。void CQQServerDlg:OnTimer(UINT nIDEvent) switch (nIDEvent)case 1:

26、/向客户端发送心跳包POSITION pos = m_ClientSockList.GetHeadPosition();m_ClientSockList.GetNext(pos);break;CDialog:OnTimer(nIDEvent);验证用户名和密码,通过SQL语句检查数据库中是否有相应的用户名和密码。BOOL CQQServerDlg:VerifyUser(int nID, char *szPassword)CString szSQL;szSQL.Format(select AccountID from tb_Account where AccountID = %d and Pas

27、sword = %s,nID, szPassword);_RecordsetPtr pRecord = m_DataManage.m_pConnect-Execute(_bstr_t)szSQL, 0, adCmdText);if (!pRecord-ADOEOF)/判断用户是否存在return TRUE;return FALSE;OnOrgMsg函数同OnNetEvent函数一样,都是消息的处理函数,同样可以处理FD_ACCEPT事件。在OnOrgMsg函数中当有客户端发送请求时,服务器端会将org.xml文件发送到客户端,org.xml文件中存放的是组织结构信息,也就是含有在线用户列表,每

28、个客户端都会在登录时获得该列表。如果组织结构和用户比较多时,文件会比较大,所以如果文件超出一定范围后,就将文件分成多份进行发送。LRESULT CQQServerDlg:OnOrgMsg(WPARAM wParam, LPARAM lParam)WORD nEvent = WSAGETSELECTEVENT(lParam);/获取网络事件WORD nError = WSAGETSELECTERROR(lParam);/获取错误代码DWORD dwRead = file.ReadHuge(pTmp, dwMsg-sizeof(CPackage);int nlen = send(sock, pDa

29、ta, dwMsg, 0);closesocket(sock);/delete pBuffer;break;return S_OK;UserIsLogined()函数主要用来判断客户端是否已经在线了,和FindClient函数类似,同样需要遍历整个列表,同样如果列表中有相同的IP和ID,说明客户端存在,否则客户端不存在。BOOL CQQServerDlg:UserIsLogined(int nID, SOCKET sock)/获取套接字IPsockaddr_in Addr;Addr.sin_family = AF_INET;int nAddrlen = sizeof(sockaddr_in);

30、int nRet = getsockname(sock, (sockaddr*)&Addr, &nAddrlen);if (nRet = 0)& strcmp(pClient-m_szClientIP, szIP) != 0)return TRUE;m_ClientSockList.GetNext(pos);return FALSE;4.2 服务器端账户管理模块4.2.1 服务器端账户管理概述账户管理模块主要完成向已建好的部门中添加部门成员,“账户管理”模块如图4.3所示。图4.3 “账户管理”模块4.2.2 窗口设计创建一个对话框,向对话框中添加树控件、按钮、编辑框、组合框等控件。设置窗体中

31、的各种控件属性,如表4.2所示表4.2控件属性控件类型资源值对应类成员名称或含义属性设置ButtonIDC_BTADDOnBtadd添加默认ButtonIDC_BT_DELETEOnBtDelete删除默认Tree ControlIDC_ORGLISTm_Orglist组织结构Has button Has lineCombo BoxIDC_SEXm_Sex性别DroplistDataEdit BoxIDC_ACCOUNTIDm_AccoutID账户IDnumberEdit BoxIDC_ACNAMEm_AccountName姓名默认Edit BoxIDC_ACPASSWORDm_Passwor

32、d密码passwordEdit BoxIDC_DEPARTm_OrgName部门ReadOnlyEdit BoxIDC_DEPAPTIDm_OrgID部门IDReadOnlyNumberEdit BoxIDC_HANDERSHIPm_HanderShip职务默认Edit BoxIDC_USERIDm_UserID用户IDReadOnlyEdit BoxIDC_CURUSERm_User账户姓名ReadOnly4.2.3 关键代码分析LoadOrgInfo()函数从数据库中读取信息,将数据添加到属性结构中,并生成xml文件,将数据库中的内容生成XML文件。void CAccountManage:

33、LoadOrgInfo()if (m_InitSucess)/已连接数据库m_OrgList.DeleteAllItems();/删除所有节点CString sql = select * from tb_OrgInfo where ParentID = 0;CString szOrgName;HTREEITEM hRoot, hParent;m_DataManage.m_pRecord = m_DataManage.m_pConnect-Execute(select * from tb_OrgInfo where ParentID = 0, 0, adCmdText);hRoot = m_Or

34、gList.InsertItem(部门组织, 0, 0);/添加根节点m_pXMLDoc-save(unsigned short*)(_bstr_t)szFileName);m_OrgList.Expand(hRoot,TVE_EXPAND);m_pXMLDoc.Release(); 在程序读写XML文件需要借助微软提供的接口,如果使用Windows2000操作系统,还需要到微软的官方网站下载关于XML解析的动态链接库。使用微软提供的XML接口步骤。打开数据可读取数据,将读取的子节点数据显示到树形结构中,并将数据写入XML文件,代码如下:void CAccountManage:LoadAcco

35、untInfo()CString szSQL, szName, szOrgName, szSex;int nOrgID, nAccountID;szSQL.Format(select * from tb_Account);_RecordsetPtr pRecord = m_DataManage.m_pConnect-Execute(_bstr_t)szSQL, 0, adCmdText);if (hInsert != NULL)DWORD dwData = MAKELRESULT(0, nAccountID);m_OrgList.SetItemData(hInsert, dwData);m_p

36、XMLDoc-save(unsigned short*)(_bstr_t)szFileName);pRecord-MoveNext();m_pXMLDoc.Release();FindNode()是递归调用函数,从数据库读取子节点数据并保存到XML文件中。while (!pRecord-ADOEOF)OrgName =(TCHAR*)(_bstr_t) pRecord-GetFields()-GetItem(OrgName)-Value;int nID = pRecord-GetFields()-GetItem(OrgID)-Value.iVal;hTemp = m_OrgList.Inser

37、tItem(OrgName, 0, 0, hParent);FindNode( hTemp, nID, pTmp);pRecord-MoveNext();查找树形结构中节点是否存在,并递归调用返回子节点,代码如下:HTREEITEM CAccountManage:GetOrgItem(int nOrgID, HTREEITEM hCurrent)HTREEITEM hRet = NULL;if (hCurrent != NULL)DWORD dwData = m_OrgList.GetItemData(hCurrent);int nID = LOWORD(dwData);if (nID!= 0

38、 & nID=nOrgID)while (hFind != NULL)hFind = m_OrgList.GetNextItem(hFind, TVGN_NEXT);hRet = GetOrgItem(nOrgID, hFind);if (hRet != NULL)return hRet;return hRet;进行添加操作,首先获取用户的输入信息,对输入信息进行判断,然后将合法的用户的账户数据保存到数据库,代码如下:if (szAcID.IsEmpty()|szAcName.IsEmpty()|szSex.IsEmpty()|szOrgName.IsEmpty()| szOrgID.IsEm

39、pty()|szPassword.IsEmpty()|szHanderShip.IsEmpty()MessageBox(帐户信息不能为空!,提示);return;if (atoi(szAcID)300000)catch(_com_error &e)MessageBox(操作失败!,提示);4.3 服务器端系统组织结构管理模块4.3.1 服务器端系统组织结构概述系统组织结构管理模块主要完成组织结构的建立,程序运行结果如图4.4所示。图4.4 “系统组织结构管理”模块4.3.2 窗口设计创建一个对话框,向对话框中添加树控件、文本框控件、静态文本控件和按钮控件,设置窗口中的各种控件属性如表4.3所示

40、。表4.3控件属性控件类型资源值对应类成员名称默认属性ButtonIDC_BT_ADDOnBtAdd添加默认ButtonIDC_BT_DELOnBtDel删除默认Tree ControlIDC_ORGLISTm_OrgList组织结构Has button Has lineEdie BoxIDC_CURRENTNODEm_CurNode当前节点ReadOnlyEdie BoxIDC_ORGNAMEm_OrgName组织名称默认4.3.3 关键代码LoadOrgInfo()从数据库的tb_OrgInfo表中读取组织结构信息,将组织机构信息添加到树形结构中,通过FindNode函数查询出子节点数据,

41、代码如下:if (m_InitSucess)/数据库已连接m_OrgList.DeleteAllItems();/删除所有节点CString sql = select * from tb_OrgInfo where ParentID = 0;CString OrgName;FindNode(hParent, nID);m_DataManage.m_pRecord-MoveNext();m_OrgList.Expand(hRoot,TVE_EXPAND);FindNode()函数查询指定的ID节点的子节点数据,函数使用递归算法获取指定节点的所有子节点,代码如下:void COrgManage:F

42、indNode(HTREEITEM hParent, int ParentID)_ConnectionPtr pCon;/定义连接对象_RecordsetPtr pRecord;/定义记录集对象dwData = MAKELPARAM(nID, ParentID);m_OrgList.SetItemData(hTemp, dwData);FindNode(hTemp, nID);pRecord-MoveNext();5 客户端关键技术5.1 客户端概述用户使用客户端登录服务器,然后可以和其他登录的用户进行通信。客户端主窗体模块是用户有登陆权限登录服务器后的界面,在主窗体界面中,主要有一个树形列表

43、,树形列表中显示了所有的组织结构及结构下的成员。并且在主窗体上可以调用系统设置和修改密码等其他模块。客户端主界面如图6.1所示。5.2 客户端的关键技术ThreadProc是向服务器端发送连接请求的线程,CS_CONNECTING,然后设置超时时间,如果超时需要重新连接,连接时将用户名和密码都会发送到服务器端。发送请求时消息包的类型设置为PT_LOGINREQUEST,服务器端会根据这个类型进行相应的处理。在LoginSrv()函数中调用InitSocket初始化网络套接字,然后启动ThreadProc线程向服务器发送登录请求。OnTimer是定时器,其可以判断CS_CONNECT、CS_UN

44、CONNECT、CS_CONNECTING这3种状态;通过计数标量m_mCount判断是否连接中断,根据连接状态改变系统托盘图标的样式。初始化m_ClientSock和m_UdpSock套接字,将IP地址都绑定为本机IP地址,然后随机选用端口,随机选用端口使用goto语句形成了一个循环,直到能正确获得端口后循环停止,并且将套接字都设置为异步通信。在OnNetEvent中主要处理分包,以及对消息类型为PT_TEST、PT_USERINFO、PT_DISCOUNT、PT_LOGINACCEPT、PT_LOGINDENY、PT_LINEACCEPT、PT_UPDATEPASSSUCCESS、PT_P

45、T_UPDATEPASSFAILD数据包进行处理,主要消息类型如图5.1所示。如果接收到PT_TEST的数据包,需要向服务器回复心跳测试。如果是PT_USERINFO的消息包,需要播放声音提示并在主窗体的树形列表改变新登录用户的图标。图5.1 消息类型在OnOrgMsg中主要接收组织结构信息,如果组织机构信息比较大,一次只能接收固定大小的内容,所以设计了分包处理机制,当数据接收完整后,通过HandleOrgData函数进行处理。OnOrgMsg处理分包的流程如图5.2所示。图5.2 处理分包流程如果是第一次处理读取的数据,可以分为包结构是否完整两种情况。将实现对读取的数据进行分析和处理。读取部

46、分数据包结构后,需要继续判断数据包结构是否完整。其中OnOrgMsg()函数中关于数据包结构是否完整的处理过程。获取完整的数据结构后,就需要判断数据包是否已经接收完毕,OnOrgMsg()函数中关于数据包是否完整的处理过程。RecTaskProc是接收消息并处理的线程。处理流程如图5.3所示。图5.3 接收消息并处理的处理流程判断是否为第一个接收的数据包,如果是第一个接收的数据包,需要播放声音提示,并找到对话框进行交互。如果不是第一个接收的数据包,那么就进行分包处理。OnUdpMsg用来接收UDP消息并处理。函数中使用recvfrom接收消息,如果接收到PT_REQUESTUDPPORT,就创

47、建新套接字,然后将端口信息发送过去。如果有PT_TEXT类型的数据,就直接进行显示。6 系统测试6.1 软件测试基础理论软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例,并利用这些测试用例运行程序以及发现错误的过程,即执行测试步骤。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码实现的最终审查,它是软件质量保证的关键步骤。测试的含义:所谓测试,首先是一项活动,在这项活动中某个系统或组成的部分将在特定的条件下运行,结果将被观察和记录,并对系统或组成部分进行评价。测试活动有两种结果:找出缺陷和故障,或显示软件执行正确。测试是一个或多个测试用例的集合。测

48、试的意义:系统测试是管理信息系统的开发周期中的一个十分重要环节。尽管在系统开发周期的各个阶段均采取了严格的技术审查,但依然难免会留下错误,如果没有在投入运行前的系统测试阶段被发现并纠正,问题迟早会在运行中暴露出来,到那时要纠正错误将会付出更大的代价。系统测试占用的时间、花费的人力和成本占软件开发的很大比例。6.2 系统测试在设计系统的过程中,难免会存在一些错误。在程序编写过程中,一些程序语句的语法错误,在程序运行时自动提示,可以立即纠正,因此,这类错误比较容易发现及改正。但另一类错误是在程序执行时由于不正确的操作或对某些数据的计算公式的逻辑错误导致的错误结果。这类错误隐蔽性强,因此,对这一类动

49、态发生的错误的排查是耗时费力的。测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。为了保证测试质量,所以制定了测试方案如下:测试一:登录模块测试如图6.1所示。方 法: 功能模块测试方法目 的: 测试登录模块正确性预期结果: 有出错警告过 程: 在登录模块中,输入错误用户名或密码,直接登录测试结果: 无法登录,有出错警告比 较: 与预期结果相当结 论: 正确图6.1 登录模块测试二:组织信息管理模块测试如图6.2所示。方 法: 功能模块测试方法目 的: 组织信息管理模块的正确性预期结果: 成功完成各项信息添加、修改

50、、删除过 程: 在组织信息管理模块中,添加、修改、删除单位息测试结果: 成功添加、修改、删除组织信息比 较: 与预期结果相当结 论: 正确图6.2 组织信息管理模块测试三:账户信息管理模块测试如图6.3所示。方 法: 功能模块测试方法目 的: 账户信息管理模块的正确性预期结果: 成功完成各项信息添加、修改、删除过 程: 在账户信息管理模块中,添加、修改、删除账户信息测试结果: 成功添加、修改、删除账户信息比 较: 与预期结果相当图6.3 账户信息管理模块6.3 测试结果测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改

51、进。同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的有效性。其次,没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。通过测试本系统各部分运行成功。结束语在当今电脑网络发达的世界当中,一个简单有效地局域网通信工具是如此的实用,所以我们应当重视对它的相关研究与开发。在本次毕业设计中,主要运用到了Visual C+ 6.0开发软件,应用了Access 2003数据库编程,对系统的分析和制作有了较深刻认识和理解。这个系统的实现,给了我一次绝好的机会,去了解软件工程的思想,用软件工程的一套方法去编制系统,一改我对管理信息系统的认识和看法,明白了软件工程书上说的东西,不是枯

52、燥无味的,而是前辈总结出来的精华所在。另外,我在这次设计中看到了自己的不足之处,在开始的时候,感觉逻辑复杂,难以控制,因此至今还有许多没能解决的问题,比如系统升级功能就没有实现,因为没有做真正的系统设计,甚至连毕业设计这样的系统都没有做过,所以很多地方都是自己临时学习的,大大影响了本设计的开发进度。虽然只实现了通信聊天的功能,但整个过程是令我欣慰而充实的既然毕业设计已经接近尾声,虽然有很多的功能没有实现,没有对系统预想时的那么全面,不过经过1个多月的努力,终于初见雏形,并完成了本次的论文写作,我希望自己能以良好的心态顺利毕业,走向大千社会。 致谢在这次软件工程课程设计中,此次设计顺利的成功完成

53、,首先要感谢我的指导老师李玮老师,在她的鼓励与耐心的指导及其帮助下,我的设计才能快速、保质量完成。同时,感谢所有关心、支持我的老师、同学,在我系统编写过程中,他们给予了我很大的帮助,在此,衷心的谢谢您们!李老师对我的设计进行耐心、细心指导及严格要求,使我战胜了遇到的所有的困难,感谢他在整个设计过程中给予我最大的支持。参考文献1林邦杰.深入浅出C+程序设计.中国铁道出版社,2005.2张雨,阮伟良等.Visual C+工程应用与项目实践.机械工业出版社,2005年1月,pp.67-132.3王端,于速,张雨.Visual C+ 数据库系统开发完全手册.人民邮电出版社,2006,pp.87-143.4李涛,刘凯奎,王永皎.Visual C+数据库开发与实例.清华大学出版社,2006,pp.33-112.5卢成均.计算机工程与设计.维普资讯网,2006,第24期.6赵启升.信息技术.维普资讯网,2005,第8期.7明日科技.C+数据库系统开发完全手册.人民邮电出版社,2006.8刘浩.C+编程实例与技巧.清华大学出版社,2004.9Archer,T.Whitechapel.C+技术揭秘.机械工业出版社,2005.10WroxPressInc.C+高级编程.清华大学出版社,2006.

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!