明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

用ASP學(xué)做一個(gè)在線調(diào)查

[摘要]關(guān)于在線調(diào)查大家一定不會(huì)陌生吧,給出一個(gè)問題和數(shù)個(gè)答案,讓用戶填寫,然后把結(jié)果保存到數(shù)據(jù)庫,自動(dòng)進(jìn)行統(tǒng)計(jì),最后給出個(gè)統(tǒng)計(jì)的圖。這期的跟我學(xué)做就來做一個(gè)在線調(diào)查系統(tǒng)。   一、功能設(shè)計(jì)  這么簡單的系...

  關(guān)于在線調(diào)查大家一定不會(huì)陌生吧,給出一個(gè)問題和數(shù)個(gè)答案,讓用戶填寫,然后把結(jié)果保存到數(shù)據(jù)庫,自動(dòng)進(jìn)行統(tǒng)計(jì),最后給出個(gè)統(tǒng)計(jì)的圖。這期的跟我學(xué)做就來做一個(gè)在線調(diào)查系統(tǒng)。

  一、功能設(shè)計(jì)

  這么簡單的系統(tǒng)也要做功能設(shè)計(jì)?有的人也許會(huì)覺得奇怪,不過話說回來不管怎么樣的系統(tǒng),先做功能設(shè)計(jì)總是能對系統(tǒng)有個(gè)比較清析的了解。讓我們來看看在線調(diào)查的功能吧;镜墓δ苌厦嬉呀(jīng)說了,就是要給出一個(gè)問題和數(shù)個(gè)答案,然后統(tǒng)計(jì),最后給出圖。在這個(gè)基礎(chǔ)上,我們可以考慮給一個(gè)調(diào)查加上一個(gè)時(shí)間段(有效期),在這個(gè)時(shí)間段里調(diào)查是有效的,過了這段時(shí)間就自動(dòng)結(jié)束這個(gè)調(diào)查。另外,我們可以指定一個(gè)用戶一次只能提交一次答案。如果你要限制得更多,可以指定一個(gè)IP只能提交一次答案,不過,這樣可能一個(gè)網(wǎng)吧里的人只能有一個(gè)提交了。對于調(diào)查里的問題,有些可能是單選題,而有些可能是多選 題。最后來說說統(tǒng)計(jì)的圖,在統(tǒng)計(jì)圖里要給出答案、每個(gè)答案的投票人數(shù),并要顯示出每個(gè)答案投票數(shù)所占的比例。一般用橫的圖就可以了,也比較容易實(shí)現(xiàn),當(dāng)然,如果你要改成豎的,也可以。

  現(xiàn)在根據(jù)上面總結(jié)出在線調(diào)查的功能如下:

  1、數(shù)據(jù)保存在ACCESS 2000 數(shù)據(jù)庫中;

  2、每個(gè)用戶一次訪問可以投票一次

  3、給出每個(gè)調(diào)查的統(tǒng)計(jì)情況,用統(tǒng)計(jì)圖來顯示

  4、每個(gè)調(diào)查都有個(gè)有效期,過期后自動(dòng)結(jié)束。結(jié)束了的調(diào)查只能查看結(jié)果。

  5、管理員可以增加調(diào)查,修改調(diào)查的答案(增加、修改、刪除,修改類型)。

  6、對于已經(jīng)結(jié)束的調(diào)查,管理員只能刪除調(diào)查,而不能修改答案。

  7、只有一個(gè)管理員(單用戶)

  二、數(shù)據(jù)庫設(shè)計(jì)

  現(xiàn)在來設(shè)計(jì)數(shù)據(jù)庫,根據(jù)功能要求,至少要有三個(gè)表,一是管理員表,二是調(diào)查表,三是調(diào)查結(jié)果表。數(shù)據(jù)庫文件名為survey.mdb 可以改為.asp 如果改的話,請?jiān)贏SP程序中作相應(yīng)的修改。

表一、 管理員表 表名: manage
-----------------------------------------------------------------
字段 類型 長度 說明
-----------------------------------------------------------------
manage_id 自動(dòng)編號(hào) - 在這里沒用到,日后擴(kuò)展用
manage_username 文本 15 管理員用戶名
manage_password 文本 15 管理員密碼
-----------------------------------------------------------------

  建立manage表后加入一條新記錄,填入你的管理員用戶名和密碼,在這里填入的是xmxoxo

