实验二 制作聊天室程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

动态网页制作实验报告
计算机科学与技术系1105班
2013.05.13
实验二制作聊天室程序
一、实验目的和要求
1.掌握ASP内置对象的基本语法知识
2.掌握使用Request对象获取客户请求信息
3.掌握使用Response对象实现服务器向客户端的响应
4.掌握使用Application对象实现用户共享信息的存储
5.掌握使用Session对象临时保存用户相关信息。

二、实验内容
利用ASP内置对象实现聊天室。

要求:
(1)当前在线人数,和当前在线人员名单。

(2)用户登录。

(3)用户聊天内容的显示。

(4)用户聊天信息的输入。

提示:使用框架实现页面的布局。

三、实验重点和难点
1.使用Application对象保存用户共享信息
2.使用Session对象保存用户相关信息
3.Global.asa文件的定义和应用
四、实验过程
1.在硬盘上新建文件夹,并将其创建为虚拟目录chatroom。

2.打开DreamWeaver8.0,新建站点(chatroom)。

3.创建网站网页,共五个文件:
Login.asp,用户登录
Check.asp,用户登录处理
Main.htm,聊天室主界面(框架实现)
Talk.asp,显示聊天内容
Talking.asp,输入聊天内容
Userlist.asp,显示在线用户
Exit.asp,退出聊天室
4.根据错误提示调试程序。

