ImageVerifierCode 换一换
格式:DOCX , 页数:64 ,大小:565.99KB ,
资源ID:8802967      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8802967.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于C#的网络聊天软件的设计与实现论文.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于C#的网络聊天软件的设计与实现论文.docx

1、基于C#的网络聊天软件的设计与实现论文(此文档为word格式,下载后您可任意编辑修改!)摘 要关键词:网络聊天工具 C# 即时通信 数据库 人性化AbstractKey words: online chat tool C# instantaneous communication database 目 录第一章 引言 11.1 系统开发背景 11.2 聊天软件的开发目标 1第二章 开发环境与关键技术简介 22.1 C#简介 22.3 WinForms窗体设计技术 52.4 CS结构 52.6 SQL Server 2005数据库简介 6第三章 需求分析 83.1 可行性研究 83.2 用户需求

2、83.3 性能需求 83.4 系统功能需求 9第四章 系统设计 104.1 系统功能结构 104.2 系统模块划分 104.3 系统整体流程图 11第五章 详细设计 125.1 登录界面设计 125.2 注册界面设计 155.3 主界面设计 195.4 查找添加好友界面设计 225.5 聊天界面设计 285.6 个人设置界面设计 335.7 头像选择界面设计 345.8 系统消息界面设计 35结束语 38参考文献 39附录一 40附录二 41第一章 引言1.1 系统开发背景当今社会已进入信息时代,信息是当今世界最重要的资源之一,它与物质及能源一起构成了三大能源支柱。信息高速公路是信息社会的基础

3、设施,而互联网则是信息高速公路的重要组成部分。在互联网相当普及的今天,你们对网络的依赖越来越大,越来越离不开网络,网络聊天更是成为了人们的“家常便饭”。通过网络聊天工具,人们足不出户就可进行闲聊甚至工作会谈,极大地方便了人们的日常生活与工作需求。 常用的网络聊天工具主要是QQ与MSN。MSN主要用于国际,而国内的主流网络聊天工具是QQ。QQ有着非常良好的操作界面,和强大的通信功能,集娱乐、生活和工作于一身。随着技术的进步,QQ不仅可以通过宽带网在PC上使用,通过手机也可以实现与好友、同事通信。而无论是QQ还是MSN,都存在一个很大的问题广告。每次登陆后时不时会弹出一些广告窗口,绝大多数网友都对

4、此感觉厌烦。因此在本次论文的激励下,我决定设计一个类似QQ并且无垃圾信息的网络聊天工具,此外也希望通过本次论文能更好地学习与掌握网络软件编程知识。1.2 聊天软件的开发目标第二章 开发环境与关键技术简介2.1 C#简介 C#最引人入胜的地方是它和Java的不同,而不是相似的地方:中间代码微软在用户选择何时MSIL应该编译成机器码的时候是留了很大的余地。微软公司很小心的声称MSIL不是解释性的,而是被编译成了机器码。它也明白许多,如果不是大多数的话,程序员认为Java程序要不可避免的比C编写的任何东西都要慢。而这种实现方式决定了基于MSIL的程序(指的是用C#,Visual Basic,Mana

5、ged C+-C+的一个符合CLS的版本-等语言编写的程序)将在性能上超过解释性的Java代码。当然,这一点还需要得到事实证明,因为C#和其他生成MSIL的编译器还没有发布。但是Java JIT编译器的普遍存在使得Java和C#在性能上相对相同。象C#是编译语言而Java是解释性的,之类的声明只是商业技巧。Java的中间代码和MSIL都是中间的汇编形式的语言,它们在运行时或其它的时候被编译成机器代码。命名空间中的申明当你创建一个程序的时候,你在一个命名空间里创建了一个或多个类。同在这个命名空间里(在类的外面)你还有可能声明接口,枚举类型和结构体。必须使用using关键字来引用其他命名空间的内容

6、。 基本的数据类型C#拥有比C,C+或者Java更广泛的数据类型。这些类型是bool,byte,ubyte,short,ushort,int,uint,long,ulong,float,double,和decimal。象Java一样,所有这些类型都有一个固定的大小。又象C和C+一样,每个数据类型都有有符号和无符号两种类型。与Java相同的是,一个字符变量包含的是一个16位的Unicode字符。C#新的数据类型是decimal数据类型,对于货币数据,它能存放28位10进制数字。 两个基本类一个名叫object的类是所有其他类的基类。而一个名叫string的类也象object一样是这个语言的一部分

