聊天室的设计与实现Word文档格式.docx
- 文档编号:19542181
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:26
- 大小:392.01KB
聊天室的设计与实现Word文档格式.docx
《聊天室的设计与实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《聊天室的设计与实现Word文档格式.docx(26页珍藏版)》请在冰豆网上搜索。
1)用户登录;
2)浏览器不断地对文本或数据库进行刷新,读取;
3)实时更新在线用户;
4)能够公开聊天、私下聊天等等;
5)管理员对聊天室的管理。
在聊天室没有满员的情况下,普通用户能够登录的聊天室进行文本的聊天,能够方便的实现公共交谈、私聊等,网络管理员能够方便的浏览所有用户的信息,能够禁止某用户或者IP登录,把用户踢出聊天室等等。
在程序中使用Application(“usercount”)来标记当前的用户数,在登录时用Session["
upower"
]来判断用户的权限,如果是普通用户通过验证后会进入聊天室主页,如果是管理员则会进入管理员管理管理页面。
2、系统的功能模块设计。
功能模块框图:
3.主要技术应用
(1)框架的应用
使用FrameSet框架布局聊天室结构。
所谓框架就是将网页画面分成几个窗框,同时取得多个URL。
在FrameSet框架技术中经常利用框架标记来定义分割窗口,只需<
FRAMESET>
或<
FRAME>
标记即可,页面所有框架标记放在一个HTML文件中,这个文件只记录了该框架是如何被分割的,不会显示任何资料,所以不必放入<
body>
标记。
需要注意的是,<
标记是框架设计标记,是双标记。
首尾的标记之间的内容就是使用到的框架的HTML主体部分。
<
标记是用来划分窗口的,每一窗口由一个<
标记所标识,<
必须在<
范围中使用。
代码如下:
framesetrows="
100,*,100"
cols="
*"
frameborder="
yes"
border="
100"
framespacing="
0"
>
framesrc="
up.aspx"
name="
topFrame"
scrolling="
NO"
noresize>
<
500,*"
left.aspx"
leftFrame"
noresize>
right.aspx"
mainFrame"
/frameset>
down.aspx"
bottomFrame"
noframes>
/body>
/noframes>
(2)Session对象的应用
Session对象用于存储每个用户的专用信息。
Session对象与Application对象不同,它只针对单一网页使用者,即各个连接的机器都有各自的Session对象,不同客户端无法互相存取。
Session对象中止于联机机器离线时,即当网页使用者关掉浏览器或超过设定Session变量的有效时间时,Session对象就会消失。
本次作业中用户进入聊天室的信息就是通过Session对象保存用户的登录名称和IP地址来实现的,代码如下:
protectedvoidPage_Load(objectsender,EventArgse)
{
Session["
LoginName"
]=txtusername.Text;
if(Page.IsPostBack==false)
Label1.Text="
匿名:
"
;
Label2.Visible=false;
this.Label3.Visible=true;
txtuserpwd.Visible=false;
RandomRd=newRandom();
stringRds="
游客"
+Rd.Next(9).ToString()+Rd.Next(9).ToString()+Rd.Next(9).ToString()+Rd.Next(9).ToString();
txtusername.Text=Rds;
IP"
]=Request.UserHostAddress.ToString();
}
(3)JavaScript脚本的应用
在框架绑定页面时,通过Response对象的Redirect方法无法实现页面返回到登录页的功能,可通过JavaScript脚本来实现。
返回到登录页面是应用JavaScript脚本实现的。
Resonse.Write(“<
script>
parent.location=’Login.aspx’<
/script>
”);
3.数据库的设计
该实验采用SQLserver2005数据库,其中主要用到了3个数据表,各数据表的数据字段及用途如表所示:
(1)数据表tb_Admin为管理信息表,包括管理员个人的管理信息,如表所示:
tb_Admin表结构
(2)数据表tb_matter为聊天记录表,如表所示:
tb_matter表结构
(3)数据表tb_user为用户登录表,如表所示:
tb_user表结构
4.系统的详细设计
用户登录模块
在用户登录模块的设计中,应用了2个数据表,分别为tb_user和tb_Admin;
主要技术的应用是ASP.NET内置对象中的Application对象的应用。
用户登录模块主要用于普通用户和管理员进入本程序。
普通用户登录时,应用到的关键技术的详细说明。
可附相关的关键程序代码。
普通用户可使用自己的名字进入聊天室,也可以使用系统提供给用户的自定义名字登录。
但管理员登录聊天室有所不同,管理员必须通过输入正确的密码才能聊天室进行管理。
普通用户登录的界面如图所示:
当选择管理员登录时,可进入管理员登录页面,运行界面如图所示:
普通用户登录时,无需对页面进行任何操作,可直接点击“登录”按钮进入聊天室,
而该用户进入聊天室的同时,系统会通过变量Application[“Name”]和Application[“IP”]将该用户的信息(包括用户名、用户IP地址、进入的时间等)存储在数据表tb_user中。
当用户离开聊天室时,系统则会自动删除该用户存储在数据表tb_user中的记录信息。
实现普通用户的登录的步骤如下:
(1)首先引用命名空间“usingSystem.Data.SqlClient”,并创建公共类对象MCClass。
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.Data.SqlClient;
MCClass.cs
publicDataSetReturnDataSet(stringsqlstr,stringtbName)
SqlConnectioncon=newSqlConnection("
DataSource=.\\SQLEXPRESS;
AttachDbFilename=H:
\\聊天室\\App_Data\\db_ManyChat_Data.MDF;
IntegratedSecurity=True;
UserInstance=True"
);
con.Open();
SqlDataAdapterada=newSqlDataAdapter(sqlstr,con);
DataSetds=newDataSet();
ada.Fill(ds,tbName);
returnds;
publicSqlDataReaderreDr(stringstr)
SqlConnectionconn=newSqlConnection("
conn.Open();
SqlCommandcom=newSqlCommand(str,conn);
com.CommandType=CommandType.Text;
SqlDataReaderdr=com.ExecuteReader();
returndr;
}
(2)Login.aspx页的Page_Load加载事件过程,在此事件过程中指定用户登录的随机名称、变量
(3)判断管理员登录的CheckBoxList控件”cblfAdmin”是否被选中,选中为管理员登录,反之则为普通用户。
(4)对进入聊天室的性别头像图片进行选择,以便区分用户的性别。
(5)管理员登录与普通用户登录的窗口在一个页面中。
管理员登录时,只需将控件cblfAdmin选中即可。
(6)进入“登录”按钮的click单击事件下,编写代码。
publicpartialclassLogin:
System.Web.UI.Page
{
MCClassmc=newMCClass();
protectedvoidPage_Load(objectsender,EventArgse)
//应用Session对象保存登录的用户名
//伪随机生成器,产生随机性统计要求的数字序列
protectedvoidButton1_Click(objectsender,EventArgse)
{
}
protectedvoidImageButton1_Click(objectsender,ImageClickEventArgse)
if(cblIfAdmin.Items[0].Selected==true)
SqlCommandcom=newSqlCommand("
selectcount(*)fromtb_AdminwhereName='
+txtusername.Text+"
'
andpwd='
+txtuserpwd.Text+"
con);
intcount=Convert.ToInt32(com.ExecuteScalar());
if(count>
0)
Name"
PWD"
]=txtuserpwd.Text;
Page.Response.Redirect("
index1.aspx"
else
Response.Write("
scriptlanuage=javascript>
alert('
用户名或密码有误!
location='
javascript:
history.go(-1)'
return;
if(DropDownList1.SelectedItem.Text=="
boy"
)
mc.ExecCommand("
insertintotb_user(name,ip,img)values('
'
+Request.UserHostAddress.ToString()+"
+Image1.ImageUrl+"
)"
index.aspx"
else//如果用户选择的头像中性别为“女”,则执行以下语句
+Request.UserHostAddress.ToString()+"
protectedvoidDropDownList1_SelectedIndexChanged(objectsender,EventArgse)
Image1.ImageUrl="
images/face/boy.gif"
images/face/girl.gif"
protectedvoidcblIfAdmin_SelectedIndexChanged(objectsender,EventArgse)
if(cblIfAdmin.Items[0].Selected==true)//值为true为管理员登录
Label2.Visible=true;
管理员名称:
Label2.Text="
管理员密码:
txtuserpwd.Visible=true;
txtusername.Text="
mr"
txtusername.Enabled=false;
Label3.Visible=false;
DropDownList1.Visible=false;
Image1.Visible=false;
else//以下代码为普通用户登录
txtusername.Text=Session["
].ToString();
Label2.Visible=false;
txtusername.Enabled=true;
txtusername.Text=null;
Label3.Visible=true;
DropDownList1.Visible=true;
Image1.Visible=true;
普通用户聊天室页面
在普通用户聊天室页面设计中,应用的数据表为tb_user和tb_matter;
主要技术的应用是
ASP.NET中内置对象中的Session变量应用。
普通用户进入聊天室页面后主要实现基本的聊天功能,不提供任何管理权限。
普通用户聊天
室页面的运行结果如图所示
上图中的聊天室用户名单列表,即页面left.aspx是通过数据表tb_user中数据绑定到DataList控件(ID属性为dlName)实现的。
在显示用户名单列表时,主要通过Image和ListButton控件编辑到DataList模板中实现。
用户发言及退出页面的设计分4个小模块,分别为发言模块、是否对“所有人”发言模块、返回登录模块和安全退出模块。
发言模块的主要功能是通过单击“发送”按钮向数据表中插入聊天记录。
是否对所有人发言模块是通过对DropDownList控件“ddlIfName”的选择来实现的。
返回登录模块主要用于返回登录页面Login.aspx,使用户重新登录,是通过JavaScript脚本实现的。
安全退出模块,当用户单击“安全退出”按钮时,程序会弹出是否关闭浏览器的消息提示框,单击提示框中的“确定”按钮,此时程序通过调用公共类方法ExecCommand,将进入聊天室时存储于数据表tb_user中的记录删除,同时关闭该浏览器。
left.aspx.cs
publicpartialclassleft:
SqlDataAdapterada=newSqlDataAdapter("
select*fromtb_user"
ada.Fill(ds);
dlName.DataSource=ds;
dlName.DataKeyField="
name"
dlName.DataBind();
protectedvoidDataList1_UpdateCommand(objectsource,DataListCommandEventArgse)
right.aspx.cs
publicpartialclassright:
intcount;
if(Session["
]!
=null)
count=1;
selectcount(*)fromtb_userwherename='
+Session["
]+"
count=Convert.ToInt32(com.ExecuteScalar());
infoTime"
]==null)
]=DateTime.Now;
stringstr="
select*fromtb_matterwhereinfoTime>
order
byidasc"
SqlDataReaderdr=mc.reDr(str);
while(dr.Read())
this.TextBox1.Text+=dr["
matter"
("
+dr["
].ToString()+"
+"
\n"
Down.aspx.cs
publicpartialclassdown:
Label4.Text=Session["
User
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 聊天室 设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)