高校教师与学生的课堂交流时间有限,课后沟通相对较少,导致很多学生遇到问题时无法得到及时有效的指导。学科小专题网站的建立一定程度上解决了这个难题。信息收集是学科小专题网站中非常实用的一个功能,可以帮助教师收集学生的反馈信息,为课堂教学改革提供思路,使之更具针对性和实效性。为此,笔者设计了1个基于ASP+Excel的信息收集系统,整套程序由3个ASP页面和1个Access数据库文件构成,系统结构目录清晰,易读性强,如图1所示。该系统程序简单,学生在网上提交的数据可以以Excel文件的方式记录保存下来,方便教师对信息的编辑管理。
1 表单的应用
表单是实现动态网页的一种直观方式,是实现网页交互的窗口,主要用来收集用户的反馈信息。网页浏览者输入必要的信息后,单击表单上的提交按钮,这些信息就能发送到服务器,服务器端脚本或应用程序对这些信息进行处理后,将请求信息发送回用户,或对该表单内容执行一些操作来进行响应。在网上反馈页面完成各种信息的输入或选择后,单击“提交”按钮,通过服务器端的表单处理程序(CGI)以及客户端的应用程序ASP将信息反馈到服务器端,并处理为可以识别的数据信息,然后存放到数据库中。在Dreamweaver中,插入栏的“表单”面板中包含着各种表单元素,可以快捷地创建表单,其自动生成的代码如下:
<form name=“form1” method=“post” action=
“add.asp” on Submit=“return Check Form(this);”>
<table width=“663” border=“0”>
<tr>
<td width=“657”><label>您的姓名:
<input name=“user_name” type=“text” id=“user_name” value=“” size=“60”>
</label></td>
</tr>
<tr>
<td width=“657”><label>您的联系方式:
<input name=“user_lxfs” type=“text” id=“user_lxfs” value=“” size=“60”>
</label></td>
</tr>
<tr>
<td width=“657”><label>请输入您对本文的看法:
</label></td>
</tr><tr>
<td width=“657”><label>
<textarea name=“user_post” cols=“85” id=
“user_post”></textarea>
</label></td>
</tr>
<tr>
<td align=“center”><label>
<input type=“submit” name=“Submit” value=“提交”>
</label></td>
</tr>
</table>
</form>
以上“文本域”中的名称user_name、user_lxfs、user_post必须输入,否则add.asp文件和Excel.asp文件的应用将会受到影响。完成表单的设计后,还需要定义并调用Check Form函数,以检测表单提交的内容是否符合要求。
<script language=“javascript” type=
“text/javascript”>
function Check Form(formnames){
if(formnames.user_name.value==‘)
{
alert(“姓名不能为空!”);
formnames.user_name.focus();
return false;
}
if(formnames.user_lxfs.value==’)
{
alert(“联系方式不能为空!”);
formnames.user_lxfs.focus();
return false;
}
if(formnames.user_post.value==‘)
{
alert(“具体表达的信息内容不能为空!”);
formnames.user_post.focus();
return false;
}
return true;
}
</script>
2 创建数据库
在本程序中,使用Access 2003创建反馈页面的数据库文件。具体的操作步骤包括:①运行Access2003,依次单击“文件→菜单”,在右侧的“新建任务”任务窗格中,单击“空数据库”项,在弹出的“文件新建数据库”对话框中,将数据库文件命名为book.mdb.②单击“创建按钮”,返回Access窗口,在列表中双击选择“使用设计器创建表”项,在出现的“表1:表”窗口中,在“字段名称”的第一行输入“ID”,在下拉列表中选择“自动编号”并设置为主键。③在“字段名称”的第2行单元格中输入“name”,在“数据类型”下拉列表中选择“文本”项,在下方的“常规”标签页中,设置“字段大小”为“20”,在“必填字段”中选择“是”,在“允许空字符串”中选择“否”,其余项保留默认设置。④分别在“字段名称”的第3行、第4行单元格中输入“lxfs”、“Content”,在“数据类型”中选择相应的类型并对属性进行设置,最后单击“文件→保存”按钮,在弹出的“另存为”对话框中输入当前表的名称,如guestbook.完成后的字段如图2所示。
3 数据库的连接
为页面连接数据库是实现服务器行为的重要前提。创建一个可以连接数据库的文件 add.asp,实现两个功能:index.asp 页面与数据库文件 book.mdb的连接;book.mdb 与 Excel 文件的连接。
<%,
ip = Replace(Request.Server Variables(“HTTP_X_
FORWARDED_FOR”),“’”,“”)
If ip=Empty Then ip=Replace(Request.Server Vari-
ables(“REMOTE_ADDR”),“‘”,“”)
set conn=server.createobject(“adodb.connection”)
conn . open “driver = {microsoft access driver
(*.mdb)};dbq=”&server.mappath(“book.mdb”)
name=Request.Form(“user_name”)
lxfs=Request.Form(“user_lxfs”)
content=Request.Form(“user_post”)
exec = “insert into gustbook(name ,lxfs ,content ,
ip)values(’”&name&“‘ ,’”&lxfs&“‘ ,’”&content&“‘ ,’”&ip&“‘)”
conn.execute exec
conn.close
set conn=nothing
response.write “<script language='javascript'>loca-
tion='Excel.asp';</script>”
%,>
以上语句的作用是设置数据库驱动,指定数据库路径及连接到具体的表,向数据库 gustbook 表中写入数据。driver 和(*.mdb)之间要有 1 个空格,数据库文件的路径采用相对路径,相对路径是最适合网站内部链接的路径方式。只要属于同一个站点,即使不在同一个目录下,也可以使用相对路径方式,方便与目 录 的 自 适 应 .其 中 ,name = Request.Form(“user_name”) 、lxfs = Request.Form (“user_lxfs”) 、content=Request.Form(“user_post”)这 3 句定义了变量取值的来源,即从表单的不同文本框中取值,用于调用 Indea.asp 页面中文本域的内容插入到 gustbook表的 name、lxfs、content 字段中(即把变量获得的值插入到数据库文件的 name、lxfs、content 字段中),最后将表单中的提交按钮动作指向 Excel.asp.
4 将数据写入 Excel表
这一步主要实现将数据写入 Excel 表。指定所生成的 Excel 文件存放在同一目录位置,然后自动创建1 个 Excel 文件,在数据库中把希望放到 Excel 中的数据查出来,将 mdb 表的列名写入 Excel,再将 mdb表里的数据写入 Excel,最后指定输出的表名,在结果页面中给出提示信息,并返回跳转到 index.asp 首页面。具体代码如下:
<%,
dim conn
conn = “provider = Microsoft.Jet.OLEDB.4.0 ;Data
Source=” & Server.Map Path(“book.mdb”)
Set cn=Server.Create Object(“ADODB.Connection”)
cn.Open conn
dim rs,sql,filename,fs,myfile,x,link
Set fs = server.Create Object (“scripting.Filesystemob-
ject”)
filename=server.Map Path(“./”)&“/book.xls”
if fs.File Exists(filename)then
fs.Delete File(filename)
end if
set myfile=fs.Create Text File(filename,true)
Set rs=Server.Create Object(“ADODB.Recordset”)
sql=“select name,lxfs,content from gustbook order
by id desc”
rs.Open sql,cn,3,1
if not rs.EOF then
dim str Line,responsestr
str Line=“”
For each x in rs.fields
str Line=str Line & x.name & chr(9)
Next
myfile.writeline str Line
Do while Not rs.EOF
str Line=“”
for each x in rs.Fields
str Line=str Line & x.value & chr(9)
next
myfile.writeline str Line
rs.Move Next
loop
end if
rs.Close
set rs=nothing
cn.close
set cn=nothing
set myfile=nothing
Set fs=Nothing
link=“<A HREF=” & filename & “>Open The Excel
File</a>”
'Response.write link
response.write “<script language='javascript'>location
='index.asp';</script>”
%,>
这样,当浏览者在 index.asp 页面输入必要的信息后,单击“提交”,系统将自动创建 1 个 Excel 文件,并把所输入的信息悉数显示在 Excel 的单元格内,如图 3、4.若需要重新收集,只需要删除该 Excel文件即可,系统将另建 1 个新的 Excel 文件,可见系统具有一定的智能性。
5 结 语
本文设计了一套信息收集系统,设计过程简洁,步骤流程清晰,代码简单易行,执行效率和灵活性高,移植性强。从实现效果上看,系统能够完成基于Excel 形式的信息编辑,且信息集中收集在 1 张表中,也方便管理和保存,对后续完成一些统计分析工作非常有利,也可为实现某些特殊的用途带来帮助(如对于有保密需求的信息收集,不需要注册、不方便实名提交信息的收集等)。从学科小专题网站的功能需求来说,基本可以满足信息收集的任务,甚至可以实现量身定制功能,能够为教师提供便利,对教学研究和网站建设都具有很好的促进作用。
参考文献
[1] 纪宏伟。 一种简单易行的投稿查询系统的设计与实现[J]. 电脑与信息技术,2014,22(6):57-59.
[2] 纪宏伟,朱亚林。 基于 asp 和 Excel 的信息收集实例[EB/OL].
[3] 求索屋。 基于 asp 和 Excel 的学生成绩查询系统实例[EB/OL].
[4] 徐洪霞。 网站设计必学的 66 个实例[M]. 上海:上海科学技术出版社,2008:341-343.
[5] 纪宏伟。 校园网站建设中网页限制查看的方法 [J].青海师范大学学报:自然科学版,2014,30(1):23-27.
[6] 纪宏伟。 基于 Jmail 组件的网站访客邮件提醒程序的实践研究[J]. 西安文理学院学报:自然科学版,2014,17(2):68-73.