7、。作为语言的一部分存在意味着编译器有可能使用它,无论何时你在程序中写入一句带引号的字符串,编译器会创建一个string对象来保存它。参数传递方法可以被声明接受可变数目的参数。缺省的参数传递方法是对基本数据类型进行值传递。ref关键字可以用来强迫一个变量通过引用传递,这使得一个变量可以接受一个返回值。out关键字也能声明引用传递过程,与ref不同的地方是,它指明这个参数并不需要初始值。与COM的集成代理和反馈一个代理对象包括了访问一个特定对象的特定方法所需的信息。只要把它当成一个聪明的方法指针就行了。代理对象可以被移动到另一个地方,然后可以通过访问它来对已存在的方法进行类型安全的调用。一个反馈方

8、法是代理的特例。event关键字用在将在事件发生的时候被当成代理调用的方法声明。 提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但在 Internet 上分布,或者是在远程执行的。 提供一个将软件部署和版本控制冲突最小化的代码执行环境。 提供一个可提高代码(包括由未知的或不完全受信任的第三方创建的代码)执行安全性的代码执行环境。 提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。 使开发人员的经验在面对类型大不相同的应用程序(如基于 Windows 的应用程序和基于 Web 的应用程序)时保持一致。2.3 WinForms窗体设计技术2.4 CS结构

9、 CS (ClientServer)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是ClientServer形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和ClientServer 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。CS结构是当前数据库应用程序中极为流行的一种

10、方式。尤其是网络技术的发展,使得当前很多系统都采用这种方式进行构造,其最大的优点是将计算机工作任务分别由客户端和服务器端来共同完成,这样有利于充分合理的利用系统资源。另外它的服务器端还可以将信息集中起来,任何客户机都可以通过访问服务器而获得所需的信息。ClientServer模型最终可归结为一种“请求应答”关系。一个请求总是首先被客户发出,然后服务器总是被动地接收请求,返回客户需要的结果。在客户发出一个请求之前,服务进程一直处于休眠状态。一个客户提出请求后,服务进程被“唤醒”并且为客户提供服务,对客户的请求做出所需要的应答,如图2-1所示。图2-1 客户机服务器通信结构示图2.6 SQL Se

11、rver 2005数据库简介SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能 (BI) 工具提供了企业级的数据管理。SQL Server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序 。SQL Server 2005 数据引擎是本企业数据管理解决方案的核心。此外 SQL Server 2005 结合了分析、报表、集成和通知功能。这使您的企业可以构建和部署经济有效的 BI 解决方案,帮助您的团队通过记分卡、Dashboard、Web services 和移动设备将数据应用推向业务的各个领

12、域。SQL Server 2005 通过在可伸缩性、数据集成、开发工具和强大的分析等方面的革新更好的确立了微软在BI领域的领导地位。SQL Server 2005 能够把关键的信息及时的传递到组织内员工的手中,从而实现了可伸缩的商业智能。从CEO 到信息工作者,员工可以快速的、容易的处理数据,以更快更好的做出决策。SQL Server 2005全面的集成、分析和报表功能使企业能够提高他们已有应用的价值,即便这些应用是在不同的平台上。 商业智能增强体现在以下几个方面: 端到端的集成BI平台 集成服务 分析服务 报表服务 Microsoft Office System的集成本网络聊天软件的开发环境

13、主要使用SQL Server 2005的开发版。SQL Server 2005 Developer Edition(32位和64 位) Developer Edition 使开发人员可以在SQL Server 上生成任何类型的应用程序。它包括 SQL Server 2005 Enterprise Edition 的所有功能,但有许可限制,只能用于开发和测试系统,而不能用作生产服务器。Developer Edition 是独立软件供应商(ISV)、咨询人员、系统集成商、解决方案供应商以及创建和测试应用程序的企业开发人员的理想选择。Developer Edition 可以根据生产需要升级至SQL

14、Server 2005 Enterprise Edition。第三章 需求分析3.1 可行性研究本软件只做开发学习使用,所以暂且不考虑经济成本及盈利问题。开发所需要的平台已经搭建好,并做好了充分的前期准备工作,其次因为本程序的平台将基于WINDOWS,将要使用网络通信技术,而WINDOWS有完善成熟的网络通信接口,以及与C#开发环境的严密契合能力,加之相类似的更大规模的网络聊天工具产品也已有例在先,所以这个程序的开发在技术上是完全可行的。3.2 用户需求 随着互联网的普及,网络聊天工具已经成为了人们日常生活中不可缺少的一部分。根据人们对聊天工具的需求,主要可以概括为以下几点:1、操作简单方便、