表二、 調(diào)查表 表名: survey
-----------------------------------------------------------------
字段 類型 長度 說明
-----------------------------------------------------------------
survey_id 自動(dòng)編號(hào) - 遞增、主鍵、有索引無重復(fù)
survey_question 文本 255 調(diào)查問題
survey_type 是否 - 類型,否:單選 是:多選
survey_stime 日期 - 長日期,開始時(shí)間
survey_etime 日期 - 長日期,結(jié)束時(shí)間
-----------------------------------------------------------------

  表三、調(diào)查結(jié)束表 表名:survey_vote

-----------------------------------------------------------------
字段 類型 長度 說明
-----------------------------------------------------------------
vote_no 自動(dòng)編號(hào) - 遞增、主鍵、有索引無重復(fù)
vote_id 長整型 - 有索引有重復(fù),小數(shù)位0
vote_answer 文本 100 調(diào)查答案
vote_count 長整型 - 投票數(shù)
-----------------------------------------------------------------

  其中,survey_vote表和survey表的id字段有多對一的關(guān)系。并不一定要建立這個(gè)關(guān)系,但是建立關(guān)系會(huì)使思路更明確。

  三、包含文件

  這里所要用到的函數(shù)并不多,主要是對數(shù)據(jù)庫進(jìn)行操作的,如果要防止輸入時(shí)的HTML等代碼,直接用server.htmlencode進(jìn)行處理就可以了,所以不需要一個(gè)專門的函數(shù)來處理。我們可以沿用上一篇《跟我學(xué)》系列《跟我學(xué)做樹型菜單》里的包含文件。

  共用函數(shù)文件,文件名:inc.asp

<%
''*******************************************************************
''通用數(shù)據(jù)庫ASP函數(shù)
''*******************************************************************
''數(shù)據(jù)庫常數(shù)
databasename="survey.mdb" ''數(shù)據(jù)庫名,如果改名的話,在這里修改就行了
''*******************************************************************
''打開數(shù)據(jù)庫
sub opendb(connect)
set connect=server.CreateObject("ADODB.connection")
connect.ConnectionString="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &_
server.MapPath(databasename)
connect.Open strconn
end sub
''*******************************************************************
''關(guān)閉數(shù)據(jù)庫
sub closedb(connect)
connect.close
set connect=nothing
end sub
''*******************************************************************
''打開單個(gè)表讀
sub opentable(connect,tbname,myrs)
set myrs=server.createobject("ADODB.recordset")
rssql="select * from " & tbname
myrs.open rssql,connect,1,1
end sub
''*******************************************************************
''關(guān)閉臨時(shí)表
sub closetable(rs)
rs.close
set rs=nothing
end sub
''*******************************************************************
''查詢數(shù)據(jù)庫
sub searchtable(connect,sql,rs)
set rs=server.createobject("ADODB.recordset")
rs.open sql,connect,1,1
end sub

''*******************************************************************
''查詢并更改數(shù)據(jù)庫
sub changetable(connect,sql,rs)
set rs=server.createobject("ADODB.recordset")
rs.open sql,connect,1,3
end sub

''*******************************************************************
''顯示信息 用于調(diào)試
Sub w(msg)
response.write msg
end sub

''*******************************************************************
''程序中斷 用于調(diào)試
sub userstop()
response.end
end sub
%> 

  四、文件設(shè)計(jì)

  按照傳統(tǒng)的思路,我們總是把在線調(diào)查設(shè)計(jì)成三個(gè)部份,一、是顯示調(diào)查表;二、是顯示調(diào)查統(tǒng)計(jì)結(jié)果;三是后臺(tái)管理。而在實(shí)際應(yīng)用中,我們會(huì)發(fā)現(xiàn),顯示調(diào)查表往往是在某個(gè)網(wǎng)頁中的,顯示結(jié)果一般也是彈出一個(gè)窗口來。后臺(tái)管理則是通過另一個(gè)鏈接或者登錄表單轉(zhuǎn)向到的。為了更方便地使用在線調(diào)查,我們把顯示調(diào)查表部分寫成一個(gè)JS腳本,讓需要顯示調(diào)查表的網(wǎng)頁通過引用腳本的方式來自由地調(diào)用它。好,看看文件設(shè)計(jì)

  1、inc.asp 包含文件。主要的函數(shù)庫

  2、surveycode.asp 顯示調(diào)查表程序。在主網(wǎng)頁中使用腳本來調(diào)用它。

  3、survey.asp 調(diào)查表列表程序。列出所有調(diào)查的狀態(tài)。

  4、survey_vote.asp 顯示調(diào)查統(tǒng)計(jì)結(jié)果程序。帶上參數(shù)表示調(diào)查的問題。

  5、survey_manage.asp 管理程序。

  在這里,我們略過了頁面設(shè)計(jì),因?yàn)轱L(fēng)格設(shè)計(jì)不是我們所要說的內(nèi)容,所以關(guān)于網(wǎng)頁的風(fēng)格,布局,CSS 等等,請大家自己設(shè)計(jì)。

  五、文件流程

  先寫出程序的主要流程,可以比較方便于日后修改和擴(kuò)展、移植。在這里比較重要的是要在程序中寫哪些子程序,如何安排這些子程序。

  1、surveycode.asp 顯示調(diào)查表單

