文档库 最新最全的文档下载
当前位置:文档库 › 夜大-用ASP技术实现网上作文的自动化管理

夜大-用ASP技术实现网上作文的自动化管理

本文将介绍如何使用ASP(ActiveServerPages)技术进行编程来组建学校作文网站,使网站做到自动化管理。由此实现以下几种功能:
1.作文的信息共享。学生的作文发在网上可以让全班、全校、全世界的人来欣赏。使用者可以通过多种方式(题目,发表年级,文章类型,作者)的查询,查看自己需要的文章。
2.自由发表。不同地域的学生通过各种途径不择地点、不择时间地自主上传自己的优秀作文(不合要求的作文可以由管理员及时清除)。
3.网上发表评论。其他学生和老师在看了作文之后可以直接在网上发表自己的评论,对作文中写的好的方面和存在问题发表自己的看法。通过网上的这种方式进行交流,对学生作文水平的提高会起到很大的作用。
Abstract
ThemainworkofthispaperisintroducehowtouseASP(ActiveServerPages)programmingacomposition'ssite,sothesitecanmanageitself.Thereforethesitehasseveralfunctions:
https://www.wendangku.net/doc/fb13946082.html,positionssharingonthenet.Studentscanshowtheircompositionstowholeschool,eventoallovertheworld.Thevisitscanquerythecompositionsbyseveralmeans.
2.Appearingfree.Thevisitscanuploadtheircompositionsbynet,andviewtheircompositionsintime.
3.Appearcriticism.Allofvisitscanshowtheirattitudeonthenet.Sotheauthorandothervisitscouldreaditandfindsomegoodideas.
目录
一.ASP的简单认识
二.网上作文栏目实现的目标
三.网上作文栏目自动化管理实现的几个ASP文件简介
四.数据库的搭建
五.ASP文件实现自动化管理过程的细节
六.其它应注意的问题
七.小结
随着网络科技的发展,使得网络逐渐成为人们生活与学习的工具。许多中小学校都开始建立自己的网站,网络教学开始在教育中展现她无与伦比的优势。她注定将给传统的教育方式带来翻天覆地的变化。但由于传统教育工作者在网络技术上的欠缺,使许多学校都只在硬件配置上大量投入,而忽略了在软件及应用上的投入。本文将以用ASP技术实现网上作文的自动化管理的过程为例,讲解怎样在学校网站应用现代网络技术实现网络自动化管理。
一.ASP的简单认识
ASP的全称是:ActiveServerPages,是在服务器端脚本编译环境,使用它可以创建和运行动态、交互的Web服务器应用程序。ASP可以与HTML页、脚本命令和ActiveX组件组合创建交互的Web页和基于Web的功能强大的应用程序。ASP应用程序很容易开发和修改。所以笔者推荐广大教育工作者在教学工作繁忙的情况,使用ASP来制作适应教学的交互性强的动态网页是非常适合的。
以下罗列了ActiveServerPages所独具的一些特点:
1.使用VBScript,JScript等简单易用的脚本语言,结合

