首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Dotnet频道
中国IT教育
Google
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> ASP.NET >> 正文

用ASP技术开发WEB调查投票系统


    End Select
    Response.Write(\"< TR>< TD>< TD ALIGN=right>总回答次数: \" & _
    \"< TD ALIGN=right>\" & N & \"< TD>< TD>\")
    Response.Write(\"< TR>< TD COLSPAN=5> \")
    If NoMove Then
    NoMove = False
    ElseIf Not objRS.EOF Then
    objRS.MoveNext
    End If
    itemIx = itemIx + 1
    Loop
    Response.Write(\"< /TABLE>\")
   End Sub \'Main
   
   \' 统计投票次数
   Function Count()
    Dim i, j
   
    RName = \"[R_\" & PollName & \"]\"
    Set objRS = objConn.Execute(\"SELECT Responses FROM \" & RName)
    If objRS.BOF Then \'没有投票记录
    Exit Function
    End If
    nAnswers = Len(objRS(\"Responses\")) \' 投票结果字符串的字符数
    ReDim Counts(nAnswers-1, 26) \' 允许 \' \'+ A 到 Z
    For i = 0 To nAnswers-1 \' 初始化统计数组
    For j = 0 To 26
    Counts(i, j) = 0
    Next
    Next
    nResponses = 0
    Do While Not objRS.EOF
    Responses = objRS(\"Responses\")
    nResponses = nResponses + 1
    nAnsThis = Len(Responses) \' 当前回答字符串中的字符数
    If nAnsThis < > nAnswers Then
    Count = False
    Exit Function
    End If
    For i = 0 To nAnsThis-1 \' 统计各个问题的投票数
    respLtr = Mid(Responses, i+1, 1)
    If respLtr = \" \" Then
    Counts(i,0) = Counts(i,0) + 1
    Else
    respIx = Asc(respLtr) - 64 \' 将字母转换为索引值
    If respIx > 0 And respIx < 27 Then
    Counts(i,respIx) = Counts(i,respIx) + 1
    End If
    End If
    Next
    objRS.MoveNext
    Loop
    objRS.Close
    Count = True
   End Function \'Count()
   
   \'输出一个表格行
   Sub writeResponse(respStr, itemIx, ansIx, barColor)
    Response.Write(\"< TR>< TD>< TD>\" & respStr & _
    \"< TD ALIGN=right>\" & Counts(itemIx, ansIx) & \"< TD ALIGN=right>\" & _
    FormatNumber(100*Counts(itemIx, ansIx)/N, 1) & \"< TD>\")
    Call writeBar(Counts(itemIx, ansIx)/N, barColor)
   End Sub \'writeResponse()
   
   \' 用嵌套表格的背景色显示统计直方图
   Sub writeBar(percent, barColor)
    Response.Write(\"< TABLE CELLSPACING=0 CELLPADDING=0 WIDTH=\"\"\" & _
    200*percent & \"\"\">< TR>< TD BGCOLOR=\"\"\" & barColor & \"\"\">\" & _
    IIf(percent>0, \" \", \"\") & \"< /TD>< /TABLE>\")
   End Sub \'writeBar()
   ...其它辅助函数,略...
   %>
 
    其它说明

   ⑴ 示例代码假定ASP脚本放在服务器的/Scripts目录下。如果放到了另外一个目录下,则需修改Startup.html中PollMaker.asp文件的路径。所有的ASP文件必须在同一目录下。

   ⑵ 示例代码中的Poll.mdb是一个ACCESS数据库,应该为它创建一个ODBC名字,即用Windows控制面板中的“32位ODBC数据源”为该数据库创建名为“POLL”的系统DSN。整个系统只需一个数据库即可,这和调查项目的多少无关。

   ⑶ 支持ItemMaker.asp编辑操作的JavaScript函数位于最上面的帧ControlFrame,但有时候被中间帧ItemFrame中的事件调用。因此,这些函数的引用必须包含文档模型的层次关系,如:parent.ControlFrame.saveItem()。如果不是通过Startup.html,而是直接打开ItemMaker.asp,由于帧结构不存在会出现JavaScript错误。

   ⑷ 在本实现中,当投票结果保存到R_表之后仍旧允许修改调查项目定义。这使得调查项目启用之后还可以改正提示文本上的问题,但也带来潜在的问题,即当问题被创建、删除或改变次序之后,它与已有的投票结果之间可能出现错误的对应关系。因此,对于已有投票结果的调查项目,执行上述操作之前应该使用图1中的“删除调查结果”按钮删除已有结果。

   ⑸ 从其它地方引用调查表单(PollWriter.asp)或结果分析页面(PollResult.asp)时,必须提供它们所要用到的表单变量(如PollName、ShowNoOp、LinkText、LinkURL)。打开调查表单的完整URL格式为:

   http://ygroup01/scripts/PollWriter.asp?PollName=Test+Poll+1&LinkText=Return+to+Home+Page&LinkURL=/

   打开调查结果分析页面的完整URL格式为:

   http://ygroup01/Scripts/PollResult.asp?PollName=Test+poll+1&ShowNoOp=True

   ⑹ 本文只提供了5种问题类型,在实际应用场合可能需要定义其它的问题类型。在已有的框架内增加新的问题类型需要扩展(修改)ItemMaker.asp、PollWriter.asp、PollResult.asp这三个文件。

   ⑺ 如果要对投票结果作更为复杂的分析,可以使用那些支持从Access导入数据的标准统计软件包,也可以先将Access数据库导出为文本格式,然后再导入到其它软件。

上一页  [1] [2] 

【责编:Ken】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
 社区讨论
 博客论点
 频道精选
 Dotnet频道相关导航