15、界面简洁美观;2、能够注册新用户;3、拥有熟悉的聊天界面;4、能够查找添加好友;5、能够进行个人设置;6、系统运行稳定、安全可靠。3.3 性能需求首先要求程序要完全可靠,可以应付各种由于系统问题产生的错误,比如初始网络失败等。要求提前设想到类似的尽可能多的可能发生的事件,做出相应的应对措施,并向用户提交简单易懂清晰明白的提示信息。程序要有良好的容错性,当用户进行非法操作时或者系统本身出现问题时要能以最好的方式退出程序,避免发生程序假死现象。开发文档要有好的易理解性,如果系统又要交由别人接手开发,或者自己由于种种原因需要进行二次开发,那么要保证以后能够清晰的理解整个系统的设计思路以及实现细节。要

16、求程序对所运行之系统的硬件条件要求尽可能低,运行时内存占用尽可能小,响应速度要尽可能快。并且不发生内存泄漏之类影响系统运行的错误事件。并且要求易于维护及扩展。所以应该采用模块化开发,各个模块之间不要有太多的耦合,以免维护困难。3.4 系统功能需求这个程序要实现的功能如下:(1)程序启动之后就能直接进入登陆界面,输入错误时会提示。(2)登陆界面有注册新用户选项,点击进入注册界面。(3)注册成功后会提示自动生成的QQ号码。(4)登陆后进入主界面,用户可以添加好友,可以直接查找,也可以按条件查找,还可以查看所有用户。(5)当双击列表中某个用户头像的时候,要弹出聊天对话框,可以在其中编辑要发送的聊天信

17、息,并进行发送。(6)聊天界面要人性化,下面是发送框,上面对方发来的上一条聊天记录。(7)可以修改自己的个人资料,也可以更换头像。第四章 系统设计4.1 系统功能结构图4-1 系统功能结构4.2 系统模块划分登录模块:实现用户登录功能。在没有账号的情况下可以选择进入注册新用户界面。注册模块:实现注册新用户功能。注册信息包括必填基本资料与选填资料。主模块:实现列表功能。列表包括好友列表与陌生人列表。通过主界面可以进行聊天功能,也可以打开查找添加好友功能与个人设置功能等。聊天模块:实现发送消息与接收消息功能。通过公共的数据库交换信息,消息的发送和读取都是通过操作数据库来完成的。在程序中采用定时扫描

18、数据库的方式来查找未读消息。也能实现删除好友功能。查找添加好友模块:实现查找好友功能与添加好友功能。主要方法有精确查找、按条件查找,与查看所有用户。个人设置模块:实现修改个人资料。更换头像模块:实现更换用户头像。系统消息模块:实现添加好友信息的读取。4.3 系统整体流程图该网络聊天工具系统整体流程图如图4-2所示:图4-2 系统整体流程图第五章 详细设计5.1 登录界面设计当用户运行程序时,首先进入的是登录界面,如图5-1所示:图5-1 登录界面如果没有账号,则单击“注册新用户”标签,可以打开注册界面; 如果有已注册的账号,则在输入账号与密码后,点击“登录”按钮,可以打开主界面。如果输入有误,

