寫在前面 關于在線調查大家一定不會陌生吧,給出一個問題和數個答案,讓用戶 填寫,然后把結果保存到數據庫,自動進行統計,最后給出個統計的圖。這 期的跟我學做就來做一個在線調查系統。
一、功能設計 這么簡單的系統也要做功能設計?有的人也許會覺得奇怪,不過話說回來 不管怎么樣的系統,先做功能設計總是能對系統有個比較清析的了解。讓我們 來看看在線調查的功能吧。基本的功能上面已經說了,就是要給出一個問題和數 個答案,然后統計,最后給出圖。在這個基礎上,我們可以考慮給一個調查加上 一個時間段(有效期),在這個時間段里調查是有效的,過了這段時間就自動結 束這個調查。另外,我們可以指定一個用戶一次只能提交一次答案。如果你要限 制得更多,可以指定一個IP只能提交一次答案,不過,這樣可能一個網吧里的人 只能有一個提交了。對于調查里的問題,有些可能是單選題,而有些可能是多選 題。最后來說說統計的圖,在統計圖里要給出答案、每個答案的投票人數,并要 顯示出每個答案投票數所占的比例。一般用橫的圖就可以了,也比較容易實現, 當然,如果你要改成豎的,也可以。 現在根據上面總結出在線調查的功能如下: 1、數據保存在ACCESS 2000 數據庫中; 2、每個用戶一次訪問可以投票一次 3、給出每個調查的統計情況,用統計圖來顯示 4、每個調查都有個有效期,過期后自動結束。結束了的調查只能查看結果。 5、管理員可以增加調查,修改調查的答案(增加、修改、刪除,修改類型)。 6、對于已經結束的調查,管理員只能刪除調查,而不能修改答案。 7、只有一個管理員(單用戶)
二、數據庫設計 現在來設計數據庫,根據功能要求,至少要有三個表,一是管理員表,二是 調查表,三是調查結果表。數據庫文件名為survey.mdb 可以改為.asp 如果改 的話,請在ASP程序中作相應的修改。
表一、 管理員表 表名: manage ----------------------------------------------------------------- 字段 類型 長度 說明 ----------------------------------------------------------------- manage_id 自動編號 - 在這里沒用到,日后擴展用 manage_username 文本 15 管理員用戶名 manage_password 文本 15 管理員密碼 -----------------------------------------------------------------
建立manage表后加入一條新記錄,填入你的管理員用戶名和密碼,在這里填入的是xmxoxo
表二、 調查表 表名: survey ----------------------------------------------------------------- 字段 類型 長度 說明 ----------------------------------------------------------------- survey_id 自動編號 - 遞增、主鍵、有索引無重復 survey_question 文本 255 調查問題 survey_type 是否 - 類型,否:單選 是:多選 survey_stime 日期 - 長日期,開始時間 survey_etime 日期 - 長日期,結束時間 -----------------------------------------------------------------
表三、調查結束表 表名:survey_vote ----------------------------------------------------------------- 字段 類型 長度 說明 ----------------------------------------------------------------- vote_no 自動編號 - 遞增、主鍵、有索引無重復 vote_id 長整型 - 有索引有重復,小數位0 vote_answer 文本 100 調查答案 vote_count 長整型 - 投票數 -----------------------------------------------------------------
其中,survey_vote表和survey表的id字段有多對一的關系。并不一定要建立這個關系, 但是建立關系會使思路更明確。
三、包含文件 這里所要用到的函數并不多,主要是對數據庫進行操作的,如果要防止輸入時的 HTML等代碼,直接用server.htmlencode進行處理就可以了,所以不需要一個專門的 函數來處理。我們可以沿用上一篇《跟我學》系列《跟我學做樹型菜單》里的包含文件。 共用函數文件,文件名:inc.asp <% '******************************************************************* '通用數據庫ASP函數 '******************************************************************* '數據庫常數 databasename="survey.mdb" '數據庫名,如果改名的話,在這里修改就行了 '******************************************************************* '打開數據庫 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 '******************************************************************* '關閉數據庫 sub closedb(connect) connect.close set connect=nothing end sub '******************************************************************* '打開單個表讀 sub opentable(connect,tbname,myrs) set myrs=server.createobject("ADODB.recordset") rssql="select * from " & tbname myrs.open rssql,connect,1,1 end sub '******************************************************************* '關閉臨時表 sub closetable(rs) rs.close set rs=nothing end sub '******************************************************************* '查詢數據庫 sub searchtable(connect,sql,rs) set rs=server.createobject("ADODB.recordset") rs.open sql,connect,1,1 end sub
'******************************************************************* '查詢并更改數據庫 sub changetable(connect,sql,rs) set rs=server.createobject("ADODB.recordset") rs.open sql,connect,1,3 end sub
'******************************************************************* '顯示信息 用于調試 Sub w(msg) response.write msg end sub
'******************************************************************* '程序中斷 用于調試 sub userstop() response.end end sub %>
到這里暫告一段落,我們已經完成了調查系統的功能、數據庫及函數的設計,下一篇 我們來做文件設計,并逐個完成。再次申明,所有的《跟我學做》系列都僅是給朋友們一個 學習的機會,不歡迎索取完整的程序。對于圖片等內容,會適當給出下載地址。為了方便大家 學習,下一篇會盡快發布。
|