ASP.NET+Ajax技术在Web聊天室中的应用(3)
时间:2016-12-19 14:36 来源:毕业论文 作者:毕业论文 点击:次
图3系统流程图 4.数据库设计 4.1 数据库概念设计 数据库在一个信息管理系统中占有非常重要的地位,数据设计的优势将直接对应用系统的效率以及实现的效果产生影响。设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求。本系统设计采用了SQL数据库设计。设计了一个数据库ajaxchatdb.mdb,用来存储聊天者发言的信息、用户的信息。创建了三张表:一张用户表User,一张信息表Message,一张聊天表Chat。 4.2 数据库逻辑结构设计 本系统使用SQL Server 2005作为后台数据库,涉及到的数据表有: 用户表User; 信息表Message; 聊天表Chat。 数据库表之间的关系图如图所示: 图3数据库关系图 5.系统详细设计和实现 5.1 用户登录模块的实现 (1)实现目标 系统运行后,输入聊天室登陆界面的地址即可显示登陆页面,主要实现功能如下: 1)用户输入账号密码和验证码即可登陆,账号或密码如果为空会有相应的提示输入账号或密码。 2)没有账号的用户可以单击链接到注册页面。 (2)实现过程 1)向页面中添加txtUser、txtPwd、txtCode、imgCode、imgBtnLogon、ScriptManager1、TextBoxWatermarkExtender1、ValidatorCalloutExtender1等控件,并设置相应的属性。 2)通过txtUser和txtPwd用户输入账户和密码通过BaseClass类中的SelectSql()方法查询出数据与数据库中的Userinfor表中的相应字段一致才会通过。 3)验证码是通过CheckCode.aspx页面中写的方法,利用Graphics()生成一个图片,并加上噪音线,并随机生成一个4位数,显示在图片上。只有在用户密码和验证码全部正确的情况下才会登陆成功。 4)注册页面和忘记密码页面的链接是用HyperLink设置NavigateURL属性为目标页面的地址即可。 5.2 聊天模块 5.2.1 聊天模块页面设计 (1)实现目标 通过登陆页面之后,后跳入聊天的主页面,主要实现如下功能: 1)进入页面后聊天框中会显示在线人数和聊天室提示信息。 2)如果不经过登陆直接进入聊天界面,系统会转到登陆页面。 3)动态显示在线用户列表。 4)用户进行群聊、私聊发送之后内容直接显示在聊天框中,页面不进行整体刷新,将聊天内容存入数据库。 (2)实现过程 1)向页面中添加ScriptManager、Timer、UpdatePanel、txtMsg、 btnSendMsg等主要控件和Iframe框架,并设置相应属性。 2)统计在线人数是通过session会话统计的,在chatroom.asx中的session_start中写入: Application.Lock(); Application["count"] = int.Parse(Application["count"].ToString())+ 1; Application.UnLock(); 当用户下线时相应的count-1。MsgContent.aspx页面调用Global.asax中的代码,然后将MsgContent.aspx页面嵌到Iframe框架中,一直显示。 3)用户不通过登陆直接进入聊天室的话,系统会直接转到登陆页面,是通过判断Session会话的UserName是否为空,如果为空就转入登陆页面。 4)动态刷新在线用户列表是通过listbox控件去数据库查询Userinfo表中state=1的记录的用户,通过AJAX控件UpdatePanel只刷新listbox,Timer控件设置刷新时间,每隔一段时间就去数据库取一次数据,并不会刷新整个页面。 5)群聊功能是用户将消息填入txtMsg文本框中,也可以选择一些符号,字体颜色,名字颜色,点击发送之后用Application.Set()会把聊天内容保存到Application,显示在Iframe中。发送的内容也会存入数据库的ChatInfo表中。发送按钮和消息文本框是在AJAX控件UpdatePanel之中,不会刷新整个页面直接将消息显示在Iframe中。 (责任编辑:qin) |