HTML代码,即可快速地完成网站的应用程序的编写。
2.无须编译,容易编写,调试方便可在服务器端直接执行。
3.使用普通的文本编辑器,如Windows的记事本,或在FRONTPAGE等流行软件中都可进行编辑设计。
4.与浏览器无关(BrowserIndependence)。用户端只要使用可执行HTML码的浏览器,即可浏览ASP网页的内容。ASP所使用的脚本语言(VBScript、Jscript)均在WEB服务器端执行,用户端的浏览器不要求能够执行这些脚本语言。
5.ASP能与任何ActiveXscripting语言相容。除了可使用VBScript或JScript语言来设计外,还通过plug-in的方式,使用由第三方所提供的其他脚本语言,如:REXX、Perl、Tcl等。脚本引擎是处理脚本程序的COM(ComponentObjectModel)物件。
6.ActiveServerPages的源程序,不会被传到客户浏览器,因而可以避免所写的源程序被他人直接剽窃,提高了程序的安全性。
7.可使用服务器端的脚本来控制产生客户端的脚本。
8.ActiveXServerComponents(ActiveX服务器元件)具有无限可扩充性。可以使用VisualBasic、Java、VisualC++、COBOL等编程语言来编写你所需要的ActiveXServerComponent。
由此可见,将ASP技术用于教育任务繁重的教师建设网站是最适合的。
由于笔者本文主题是讲解用ASP技术实现网上作文的自动化管理的过,其目的在于由一件具体事例的完成过程来抛砖引玉,使更多的教师懂得怎样在学校网站应用现代网络技术实现网络自动化管理。所以对于网络的一些基础知识不作过多铺垫,下仅列出本文所需基础知识:
1.懂得基本的HTML语言。
2.懂得基本的VBScript或JScript语言。
3.有数据库操作基础,最少会一种数据库(如最简单的MicrosoftAccess)
二.网上作文栏目实现的目标
网络以资源共享和信息传输等方面的特点,使得教育可以跨越时间和空间。我们利用这一优势来为语文的作文教学服务可以起到非常大的作用。笔者认为建立一个好的网上作文栏目可以用如下目标。
1.实现作文的信息共享。学生的作文发在网上可以让全班、全校、全世界的人来欣赏。使用者可以通过多种方式(题目,发表年级,文章类型,作者)的查询,查看自己需要的文章。
2.自由发表。不同地域的学生通过各种途径不择地点、不择时间地自主上传自己的优秀作文(不合要求的作文可以由管理员及时清除)。
3.发表评论。其他学生和老师在看了作文之后可以直接在网上发表自己的评论,对作文中写的好的方面和存在问题发表自己的看法。通过网上的这种方式进行交流,对学生作文水平的提高会起到很大的作用。
4.资料的收

集和管理。通过ASP技术对数据库的操作可对网上的资料进行不同方式的整理,便于使用者进行查询、分析。这样资料会越积越多,越积越全,但管理起来却非常轻松。
三.网上作文栏目自动化管理实现的几个ASP文件简介
从本节开始我们逐渐深入地探讨如何用ASP技术实现以上目标。实现网上作文的自动化管理和bbs、在线论坛等的建立机制有许多相似的地方,但在数据库的建立或管理方法方面却有许多不同之处。以下笔者以范例的方式来分析利用ASP技术来实现的方法。整个自动化管理机制大致可由如下几个ASP文件和一个数据库文件来组成,它们的大至功能如下。
(1)index.asp进入本栏目后的第一显示页,可显示刚上传的作文,提供多种查询方式的表单(题目、作者、发表年级、文章类别),以及其它管理控制信息。
(2)articleupload.asp显示网上提交自己作文的空表单。
(3)tjzw.asp将提交的合格的作文写进数据库。
(4)clicktoread.asp点击作文标题,查看具体的某一篇作文。
(5)default.asp显示评论者填写评论的空表单。
(6)writesth.asp将评论后的表单数据写入数据库。
(7)search.ASP按查询表单传来的数据对数据查询,并列出查询结果。
(8)user.mdb记录本栏目的所有信息(在本例中需要将此数据库在服务器上建立成ODBC数据源,数据源名称为“USER“)。
四.数据库的搭建
数据只有用数据库来管理才能有自动化管理的可能。数据的结构将影响整个管理机制的应用,而且一但建立以后要修改常会出现麻烦。所以一开始就要仔细慎重地搭建一个完整而合理的结构。对于教师用简单易操作的MicrosoftAccess数据库是比较适合的。我的范例中的数据库文件就是Access类型的数据库。数据库中共有两个数据表“zwtd_infoz”和“zwtd_talk”。表zwtd_infoz是用存储作文的具体内容,共有12个字段。其中pid是作者的id号这与另外一栏目《学生注册》相联系。(如图一)。zwtd_talk用来存放对作文的评论信息。共有6个字段。
图二(略)

图一(略)


五.ASP文件实现自动化管理过程的细节
图一(略)

