日期:2011-11-19  浏览次数:20935 次

纲要
  
      本文介绍一个用 ASP 技术实现的 WEB 调查系统(也称为投票系统)的实现,该系统支持基于浏览器的调查项目创建与维护、调查表单的动态生成以及投票结果分析。
   目录
  
  一、系统概貌
  二、调查项目的创建和维护
  三、调查表单的生成与结果分析(附源程序)
  
  
  一、系统概貌
  作 者 : 仙人掌工作室
  
     本文所介绍的 WEB 调查系统(或称为投票系统)支持基于浏览器的调查项目创建、管理与结果分析。调查项目及其下属各个问题的定义、用户投票结果存储于 Access 数据库,调查表单由脚本动态生成。用户通过单选按钮或复选框回答问题,表单提交之后服务器在同一个数据库中记录调查结果。通过 WEB 调查系统的分析模块,用户可以立即获知任意调查项目的投票结果。
  
     整个系统以数据库为中心,因此,本文也可以看成是在 ASP 应用中维护数据库的一个演示,如表的创建、删除,以及基于浏览器的数据库记录创建、删除、编辑,这些操作均由服务器动态生成的 SQL 命令、 JavaScript 脚本实现。
  
     一、系统概貌
  
     ㈠系统构成
  
     从功能上看,整个系统可以分成四个部分,分别对应于图 1 到图 4 四个页面。其中图 1 和图 2 是系统的维护界面。图 1 所示的页面用于创建调查项目、删除调查项目或其投票结果,以及指定调查项目名字和用户密码访问图 2 所示的调查项目编辑器。
  
     【图 1 WEBPollSystem_1.gif 】
  
  
  
     图 2 所示页面用于编辑指定调查项目所属各个问题,直接提供的功能包括创建新问题、删除问题、更改问题的提示文本以及浏览问题等,综合运用上述功能可以重新定义问题类型。本系统支持 5 种问题类型:是 / 否(即只需回答“是”或“否”的问题),赞同程度(系统为这类问题预定义从“强烈反对”到“完全赞同”共 5 个等级的答案)、自定义语义的等级区分(预定义 7 个等级的答案,但具体含义由用户定义),自定义提示文本的多个选项(选项数量以及各个选项提示文本均由用户指定,每个问题只能选择一个答案),允许复选的多个选项(选项数量以及各个选项提示文本也由用户指定,允许选择多个答案),后面两种问题类型允许最多 26 个选项。图 2 中间(底部提示行的上面)所显示的即为第 4 种问题类型(多个选项)的编辑界面。
  
     【图 2 WEBPollSystem_2.gif 】
  
  
  
     图 3 是 WEB 用户所见到的调查表单。图中显示的 4 个问题依次对应于前面 1 — 4 种问题类型,第 5 种问题类型(允许复选)要求用复选框回答问题,图中没有显示出来。用户在选择结束后只要单击页面底部的“提交”按钮即可。
  
     【图 3 WEBPollSystem_3.gif 】
  
  
  
     图 4 是投票结果的统计分析页面。
  
     【图 4 WEBPollSystem_4.gif 】
  
  
  
     Access 数据库 Poll.mdb 的 ODBC 系统 DSN 名为“ POLL ”。每一个调查项目都需要下表所定义的三个表,它们在创建新的调查项目时由 ASP 脚本自动创建,其维护工作也可以通过浏览器进行。这三个表的名字分别以 S_ 、 A_ 、和 R_ 为前缀,后面加上调查项目的名字,分别用来保存调查项目的问题和问题标识( Stem )、答案类型( Answer )、用户回答( Response )。
  
  问题表 (S_)
  字段名称 类型 大小 索引 说明
  ID Text 3 Yes 主关键字
  Type Text 1 No
  NoOpinion Text 1 No
  Stem Text 200 No
  答案表 (A_)
  字段名称 类型 大小 索引 说明
  ID Text 3 Yes 主关键字
  ALabel Text 1 Yes 主关键字
  Answer Text 150 No
  用户投票结果表 (R_)
  字段名称 类型 大小 索引 说明
  Responses Text 100 No
  
  
     Startup.html 负责生成系统维护页面的帧结构; PollMaker.asp 负责生成图 1 页面并支持从该页面启动的其它操作(调查项目的创建、删除、投票结果清除等); ItemMaker.asp 负责生成图 2 页面,支持调查项目所属问题的定义、编辑、删除。调查表单(图 3 )由 PollWriter.asp 生成,投票结果的分析(图 4 )由 PollResult.asp 实现。整个调查系统的工作以数据库为中心: PollMaker.asp 和 ItemMaker.asp 需要创建、删除、修改 poll.mdb 中定义调查项目的各个表; PollWriter.asp 从 S_ 和 A_ 表生成调查表单;当用户提交调查表单时 PollMaker.asp 中的一个函数将投票结果写入对应的 R_ 表; PollResult.asp 联合 S_ 表和 A_ 表中的文本数据以及 R_ 表中的投票结果,生成当前调查项目的结果统计图表。
  
     ㈡如何创建和编辑调查项目
  
     在正确安装 WEB 调查系统之后(请参见本文所附源代码中的安装说明),就可以用浏览器打开 Startup.html ,出现图 1 所示的身份验证页面。下拉列表框列出了当前在 Poll.mdb 中定义的所有调查项目。如果要创建一个新的调查项目,必须先在列表框中选择“ NEW POLL ”,然后在列表框的右边输入新调查项目的名字,在密码输入框输入密码(缺省为“ WEBPOLL ”,大小写均可),最后单击“创建 / 编辑调查项目”按钮。要删除某个调查项目已有的结果记录,或将调查结果与调查项目本身一起删除,分别使用“删除调查结果”或“删除当前调查项目”按钮。
  
     创建或编辑调查项目所属的问题都在图 2 所示的页面进行。在创建一个新的问题之前,先应该选择合适的问题类型(页面上端的单选按钮);对于“多个选项”或“允许复选”这两种问题类型,还必须指定所提供选项的数量;如果选中了“允许不回答”复选框,则除了“允许复选”之外的所有其它类型问题都将附加一个“暂不回答”选项(单选按钮)。在做好上面这些选择之后,单击“新建”按钮就会出现一个空白的问题定义表单。接下来就可以输入问题提示文本,如必要的话再输入答案中的提示文本,文本中可以嵌入 HTML 标记。如果要改变问题的类型或答案数量,则需先删除原有的问题定义,然后再新建问题。所有的创建和编辑工作都在客户端进行,可以用“保存”按钮将这些修改保存到服务器上的 Poll.mdb 数据库。
  
     图 2 中的问题浏览按钮用来查看当前调查项目中的各个问题,在“转到指定