首页 | 互联网 | IT动态 | Cisco | Windows | Linux | Java | .Net | Oracle | 华为 | 存储世界 | 服务器 | 网络设备 | IDC | 安全 | 求职招聘
IT培训 | 数字网校 | 技术专题 | 电子书下载 | 教学视频 | 网页设计 | 平面设计 | 解决方案 | 直播室 | 虚拟考场 | 搜索 | 博客 | 沙龙 | 论坛
中国IT实验室Dotnet频道
中国IT教育
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> ASP.NET >> 文章正文

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

文章来源中国IT实验室收集整理 作者佚名 更新时间2008-5-8 保存本文保存本文 推荐给好友推荐给好友 收藏本页收藏本页

    PollWriter.asp先检查表单变量,包括调查项目名字PollName以及(可选的)字符串LinkText和LinkURL,LinkText和LinkURL描述了用户提交其投票结果之后显示的URL。接下来脚本创建并执行从指定调查项目的S_表和A_表提取记录集的SQL命令,然后遍历这个记录集格式化单选按钮、复选框以及其它提示文本,最后输出该调查项目的HTML表单。表单中问题的名字为“CHOICE”加问题序号。当这个表单被提交的时,它的ACTION将装载PollMaker.asp(这里的函数saveResponses()从CHOICE表单元素提取投票结果,然后更新数据库,代码略)。表单中的其它隐藏变量用于将PollName、OpType、LinkText、LinkURL传递给PollMaker.asp:


   < %
   \' 从S_表和A_表读取调查项目定义
   Set objConn = Server.CreateObject(\"ADODB.Connection\")
   objConn.Open \"poll\"
   SQLCommand = \"Select \" & SName & \".ID, \" & _
    \"IType, NoOpinion, Stem, ALabel, Answer FROM \" & SName & \"LEFT JOIN \" & _
    AName & \" ON \" & SName & \".ID = \" & AName & \".ID ORDER BY \" & _
    SName & \".ID, ALabel\"
    Set objRS = objConn.Execute(SQLCommand)
    \' 向调查表单输出各个问题
    Do While Not objRS.EOF
    Response.Write(\"< TR>< TD>\" & objRS(\"ID\") & \".< TD BGCOLOR=\"\"#ffff00\"\">\" & _
    objRS(\"Stem\"))
    Response.Write(\"< TR>< TD>< TD>\")
    ckNoOpinion = IIf(objRS(\"NoOpinion\") = \"Y\", \"\", \"Checked\")
    noMove = False
    \' 除\"允许复选\",其它各类问题均需检查是否允许不回答问题
    ansName = \"\"\"CHOICE\" & objRS(\"ID\") & \"\"\"\"
    Select Case objRS(\"IType\")
    Case \"1\" \' 是/否
    If ckNoOpinion = \"\" Then
    Response.Write(\" < INPUT TYPE=radio NAME=\" & ansName & _
    \" VALUE=\"\" \"\" Checked>暂不回答 \")
    End If
    Response.Write(\"< INPUT TYPE=radio NAME=\" & ansName & _
    \" VALUE=\"\"A\"\" \" & ckNoOpinion & \">是\")
    Response.Write(\"< INPUT TYPE=radio NAME=\" & ansName & _
    \" VALUE=\"\"B\"\">否\")
    Case \"2\" \' 赞同程度
    ...略...
    Case \"3\" \' 语义区分
    ...略...
    Case \"4\" \' 多项选择
    ...略...
    Case \"5\" \' 允许复选
    ...略...
    End Select
    If NoMove Then
    NoMove = False
    ElseIf Not objRS.EOF Then
    objRS.MoveNext
    End If
   Loop
   %>
   

    PollResult.asp使用与PollWrite.asp同样的SQL命令从A_表(答案)和S_表(问题)提取记录集,接着从对应的R_表读取用户回答结果,用一个二维数组Counts统计投票结果。缺省时结果分析中不包含“没有回答”,如果要包含,则需给出表单变量ShowNoOp并指定其值为True,请参见图4中显示投票结果的URL。


   < %
   \'Globals
   Dim PollName
   Dim Counts() \' 用户回答的统计数组
   Dim nResponses
   Dim N \' 用户回答数量,可能不包含\"没有回答\"选项
   Dim objConn
   Dim objRS
   
   nResponses = 0
   
   Call Main
   
   Sub Main
    Dim likert
    Dim i
    Likert = Array(\"强烈反对\",\"反对\", \"不确定\",\"同意\",\"完全赞成\")
    PollName = Request(\"PollName\")
    ShowNoOp = IIf(UCase(Request(\"ShowNoOp\"))=\"TRUE\", True, False)
    \' 从A_表和S_表读取调查项目定义
    Set objConn = Server.CreateObject(\"ADODB.Connection\")
    objConn.Open \"poll\"
    SName = \"[S_\" & PollName & \"]\"
    AName = \"[A_\" & PollName & \"]\"
   
    If Count() = False Then
    Response.Write(\"< BR>此调查项目没有投票结果\")
    Exit Sub
    End If
    SQLCommand = \"Select \" & SName & \".ID, \" & _
    \"IType, NoOpinion, Stem, ALabel, Answer FROM \" & SName & _
    \"LEFT JOIN \" & AName & \" ON \" & SName & \".ID = \" & AName & _
    \".ID ORDER BY \" & SName & \".ID, ALabel\"
    Set objRS = objConn.Execute(SQLCommand)
   
    Response.Write(\"< TABLE>\")
    ... 输出表单标题,略 ...
 
     Response.Write(\"< TR>< TD COLSPAN=5> \")
    itemIx = 0 \' 问题序号
    Do While Not objRS.EOF
    IType = objRS(\"IType\")
    NoMove = False
    N = IIf(ShowNoOp Or IType=5, nResponses, nResponses-Counts(itemIx, 0))
    N = IIf(N=0, 1, N)
    Response.Write(\"< TR>< TH ALIGN=right>\" & objRS(\"ID\") & _
    \".< TH ALIGN=left COLSPAN=4 BGCOLOR=\"\"#ffff00\"\">\" & objRS(\"Stem\"))
    Response.Write(\"< TR>< TD>\" & _
    \"< TD ALIGN=center WIDTH=300 BGCOLOR=\"\"#ffff00\"\">回答\" & _
    \"< TD ALIGN=right BGCOLOR=\"\"#ffff00\"\">N\" & _
    \"< TD ALIGN=right BGCOLOR=\"\"#ffff00\"\">%\" & _
    \"< TD WIDTH=200 BGCOLOR=\"\"#ffff00\"\"> \")
    If ShowNoOp And objRS(\"NoOpinion\") = \"Y\" And IType < > \"5\" Then
    Call writeResponse(\"没有回答\", itemIx, 0, \"#ff0000\")
    End If
    Select Case IType
    Case \"1\" \'是/否
    Call writeResponse(\"是\", itemIx, 1, \"#00ff00\")
    Call writeResponse(\"否\", itemIx, 2, \"#00ff00\")
    Case \"2\" \'赞同程度
    ...略...
    Case \"3\" \'语义区别
    ...略...
    Case \"4\" \'多项选择
    ...略...
    Case \"5\" \' 允许复选
    ...略...

[1] [2] 下一页  

【责编:Ken】

中国IT教育

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

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