毕业设计(论文)-基于web的即时通信系统设计【源程序代码】.doc_第1页
毕业设计(论文)-基于web的即时通信系统设计【源程序代码】.doc_第2页
毕业设计(论文)-基于web的即时通信系统设计【源程序代码】.doc_第3页
毕业设计(论文)-基于web的即时通信系统设计【源程序代码】.doc_第4页
毕业设计(论文)-基于web的即时通信系统设计【源程序代码】.doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

武汉理工大学毕业设计(论文)-全套源程序代码加153893706目录1 绪论11.1 研究现状及设计目标11.1.1 研究现状11.1.2 设计目标11.2 研究目的及意义21.2.1 研究目的21.2.2 研究意义22 系统开发工具简介42.1 ASP.NET AJAX开发技术介绍42.2 VB.NET 开发语言介绍62.3 SQL Server 数据库介绍63 系统功能概述及系统模型的建立83.1 系统功能概述83.2 系统模型的建立83.2.1 用例图83.2.2 序列图123.2.3 类图144 数据库设计174.1数据库需求分析174.2数据库概念结构设计184.3数据库的逻辑结构设计225 功能设计245.1 共用模块的设计245.1.1 母版页的设计与引用245.1.2 公共类的设计与引用245.2 一对一聊天设计315.2.1 界面规划315.2.2 用户状态及好友列表模块设计325.2.3 对话框模块设计335.2.4 支持拖动的HiddenField模块设计345.2.5 保证刷新的各个updatepanel和timer模块设计345.3 聊天室(群聊)设计355.3.1界面规划355.3.2 加入的聊天室模块设计365.3.3 聊天室聊天模块设计365.3.4 聊天室用户列表模块设计366 运行与测试376.1 建立新帐号测试386.2 用户登录测试386.3 一对一聊天测试396.4 聊天室测试416.5 测试小结427 总结437.1 典型问题归纳437.2 系统的特色与不足43全套源程序代码加1538937061 绪论1.1 研究现状及设计目标1.1.1 研究现状即时通信(Instant Messenger,简称IM)软件是一种实现文字、音频和视频等信息的即时传送, 以及点对点的数据交换的网络交流方式。自1996 年世界上第一个即时通信软件 ICQ 在四位以色列籍年轻人成立的一家名为 Mirabilis 的小公司诞生, IM便拉开了神奇的序幕。当初仅仅是为了使连接在同一个服务器上的用户能相互交流而开发的 ICQ,在后来的日子里风光无限,各种即时通信软件迅速席卷了全球网民。目前,即时通讯软件可以说是上网用户使用率最高的软件。不论是老牌的ICQ,还是国内用户量第一的腾讯QQ,乃至微软的MSN Messenger、Goole Talker、雅虎的雅虎通、新浪UC、网易泡泡、搜Q、了了吧等都有很多的用户。甚至有专家预测即时通信软件即将取代电子邮件成为主流的互联网通信工具。Web IM 是网页版的即时通信工具,它的作用是给那些用不了或者不方便使用soft客户端的用户使用,最大的价值就是提供便捷的交流渠道。另外,Web IM的应用对于增强网站用户的活跃度、网站的互动性有着非常重大的意义,Web IM主要应用于社区用户的交流,在线客服,CRM。常见的即时通信工具的Web版本,如Web qq 、Web版百度HI,这类在线IM主要的功能局限于即时的交流沟通,侧重点在消息与文件传输等少数功能。针对社区、论坛以及普通网页开发的即时聊天插件。在这当中不得不提到Web qq,Web qq是腾讯推出的使用网页方式上QQ的服务,特点是无需下载和安装QQ软件,只要能打开web qq的网站就可以登录QQ与好友保持联系。具有Web产品固有的便利性,同时在Web上最大限度的保持了客户端软件的操作习惯。更丰富的好友动态、更开阔的聊天模式、更实时的资讯查看、还有休闲音乐伴随,web qq将为我们提供一个愉快的网络起点。1.1.2 设计目标现在的国内即时通信市场已经被Webqq以及电信的Fetion牢牢占据,各个网络公司自己的即时通信软件仅仅只能在局部的范围内起到作用,本次系统设计是本着学习的原则进行的,其期望达到的目标:(1)使用VB.NET语言进行数据交换及相关操作并且封装成类;(2)能够进行异步数据的查询、检索;(3)能够实现服务器端与客户端的连接和即时通讯。1.2 研究目的及意义1.2.1 研究目的(1)通过对具体应用系统的设计,使自己对vs开发平台以及sql数据库能够进一步熟悉。(2)在开发过程中参考各个方面的文献,了解目前通讯系统开发的走向及前景。(3)熟悉小型系统开发的整体流程,为以后的学习或是工作作出铺垫。1.2.2 研究意义(1)熟悉vs+sql开发小型系统的意义 对于.Net的开发,visual studio集成开发环境无疑是最好的选择。Visual studio2008是基于。Net 3.5一起推出的新一代开发平台,它提供了一整套的开发工具。在该开发平台上,可以开发ASP.NET Web应用程序、Web服务应用程序、Windows应用程序和移动设备应用程序。.net支持多种开发语言,如Visual Basic.Net、Visual C#、Visual C+等。利用此开发工具可以创建混合语言解决方案,同时可以简化ASP.NET Web应用程序的开发难度。在我们的学习中大多采用vs+sql的黄金组合,一个用于界面设计,一个用于组织后台数据,这也是商业开发的传统模式,熟悉这样的开发语言和数据库对于我们以后从事软件开发具有引导性的作用,为以后更好发展打下基础。(2)熟悉小型系统开发的整体流程的意义通过每一次的具体系统开发,我们都会发现可以从中收获匪浅,无论是技术层面的,还是非技术层面的,计算机专业。就像我们在一次系统开发中,首先我们必须从大的方面着手,先通过与用户的交流获得对问题的直接定义,即解决“我们要解决什么任务,完成什么任务?”的问题,如果不知道问题是什么就开始规划模块,显然是盲目的,只会白白浪费金钱,最终得出的结果不可能令用户满意。在知道了要解决什么问题后,还要对问题进行可行性的分析,即确定“用户所提出的问题是否有一个可以解决的方案,方案行不行得通。”然后才是需求分析,这个阶段仍然不是具体的解决问题,而是准确的确定“为了解决这个问题,目标系统必须做什么”,主要是确定系统必须具有哪些功能。在上述步骤都详尽的完成后,我们才可以做总体设计,即“应该怎样实现目标系统,”这时可以对整个系统进行一定的模块划分,将系统划分为适当的层次结构。然后再进行详细设计,即“怎样具体实现各个模块,”,进行模块的算法和数据结构设计、代码编写。接着就是进行单元测试和综合测试,最后还要有对系统的后期维护。通过对小型系统的开发,我们可以熟练的掌握系统开发流程,这样在我们以后的工作中对每个阶段要完成的任务才能有一个清醒的认识,对以后进行团队合作才能有足够的重视,才能更好的完成任务。2 系统开发工具简介2.1 ASP.NET AJAX开发技术介绍 ASP.NET 是一项功能强大的,非常灵活的服务器端技术,用于创建动态Web页面。其次,ASP.NET是构成.NET Framework的一系列技术中的一种,在此可以把.NET Framework看成是用于创建所有应用程序的巨大工具箱1。AJAX的全称是Asynchronous JavaScript And XML,即异步的JavaScript 和XML,确切的说,AJAX并不是一种技术,它实际上是几种技术的共同协作的结果,而其中每一种技术在AJAX提出之前都已经被成熟应用很多年了,它所使用的技术包括:(1) XHTML和CSS(2) 使用文档对象模型(Document Object Model)作动态显示和交互(3) 使用XML和XSLT做数据交互和操作(4) 使用XMLHttpRequest进行异步数据接收(5) 使用JavaScript将它们绑定在一起ASP.NET Ajax 开发代号Atlas是一个新的Web技术开发包,它集成了一套非常大的客户端脚本库使得与功能丰富的、基于服务器开发平台的 ASP.NET2.0结合在一起,”Atlas”能让你开发的Web应用能够通过直接调用Web服务器来更新一个Web页面的数据不需要在页面往返传送(也就是不需要多次刷新页面)。使用”Atlas”,你能最大地利用ASP.NET和服务器端代码在浏览器中来做许多工作,使得有更加丰富的用户体验。ASP.NET AJAX是一个完整的开发框架,其服务器端编程模型相对于客户端编程模型较为简单,而且容易与现有的ASP.NET程序相结合,通常实现复杂的功能只需要在页面中拖几个控件,而不必了解深层次的工作原理,除此之外服务器端编程的ASP.NET AJAX Control Toolkit含有大量的独立AJAX控件和对ASP.NET原有服务器控件的AJAX功能扩展,实现起来也非常简单。但是鱼与熊掌不可兼得,服务器端编程相对于客户端编程在执行效率和可控性上有较大差距。在传统的Web交互方式中,对于每次用户的请求,服务器总是响应一个新的Web页面给浏览器。在这种情况下,即使页面中只有小部分的改动,也会将整个页面发送回来,大大影响了交互的速度,使用户在大部分时间面对一个空白的浏览器,等待新页面的到来。虽然有许多技术试图改变这种每次请求都刷新整个页面的状况,比如Frame,IFrame等,但是这些技术并不能完美的解决这个问题。在AJAX模式下,用户第一次发送请求,服务器返回一个完整的Web页面,如果只需要改变部分数据,并不将整个页面重新载入,而是通过AJAX技术向服务器发送请求,通过CSS和XHTML将响应的内容表示出来。可以看出,AJAX技术大大降低了服务器和客户端之间的数据流量,很大程度地提高了响应速度。同时,由于不是每次都发回整个页面,也能大大减少出现浏览器空白界面的情况,界面友好度有很大的提高2。ASP.NET AJAX 主要的设计目标有两点:第一, 对现有的ASP.NET服务器端模型进行扩展,让其可以生成实现富客户端的JavaScript代码。第二, 为ASP.NET 增加客户端编程模型,让纯粹的客户端编程变得更加简单。这样,ASP.NET AJAX的特性就可以相应的分为服务器端和客户端两个部分,前者包括ASP.NET 2.0 AJAX Extensions以及ASP.NET AJAX Control Toolkit,后者包括Microsoft AJAX Library。ASP.NET AJAX框架的客户端部分,即Microsoft AJAX Library,是一个跨浏览器,跨平台的Ajax客户端解决方案。它包括类似ASP.NET服务器端控件一样良好封装的,可以运用于各种主流浏览器之上的各种客户端组件,例如表示简单界面元素的TextBox , 表示复杂绑定列表的ListView, 验证用户输入的Validator,为HTML元素提供某些附加行为的Behavior,以及功能更加强大的用户身份认证,用户个性化组件等。开发者完全可以以一种面向对象的方式轻松的用JavaScript编写自定义的组件,然后使用JavaScript以编程方式或一种ASP.NET AJAX特定的,基于XML的声明式脚本语言,借助于ASP.NET AJAX客户端框架中的绑定概念将这些组件方便而又高效的连接起来,以构成功能强大的,纯粹的客户端Ajax应用程序。ASP.NET 2.0 AJAX Eetensions,即ASP.NET AJAX的服务器端控件,包括与开发者社区共同创建的ASP.NET AJAX Control Toolkit,则是上述ASP.NET AJAX 框架的客户端部分JavaScript组件在服务器端的封装。这些服务器端组件为基于ASP.NET的应用程序提供了另一种Ajax的实现方式-采用一种和ASP.NET 完全一样的服务器端控件开发模型。作为对现有ASP.NET服务器端组件的扩展,ASP.NET 2.0 AJAX Extensions提供的服务器端组件可以让开发者充分使用他们现有的知识,无需书写一行JavaScript代码,甚至不用了解Ajax的任何实现原理,只通过在Visual Studio中拖放控件即可开发出带有强大Ajax功能以及丰富用户体验的富客户端应用程序。这个特性也非常适合为现在的ASP.NET程序添加少量的Ajax功能3。2.2 VB.NET 开发语言介绍VB. net是微软最新平台技术,是.netframeworkSDK的一种语言。VB. net和VC#.net在功能上没有区别。编译以后生成的可执行文件被称为Assembly,即程序集。 VB. net的版本号是VisualBasic7.0,它的运行是建立在CLR和MSIL虚拟器上的。其实,它的机制和Java差不多。 vb. net是Visual Basic. net的简称。提到vb. net,就不能不先提一下vb(Visual Basic)。 Visual Basic是Windows环境下的一种简单、易学的编程语言,由于其开发程序的快速、高效,深受程序员的喜爱。严格地来说,Visual Basic只是半面向对象的语言,其面向对象的能力及程序的执行效率往往不能一些程序员的需要,因此,大的项目很少使用Visual Basic来开发。Visual Basic的最后一个版本是Visual Basic 6.0。 随着Internet技术的成熟和广泛应用,Internet逐渐成为编程领域的中心,为适应这种新局面的变化,2000年Microsoft公司提出“任何人从任何地方,在任何时间,使用任何设备存取互联网上的服务”的战略,并在Visual Basic 6.0之后,推出了全新的“.NEt构架”,在其第一个版本-Visual Studio. NET 7.0中,集成了Visual Basic 7.0、Visual C+ 7.0及C#,其中的Visual Basic 7.0(vb 7.0),即是vb. net的第一个版本。 Visual Basic.NET是新一代的Visual Basic,在微软公司投入很大力量开发网络新领域.NET平台的同时,也将VB运用到了这一平台上,同时大幅度提高VB的功能。可以说Visual Basic.NET在功能上不输给VC的升级版本语言C#,而且实现了真正的面向对象功能,同时微软公司增强了该语言的网络开发功能和可移植性,Visual Basic.NET完全有实力赶上并超过java,这可以说是VB程序员的福音4。2.3 SQL Server 数据库介绍 SQL Server 是一个关系数据库管理系统。它最初是由Microsoft、 Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。Sybase 则较专注于SQL Server在UNIX 操作系统上的应用。SQL Server 采用SQL(Structured Query Language)语言,即机构化查询语言,SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。绝大多数流行的关系型数据库管理系统都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select, Insert, Update, Delete, Create,以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。本次设计使用SQL Server 2005作为后台数据库,在这之前有SQL Server 2000版本,SQL Server2000 是Microsoft 公司推出的SQL Server 数据库管理系统,该版本继承了SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能 (BI) 工具提供了企业级的数据管理。SQL Server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。 SQL Server 2005 数据引擎是本企业数据管理解决方案的核心。此外 SQL Server 2005 结合了分析、报表、集成和通知功能。这使您的企业可以构建和部署经济有效的 BI 解决方案,帮助您的团队通过记分卡、Dashboard、Web services 和移动设备将数据应用推向业务的各个领域。 与 Microsoft Visual Studio、Microsoft Office System 以及新的开发工具包(包括 Business Intelligence Development Studio)的紧密集成使 SQL Server 2005 与众不同。无论您是开发人员、数据库管理员、信息工作者还是决策者,SQL Server 2005 都可以为您提供创新的解决方案,帮助您从数据中更多地获益。3 系统功能概述及系统模型的建立3.1 系统功能概述通过对客户需求的深入理解,确定了本系统将采用B/S模式进行设计,即所谓瘦客户端方式,运用浏览器进行客户端的基本操作,所以其服务器端功能必须足够强大,下面从客户端以及服务器端给出初步的功能要求:(1) 客户端功能* 未注册用户可以通过注册成为新用户* 已注册用户可以登录系统* 登录系统后可以选择登录模式:隐身、在线、忙碌等* 登录系统后可以查看好友在线状态* 登录系统后可以查看好友发送的信息以及服务器信息等* 登录系统后可以给好友发送信息* 登录系统后可以对好友进行管理:添加、删除等(2)服务器端功能* 服务器端可以进行开启、暂停、关闭服务等* 服务器端可以接受客户端的信息并进行处理* 服务器端可以将处理后的信息发送给目标客户端3.2 系统模型的建立3.2.1 用例图(1)用户注册模块用例图图3-1 用户注册模块用例图用例描述:用例:用户注册参与者:用户、服务器内含:外延:前置条件:事件流:1 用户填写注册表。2 将注册表提交给服务器。3 服务器返回注册信息提示。后置条件:备注:如果用户名已存在则会返回错误信息,用户将要重新注册。(2)用户登录模块用例图图3-2 用户登录模块用例图用例描述:用例:用户登录参与者:用户、服务器内含:外延:前置条件:用户名存在事件流:1. 用户填写登录信息。2. 将登录新体提交给服务器。3服务器处理用户信息并返回登录是否成功的提示。后置条件:备注:如果要成功登录,用户信息必须正确。(3)好友管理模块用例图 图3-3 添加好友模块用例图 图3-4 删除好友模块用例图用例描述 用例:好友管理参与者:用户、服务器内含:外延:前置条件:用户已经登录事件流:1. 用户查找要进行管理的好友。2. 给出好友管理信息:添加、删除、移动等。3将信息发送至服务器。4服务器处理用户提交的信息并返回处理结果。后置条件:备注: (4)发送消息模块用例图图3-5 发送消息模块用例图用例描述:用例:发送消息参与者:用户、服务器内含:外延:前置条件:用户已经登录事件流:1. 用户选择好友并发送信息。2. 服务器处理用户发送的信息。3服务器将处理后的信息发送给目标用户并返回发送提示。后置条件:备注:(5)保存信息模块用例图图3-6 保存消息模块用例图 用例描述:用例:保存信息参与者:用户、服务器内含:外延:前置条件:用户已经登录事件流:1. 用户选择接受路径2. 服务器将消息发送给用户。后置条件:备注:用户也可以选择拒绝接受。 3.2.2 序列图(1) 用户注册模块序列图客户端数据库服务器WEB服务器发连接服务器请求信息、1连接成功,服务器响应客户端请求、2发注册请求信号和注册信息、3连接数据库请求建立连接、4连接成功,返回连接、5向数据库注册用户信息、6返回注册结果、7告诉客户注册成功的帐号,并返回结果、8图3-7 用户注册模块序列图(2)用户登录模块序列图客户端WEB服务器数据库服务器1、发送用户登录请求:包括用户名和密码2、向数据库服务器验证合法性3、返回验证结果4、返回登陆结果 图3-8 用户登录模块序列图(3) 添加好友模块序列图客户端WEB服务器数据库服务器1、建立连接,发送查找好友请求2、查找在线用户数据3、返回在线用户数据4、返回在线用户数据列表5、用户选择要添加为好友的用户发加添加好友请求8、添加到好友表中6、验证是否已经是好友7、返回验证结果 9、返回添加结果10、向用户返回添加结果图3-9 添加好友模块序列图(4)发送消息模块序列图客户26、向服务器发送“发送信息”请求8、发送信息7、若用户已经登录则允许发送信息.9,根据已经保存的session值确定发送者和接受者1、向服务器发登录请求3、利用session保存用户1和2的帐号2、向服务器发送登陆请求4、返回登录成功信息5、返回登录成功信息10,服务器将消息以及发送者信息发送给接受者客户1WEB服务器和数据库服务器11、返回发送信息提示图3-10 发送消息模块序列图3.2.3 类图类图(Class diagram)由许多(静态)说明性的模型元素(例如类、包和它们之间的关系,这些元素和它们的内容互相连接)组成。类图可以组织在(并且属于)包中,仅显示特定包中的相关内容。类图(Class diagram)是最常用的UML图,显示出类、接口以及它们之间的静态结构和关系;它用于描述系统的结构化设计。类图(Class diagram)最基本的元素是类或者接口。类一般包含类名,属性,方法三大部分,类名书写规范:正体字说明类是可被实例化的,斜体字说明类为抽象类。 属性和方法书写规范:修饰符 描述信息 属性、方法名称 参数 :返回类型|类型 属性和方法之前可附加的可见性修饰符: 加号(+)表示public;减号(-)表示private;#号表示protected;省略这些修饰符表示具有package(包)级别的可见性。 类之间可以建立五种关系:关联、依赖性、累积、实现关系和泛化。关联是类之间的词法连接,在类图中用单线表示。依赖性关系在类的操作中需要参数或返回值的类中也需要。依赖性用虚线箭头表示。累积关系是强关联。累积关系是整体与个体间的关系。累积关系在总体类旁边画一个菱形。实现关系显示类与接口、包与接口、组件与接口和用例与用例实现之间的关系。实现关系将公共接口(接口类或用例)与接口的详细实现(类、包或用例实现)相连接。换句话说,实现关系把接口与实现分开。图3-28展示了实现关系的表示方法。泛化关系显示两个模型元素(如角色、用例、类或包)之间的继承关系。大多数面向对象语言直接支持继承的概念。继承就是让一个类继承另一个模型元素的所有属性、操作、关系和词法。在UML中,继承关系称为泛化,显示为子类指向父类的箭头, 由于本系统是一个即时通讯系统,其中系统中的类比较少,各个类之间的关系也比较简单,主要有这么几个类,具体布局如下图所示:图3-11 整个系统类图4 数据库设计数据库技术是现代系统设计中最有效的数据管理手段。数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。数据库结构设计的好坏直接对应用系统的效率及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致性。数据库设计是指针对一个给定的应用环境,构造(设计)优化的数据库逻辑模型和物理模型结构,并据此建立数据库及其应用系统,使之能够有效的存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求5。设计数据库系统时应该充分了解用户各个方面的需求,包括现有的及将来可能增加的需求。数据库设计一般包括如下几个步骤。(1) 数据库需求分析。(2) 数据库概念结构设计。(3) 数据库逻辑结构设计。4.1数据库需求分析本系统主要设计两个方面,客户端和服务器端,所以数据库中要充分考虑这两个方面的因素。对客户端来说,他们所关心的就是如何可以利用该系统和自己的好友进行交流,同时要能够对好友进行管理,通过总结可以得出如下的需求信息:* 未注册用户可以通过注册成为新用户* 已注册用户可以登录系统* 登录系统后可以选择登录模式:隐身、在线、离线等* 登录系统后可以查看好友在线状态* 登录系统后可以查看好友发送的信息等* 登录系统后可以给好友发送信息* 登录系统后可以对好友进行管理:添加、删除等* 登录系统后可以给好友发送文件以及接收文件等(未实现)对于服务器端来说,他们关心的就是如何更好的为客户提供服务,使他们能够更好的和自己的好友进行交流,他们主要完成后台的工作,通过分析可以得出,服务器端的需求信息如下:* 服务器端可以进行开启、暂停、关闭服务等* 服务器端可以接受客户端的信息并进行处理* 服务器端可以将处理后的信息发送给目标客户端经过上述系统功能的分析和需求总结,考虑到之后功能的扩展,设计如下的数据项和数据结构。其中uid为自动编号的标识。(1) 会员基本信息,包括数据项:uid,昵称,帐号,密码,目前状态,最后登录时间。(2) 好友列表,包括数据项:uid,本人帐号,好友帐号。(3) 对话信息,包括数据项:uid,发送者帐号,接受者帐号,内容等。(4) 对话邀请,包括数据项:uid,邀请者帐号,接受邀请者帐号等。(5) 聊天室,包括数据项:编号,名称,密码,创建者等。(6) 聊天室用户,包括数据项:编号,用户帐号,聊天室简介等。(7) 聊天室聊天记录,包括数据项:编号,聊天室名称,用户帐号,聊天内容,记录该聊天内容的时间等。4.2数据库概念结构设计得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以及他们之间的关系,为后面的逻辑结构设计打下基础。这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。本实例根据上面的设计规划出的实体有:会员基本信息实体、好友列表实体、对话信息实体、对话邀请实体。实体之间关系的E-R图如下图所示:拥有好友图书对话信息图书拥有对话邀请图书接受用户NNM1N1加入聊天室聊天室用户聊天记录加入记录MNMN11图4-1 实体之间的E-R图(1)用户信息表(userinfo)的E-R图如下:UserinfoUidUseraccountStatusNicknamePwdLastlogin图4-2 用户信息表E-R图(2)好友信息列表(friendinfo)的E-R图如下:FriendinfoUiduseraccountfriendaccount图4-3 好友信息列表E-R图(3)对话信息(message)的E-R图如下:MessageUidMsgfromMsgtoMsgMsgsendtime图4-4 对话信息E-R图(4)对话邀请(calling)的E-R图:CallingUidCallingfromCallingto图4-5 对话邀请E-R图(5)聊天室(chatroom)的E-R图ChatroomChatroomnumChatroomnameChatroompasswordChatroomcreater图4-6 聊天室E-R图(6) 聊天室用户(chatroomuser)的E-R图ChatroomuserChatroomnumUseraccountChatroomusertips图4-7 聊天室用户E-R图(7) 聊天室聊天记录(userchatrecord)的E-R图UserchatrecordChatnumChatroomnameUseraccountChatrecordChattime图4-8 聊天室聊天记录E-R图4.3数据库的逻辑结构设计数据库的概念结构设计完成后,现在可以将上面的数据库概念结构设计转换为某种数据库系统支持的实际数据模型,也就是数据库的逻辑结构。根据数据量的大小,系统可以使用不同的数据库,本次系统设计主要使用SQL Server数据库。本次系统设计主要使用SQL Server数据库。表4-1 UserInfo(会员信息数据)字段名称类型用途Uid自动编号识别作用Useraccount文字用户帐号Status文字用户在线状态(在线,离线,离开,忙碌)Lastlogin文字用户最后登录时间Nickname文字昵称Pwd文字登录密码表4-2 FriendInfo(好友列表)字段名称类型用途Uid自动编号识别Useraccount文字帐号Friendinfo文字好友帐号表4-3 Message(对话信息表)字段名称类型用途Uid自动编号识别Msgfrom文字消息发送者Msgto文字消息接收者Msg文字消息内容Msgsendtime文字消息发送时间表4-4 Calling(对话邀请表)字段名称类型用途Uid自动编号识别Callingfrom文字对话申请者Callingto文字对话被邀请者表4-5 Chatroom(聊天室信息表)字段名称类型用途Chatroomnum自动编号识别Chatroomname文字聊天室名称Chatroompassword文字聊天室密码Chatroomcreater文字聊天室创建者表4-6 Chatroomuser(聊天室用户表)字段名称类型用途Chatroomnum自动编号识别Useraccount文字聊天室用户帐号Chatroomusertips文字聊天室简介表4-7 Userchatrecord(聊天室聊天记录表)字段名称类型用途Chatnum自动编号识别Chatroomname文字聊天室名称Useraccount文字聊天室用户帐号Chatrecord文字聊天记录Chattime日期聊天记录时间5 功能设计5.1 共用模块的设计5.1.1 母版页的设计与引用整体系统的每一个界面都无一例外的用到了母版页,母板页的引用能很好的解决各个界面之间的布局一致性问题,使得界面设计简洁,优美,母版页的扩展名是.master。可以把母版页理解为多个内容页共同的部分。所以可以先建一个母版页,把共同的东西都建好,通过添加ContentPlaceHolder控件预留可变化的区域。然后在各个内容页里使用母版页(通过在声明里引用母版页),原来的ContentPlaceHolder控件会被Content控件替换,然后你可以在Content控件里添加每个内容页个性化的东西。这样可以减少很多重复代码的劳动,快速的开发,也便于以后的维护。本次系统开发就用到了母板页设置了页面头部和尾部,这样在其他的内容页中便可以直接引用了,其页面效果如下:在其他内容页中引用时只要给出MasterPageFile就可以了。5.1.2 公共类的设计与引用 Visual Basic。NET不像其以前的版本,在创建类时,每个类都有自己的文件,从而产生一个非常庞大的面向对象工程,Visual Basic.NET 允许把多个类放在一个源文件里。这样可以减少工程文件数量,使工程更易于维护和管理6。本次系统设计中对许多公共部分进行了集成,将数据库连接与操作语句都放在了类dataBaseClass中;将与本系统有关的数据库操作语句放在了IMClass(一对一聊天功能)和ChatRoom1(群聊功能)两个类中,这样的话在设计前台时可以直接调用位于这些类中的方法,很大程度上避免了程序的冗余,简化了设计流程,当然以后如果做系统移植,这些类可以直接拷贝过去,不用修改或经过稍许修改就能使用。(1) DataBaseClass类该类中包含了数据库访问的几个重要方法,这些方法都是以过程的方式实现的,自定义过程主要有两种:一种是以“Sub”保留字开始的为子过程,完成一定的操作功能,子过程名无返回值;另一种以“Function”保留字开始的为函数过程,用户自定义的函数,函数名有返回值7。现在列举如下:Dim db As SqlConnection首先定义一个数据库连接字符串的全局变量Sub New(ByVal mdbName As String)功能说明:构建数据库连接。参数: MdbName:SQL数据库名称(liu)Function ReadDataTable(ByVal SQL As String) As System.Data.DataTable功能说明:对数据库执行SQL语句,返回DataTable参数:SQL:sql语句返回值: DataTableSub Execute(ByVal SQL As String)功能说明:执行SQL(传入SQL字符串,用于update,insert,delete)参数: SQL:sql语句(2) MClass类IMClass类中包含了一对一聊天各个模块所涉及的访问以及修改数据库的各种方法,包括添加,修改,删除好友信息,获取好友列表,获取聊天内容,获取聊天记录等,其中的几个重要的方法列举如下:Shared Function antiSQLinjection(ByVal s As String) As String功能说明:去掉s字符串中的不合法字符参数:S:要执行的SQL语句返回值: S:去掉不合法字符后的SQL语句Private Shared Function GetNow()功能说明:获取当前服务器时间参数:无返回值: 当前服务器的时间Shared Function CheckPassword(ByVal UserAccount As String, ByVal pwd As String) As Boolean功能说明:检查输入的帐号密码是否正确参数:Useraccount:用户输入的帐号,pwd:用户输入的密码返回值: True:验证成功;false:验证失败Shared Function CreateUserAccount(ByVal UserAccount As String, ByVal pwd As String, ByVal NickName As String) As Boolean功能说明:建立新帐户参数:Useraccount:注册帐号Pwd:注册密码Nickname:注册昵称返回值:True:注册成功False:注册失败Shared Sub UpdateStatus(ByVal UserAccount As String, ByVal Status As String)功能说明:登录用户登录后改变自己状态参数:Useraccount:用户帐号Status:用户状态返回值: 无 Shared Sub UpdateLastLogin(ByVal UserAccount As String)功能说明:登记用户最后在线时间参数:Useraccount:用户帐号返回值: 无 Shared Function GetFriendsList(ByVal UserAccount As String) As String()功能说明:取得当前用户好友列表参数:Useraccount:用户帐号返回值: 返回一个好友数组 Shared Function GetUserNickName(ByVal UserAccount As String) As String功能说明:获取当前用户昵称参数:Useraccount:用户帐号返回值: 无Shared Function GetUserStatus(ByVal UserAccount As String) As String功能说明:获取当前用户状态参数:Useraccount:用户帐号返回值: 用户状态值Shared Sub SendChatingCalling(ByVal CallingFrom As String, ByVal ChattingWith As String)功能说明: 发送聊天邀请参数:CallingFrom:邀请者Chattingwith:被邀请者Shared Sub SendTalkingMsg(ByVal UserName As String, ByVal TalkingTo As String, ByVal msg As String)功能说明:发送聊天信息参数:Username:信息发送方帐号Talkingto:信息接收者帐号Msg:信息内容Shared Function GetTalkingMsg(ByVal UserName As String, ByVal TalkingTo As String, ByVal Lines As Integer) As String()功能说明:获取最近的lines条聊天信息参数:Username:信息发送者帐号Talkingto:信息接收者帐号Lines:聊天信息条数返回值: Lines条聊天信息Shared Function CheckChatingCalling(ByVal UserName As String) As String功能说明:检查是否有对自己的聊天请求参数:Username:用户帐号返回值: 邀请者帐号Shared Function DeleteChatingCalling(ByVal UserName As String) As String功能说明:检查对自己的聊天请求并删除参数:Username:用户帐号Shared Function AddNewFriend(ByVal UserAccount As String, ByVal FriendAccount As String) As Boolean功能说明:添加好友参数:Useraccount:用户帐号Friendaccount:要添加的好友帐号返回值:True:添加成功False:添加好友失败Shared Function DeleteFriend(ByVal UserAccount As String, ByVal FriendAccount As String) As Boolean功能说明:删除好友参数:Useraccount:用户帐号Friendaccount:要删除的好友帐号返回值:True:删除好友成功False:删除好友失败(3) Ch

温馨提示

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

评论

0/150

提交评论