一、登陆模块
登陆界面的程序:
<%@import namespace="System.Data.OleDb"%>
<script language="vb"runat="server">
Sub Sure_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim theName, psw, strSql1 As String
theName = username.Text
psw = P1.Text
Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("user.mdb"))
conn.Open()
strSql1 = "select * from userinfo where nc='"& Trim(theName) & "' and psw='" & psw & "'"
Dim cmd1 As New OleDbCommand(strSql1, conn)
Dim dr As OleDbDataReader
dr = cmd1.ExecuteReader()
'判断用户输入信息是否正确(与数据库对比)
If (dr.Read()) Then
dr.Close()
'存在此用户则将online设置为1,即用户在线
Dim strSql2 As String = "update userinfo set online='1' where nc='" & Trim(theName) & "'"
Dim cmd2 As New OleDbCommand(strSql2, conn)
cmd2.ExecuteNonQuery()
conn.Close()
'将用户名赋予Session变量,以便在其他页面中识别当前用户
Session("username") = Trim(theName)
'将页面跳转到主页
Response.Redirect("main.aspx")
Else
message.Text = "您的名字或密码错误,请重新选择<a href=login.aspx>登录"
End If
End Sub
</script>
<html xmlns="/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body bgcolor="#1199CC">
<center>
<img src="I:\小孩.jpg"height="300"width="1000"/>
</center>
<form id="form1"runat="server">
<center>
<strong>请输入名字:</strong>
<asp:TextBox ID="username"runat="server"></asp:TextBox><br/>
<br/>
<strong>您的密码:</strong>
<asp:TextBox ID="P1"TextMode="Password"runat="server"></asp:TextBox><br/> <br/>
<div>
<asp:Button id="Button1"runat="server"Text="请登陆"OnClick="Sure_Click"/> </div>
</center>
<h1>
<asp:label id="message"Runat="server"></asp:label></form>
</h1>
</body>
</html>
登陆模块的效果图如下:
二、聊天室主界面
1、聊天室主界面talk程序
<%@Page Language="VB"Debug="true" %>
<%@Import Namespace="System.Data" %>
<%@Import Namespace="System.Data.OleDb" %>
<script language="vb"runat="server">
Dim strcnn, sql As String
Dim conn As OleDbConnectiont
Dim cmd As OleDbCommand
Dim dr As OleDbDataReader
Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
strcnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("user.mdb") conn = New OleDbConnection(strcnn)
conn.Open()
'选择Content表中聊天的基本信息,以时间的顺序排列
sql = "select thetime,talker,toobj,color,content,facestr from Content order by thetime" cmd = New OleDbCommand(sql, conn)
dr = cmd.ExecuteReader()
End Sub
</script>
<html>
<head>
<meta http-equiv="refresh"content="10"/>
<title>default</title>
</head>
<body bgcolor="#ff99ff">
<p style="font-size:larger">
<font color="#848484">*</font>
<font color="#008cff">WELCOME TO</font>
<font color="#00a510">“绿水青山”聊天室</font>
<font color="008cff">PLEASE畅所欲言</font>
<font color="#ff9966">*</font>
</p>
<font style="font-size:medium">
<%
'循环记录,将聊天基本信息输出到页面
While dr.Read()
Response.Write("<font style='color:gray'>[" & FormatDateTime(dr.GetDateTime(0), DateFormat.LongTime) & "]</font>&nbsp;&nbsp;")
Response.Write("[<font style='color:yellow'>" & dr.GetString(1) & "</font>]")
Response.Write("对<font style='color:pink'>" & dr.GetString(2) & "</font>") If Trim(dr.GetString(5)) <> "无"Then
Response.Write("<i><font style='color:800080'>"& dr.GetString(5) & "</font></i>") End If
Response.Write("说:<font style='color:" & dr.GetString(3) & "'>" & dr.GetString(4) & "</font>")
Response.Write("<br>")
End While
conn.Close() %>
</font>
</body>
</html>
聊天室主界面talk效果图如下:
2、聊天室主界面send程序
<%@Page Language="VB"Debug="true" %>
<%@Import Namespace="System.Data.OleDb" %>
<%@Import Namespace="System.Data" %>
<script language="vb"runat="server">
Dim strcnn, strcnn1, sql, sql1 As String
Dim conn, conn1 As OleDbConnection
Dim cmd, cmd1 As OleDbCommand
Dim dr As OleDbDataReader
Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
strcnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("user.mdb") conn1 = New OleDbConnection(strcnn)
conn1.Open()
sql1 = "select nc from userinfo where online='1'"
cmd1 = New OleDbCommand(sql1, conn1)
dr = cmd1.ExecuteReader()
'将在线用户添加到对象的下拉菜单中去
While dr.Read()
drop1.Items.Add(New ListItem(dr.GetString(0)))
End While
conn1.Close()
End Sub
Sub Sure_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
strcnn1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("user.mdb")
conn = New OleDbConnection(strcnn1)
conn.Open()
Dim thetext, theobj, theface, thefont As String
thetext = tr.Text
theobj = drop1.SelectedItem.Text
theface = drop2.SelectedItem.Text
thefont = drop3.SelectedItem.Value
'将提交的信息存入数据库中
sql = "insert into Content(talker,toobj,color,content,facestr)values('" &
Session("username") & "','"& theobj & "','"& thefont & "','"& thetext & "','"& theface & "')" cmd = New OleDbCommand(Sql, conn)
cmd.ExecuteNonQuery()
conn.Close()
tr.Text = ""
End Sub
</script>
<html>
<head>
<title>default</title>
</head>
<body bgcolor="#ffcccc">
<form action="send.aspx"runat="server">
<p>
<td><strong>对象</strong>
<asp:DropDownList id="drop1"runat="server">
<asp:ListItem>大家</asp:ListItem>
</asp:DropDownList>
</td>
<td>
<strong>表情</strong>
<asp:DropDownList id="drop2"runat="server">
<asp:ListItem>无</asp:ListItem>
<asp:ListItem>笑眯眯地</asp:ListItem>
<asp:ListItem>含情脉脉地</asp:ListItem>
<asp:ListItem>撒娇地</asp:ListItem>
<asp:ListItem>恨恨地</asp:ListItem>
<asp:ListItem>甜甜地</asp:ListItem>
</asp:DropDownList>
</td>
<td>
<strong>颜色</strong>
<asp:DropDownList id="drop3"runat="server">
<asp:ListItem>black</asp:ListItem>
<asp:ListItem>red</asp:ListItem>
<asp:ListItem>yellow</asp:ListItem>
<asp:ListItem>blue</asp:ListItem>
<asp:ListItem>green</asp:ListItem>
</asp:DropDownList>
</td>
</p>
<p>
<td>
<strong>信息</strong>
<asp:TextBox ID="tr"TextMode="MultiLine"Rows="10"Columns="30"runat="server"> </asp:TextBox>
</td>
<td>
<asp:Button ID="ss"Text="发送"OnClick="Sure_Click"runat="server"/>
</td>
</p>
</form>
</body>
</html>聊天室主界面send程序效果图如下:
3、聊天室主界面list程序
<%@Page Language="VB"Debug="true" %>
<%@Import Namespace="System.Data.OleDb" %>
<script language="vb"runat="server">
Dim counts As Integer
Dim strcnn, sql, sql1 As String
Dim conn As OleDbConnection
Dim cmd As OleDbCommand
Dim dr As OleDbDataReader
Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
strcnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("user.mdb") conn = New OleDbConnection(strcnn)
conn.Open()
sql = "select count(*) from userinfo where online='1'"
cmd = New OleDbCommand(sql, conn)
dr = cmd.ExecuteReader()
'统计在线人数
If dr.Read() Then
counts = dr.GetInt32(0)
Else
counts = 0
End If
dr.Close()
sql1 = "select nc from userinfo where online='1'order by nc"
cmd = New OleDbCommand(sql1, conn)
dr = cmd.ExecuteReader()
End Sub
</script>
<html>
<head>
<meta http-equiv="refresh"content="60"/>
<title>default</title>
</head>
<body bgcolor="#66ff00">
<form>
<table border="0"cellpadding="1"width="100%">
<tr height="30">
<%
'输出在线人数
Response.Write("<font style='font-size:10pt'>[在线用户:<font style='color:black'>" & counts & "</font>人]</font>")
'循环记录,将在线人显示出来
While (dr.Read())
Response.Write("<tr>")
Response.Write("<font style='font-size:30pt'>--[<font style='color:green'>" &
dr.GetString(0) & "</font>]</font>")
Response.Write("</tr>")
End While
conn.Close() %>
</tr>
</table>
</form>
</body>
</html>聊天室主界面list程序效果图如下:
4、聊天室主界面main程序
<html xmlns="/1999/xhtml">
<head>
<meta http-equiv="Content-Type"content="text/html; charset=gb2312"/>
<meta name="GENERATOR"content="Microsoft Frontpage 4.0"/>
<meta name="ProgId"content="FrontPage.Editor.Document"/>
<title>无标题页</title>
</head>
<frameset cols="*,158">
<frameset rows="85%,*">
<frame name="rtop"target="robttom"src="talk.aspx"></frame>
<frame name="rbottom"src="send.aspx"target="_self"></frame>
</frameset>
<frame name="right"scrolling="no"target="rtop"src="list.aspx"></frame>
</frameset>聊天室主界面main程序效果图如下:
</html>
五、实验结论:
初步完成了实验目的,但是在有些方面还是做的不是很好,有些方面没有能够很好的完善好,在一些比较复杂的方面,还是不能靠自己去解决,都是在网上看了,自己慢慢模拟的。

相关文档
最新文档