ASP技术以其简单易操作,且功能较强大完全能够完成以上所要求的各操作目标。下面分操作及ASP文件的组成来讲解实现具体细节,其中又着重介绍用〈VBsript〉语句的操作。
1.访问作文栏目。当浏览者打开作文栏目首先执行index.asp文件,他将看到以下形式的网页:
本网页主要提供了一个提交自己作文的超链接按钮、一个查询表单、一个显示最新提交来

的作文窗口。
具体实现方式在以下程序代码中介绍。
<%@language="vbscript"%>




欢迎来到文学天地!

A:link{color:blue;text-decoration:none;}
A:hover{color:red;text-decoration:none;}
A:visited}








"OpenWin()">网上投稿

[作文查询]





题目"bt"size="8">
"KK1"value="1">


作者"zz"size="8">
"KK2"value="2">


年级"lj">
一年级
二年级
三年级
四年级
五年级
六年级

"KK3"value="4">


类别"type">
写人
记事
状物
说明文
议论文
诗歌
散文

"KK4"value="8">




"pd">
"B1">
"B2">





functionOpenWin()
{
window.open('articleupload.asp','','scrollbars=no,width=250,height=400');
}















<%
dimymh,sql,jls,zys,tmp,i
'ymh页面号:对记录进行分页后的每一页的页码号
'sql查询语句变量:用于存储查询语句的临时变量
'jls记录数:数据库中的作文数量
'zyx总页数
'tmp临时变量
ymh=Request.QueryString("page")
ifymh=""then
ymh=1
else
ymh=clng(ymh)
endif
setcon=server.CreateObject("ADODB.Connection")
setrec=server.CreateObject("ADODB.Recordset")
con.Open"user","user","user"
sql="select*fromzwtd_infoorderby发表时间desc"
rec.ActiveConnection=con
rec.Source=sql
rec.CursorType=3
rec.LockType=2
rec.Open
rec.PageSize=15'一页显示记录条数
jls=rec.recordcount
zys=rec.pagecount
Response.Write("")
response.write("共有"&jls&"篇文章")
fori=1tozys
ifi=ymhthen
Response.Write("第"&i&"页")
else
Response.Write("第"&i&"页")
endif
next
response.write("")
response.write("")
response.write("")
rec.AbsolutePage=ymh
j=0

题目
作者
上传时间
年级
类别
点击数
评论条数

<%
dowhilenotrec.EOFandj j=j+1
Response.Write("")
Response.Write(" rec.fields("id").value&"&pid="&rec.fields("pid").value&_
"'target='_blank'>"&rec.fields("题目").value&"")
Response.Write(""&rec.fields("发表者").value&"")
Response.Write(""&ShowDatePart(rec.fields("发表时间").value)&"")
Response.Write(""&rec.fields("年级").value&"")
Response.Write(""&rec.fields("类别").value&"")
Response.Write(""&rec.fields("点击次数").value&"

")
Response.Write(""&rec.fields("评论条数").value&"")
Response.Write("")
rec.MoveNext
loop
Response.Write("")
response.write("")
rec.Close
setrec=nothing
con.Close
setcon=nothing
%>





2.查询作文。浏览者在表单中填入查询标准,并在右方的选框中确认后,可点击确定进行作文查询。查询的执行由search.ASP文件来执行。其代码及分析如下:
<%@Language=VBScript%>


A:link{color:blue;text-decoration:none;}
A:hover{color:red;text-decoration:none;}
A:visited}

