动态网页程序设计课程设计
留言板程序设计
泰山学院信息科学技术学院
李莹的留言板
摘要:
随着Internet的发展,网站的作用越来越重要,而动态网页留言板是Internet上最基本的交互式网页,是网站提供的一项基本服务,也是一个和浏览者交流、沟通的园地。在本系统设计中,分析留言板系统的模块功能和程序流程,对实现留言板关键技术进行讨论,在网站中实现留言功能,涉及使用ASP的内部对象Request从客户端获得信息,利用内部对象Response向客户端输出信息,使用ASP的数据库存取组件ADO的内部对象实现对数据库的各种操作,包括连接数据库、显示数据库的数据、删除数据库的数据、添加数据库的数据等,综合利用系统的各种编程方法和技巧,可以设计出符合用户需求的各种动态网站。
关键词:
留言板;ASP技术;Access数据库;动态网站
1. 课程设计介绍
留言板在网站中交流中心起到了至关重要的地位,本课程设计的留言板是利用ASP和VBScript脚本语言或JavaScript脚本语言编写的网络应用程序。该留言板可供其他浏览者给自己留言,也可以对自己的留言信息进行编辑或者存放自己的感受。留言操作相对简单,在您进入网站后,即可输入信息后提交,管理员则要先进行登录得到系统的认定后方可对留言板进行设置,具备了大多数留言板的基本功能。
1.1 课程设计的目的
能利用ASP技术进行简单的网络编程;
熟练掌握数据库的建设和ASP对数据库的连接访问;
1.2 课程设计的要求
编写一个留言板程序,实现的功能包括:显示留言、添加留言、删除留言、回复留言等功能模块,利用数据库存取组件,将信息保存到数据库中等。系统结构清晰、层次清楚、目录规范;界面美观大方、个性化特点突出;数据库文件和使用的素材文件保存得当。
2. 基本原理或方法
2.1. 网页开发工具——Dreamweaver 8.0
Dreamweaver软件在整合设计和开发动态网页方面,可以将Macromedia Flash文件导入到Dreamweaver中,在Dreamweaver中预览其内容,该软件具有内嵌的脚本编写器,可以使用JavaScript添加丰富的交互内容,并且完全支持Unicode编码,可以显示和保存包括双字节字符集在内的、操作系统所支持的任何字体和编码。
2.2.动态网页技术开发语言—ASP
ASP是Active Server Page的缩写,意为“动态服务器页面”,ASP是微软公司开发的代替CGI脚本程序的一种应用,它可以与与数据库和其它程序进行交互,是一种简单方便的编程工具。ASP的网页文件的格式是.asp,现在常用与各种动态网站中,ASP网页可以包含HTML标记,普通文本,脚本命令以及COM组件等。作为用户界面的web应用程序,从软件的技术层面看,ASP有如下的特点:无需编译。其脚本集成与HTML当中,容易生成,不需要编译或链接即可直接解释执行;易于生成。使用常规文本编译器(如记事本)即可进行*.asp的
界面设计,本课程从工作效率上考虑,选择可视化编辑工具Dreamweaver 8.0;独立于浏览器。用户端只要使用可解释常规HTML码的浏览器,即可浏览器ASP所设计的页面;面向对象。在ASP脚本中可以方便地引用系统组件和ASP的内置组件还能通过定制ActiveX Server Component(ActiveX 服务器组件)来扩展功能;ASP提供了五种方便能力强大的内建对象:Request、Response、Sever、Application以及Session,同时,若使用ASP内建的
“Application”对象或“Session”对象所撰写出来的ASP程序可以在多个网页之间暂时保存必要的信息;与任何ActiveX Scripting语言兼容,并且使用了VBScript或JavaScript等简易的脚本语言,再结合HTML码,快速完成站点的应用程序。
2.3 Access数据库设计概述
Access数据库具有界面友好易学易用开发简单接口灵活等特点非常适合开发小型网站,因此它也被用来开发简单的Web应用程序。在本系统中将ASP技术与Access技术相结合,即采用Access数据库作为后台数据库。
2.4 系统关键技术的具体实现
本系统中最关键技术便是实现ASP对数据库的访问。本系统采用的是采用ADO(Active Data Objec,活动数据对象)访问方式,可以概括以下四个具体步骤:
⑴.创建ADO连接对象的实例
用ASP连数据库必须首先定义一个连接对象,要用到ADO的connection对象。 Connection对象主要用于建立和管理应用程序与数据源间的连接。 用ASP 中Server对象的CreateObject方法创建一个该对象的格式为:
<%
set conn=Server.CreateObject(“ADODB.Connection”)
%>
⑵.打开对象
在成功创建ADO连接对象后,还必须使用连接对象的Open()方法打开数据源。编写如下语句:
Conn.Open 连接字符串,用户名,密码
上述参数中的连接字符串不可忽略,如果打开数据库时不要求登录安全,则可忽略用户名和密码。
⑶.执行指定的操作命令
打开对象后,ASP就与数据库连接成功了,可以使用连接对象的Execute()方法将操作命令发送到数据源。对于不需要返回操作命令(例如,插入,删除),其语句格式为:Coon.Execute 操作命令(其中操作命令通常使用SQL语句)
对于需要返回结果的操作,其语句格式为:Set rs=coon.Execute 操作命令
⑷.关闭对象,释放关联的系统资源
在对一次记录集合的访问结束之后,使用记录集的close()方法关闭记录集对象。如果关
闭后使用了Set记录集=Nothing命令,则释放所有的系统资源。
3. 结果和结果分析
3.1 功能模块分析
本留言板系统具有用户留言和后台留言管理两大模块,在用户留言模块中,可以实现查看留言、发表留言等功能;进入后台管理模块,要求输入用户名和密码,管理员登录成功后,可以实现:查看留言、回复留言、删除留言等功能其模块结构如下图所示:
相应的界面设计如下图所示:
显示留言列表:
登录页面:
管理页面:
删除页面:
回复页面:
3.2 后台数据库设计
在Access 2003中,新建一个数据库(名为:liying.mdb),它包含一张表(Guest表),用于存放留言信息和回复信息,其结构如下表所示:
4. 主要功能实现的程序代码
⑴.显示留言代码:
<%
'以下开始显示原有留言,请注意每条留言会显示在一个表格中 Dim rs,strSql Set rs=Server.CreateObject("ADODB.Recordset")
strSql ="Select * From Guest Order By submit_data Desc" rs.Open strsql, conn,1 Dim page_no ‘定义个page变量,用来显示页码 If Session("page_no")="" Then ‘如果没有留言,则默认第一页 page_no=1 Session("page_no")=page_no Elseif Request.QueryString("page_no")<>"" Then page_no=Cint(Request.QueryString ("page_no")) Session("page_no")=page_no page_no=Session("page_no") Else End If rs.PageSize=PageSize ‘显示总共的页数 rs.AbsolutePage=page_no Dim I ' I=rs.PageSize
Do While Not rs.Eof
I=I-1
%>
<table width="600" height="205" border="0" align="center"
background="images/6ea555d98b3389c839012fca.jpg">
<tr>
<td width="100"><span class="STYLE51">留言人</span></span></td> <td width="484"><a href="mailto:<%=rs("strEmail")%>"
class="STYLE55"><%=myHTMLEncode(rs("strName"))%></a></td>
</tr>
<tr>
<td><span class="STYLE51">主题:</span></span></td>
<td><span
class="STYLE55"><%=myHTMLEncode(rs("strTitle"))%></span></span></td> </tr>
<tr>
<td><span class="STYLE51">留言内容:</span></span></td>
<td><span
class="STYLE55"><%=myHTMLEncode(rs("strContents"))%></span></span></td> </tr>
<tr>
<td><span class="STYLE51">时间:</span></span></td>
<td><span class="STYLE55"><%=rs("submit_data")%></span></span></td> </tr>
<tr>
<tr>
<td height="25"><span class="STYLE89 STYLE96"><strong>回复内容:</strong></span></td>
<td><span class="STYLE96
STYLE89"><strong><%=myHTMLEncode(rs("reply_contents"))%></strong></span></td> </tr>
</tr>
<tr>
<td height="40"><div align="center"><a onClick="return judge()" href="delete.asp?id=<%=rs("ID")%>" class="STYLE55 STYLE58">我要删除
</a></div></td>
<td><a href="reply.asp?id=<%=rs("ID")%>" class="STYLE55 STYLE58">给他回复</a></td>
</tr>
<tr>
<td height="15" colspan="2" background="../images/3.gif"></td> </tr>
</table>
<%
rs.MoveNext Loop Response.Write "<p align='center'>请选择数据页: " For I=1 To rs.PageCount If I=page_no Then
Response.Write I & " "
Else ‘点击页码,连接到编辑页面 Response.Write "<a href='manage.asp?page_no=" & I & "'>" & I & "</a> "
End If Next '关闭对象 rs.Close Set rs=Nothing conn.Close Set conn=Nothing %>
⑵.删除留言代码:
<form id="form1" name="form1" method="post" action="">
<table width="600" height="200" border="1" align="center"
background="images/42bad940f3e27e7286947312.jpg">
<tr>
<td height="114"><span class="STYLE16">请输入删除密码:</span></td> <td><span class="STYLE16">
<label>
<input name="txtPwd" type="text" value="" size="50">
<input type="hidden" name="txtID"
value="<%=Request.QueryString("ID")%>">
</label>
</span></td>
</tr>
<tr>
<td colspan="2"><label>
<div align="center">
<input type="submit" name="Submit" value="提 交" />
</div>
</label></td>
</tr>
</table>
</form>
<%
'这里判断一下,如果密码和配置文件中的密码相等,则删除该留言
If Request.Form("txtPwd")=conPwd Then Dim strSql strSql="Delete From Guest where ID=" & Request.Form("txtID") conn.Execute(strSql) Response.Redirect("manage.asp")
End If
%>
⑶.回复留言代码:
<form id="form1" name="form1" method="post" action="" onSubmit="javascript: return check_Null();">
<table width="630" height="200" border="1" align="center"
background="images/large_7831i56.jpg">
<tr>
<td width="185" height="114"><span class="STYLE27">请输入回复内容:</span></td>
<td width="0">
<td width="423"><span class="STYLE27">
<label>
<textarea name="textreply" cols="50" rows="6"></textarea> </label>
***</span></td>
</tr>
<tr>
<td colspan="2">
<label>
<input type="hidden" name="txtID"
value="<%=Request.QueryString("ID")%>">
</label></td>
<td width="423"><input type="submit" name="Submit" value="完 成" ></td> </tr>
</table>
</form>
<%
Dim strSql
strSql="Update Guest Set reply_contents='"&
myHTMLEncode(request("textreply")) &"' where ID=" & Request.Form("txtID")
%>
⑷.客户端验证代码:
<script language="JavaScript">
<!--
//该函数用来进行客户端验证
function check_Null(){
if (document.frmGuest.textTitle.value==""){
} alert("主题不能为空!"); return false; conn.execute(strSql) response.redirect("manage.asp") } if (document.frmGuest.textName.value==""){ alert("姓名不能为空!"); return false; } if (document.frmGuest.textTitle.value.length>50){ } alert("主题不能超过50个字符"); return false; return true; function judgef(){ ‘定义了一个判断函数,提示要登录 if (confirm("你要先登录才能有权管理你的留言板!")) return true; else return false;
}
</script>
⑸.①登录判断代码:
<%
'这里判断一下,如果用户名与密码均和配置文件中的相等,则登录成功,进入修改页面
If Request.Form("textPwd")=pwd and Request.Form("textUsername")=username Then Response.Redirect("manage.asp")
End If
%>
②是否删除判断代码:
<%
'这里判断一下,如果密码和配置文件中的密码相等,则删除该留言
If Request.Form("txtPwd")=conPwd Then Dim strSql strSql="Delete From Guest where ID=" & Request.Form("txtID") conn.Execute(strSql) Response.Redirect("manage.asp")
End If
%>
⑹.其它特色模块实现代码
① 插入动态显示代码:
<MARQUEE onmouseover=this.stop() style="PADDING-RIGHT: 5pt; PADDING-LEFT: 5pt" onmouseout=this.start() scrollAmount=2 scrollDelay=50 direction=left height=20 width="350">
<span class="STYLE98">欢迎进入编辑页面,在本页面中,你可以对不喜欢的留言进行删除,亦可对其进行回复!谢谢使用。。。。。</span>
</MARQUEE>
② 插入音乐播放器代码:
<embed src="data/牛奶咖啡 - 明天,你好.mp3" width="300" height="50"
pluginspage="data/牛奶咖啡 - 明天,你好.mp3"></embed>
⑺.实现数据库连接代码:
<%
'以下连接数据库,建立一个Connection对象实例conn
Dim conn,strConn
Set conn=Server.CreateObject("ADODB.Connection")
strConn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath("liying.mdb")
conn.Open strConn
%>
5.使用说明
系统一运行,便进入主页面(即index.asp),浏览者(包括访客和主人)可以在本页面查看主人的留言列表,也可以给主人添加留言,但不允许修改留言;主人要想对自己的留言板进行编辑,必须进行登录,则须进入登录页面(即login.asp),在本页面,必须拥有登录名和密码同时正确方可登录成功,进入编辑页面;登录成功后进入留言编辑页面(即
manage.asp),选择操作(删除留言或回复留言)分别进入删除页面(即delete.asp)和回复页面(即reply.asp)。各页面相互关联又能保证只有主人才有权对留言进行编辑操作。
6. 总结设计体会和致谢
设计体会: 在本次课程设计过程中,我受益匪浅。本人设计的留言板有好的一面,当然也有不是很完善的地方。该系统基本实现了管理的基本功能和一些基本的操作,但是很多方面也存在着很多不足之处。首先就是功能不是很强大,因为在设计时仅运用了教材上局限的知识来设计网站,很多知识点没有充分的运用进来;其次网页的整体页面设计不是很美观,色彩搭配的也不是很好,体现了一个初学者的水平层次,但本次设计的经验会让我意识到了自己的缺点和不足;另外数据库的设计也不是很完善;最后一点就是ASP与数据库连接以及数据库的调用也存在不足的地方,这些将在以后的学习中不断地改善。总之,这次设计让我发现了自己的不足,学会了更多书本上没有的知识,激励我在以后的学习生活中不断自主学习,发挥独立创新的精神。设计之路任重而道远,吾将上下而求之!
致谢:
非常感谢徐成志老师的耐心指导以及在平时的学习过程中对我的关心,另外还要感谢在本次设计中各位同学对我热情帮助,没有他们就没有我现在的作品,是他们帮我度过了一个又一个难关,解决了一个又一个难题。再一次谢谢你们!
7. 参考文献和站点
[1]蒲鹏 陈慧.ASP网络编程基础.清华大学出版社,2009.10
[2]强锋科技,马军.ASP网络编程入门到精通.北京:清华大学出版社,2007.
[3]庞娅娟.ASP技术方案宝典.北京:人民邮电出版社,2008.
[4]博彦科技.编程高手ASP[M].北京大学出版社,2000.94-97
[5]王冬青.网络课程设计与开发的思考[J].中国电化教育.2002.10
[6]上海科技网. 量子计算机[OL].2003.04.01
[7]吕继迪,孙明丽,庞娅娟.ASP程序开发宝典.北京:人民邮电大学出版社,2009.
[8]CSDN论坛Web应用频道./.