ASP.NET+Ajax技术在Web聊天室中的应用(3)_毕业论文

毕业论文移动版

毕业论文 > 计算机论文 >

ASP.NET+Ajax技术在Web聊天室中的应用(3)


 
图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)