<%
onerrorresumenext
dimbt,zz,lj,lx,add_result,sql
ifrequest.form("pd")="true"then
'从首页传过来的
add_result=cint(request.form("kk1"))+cint(request.form("kk2"))+cint(request.form("kk3"))+cint(request.form("kk4"))
ifadd_result=0then
Response.Write("对不起,请至少选择一个查询项目!")
Response.End
endif
bt=trim(request.form("bt"))'标题
zz=trim(request.form("zz"))'作者(别名)
lj=request.form("lj")'年级
lx=request.form("type")'类型
else
add_result=request.querystring("add_result")
bt=request.querystring("bt")
zz=request.querystring("zz")
lj=request.querystring("lj")
lx=request.querystring("lx")
endif
'*************************对输入的语句进行处理**************
ifinstr(bt,"'")then
Response.Write("对不起,非法查询字符[']!")
Response.End
endif
ifinstr(bt,"&")then
Response.Write("对不起,非法查询字符[&]!")
Response.End
endif
ifinstr(zz,"'")then
Response.Write("对不起,非法查询字符[']!")
Response.End
endif
ifinstr(zz,"&")then
Response.Write("对不起,非法查询字符[&]!")
Response.End
endif
'***********************************************************
setcon=server.CreateObject("ADODB.Connection")
setrec=server.CreateObject("ADODB.recordset")
con.Open"user","user","user"
selectcaseadd_result
case1
ifbt=""then
Response.Write("对不起,请输入你要查找的标题关键字!")
Response.End
endif
sql="select*fromzwtd_infowhere题目like'%"&bt&"%'orderby发表时间desc"
case2
ifzz=""then
Response.Write("对不起,请输入你要查找的作者关键字!")
Respo

nse.End
endif
sql="select*fromzwtd_infowhere发表者like'%"&zz&"%'orderby发表时间desc"
case3
sql="select*fromzwtd_infowhere发表者like'%"&zz&_
"%'and题目like'%"&bt&"%'orderby发表时间desc"
case4
sql="select*fromzwtd_infowhere年级='"&lj&"'orderby发表时间desc"
case5
ifbt=""then
Response.Write("对不起,请输入你要查找的标题关键字!")
Response.End
endif
sql="select*fromzwtd_infowhere题目like'%"&bt&"%'and年级='"&lj&"'orderby发表时间desc"
case6
ifzz=""then
Response.Write("对不起,请输入你要查找的作者关键字!")
Response.End
endif
sql="select*fromzwtd_infowhere发表者like'%"&zz&"%'and年级='"&lj&"'orderby发表时间desc"
case7
ifbt=""orzz=""then
Response.Write("对不起,请输入你要查找的标题或作者关键字!")
Response.End
endif
sql="select*fromzwtd_infowhere发表者like'%"&zz&"%'and年级='"&lj&_
"'and题目like'%"&bt&"%'orderby发表时间desc"
case8
sql="select*fromzwtd_infowhere类别='"&lx&"'orderby发表时间desc"
case9
ifbt=""then
Response.Write("对不起,请输入你要查找的标题关键字!")
Response.End
endif
sql="select*fromzwtd_infowhere题目like'%"&bt&"%'and类别='"&lx&"'orderby发表时间desc"
case10
ifzz=""then
Response.Write("对不起,请输入你要查找的作者关键字!")
Response.End
endif
sql="select*fromzwtd_infowhere发表者like'%"&zz&"%'and类别='"&lx&"'orderby发表时间desc"
case11'题目,作者,类别
ifbt=""orzz=""then
Response.Write("对不起,请输入你要查找的标题或作者关键字!")
Response.End
endif
sql="select*fromzwtd_infowhere发表者like'%"&zz&"%'and类别='"&lx&_
"'and题目like'%"&bt&"%'orderby发表时间desc"
case12'年级,类别
sql="select*fromzwtd_infowhere年级='"&lj&"'and类别='"&lx&"'orderby发表时间desc"
case13''题目,年级,类别
sql="select*fromzwtd_infowhere年级='"&lj&"'and类别='"&lx&_
"'and题目like'%"&bt&"%'orderby发表时间desc"
case14'作者,年级,类别
sql="select*fromzwtd_infowhere年级='"&lj&"'and类别='"&lx&_
"'and发表者like'%"&zz&"%'orderby发表时间desc"
case15
ifbt=""orzz=""then
Response.Write("对不起,请输入你要查找的标题或作者关键字!")
Response.End
endif
sql="select*fromzwtd_infowhere年级='"&lj&"'and类别='"&lx&_
"'and发表者like'%"&zz&"%'and题目like'%"&bt&"%'orderby发表时间desc"
endselect
'*****************