<%
''獲取querystring參數(shù),id 表示調(diào)查編號(hào)
''判斷參數(shù)正確性
''判斷調(diào)查是否在有效期中。
''讀取調(diào)查問題、類型
''輸出調(diào)查答案,并生成調(diào)查表單
''關(guān)閉數(shù)據(jù)庫及表
%>

  2、survey.asp 顯示所有調(diào)查狀態(tài)

<%
''讀取數(shù)據(jù)庫
%>
<html>
''顯示所有調(diào)查狀態(tài),并加入鏈接
</html> 

  3、survey_vote.asp 顯示統(tǒng)計(jì)結(jié)果。

  這里有兩個(gè)功能,一是沒有提交的顯示,二是提交了答案后進(jìn)行統(tǒng)計(jì),然后顯示結(jié)果。如果不帶參數(shù),就是第一種方式。也可以分為兩個(gè)文件來完成。

<%
''獲取參數(shù)。id 表示調(diào)查編號(hào) 所有數(shù)據(jù)來自form
''判斷是否有參數(shù),有則先進(jìn)行統(tǒng)計(jì)
''沒有則直接顯示
''統(tǒng)計(jì)子程序
%>
<html>
''顯示子程序
</html>

  4、survey_manage.asp 管理程序。

  管理部份比較復(fù)雜,要實(shí)現(xiàn)較多的功能。先來列一下管理的功能:

  1)管理員登錄。只有登錄后才能進(jìn)行管理

  2)退出登錄。完成管理后安全退出。

  對調(diào)查的管理有:

  3)增加一個(gè)調(diào)查。同時(shí)要增加調(diào)查答案

  4)修改一個(gè)調(diào)查。修改內(nèi)容,時(shí)間,類型,調(diào)查答案的內(nèi)容、增加、刪除

  5)刪除一個(gè)調(diào)查。不能刪除正在進(jìn)行的調(diào)查。

  針對這些功能,來設(shè)計(jì)它的流程

<%
''獲取參數(shù)。action表示動(dòng)作,分別對應(yīng)上面的功能。
''根據(jù)動(dòng)作來轉(zhuǎn)向相應(yīng)的子程序
''登錄子程序
''退出登錄子程序
''執(zhí)行增加調(diào)查問題子程序
''執(zhí)行增加調(diào)查答案子程序
''執(zhí)行修改調(diào)查子程序 問題和答案一起修改
''執(zhí)行刪除調(diào)查問題子程序
''執(zhí)行刪除調(diào)查答案子程序
<html>
<%
''判斷是否登錄,沒有則顯示登錄表單
''根據(jù)動(dòng)作顯示相應(yīng)表單
''顯示所有調(diào)查子程序
''顯示單個(gè)調(diào)查子程序。問題和答案一起顯示
''顯示增加調(diào)查子程序。
''顯示登錄表單
%>
</html> 

  六、代碼編寫

  做好了流程設(shè)計(jì)后,寫代碼就比較有條理了。讓我們從簡單的開始。在編寫代碼
之前,我們要先在數(shù)據(jù)庫里輸入一些記錄,以便做測試。先加入一條調(diào)查問題,和幾個(gè)
調(diào)查答案,并手工輸入一些統(tǒng)計(jì)信息。

 我們先來寫顯示調(diào)查表單的surveycode.asp 這個(gè)文件要在其它頁面中被調(diào)用,所以我們寫成JS和VBS混用的方式。調(diào)用的時(shí)候可以把它放在某個(gè)表格中,用下面的語句:

