大家好,今天给大家介绍基于C#+vs.net+SQL Server的多功能聊天软件设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦
文章目录:
项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:14400个字24页
包含内容:整套源码+完整毕业论文
提示:以下为毕业论文的简略介绍,项目源码及完整毕业论文下载地址见文末。
引言
1.1 课题背景
省略
1.2 国内外主要聊天工具的发展状况
省略
1.3 本课题研究的意义
省略
1.4 本文的主要工作
随着用户对软件功能的需求不断提高,即时通讯的产品也不断地更新换代。即时通讯的发展不论是在基础应用方面还是在扩展应用方面都有着飞跃。为了满足用户的需求,包括腾讯公司的聊天软件QQ在内,许多即时性聊天工具都推出了语音聊天、视频聊天功能模块。本文主要对聊天软件的语音聊天和视频聊天等相关功能的实现原理进行了研究。
本文首先对聊天软件的发展以及其对人们的生活有何影响作了简述,并对开发环境和工具进行了相应说明并对此聊天软件系统进行了较为详细的分析;进而提出了该多功能聊天软件的设计方案。在本次多功能聊天软件的设计与开发中,本人主要负责设计开发登录模块、注册模块、语音聊天模块、视频聊天模块,并对此聊天软件系统的登录模块、注册模块、语音聊天、视频聊天模块的设计与实现进行了较详细的说明和分析。
2 需求分析及开发工具
2.1 需求分析
此聊天软件系统是模拟现今国内最为流行的即时性通讯工具QQ而设计的,能够实现注册、登录、添加好友、文字聊天、文件传输、语音聊天、视频聊天等功能。该聊天软件系统是采用C/S结构,即客户端与服务器端的结构体系。基于对该聊天软件功能的分析,本文分别对客户端与服务器端进行了设计。
该聊天软件服务器端的功能是实现对客户端提交的用户信息进行处理。服务器设计内容包含:信息接收、注册、登录、刷新、更新、添加好友等。“信息接收”是提供服务器接受客户端发送信息的功能;“注册”是服务器端接受到用户的注册信息请求后,将请求信息写入到数据库,为用户的注册提了相关服务;“登录”是服务器通过验证登录信息来实现相关的服务;“刷新”是对服务器的更新数据每过一段时间进行一次刷新,来显示用户当前在服务器的信息状况,如在线状态等;“更新”是服务器对用户在数据库中信息进行相关的操作;“用户退出处理”是服务器在用户退出聊天系统后作出的相关处理工作;“好友添加”是服务器对添加的好友信息进行处理等相关操作。
客户端即用户使用的应用程序端。用户通过该聊天软件的客户端来实现网上聊天的相关功能:注册、登录、添加好友、文字聊天、文件传输、语音聊天、视频聊天等。注册功能是提交用户相关信息以及获得一个属于自己登录该聊天软件系统的用户ID号;登录功能是实现验证用户信息与合法使用该聊天软件系统的权限;添加好友是实现用户之间好友添加的操作;添加好友成功后,就可以与好友之间开始文字聊天、文件传输、语音聊天、视频聊天等功能。
(1)该服务器的运行环境:
① 操作系统:windows
② 内存:256M以上(最低为256M);
③ CPU:Intel® Celeron® 2.0GHz或AMD 1800+以上均可;
④ 其它:Microsoft .NET Framework SDK。
(2)客户端的运行环境:
① 操作系统:windows
② 内存:256M以上(最低为256M);
③ CPU:Intel® Celeron® 2.0GHz或AMD 1800+以上均可;
④ 摄像头、耳机等外部设备。
第一次使用系统的用户通过填写个人信息来注册,服务器返回一个注册ID号给注册用户,用来登录。已经注册的用户在登录界面填写完相关登录信息,通过服务器的验证后就可以进入客户端界面。在线用户在添加好友时可以查看所要添加用户的列表信息。当对要添加的好友发送请求添加的信息后,由该好友验证是否通过请求,同意后会向请求方发送同意添加的消息。当请求方添加完成后,服务器端会把相关信息存入到好友表的数据库中。完成以上操作以后,两人即可进行在线聊天。
2.2 开发工具
2.2.1 C#语言的介绍
C#(Csharp)是一种最新的、面向对象的编程语言,它使得程序员可以快速地编写各种基于Microsoft .NET平台的应用程序。Microsoft .NET提供了一系列的工具和服务来最大程度地开发、利用计算与通讯领域。C#面向对象的卓越设计使它成为构建各类组件的理想之选——无论是高级的商业对象还是系统级的应用程序。使用简单的C#语言结构,这些组件可以方便的转化为XML 网络服务,从而使它们可以由任何语言在任何操作系统上通过Internet进行调用。最重要的是,C#使得C++程序员可以高效率地开发程序,而绝不损失C/C++原有的强大功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快地转向C#。
C#语言是允许类型定义、扩展的元数据,这些元数据可以应用于任何对象。项目构建者可以定义领域特有的属性并把他们应用于任何语言元素类、接口等等。然后,开发人员可以编程检查每个元素的属性。这样,很多工作都变得更加方便:譬如编写一个小工具来自动检查每个类或接口是否被正确定义为某个抽象商业对象的一部分,或者只是创建一份基于对象的领域特有属性的报表。定制的元数据和程序代码之间的紧密对应有助于加强程序的预期行为和实际实现的之间的对应关系。
在C#中,每个对象都自动生成为一个COM对象。开发者不再需要显式的实现IUnknown和其他COM接口.这些功能都是内置的、类似的,C#可以调用现有的COM对象,无论它是由什么语言编写的。C#包含了一个特殊的功能:使程序可以调用任何纯API。在一段特别标记的代码中,开发者可以使用指针和传统C/C++特性,如手工的内存管理和指针运算。这是其相对于其它环境的极大优势。这意味着C#程序员可以在原有的C/C++代码的基础上编写程序,而不是彻底放弃那些代码
2.2.2 C/S结构的介绍
C/S(client/server)结构,即被广为熟知和使用的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到client端和server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是client/server形式的两层结构,由于现在的软件应用系统正在向分布式的web应用发展,web和client/server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部用户和外部用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。传统的c/s体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是client端还是server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,c/s结构的软件需要针对不同的操作系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高,效率低。
C/S架构软件的优势与劣势:
(1)应用服务器运行数据负荷较轻。最简单的c/s体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序运行在用户自己的电脑上,对应于数据库服务器,可称为客户电脑,当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻。
(2)数据的储存管理功能较为透明。在数据库应用中,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的,前台应用可以违反的规则,并且通常把那些不同的(不管是已知还是未知的)运行数据,在服务器程序中不集中实现,例如访问者的权限,编号可以重复、必须有客户才能建立定单这样的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序不是非常“瘦小”,麻烦的事情都交给了服务器和网络。在c/s体系的下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。
(3)c/s架构的劣势是高昂的维护成本且投资大。首先,采用c/s架构,要选择适当的数据库平台来实现数据库数据的真正“统一”,使分布于两地的数据同步完全交由数据库系统去管理,但逻辑上两地的操作者要直接访问同一个数据库才能有效实现,有这样一些问题,如果需要建立“实时”的数据同步,就必须在两地间建立实时的通讯连接,保持两地的数据库服务器在线运行,网络管理工作人员既要对服务器维护管理,又要对客户端维护和管理,这需要高昂的投资和复杂的技术支持,维护成本很高,维护任务量大。
2.2.3 开发环境
微软发布了.NET开发平台,这是自1993年7月随着Windows NT3.0出现的Win32 API后微软软件开发平台的第一次大升级。比起Win16来,Win32提供了更多功能强大的API,但没有对工具和技术进行引人注目的改变。与之不同的是,.NET开发平台在开发者用以创造应用程序的工具和技术上做了根本的改变。 .NET开发平台使得开发者创建运行在Internet Information Server (IIS)(互联网信息服务器)Web服务器上的Web应用程序更为容易,它也使创建稳定、可靠而又安全的Windows桌面应用程序更为容易。
省略
2.2.4 SQL Server 数据库介绍
MicrosoftSQLServer是一个分布式的关系型数据库管理系统,具有客户机/服务器体系结构,采用了Transact-sql的sql语言在客户机与服务器间传递客户机的请求与服务器的处理结果。众所周知,SQLServer能够满足今天的商业环境要求不同类型的数据库解决方案。它一种应用广泛的数据库管理系统,具有许多显著的优点:易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。性能、可伸缩性及可靠性是基本要求,而进入市场时间也非常关键。除这些核心企业品质外,SQLServer还为您的数据管理与分析带来了灵活性,允许单位在快速变化的环境中从容响应,从而获得竞争优势。从数据管理和分析角度看,将原始数据转化为商业智能和充分利用Web带来的机会非常重要。作为一个完备的数据库和数据分析包,SQLServer为快速开发新一代企业级商业应用程序、为企业赢得核心竞争优势打开了胜利之门。作为重要的基准测试可伸缩性和速度奖的记录保持者,SQLServer是一个具备完全Web支持的数据库产品,提供了对可扩展标记语言(XML)的核心支持以及在Internet上和防火墙外进行查询的能力。
3 多功能聊天软件的设计方案
3.1 聊天系统流程的分析与设计
图1 系统流程图
此聊天软件采用了C/S结构,其系统流程图如图1所示,使用这个聊天系统软件的用户必须先进行注册。用户首先选择注册选项,填写相关的注册信息,然后通过网络提交给服务器,再由服务器将注册信息提交给数据库。同时服务器会按顺序生成一个登录ID号返回给注册用户,这样注册就完成了。完成注册的用户可以用返回的ID号和自己注册时填写的密码进行登录。用户将登录信息提交给服务器,服务器根据数据库中的注册信息与登录信息进行比较,比较一致后,则进入系统的客户端应用程序模块。这时你要与好友进行聊天,则必须添加好友:进行用户2添加用户N为好友的操作过程中,用户2首先向用户N发出添加好友的请求信息,当用户N接受到用户2的信息,在通过验证后会发送确认反馈信息给用户2,并且向服务器提交好友添加确认信息,这时服务器就会更新相应用户的好友列表中的信息。好友添加完成后,用户之间就可以进行彼此之间的通信,如文字聊天、视频聊天、语音聊天、文件传输等。
以上为多功能聊天软件系统的总体流程图,其中包括了登录模块、注册模块、添加好友模块、服务器模块、数据库模块等。在这个多功能聊天软件系统开发设计与实现中,本人主要负责登录模块、注册模块、语音聊天与视聊天功能模块的设计与实现。下面就对登录模块与注册模块的流程进行了分析。
3.2 注册模块的分析与设计
用户通过填写注册相关的信息并将其提交给服务器,服务器将用户填写的相关信息存入的数据库中去,同时在按顺序自动生成一个ID号,发给注册用户,表明注册成功,此ID号就为用户登录帐号。图2所示为其系统结构图。
图3 登录系统
用户在注册获得ID号码后,在登录界面填写ID号码和密码并提交给服务器,服务器通过用户提交过来的信息和数据库中原有的用户信息进行比较和验证,如果结果一致表明验证成功,用户进入到客户端的系统界面下,如果不一致,给用户返回登录错误信息。登录系统流程分析图3所示。
本设计主要完成的是视频聊天、语音聊天模块,以及登录、注册模块,下面对其设计与实现进行详细的说明。
4 语音、视频聊天模块的具体实现
4.1 Video for Windows简介
省略
4.2 G729.dll的简介
G.729算法是ITU-T制定的编码速率为8kb/s的共轭结构码激励线性预测声码器语音编码算法标准,作为低速率的语音编码器,在传输的带宽有限的情况下运用越来越受到广泛的重视。G.729系列算法声码器的原理都是相通的,各种算法不同之处在于算法的简化和编码比特的多少。G.729编码器是基于码激励线性预测(CELP)声码器模型的。这个编码器运算的帧长为10ms,相应于抽样率为8000kHz的语音数据流的80个样值,具有8kbit/s的编码速率,较低的延迟和高编码语音质量等优点。
本程序在语音聊天模块中,调用了G729.dll动态链接库文件,它包括G.729的函数和资源,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。
4.3 LanMsgLibrary.dll的简介
该聊天软件系统的语音聊天、视频聊天功能的实现主要是引用了LanMsgLibrary.dll这个动态链接库文件,它包括VFW以及其他相关的函数与资源。在音频与视频聊天实现的过程中,程序就引用了LanMsgLibrary.dll中的VFW以及相关的函数和资源。在视频聊天过程中,主要实现了视频的捕获与播放,视频流的压缩与解压。在语音聊天过程中,主要实现了声音的采集与播放,通过调用了G729.dll动态链接库文件,对音频进行了压缩与解压。
在整个语音聊天与视频聊天实现的过程中,程序主要对LanMsgLibrary.dll的引用来实现其功能。
4.4 语音、视频聊天的模块设计思想
对于一个端对端的语音聊天系统来说,主要涉及两个方面的动作,即语音的采集和播放、语音数据的发送和接收。系统采用多线程的设计思想来完成并协调各个过程。语音的采集实际上就是一个音频压缩的过程。语音的播放是声音数据流的还原过程,通过一个父线程读取接收线程接收到的数据,并通过管道让其子线程播放解压后的声音数据。语音数据的发送和接收主要用Socket编程来实现,socket是网络通讯过程中端点的抽象表示。为了通过socket接口进行网络通讯,程序在对话的每一端都需要一个socket,两个socket采用无连接的UDP协议。
用户1通过麦克对自己的声音进行采集,在通过压缩,使其在网络上传输的效率更高,然后再进行传输,当用户2接收到用户1的声音数据后将其解压,然后进行播放,如图4所示。
图4 语音模块数据流程图
在进行语音聊天时,两台计算机必须先要建立连接,如图5所示,用户1向用户2发送“发送语音请求”信息,用户2收到用户1请求信息后,发送回应信息给用户1,如果用户2同意,开始语音聊天;不同意,停止语音聊天。
图5 语音聊天建立连接图
此视频模块的设计思想与语音模块一致,也涉及到两个方面的动作,视频的采集和播放,视频数据的发送和接收。视频的采集与播放是基于VFW来实现的,利用VFW的关于数字视频的软件包实现对视频的采集与播放。视频数据的发送与接收同样采用了Socket编程,在发送视频时,通过Socket端口进行监听。当收到对方发送的包含视频请求信息和对方IP地址、端口号等信息后,如果同意请求,则向请求方发送包含了本地IP、端口号的接受视频信息,这样就建立了连接,开始视频聊天。
用户1通过摄像头进行视频采集,经过压缩后,向用户2发送采集后的视频数据。用户2接收到用户1发送的视频数据并将其进行解压,然后在用户2的采集窗口上播放,这样视频的传输就完成了。视频模块数据传输流程如图6所示。
图6 视频模块数据传输流程图
在进行视频数据传输前,两台计算机必须先要建立连接,其原理和语音聊天建立连接的原理一致。用户1向用户2发送视频请求,用户2在接收到用户1的请求后,给用户1发送收到请求后的回应信息,如果同意用户1的请求则用户1与用户2开始视频聊天,如果不同意就终止视频聊天。视频聊天建立连接如图7所示。
图7 视频聊天建立连接图
5 登录、注册模块功能模块及其它特殊功能模块实现分析
5.1 登录模块功能的具体实现
登录模块是用户身份的验证模块,该聊天软件系统通过服务器对用户输入的密码和用户ID与注册时的用户ID和密码进行比较,来进行对用户身份的验证,看用户是否有权限使用该聊天软件。
登录模块实现的具体步骤是首先在程序开辟一个单线程的程序入口点,在客户端主函数运行时,程序调用Client_Load(object sender, System.EventArgs e)函数,将界面显示为登录界面,进行登录操作。当用户在登录界面填写完用户ID与密码时,单击登录按钮,此时调用button3_Click(object sender, System.EventArgs e)事件,通过tcpc.Connect(ip,port)函数与服务器连接,并进行异常处理。如果连接失败,提示错误信息;如果连接成功,通过调用SendMsg(NetworkStream ns)函数将登录信息发送到服务器端来进行相关验证,当客户端接收到从服务器发送的temp=="ACC"信息后,会显示一个窗体说明登录成功,点击“完成”按钮就完成登录操作,进入到用户客户端模式下。如果从服务器端发送的信息为temp==“UAC”,表明登录失败并弹出一个提示错误信息窗体。单击取消按钮会调用button4_Click(object sender, System.EventArgs e)事件来关闭窗体以及客户端程序。
5.2 注册模块功能的具体实现
注册模块的功能是可以让用户获得使用该聊天软件系统的权限,用户可以通过注册来获得登录时的用户ID号。双击应用程序进入登录界面后,没有注册的用户可以点击登录界面的“帐号申请”按钮,这时程序就调用button1_Click(object sender, EventArgs e)事件,进入到注册模块界面。然后填写相关的注册信息,单击确定按钮,调用button1_Click(object sender, EventArgs e)事件,先对填写的信息进行判断,看是否有误,如果有误就显示错误提示信息;如果填写信息正确,就通过tcpc.Connect(serverip , port)函数对服务器进行连接,并进行异常处理。连接不成功时,会提示错误信息;如果连接成功,注册信息会通过服务器写入数据库中。这时服务器就返回一个用户ID号码,触发 this.MyIDChange += new WinCtrlLib.UserCtrl.MyEvent(Myid_Change) 注册程序中的事件发生,并调用Myid_Change(object sender, WinCtrlLib.MyEventArgs e) 函数将服务器返回的用户ID显示在注册界面上。不想注册的用户点击“返回”按钮,触发button2_Click(object sender, EventArgs e)事件,关闭注册对话框。这样注册模块功能就实现了。
5.3 头像闪动功能的具体实现
在用户之间进行聊天的过程中,如果用户1向用户2发送信息,用户2在接收到用户1信息的同时,用户1的头像会在用户2客户端界面上不断地闪烁,来提醒用户2已经接收到用户1的信息,用户2可以双击用户1的头像来查看用户1所发的信息。
其实现相关代码如下:
private void timer1_Tick(object sender, EventArgs e)
{
if (ChatWin.Createds == false && msgrec== true )
{
int i;
i = jishi % 2;
if (i == 1)
{
pb_user.Visible = false;
}
else
{
pb_user.Visible = true;
}
jishi = i + 1;
}
}
ChatWin.Createds是建立好友对话框的变量,msgrec是接受好友信息的变量,申明一个变量i,并且让i等于jishi除以2的模,jishi等于i加1,也就是说,在这段代码中i的值不是为1,就是为0,当i等于1时,客户端界面则不显示该好友的头像,当i等于0时,该客户端显示该好友头像,这段代码调用了timer1_Tick(object sender, EventArgs e)这个方法,让其每隔一段时间执行一次jishi=i+1,让i的值在1和0之间变化,这样就可以达到接收到信息头像闪烁的效果。当好友对话框没有建立并接收到好友信息时,这时条件符合,则开始头像闪烁。如过好友对话框已经建立或者没接收到好友的信息,条件不符合,不执行该段代码,好友头像不闪烁。
6 系统的综合测试与分析
本设计是一个由两人合作完成的一个多功能聊天软件系统,可以进行文字聊天、文件传输、视频聊天和语音聊天。使用步骤和功能类似于现今较为流行的聊天软件QQ。因为该聊天软件的功能是集合一起的,所以要将所有功能都要进行测试,下面对该聊天软件进行了综合的测试。
用户在使用这个聊天软件系统时先要进行注册,来获取登录的ID号,用户通过填写注册模块中用户名、密码、头像ID的相关内容后,单击确定按钮,提交给服务器,服务器这时就会返回一个登录ID给用户,如图8所示。
图8 注册
用户在注册后,用获得的ID号码在登录模块中进行登录,用户在登录界面填写用户ID和密码后,单击“登录”按钮,会弹出一个登录成功的对话框,则表示登录成功。单击该对话框中的按钮,就会进入客户端界面。如果不想登录则单击登录界面的“取消”按钮。如图9所示。
用户在登录成功后会进入客户端界面。如果想和朋友进行聊天,就用鼠标双击该好友的头像进入与好友对话的界面,此时就可以与好友进行对话。如图10所示。
图10 客户端界面
进入到与好友的对话界面后,如果想与好友进行语音、视频聊天,那么单击该界面上的“请求视频”按钮,好友就会收到你请求视频聊天信息的对话框,好友同意,则单击接收视频按钮,两人就可以进行视频、语音聊天了,在界面的话筒和喇叭的图片旁边有两个调节大小的组件,话筒旁的是调节麦克的大小,喇叭旁的是调节耳机音量的大小,这样就可以很方便的进行语音聊天了。如图11所示。
图11 视频语音界面
该多功能软件聊天操作简单、容易,在运行时占有系统资源量少。但是其功能并不是很完善,不像QQ那样人性化,在数据库设计上,只实现了为用户提供了用户名、帐号、密码等基本的信息,但在以后会进行完善。
结 论
经过这次对聊天系统软件的开发与设计,学到了很多知识,也对软件开发的具体步骤有了更进一步的了解。
该系统由两人合作完成,采用C/S结构,基于.NET开发环境,用C#语言进行编译,在开发与设计这个聊天系统软件时,对.NET开发环境有基本的认识,并基本学会运用C#的语言编译简单的程序。
此聊天软件的开发是仿照现今国内最为流行的即时聊天工具“腾迅QQ”设计,实现的基本功能与QQ相似:可以实现注册、登录、添加好友、文字传输、文件传输、视频聊天、语音聊天等的功能。
省略
参考文献
[1] 张青,郭亚萍.C#编程思想与实践[M].北京:冶金工业出版社,2005。
[2] 陈明.实用软件工程基础[M].北京:清华大学出版社,2002。
[3] 黄德志,汤庆恩.C#程序设计实用教程[M].北京:冶金工业出版社,2002。
[4] 王敏.C#线程参考手册[M].北京:清华大学出版社,2003。
[5] 葛昊晗,烫涌涛,李强.C#大学教程[M].北京:清华大学出版社,2003。
[6] 李泽,陈彬,唐俊瞿,张曜.C#函数实用手册[M].北京:冶金工业出版社,2006。
[7] 熊盛心,许志庆,李钦.Visual C# .NET语言参考手册[M].北京:清华大学出版社,2002。
[8] 仇谷烽,澎洪洪.Visual C# .NET网络编程[M].北京:清华大学出版社,2004。
[9] 四维科技,刘袆玮.Visual C++视频/音频开发实用工程案例精选[M].北京:人民邮电出版社,2004。
致 谢
省略
本项目源码及完整论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。
序号 | 毕业设计全套资源(点击下载) |
---|---|
本项目源码 | 基于C#+vs.net+SQL Server的多功能聊天软件设计与实现(源码+文档)_C#_vs.net_多功能聊天软件.zip |