***************************************************
dimymh,jls,zys,tmp,i,bs,bsy
tmp=0
ymh=Request.QueryString("page")
bs=Request.QueryString("bs")
bsy=Request.QueryString("bsy")
'*****************************
ifymh=""then
ymh=1
endif
ifnotisnumeric(ymh)then
Response.Write("对不起,非法访问!")
Response.End
endif
ifbs<>""andbs<>"next"then
Response.Write("对不起,非法访问!")
Response.End
endif
ifbsy<>""andnotisnumeric(bsy)then
Response.Write("对不起,非法访问!")
Response.End
endif
'*****************************
ymh=clng(ymh)
bsy=clng(bsy)
rec.activeconnection=con
rec.source=sql
rec.cursortype=1
rec.locktype=1
rec.open
ifrec.eofthen
Response.Write("对不起,没有相关记录!")
Response.End
endif
'**********************************************************
rec.PageSize=20'一页显示记录条数
jls=rec.recordcount
zys=rec.pagecount
ifzys Response.Write("对不起,非法访问!")
Response.End
endif
ifzys Response.Write("对不起,非法访问!")
Response.End
endif
response.write("")
'*************************************************************
response.write("共有"&jls&"篇文章")
response.write("")
ifbs=""then
fori=1tozys
tmp=tmp+1
iftmp=11then
tmp=0
Response.Write(" "&add_result="&add_result&"&bt="&server.URLEncode(bt)&"&zz="&server.htmlencode(zz)&_
"&lj="&lj&"&lx="&server.URLEncode(lx)&">下10页>>")
exitfor
else
ifi=ymhthen
Response.Write("第"&i&"页")
else
Response.Write("第 "&bt="&server.htmlencode(bt)&"&zz="&server.URLEncode(zz)&_
"&lj="&lj&"&lx="&server.URLEncode(lx)&">"&i&"页")
endif
endif
next
else
fori=bsytozys
tmp=tmp+1
iftmp=11then
tmp=0
Response.Write(" "&add_result="&add_result&"&bt="&server.URLEncode(bt)&"&zz="&server.htmlencode(zz)&_
"&lj="&lj&"&lx="&server.URLEncode(lx)&">下10页>>")
exitfor
else
ifi=ymhthen
Response.Write("第"&i&"页")
else
Response.Write("第 "&add_result="&add_result&"&bt="&server.URLEncode(bt)&"&zz="&server.htm

lencode(zz)&_
"&lj="&lj&"&lx="&server.URLEncode(lx)&">"&i&"页")
endif
endif
next
endif
response.write("")
rec.AbsolutePage=ymh
%>

题目
作者
上传时间
年级
类别
点击数
评论条数

<%
dowhilenotrec.eofandj j=j+1
Response.Write("")
Response.Write(" rec.fields("id").value&"'>"&rec.fields("题目").value&"")
Response.Write(""&rec.fields("发表者").value&"")
Response.Write(""&ShowTextPart(rec.fields("发表时间").value,10)&"")
Response.Write(""&rec.fields("年级").value&"")
Response.Write(""&rec.fields("类别").value&"")
Response.Write(""&rec.fields("点击次数").value&"")
Response.Write(""&rec.fields("评论条数").value&"")
Response.Write("")
rec.movenext
loop
response.write("")
rec.close
setrec=nothing
con.Close
setcon=nothing
%>
游览者可以在网上点击[网上投稿]直接提交自己的作文。点击后先出现一个投稿表单,其代码如下:
<%@language=vbscript%>

谢谢你提交作文!

上传文章




[题目]"title"size="20">


[类型]"type">
写人
记事
状物
说明文
议论文
诗歌
散文



[年级]
"lj">
一年级
二年级
三年级
四年级
五年级

n>
六年级



[作者]"xm"size="6">



[指导老师]
"teacher"size="20">


[内容]
"content"cols="30"style="font-style:normal;font-size:9pt;font-family:宋体">







浏览者填完表单中各项数据后点击[确定]后由tjzw.asp文件来将各数据项写入数据库。
<%@Language=VBScript%>



A:link{color:blue;text-decoration:none;}
A:hover{color:red;text-decoration:none;}
A:visited}