<SCRIPT Language="JavaScript" SRC="surveycode.asp?id=1"></SCRIPT>

  按照上面的流程,在顯示表單前,先要判斷一下調(diào)查是否存在,是否在進(jìn)行中。另外,在表單中要提交一個(gè)隱藏的參數(shù),來表示調(diào)查的問題編號(hào)(id),答案提交的時(shí)候,提交的是答案的編號(hào)vote_no

  文件名 surveycode.asp

<!--#include file="inc.asp" -->
<%
id=request.querystring("id")
if id<>"" then ''如果有參數(shù)
opendb my ''聯(lián)接數(shù)據(jù)庫
sql="select * from survey where survey_id="& id ''查詢語句
searchtable my,sql,rs ''查詢數(shù)據(jù)庫
if not rs.eof then ''如果有這個(gè)調(diào)查記錄
question=rs("survey_question") ''讀出問題
surveytype=rs("survey_type") ''讀出答案類型
stime=rs("survey_stime") ''讀出開始時(shí)間
etime=rs("survey_etime") ''讀出結(jié)束時(shí)間
closetable rs ''關(guān)閉表
if stime<now() and etime>now() then ''如果調(diào)查正在進(jìn)行中
''下面輸出調(diào)查表單
''先輸出表單和問題,表單提交到survey_vote.asp
%>
document.write("<form action=''survey_vote.asp'' target=''_blank'' method=''post''>");
document.write("<table border=''1'' cellpadding=''2'' cellspacing=0'' bordercolorligh=''#000000''");
document.write(" bordercolordark=''#ffffff'' width=''100%'' align=''center''><tbody>");
document.write("<tr><td colspan=''2'' align=''center''><b><%=server.htmlencode(question)%></b></td></tr>");
<%
sql="select vote_no,vote_answer from survey_vote where vote_id="&id ''查詢答案的SQL
searchtable my,sql,rs ''執(zhí)行查詢
if not rs.eof then ''如果有答案,就輸出
for i=1 to rs.recordcount
%>
document.write("<tr><td align=''right''><input name=''res'' type=''");
<%
if surveytype then ''判斷類型,顯示單選或者多選
%>
document.write("checkbox");
<%else%>
document.write("radio");
<%end if ''下面這句輸出答案的文字和提交的值(vote_no)%>
document.write("'' value=<%=rs("vote_no")%>></td><td><%=rs("vote_answer")%></td></tr>");
<%
rs.movenext
next
''下面幾句輸出一個(gè)隱藏的參數(shù),傳遞問題編號(hào)(id)
''并用一個(gè)JS函數(shù)來定義點(diǎn)擊查看后的鏈接
%>
document.write("<tr><td colspan=''2'' align=''center''><input type=''hidden'' name=''id'' value=''<%=id%>''>");
document.write("<input type=''submit'' class=button value=''投票''> ");
document.write("<input type=button class=button value=''查看'' onclick=''jump(<%=id%>)''>");
document.write("</td></tr></tbody></table></form>");
function jump(id){
window.open("survey_vote.asp?id="+id,"survey")
}
<%
end if
end if
end if
closetable rs
closedb my
end if
%>

  在surveycode.asp完成后,我們實(shí)現(xiàn)上已經(jīng)確定了以下幾點(diǎn):

  1、在survey_vote.asp中,如果querystring參數(shù)id有值,則是查看結(jié)果;

  2、在survey_vote.asp中,如果form參數(shù)id有值,則要先進(jìn)行統(tǒng)計(jì);

  3、在survey_vote.asp中,提交來的form參數(shù)res是答案的編號(hào)vote_no;

  七、統(tǒng)計(jì)結(jié)果

  首先我們來完成與surveycode.asp最密切相關(guān)的顯示統(tǒng)計(jì)結(jié)果survey_vote.asp文件。在上一篇的結(jié)尾,我們已經(jīng)說明了在surveycode.asp中確定的一些參數(shù)。

  統(tǒng)計(jì)結(jié)果 survey_vote.asp

<!--#include file="inc.asp" -->
<html>
<head>
<title>調(diào)查統(tǒng)計(jì)結(jié)果</title>
<link rel="stylesheet" href="main.css" type="text/css">
</head>
<body>
<%
''上一句先加入包含文件,引用函數(shù)。
id=request.querystring("id") ''獲取querystring參數(shù)id
opendb my ''連接數(shù)據(jù)庫
if id="" then ''如果沒有,則不是直接看結(jié)果
id=request.form("id") ''獲取form參數(shù)id
if id<>"" then ''如果有值,則是要先統(tǒng)計(jì)
surveycount() ''調(diào)用統(tǒng)計(jì)子程序
end if
end if
if id<>"" then
disp_survey() ''不管是哪種,最后都顯示結(jié)果
end if
closedb my ''關(guān)閉數(shù)據(jù)庫

