1、 摘要本论文是基于A技术和SQL Server 2005聊天室系统的实现.聊天室是互联网上常见的应用之一。在聊天室中每一位用户都可以与别人分享喜怒哀乐,进行思想交流。聊天室使用数据库汇集每个人的发言,然后将数据库中的发言信息显示在页面上,使每一位用户都能看见。具体来说,多用户聊天室包括,用户管理,用户发言,显示发言信息和注销用户这四项基本功能。本文主要探讨了具有聊天室系统的作用、特点、功能及其实现。关键字:聊天室系统,B/S浏览器/服务器,A技术,SQL Server 2005,多用户 目 录第一章 绪论1.1 课题背景及研究意义81.2 课题应用领域.8第二章 系统分析2.1需求分析.82.
2、1.1 系统概述82.1.2 系统运行环境.92.1.3 功能需求描述92.2 总体设计92.2.1 开发与设计的总体思想102.2.2 聊天室功能设计102.2.3 界面设计112.2.4 数据库设计11第三章 详细设计3.1.1.用户进入聊天室界面133.1.2在线网友列表界面143.1.3 网友发言界面153.1.4 发言显示界面16总结17参考文献17第一章 绪论 小小聊天室,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 1.1课题背景及研究意义计算机技术的
3、发展,特别是网络技术的飞速发展,给人们在网上谈天说地极大的方便。本论文中,将WEB制作的基本原理和方法应用到整个系统,并对其进行需求分析,提出了解决问题的具体方法。在具体制作中,用ASP.net技术来实现B/S系统,ASP.net技术与数据库技术结合,用户在浏览器端可以随意说自己想说的话,而数据的后台操作则由服务器端处理。这样提高了网页的互动性,使整个系统能更好的为用户服务。 1.2 课题应用领域经过分析,我们使用 MICROSOFT公司的 ASP.net开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对
4、初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。第二章系统分析2.1需求分析聊天室使用数据库汇集每个人的发言,然后将数据库中的发言信息显示在页面上,使每一位用户都能看见。2.1.1系统概述具体来说,多用户聊天室包括以下功能。一、 用户管理:实现用户的注册、登录心脏验证功能。二、 用户发言:用户输入要说的话,并可选择发言的字体颜色以及发言者的表情。三、 显示发言信息:根据用户选择的字体颜色显示其发言信息,并显示其表情。四、 注销用户:当用户离开时注销其登录信息。2.1.2系统运行环境一、 操作系统:Windows2000/WindowsXP Professional/Win
5、dows 2003二、 开发环境:Microsoft Visual Studio 2005三、 数据库:SQL Server 2005四、 Web服务器:IIS5.1 及以上版本2.1.3功能需求描述本系统实现了聊天室系统,功能包括用户登录、自动注册、用户发言、实时浏览发言、注销身份等。2.2总体设计对于大型的系统而言,往往采用分层的体系结构。这种多层结构在层与层之间相互独立,任何一层的改变不会影响其他层的功能,一般都具有基本的3层: 数据访问层;业务逻辑层;页面显示层;如下图 :Web系统的3层体系结构页面显示层(WebLayer)逻辑接口层(BusinessLogicHelper)业务逻辑
6、层(BusinessLogicLayer)数据接口层(DataAccessHelper)数据访问层(DataAccessLayer)数据源注:在开发过程中,需要在逻辑上清楚的把3层分别实现功能,并以次设计整个系统的实现,以及管理整个系统的代码文件。不能把处于不同层次的文件混在一起,否则会造成系统逻辑上的混乱,使庞大的系统难于管理和维护,容易导致系统的失败。2.2.1开发与设计的总体思想该多用户聊天室系统采用了3层体系结构,层次结构以及各个层包含的类如下图所示:登录页面(Login)主页面(Main)显示留言面(ShowMessage)发言页面(Speak)页面显示层(MyChatRoom.We
7、bLayer)业务逻辑层(MyChatRoom BusinessLogicLayer)用户类(User)消息类(Message)数据访问层(MyChatRoom DataAccessLayer)数据库类(DataBase)2.2.2聊天室功能设计用户登陆在进入多用户聊天室之前,需要首先经过登陆页面,如下图,老用户直接输入用户名和密码就可以登陆;如果是新用户,输入完用户名和密码以后也可以登陆聊天事,同时完成用户的注册,自动存入数据库中。发表消息登陆之后,就可以发表信息,如下图,在发表信息的同时,可以通过下拉框选择发言者的表情。在输入完所要发表的信息以后单击“发言“就可以发出信息。浏览消息在发表信
8、息的同时,用户还可以及时的看到自己和其他用户发表的信息,如下图所示。这个页面是自动刷新的页面,可以显示最新的10条留言信息。注销身份在离开系统之前,需要 注销用户,以删除Session,单击发言页面中的“离开“就可以注销了。注销之后,系统将自动跳转到登陆的页面。2.2.3界面设计2.2.4数据库设计设计数据库建立MyChatRoom数据库,新建2个表,用户表User, 记录发言信息的表Message。表的设置如下图: 在User表中设置2个字段:UserName, PassWord. 即用户登陆名 和密码。可以事先设置好用户名 和密码。下图:创建Message表:注:UserName-发言者
9、CreateTime -发言时间 Content-发言的全文 Color-文字颜色 Emotion-用户表情以上的创建方法也可以通过SQL语句建立 :CREATE TABLE dbo.Message(UserName varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,CreateTime varchar(50) COLLATE Chinese_PRC_CI_AS NULL,Content text COLLATE Chinese_PRC_CI_AS NULL,Color varchar(50) COLLATE Chinese_PRC_CI_AS NU
10、LL,Emotion varchar(50) COLLATE Chinese_PRC_CI_AS NULL) ON PRIMARY TEXTIMAGE_ON PRIMARYGO (Message表的创立)CREATE TABLE dbo.User(UserName varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,Password varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL) ON PRIMARYGO (User表的创立)配置数据库的连接在Web.config文件中设置以下的代码 来实现数据库的连接。
11、1. 注:以上是通过代码实现连接,连接的数据库名称为:MyChatRoom,本地,User Id为:sa 密码为空。2.数据库的连接配置还可以通过“工具”“连接到数据库”进行连接,一样可以达到同样的效果实现连接。如下图: 相对来说用代码的方法实现连接比较快洁简便。第三章详细设计3.1.1.用户进入聊天室界面用户登陆页面Login.aspx位于MyChatRoom.Web.Layer空间中,功能如下:当用户首次使用系统时,自动将其信息注册到数据库中;当用户再次登陆时,系统会检查其输入的用户名和密码是否合法,如果不合法则给出提示,并提示用户重新登陆,如果合法,则进入聊天室主页面Main.aspx。
12、实现用户登陆的代码如下:protected void ButtonLogin_Click(object sender, System.EventArgs e)string userName=TextBoxUserName.Text;/用户名string password=TextBoxPassword.Text;/密码Session.Add(user_name,userName);/使用Session来保存用户名信息User user=new User();/实例化User类user.LoadData(userName);/利用User类的LoadData方法,获取用户信息if(user.Ex
13、ist)/如果是老用户if(user.Password=password)/如果用户合法,转入聊天室主页面Response.Redirect(Main.aspx);else/如果密码错误,给出提示Response.Write(alert(验证失败,请重新登录!);else/如果是新用户user.Add(userName,password);/利用User类的Add方法,添加新用户Response.Redirect(Main.aspx);/转到主页面验证过程如下图:是否否是获取用户信息老用户密码正确?进入系统进入系统进入系统3.1.2在线网友列表界面如下图所示:3.1.3 网友发言界面用户登陆页
14、面Speak.aspx位于MyChatRoom.Web.Layer空间中,其主要功能是将用户的发言写入数据库,另外,还有一个”离开”按钮,可以注销用户。当用户单击“发言”时,发言页面将用户输入的信息输入到数据库中,实现的代码如下:protected void ButtonSpeak_Click(object sender, System.EventArgs e)/获取用户输入的发言信息string userName=Sessionuser_name.ToString();/用户名string createTime=System.DateTime.Now.ToLongTimeString();/
15、发言时间string content=TextBoxContent.Text;/发言内容string color=DropDownListColor.SelectedItem.Value;/颜色string emotion=DropDownListEmotion.SelectedItem.Value;/表情Message message=new Message();/实例化Message类message.Add(userName,createTime,content,color,emotion);/利用Message类的Add方法,向数据库添加留言 TextBoxContent.Text=;
16、/清空发言框注销时 用户单击“离开”按钮时,发言页面需要将用户在Session中的信息清空,实现代码如下: protected void ButtonExit_Click(object sender, System.EventArgs e)Sessionuser_name=null;/销毁Session中的用户信息Response.Write(window.top.location=Login.aspx;);3.1.4 发言显示界面由于用户不断的发送消息,自然需要页面不断的刷新,以显示最新发表的信息。这可以通过浏览器的Clien Pull 技术来实现。Clien Pull利用HTML的meta
17、标记,结合使用“http-equiv=Refresh”属性控制页面自动刷新,间隔时间由content的属性决定。1.刷新语句如下:2.加载流言信息如果让页面显示留言的信息,只要在页面的加载(Load)事件中,实现数据的读取和显示即可。实现的代码如下:public partial class ShowMessage : System.Web.UI.Page protected void Page_Load(object sender, System.EventArgs e)InitData();页面加载事件调用了一个方法InitData,实现如下:private void InitData()
18、/加载最近的条留言DataSet ds=Message.LoadTop10();/逐条显示if(ds!=null)foreach(DataRow dr in ds.Tables0.Rows)Response.Write();/颜色Response.Write(drCreateTime.ToString();/发言时间Response.Write(【+drUserName.ToString()+】);/发言用户Response.Write(drEmotion.ToString();/表情Response.Write(说道:);Response.Write(drContent.ToString()
19、;/发言内容Response.Write(); 注:利用 Response.Write()方法将留言信息输出在浏览器上。主页面利用框架结构,把发言页面和浏览信息页面集成在同一个页面上。如下图:每次发言完毕以后页面自动刷新 在同主页面上就可以方便快洁的看到各个用户的发言! 比分开用2个页面更加便捷。总 结 短短的几天即将过去,我的设计已接近尾声。虽然我设计的聊天室还是比较粗糙的,但是在这段时间里,我积极投入到聊天室的设计当中,遇到问题大家就一起想办法解决,然后再向老师请教!在这次实训设计中,我们学会了很多WEB设计的方法,特别是老师教了很多WEB设计方面的技巧。每次我们几个同学,用一定的时间大家
20、交流一下,分析设计中的一些问题。这段时间里,我学到了SQL Server2005和ASP.NET动态网页的应用技术和知识技能,这些都与指导老师的教导和严格要求是分不开的。在此我要向我的指导老师张秉树老师表示最衷心的感谢,在整个实训设计的制作和论文撰写的过程中,张老师着重培养了我的自学能力和自我解决问题的能力,使我对SQL Server2005和ASP.NET动态网页有了一个全新的认识。张老师以其渊博的知识和独特的思维方式指导我的学习,是我受益非浅。同时我要感谢实训设计制作过程中同学给我的帮助,感谢他们给了我大量的意见和帮助。参考文献精通ASP.NET 2.0+SQL Server2005项目开发人民邮电出版社刘乃丽 编著 13
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100