<%
dimtitle,lx,content,fname,tname,teacher,sj,lj,PID
title=Request.Form("title")'文章标题
lx=Request.Form("type")'文章类型
teacher=Request.Form("teacher")'老师姓名
content=Request.Form("content")'文章内容
tname=Request.Form("xm")'姓名
lj=request.form("lj")'年级
setcon=server.CreateObject("ADODB.Connection")
setrec=server.CreateObject("ADODB.Recordset")
con.Open"user","user","user"
sj=date()&""&time()
sql="insertintozwtd_info(发表者,发表时间,年级,题目,内容,指导老师,评论条数,点击次数,类别,评分等级)values('"&_
tname&"','"&sj&"','"&lj&"','"&title&"','"&content&"','"&_
teacher&"',0,0,'"&lx&"',0)"
con.Execute(sql)
con.Close
setcon=nothing
Response.Write("成功提交!")
Response.End
%>


4.评论作文
在浏览者,观看作文的时候,可以对本作文发表自己的看法。单击[我要发表评论]将调用default.asp文件,出现发表评论表单。其程序代码如下:
<%@language=vbscript%>
<%
dimid
id=request.querystring("id")
%>

发表评论




[评分]"pf">
1
2
3
4
5



[评论者]
"xm"size="6">
"id"value=<%=id%>>



>[评论]
"pl"cols="30"style="font-style:normal;font-size:9pt;font-family:宋体">







评论者填写完各项评论后提交则通过writesth.asp文件将评论写入数据库。其程序代码如下:
<%@Language=VBScript%>



<%
dimPID,pl,pf,fname,id,sj,average,sl,xm
xm=request.form("xm")
pf=Request.Form("pf")
pl=Request.Form("pl")
id=Request.Form("id")
setcon=server.CreateObject("ADODB.Connection")
con.Open"user","user","user"
sj=date()&""&time()
sql="insertintozwtd_talk(发表者,发表时间,内容,评分等级,zwid)values('"&xm&"','"&sj&"','"&pl&"',"&pf&","&id&")"
con.Execute(sql)
con.Close
con.Open"user","user","user"
setrec=server.CreateObject("ADODB.Recordset")
rec.ActiveConnection=con
rec.Source="selectavg(评分等级)asfs,count(id)asgsfromzwtd_talkwherezwid="&id&"groupbyzwid"
rec.CursorType=1
rec.LockType=1
rec.Open
rec.MoveFirst
average=int(rec.Fields("fs").Value)
sl=rec.Fields("gs").Value
rec.Close
setrec=nothing
con.Close
con.Open"user","user","user"
sql="updatezwtd_infoset评分等级="&average&"where&id
con.Execute(sql)
sql="updatezwtd_infoset评论条数="&sl&"where&id
con.Execute(sql)
con.Close
setcon=nothing
Response.Write("成功提交!")
Response.End
%>


六.其它应注意的问题
以上各项操作可以将实现一个作文网站的基本自动化管理。但其中还缺乏管理者的有效管理,管理者要删除内容不好的作文或评论还必须打开数据库文件,进行操作。当然也可利用ASP文件建全一个管理页面,因这不是本文要点所以,不再说明。另处栏目还要注意网络安全问题。其方法可参见其它有关ASP技术文章。
七.小结
综上所述,利用ASP技术实现网站作文栏目的自动化管理是一项的有效方法。这种组建的方式,可以应用于网站的其它栏目。又由于ASP编程所用的Vbscript与Jscript语言较其它语言较简洁、易操作、功能较强非常适合教师用来开发网站。
另外在此感谢四川大学唐常杰教授对我的指导。

相关文档