''-----統(tǒng)計(jì)子程序-----
sub surveycount()
if session("survey_ok")="" then ''如果還沒投票
no=request.form("res") ''得到答案的編號(hào)
if no<>"" then
''定義SQL語句,讓提交的答案數(shù)量+1
sql="update survey_vote set vote_count=vote_count+1 where vote_no= in (" & no &")"
my.execute sql
end if
session("survey_ok")="ok"
end if
end sub
''------------------

''---顯示結(jié)果子程序---
sub disp_survey()

''定義SQL語句,得到調(diào)查的問題
sql="select survey_question from survey where survey_id=" & id
searchtable my,sql,rs ''執(zhí)行查詢
question=rs("survey_question") ''把問題存到question中
closetable rs ''關(guān)閉表
''定義SQL語句,得到答案的數(shù)量總和
sql="select sum(vote_count) as total from survey_vote where vote_id="& id
searchtable my,sql,rs
total=rs("total")
closetable rs ''關(guān)閉表

''定義SQL語句,得到所有的答案文本部份及投票數(shù)
sql="select vote_answer,vote_count from survey_vote where vote_id=" & id
searchtable my,sql,rs ''執(zhí)行查詢
''下面用表格來輸出統(tǒng)計(jì)表
%>
<table width="500" border="1" align="center" cellpadding="2" cellspacing="0"
bordercolorligh="#000000" bordercolordark="#ffffff">
<tr>
<td colspan="4" align="center"><b>調(diào)查統(tǒng)計(jì)結(jié)果</b></td>
</tr>
<tr>
<td colspan="4"><b>調(diào)查問題:<%=question%></b></td>
</tr>
<tr >
<td width="150" align="center" height="20">答案</td>
<td width="150" align="center" height="20">投票率</td>
<td width="100" align="center" height="20">比例</td>
<td width="100" align="center" height="20">票數(shù)</td>
</tr>
<%do while not rs.eof
if total=0 then
percent=0 ''如果沒人投票,則百分比為0
else
percent=int(rs("vote_count")/total*10000)/100 ''計(jì)算百分比
end if
%>
<tr>
<td width="150" align="center"><%=rs("vote_answer")%></td>
<td width="150" align="left">
<table border="0" width="<%=percent%>" bgcolor="#CCCC00" height="10">
<tr>
<td></td>
</tr>
</table>
</td>
<td width="100" align="center"><%=percent%>%</td>
<td width="100" align="center"><%=rs("vote_count")%></td>
</tr>
<%
rs.movenext
loop
%>
<tr>
<td colspan="4"> 至 <%=now()%> 止,共有 <%=total%> 張投票
<a href="javascript:window.close()">關(guān)閉窗口</a>
</td>
</tr>
</table>
<%
closetable rs ''關(guān)閉表
end sub
''------------------
%>
</body>
</html> 

  在顯示投票過程中,我們用session變量survey_ok來表示是否已經(jīng)投過票。另外,這顯示統(tǒng)計(jì)中,引用CSS文件來控制表格的樣式,你們可以根據(jù)自己的要求自己加入。

  八、列出所有調(diào)查的狀態(tài)

  現(xiàn)在我們來完成survey.asp,它的主要任務(wù)是列出所有的調(diào)查狀態(tài),包括:

  1、調(diào)查的問題,鏈接到投票表單頁面(直接寫在本頁中);

  2、調(diào)查的起啟時(shí)間;

  3、調(diào)查的結(jié)束時(shí)間;

  4、調(diào)查的進(jìn)行狀態(tài):未開始、進(jìn)行中、已結(jié)束;

  5、調(diào)查的投票數(shù);

  6、調(diào)查的類型,單選還是多選;

  7、另外給出一個(gè)鏈接查看投票結(jié)果;

  根據(jù)這些要求,查詢相應(yīng)的表就可以了,有些語句,比如得到投票總數(shù),SQL語句其實(shí)在上面的survey_vote.asp中已經(jīng)寫過了。

  列出所有調(diào)查的狀態(tài) survey.asp