19、则出现图5-2所示界面:图5-2 输入错误程序也不允许在账号或密码处输入空格字符,如有此情况,则会出现图5-3与图5-4所示界面:图 5-3 未输入账号图5-4 未输入密码当点击“登录”按钮时,则触发登录按钮事件,其处理流程图如图5-5所示:图5-5 登录事件流程图其中登录按钮的代码实现如下: 登录按钮事件处理 private void btnLogin_Click(object sender, EventArgs e) bool error = false; 标志在执行数据库操作的过程中是否出错 如果输入验证成功,就验证身份,并转到相应的窗体 if (ValidateInput() int

20、num = 0; 数据库操作结果 try 查询用的sql语句 string sql = string.Format(SELECT COUNT(*) FROM Users WHERE Id=0 AND LoginPwd = 1, int.Parse(txtLoginId.Text.Trim(), txtLoginPwd.Text.Trim(); 创建Command 对象 SqlCommand command = new SqlCommand(sql, DBHelper.connection); DBHelper.connection.Open(); 打开数据库连接 num = Convert.T

21、oInt32(command.ExecuteScalar(); catch (Exception ex) error = true; finally DBHelper.connection.Close(); 关闭数据库连接 if (!error & (num = 1) 验证通过 设置登录的用户号码 UserHelper.loginId = int.Parse(txtLoginId.Text.Trim(); 创建主窗体 MainForm mainForm = new MainForm(); mainForm.Show(); 显示窗体 this.Visible = false; 当前窗体不可见 e

22、lse MessageBox.Show(输入的用户名或密码有误!, 登录提示, MessageBoxButtons.OK, MessageBoxIcon.Error); 用户输入验证 private bool ValidateInput() 验证用户输入 if (txtLoginId.Text.Trim() = ) MessageBox.Show(请输入登录的号码, 登录提示, MessageBoxButtons.OK, MessageBoxIcon.Information); txtLoginId.Focus(); return false; else if (txtLoginPwd.Tex

23、t.Trim() = ) MessageBox.Show(请输入密码, 登录提示, MessageBoxButtons.OK, MessageBoxIcon.Information); txtLoginPwd.Focus(); return false; return true; 5.2 注册界面设计 当在登录界面点击“注册新用户”标签时,将打开注册界面,如图5-6所示:图5-6 注册界面 其中基本资料为必填资料,详细资料为选填资料。在用户输入完资料后,点击“确认注册”按钮进行注册。其间会对相关的输入进行检查,如果输入不符合规范,则不允许注册,不会向数据库插入记录,并会提示错误原因。如果输入正

24、确,则向数据库插入一条用户记录,在数据库中自动生成一个新的登录号码(Users表的Id字段),以消息框的形式告诉用户申请成功的号码。其流程图如图5-7所示:图5-7 注册界面流程图其中确认注册按钮的代码实现如下: 点击注册,向数据库添加记录 private void btnRegist_Click(object sender, EventArgs e) 输入验证通过,就插入记录到数据库 if (ValidateInput() int myQQNum = 0; QQ号码 string message; 弹出的消息 string sex = rdoMale.Checked ? rdoMale.Te

25、xt : rdoFemale.Text; 获得选中的性别 string sql = ; 查询用的SQL语句 int starId; 星座Id int bloodTypeId; 血型Id bool error = false; 操作数据库是否出错 根据星座和血型的选择来分情况确定SQL语句 if (cboStar.Text != & cboBloodType.Text != ) 获得星座的Id starId = GetStarId(); 获得血型的Id bloodTypeId = GetBloodType(); sql = string.Format(INSERT INTO Users (Log

26、inPwd, NickName, Sex, Age, Name, StarId, BloodTypeId) values (0,1,2,3,4,5,6), txtLoginPwd.Text.Trim(), txtNickName.Text.Trim(), sex, int.Parse(txtAge.Text.Trim(), txtName.Text.Trim(), starId, bloodTypeId); else if (cboStar.Text != & cboBloodType.Text = ) 获得星座的Id starId = GetStarId(); sql = string.Fo

27、rmat(INSERT INTO Users (LoginPwd, NickName, Sex, Age, Name, StarId) values (0,1,2,3,4, 5), txtLoginPwd.Text.Trim(), txtNickName.Text.Trim(), sex, int.Parse(txtAge.Text.Trim(), txtName.Text.Trim(),starId); else if (cboStar.Text = & cboBloodType.Text != ) 获得血型的Id bloodTypeId = GetBloodType(); sql = st

28、ring.Format(INSERT INTO Users (LoginPwd, NickName, Sex, Age, Name, BloodTypeId) values (0,1,2,3,4, 5), txtLoginPwd.Text.Trim(), txtNickName.Text.Trim(), sex, int.Parse(txtAge.Text.Trim(), txtName.Text.Trim(), bloodTypeId); else sql = string.Format(INSERT INTO Users (LoginPwd, NickName, Sex, Age, Nam

29、e) values (0,1,2,3,4), txtLoginPwd.Text.Trim(), txtNickName.Text.Trim(), sex, int.Parse(txtAge.Text.Trim(), txtName.Text.Trim(); try 创建Command 对象 SqlCommand command = new SqlCommand(sql, DBHelper.connection); DBHelper.connection.Open(); 打开数据库连接 int result = command.ExecuteNonQuery(); 执行插入命令 if (resu

30、lt = 1) commandmandText = sql; 重新指定Command 对象的SQL 语句 myQQNum = Convert.ToInt32(command.ExecuteScalar(); 强制类型转换会出错 message = string.Format(注册成功!你的MyQQ号码是0, myQQNum); else message = 注册失败,请重试!; catch (Exception ex) error = true; message = 服务器出现意外错误!请稍候再试!; finally DBHelper.connection.Close(); 关闭数据库连接 显示注册结果 if (error) MessageBox.Show(message, 注册失败, MessageBoxButtons.OK, MessageBoxIcon.Warning); e

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1