<!--#include file="inc.asp" -->
<html>
<head>
<title>在線調(diào)查列表</title>
<link rel="stylesheet" href="main.css" type="text/css">
</head>
<body>
<%
id=request.querystring("id") ''獲取參數(shù)
if id<>"" then ''如果有參數(shù),則顯示這個(gè)調(diào)查表單
response.write "<SCRIPT Language=''JavaScript'' SRC=''surveycode.asp?id="&id&"''></SCRIPT>"
else ''否則調(diào)用子程序顯示狀態(tài)
disstat()
end if

''-----顯示狀態(tài)子程序----
sub disstat()
opendb my ''連接數(shù)據(jù)庫
opentable my,"survey",rs ''直接打開表
''下面用表格顯示每個(gè)記錄
''先顯示表頭
%>
<table width="760" border="1" cellspacing="0" cellpadding="2"
align="center" bordercolorligh="#000000" bordercolordark="#ffffff">
<tr>
<td colspan="8" align="center"><b>在線調(diào)查列表</b></td>
</tr>
<tr >
<td width="50" align="center" height="20">編號(hào)</td>
<td width="200" align="center" height="20">調(diào)查問題</td>
<td width="50" align="center" height="20">類型</td>
<td width="140" align="center" height="20">起啟時(shí)間</td>
<td width="140" align="center" height="20">結(jié)束時(shí)間</td>
<td width="50" align="center" height="20">狀態(tài)</td>
<td width="80" align="center" height="20">已投票數(shù)</td>
<td width="50" align="center" height="20">查看</td>
</tr>
<%
''下面輸出每個(gè)記錄
do while not rs.eof
''先讀出每個(gè)字段
id=rs("survey_id")
question=rs("survey_question")
''讀出類型
if rs("survey_type") then
stype="多選"
else
stype="單選"
end if
stime=rs("survey_stime")
etime=rs("survey_etime")
''判斷狀態(tài)
if now()<stime then
stat="未開始"
else
if now<etime then
stat="進(jìn)行中"
else
stat="已結(jié)束"
end if
end if

''定義SQL語句,得到答案的數(shù)量總和
sql="select sum(vote_count) as total from survey_vote where vote_id="& id
searchtable my,sql,tmprs ''查詢
total=tmprs("total")
closetable tmprs ''關(guān)閉表
''下面輸出一條記錄
%>
<tr >
<td align="center" height="20"><%=id%></td>
<td height="20">
<a href="survey.asp?id=<%=id%>"><%=question%></a>
</td>
<td align="center" height="20"><%=stype%></td>
<td align="center" height="20"><%=stime%></td>
<td align="center" height="20"><%=etime%></td>
<td align="center" height="20"><%=stat%></td>
<td align="center" height="20"><%=total%></td>
<td align="center" height="20">
<a href="survey_vote.asp?id=<%=id%>" target="_blank">查看</a>
</td>
</tr>
<%
rs.movenext ''移動(dòng)到下一條,循環(huán)
loop
%>
</table>
<%
closetable rs ''關(guān)閉表
closedb my ''關(guān)閉數(shù)據(jù)庫
end sub
''----------------------
%>
</body>
</html>
 

  九、后臺(tái)管理

  在后臺(tái)管理頁面survey_manage.asp中,前面我們已經(jīng)列出來它所要實(shí)現(xiàn)的管理功能。管理的流程是先顯示出所有調(diào)查,對于還沒有開始的調(diào)查,可以進(jìn)行修改、刪除;對于已經(jīng)結(jié)束的調(diào)查,可以刪除,不能修改;對于正在進(jìn)行的調(diào)查,只能修改它的結(jié)束時(shí)間。用一個(gè)參數(shù)action來表示動(dòng)作,含義如下:

  1、無參數(shù)。表示第一次進(jìn)入,顯示登錄表單

  2、login 表示執(zhí)行登錄

  3、logout 表示執(zhí)行退出登錄

  4、showaddquestion 表示顯示增加一個(gè)調(diào)查

  5、showsurvey 表示顯示一個(gè)調(diào)查

  6、doaddsurvey 表示執(zhí)行增加一個(gè)調(diào)查

  7、doaddanswer 表示執(zhí)行增加一個(gè)答案

  8、dodelsurvey 表示刪除一個(gè)調(diào)查

  9、dodelanswer 表示刪除一個(gè)答案

  10、domodify 表示修改一個(gè)調(diào)查及答案