摘 要:校園學生活動中公開民主投票評選是學生工作中非常重要的一塊,利用網絡技術開展這類活動已成為當今的一種趨勢,如何配合校園學生活動的開展,實現便捷地對投票結果進行統計公開成為我們的主要課題。
關鍵詞:評選投票ASP
中圖分類號:TP2文獻標識碼:A文章編號:1674-098X(2011)05(b)-0028-02
評選活動一直以來在學生活動當中都扮演了相當重要的地位,為了顯示公平、公開原則,民主投票是我們最經常采用的形式。因此,開發一套功能完善的網上評選管理系統,對于學生活動民主評選具有非常重要的意義。本文利用Asp作為開發技術,選擇Access數據庫作為后臺數據庫,開發一套完整的校園攝影作品評選管理系統。
1 系統需求分析
學生校園活動開展需要廣泛性,評選活動則需要公平,公開原則。隨著計算機網絡技術的不斷發展,利用網絡實現學生在線投票評選成為必然,在線投票即可使更多的人參與進來,又可顯示公平、公開的原則,便于對評選結果進行統計、公布。一次優秀的學生評選活動需要良好的策劃方案,也需要一套完整的系統支持平臺。本文以校園攝影作品評選管理系統為支持,改系統需要能夠方便學生上傳作品,系統管理員對作品進行審核顯示在頁面中供大家投票,系統管理員可通過后臺公布評選活動規則、公告,管理投票時間以及留言等,大家可在投票時間內通過相關頁面查看作品的完整信息后進行投票和留言,評選活動票選結果在相關頁面顯示出來。
由于網絡投票會存在著刷票的現象,我們還需對投票次數進行限制,限制重復投票的方法很多,本文主要是針對同一個IP地址用戶一天只能對一個作品進行一次投票,但不影響該用戶投票給其他作品。
2 系統設計
本系統分為前臺和后臺兩大模塊,前臺介紹活動規則,活動公告,展示攝影作品供用戶查看、進行投票、留言討論,并將各個作品統計結果實時顯示出來,后臺則由管理員管理活動信息,對作品信息上傳及留言審核。投票設置開關,由后臺管理員在后臺在規定時間打開,活動時間結束后可關閉投票功能。系統流程如圖1。
3 系統實現
3.1 數據庫實現
本系統采用access作為后臺數據庫,數據庫主要由管理員,公告,信息,作品,評論,票數統計等工作表組成,作品工作表主要由作品圖片、作品名稱、參賽者、專業名稱、聯系方式等信息組成。
數據庫連接代碼如下:
dim connstr,datapath,conn
datapath=\"Manage/DataBase/Db.mdb\"
connstr=\"Provider=Microsoft.JET.OLEDB.4.0;Data Source=\" Server.mappath(datapath)
Set conn=Server.CreateObject(\"ADODB.Connection\")
conn.open connstr
3.2 前臺設計
前臺首頁頁面顯示公告及所有參賽作品的簡圖,每頁顯示20個,每個作品下面顯示得票數及投票按鈕,每幅作品可點擊進去顯示大圖以及用戶對該作品的評價,也可進行留言。首頁菜單欄上面可以進入活動信息介紹,以及可以查看投票排行榜和學校主頁鏈接。
用戶在進行投票時須先進行投票檢測,判斷投票系統是否開啟,如果投票系統關閉,則提示“投票已關閉”,否則可進行投票,具體代碼如下:
sql=\"Select info from Mu where id=4\"
set t=conn.execute(sql)
if t(0)=\"關\" then
Response.write \"\"
Response.End()
end if
為防止用戶刷票,本系統采用限制用戶IP地址的方法,需要獲取用戶IP地址getip=Request.ServerVariables(\"REMOTE_ADDR\"),檢測該IP地址當天是否已經進行過投票,已經投過則顯示“不能繼續投票”,具體代碼如下:
if cip(ip,id,date())=true then
Response.write\"\"
Response.End()
end if
如果該IP地址當天沒有進行投票則票數累加一張
rs(\"hit\")=rs(\"hit\")+1
rs.update
最終票數統計結果將按得票數由多到少排列顯示,主要顯示作品序號<%=rs(\"id\")%>,作品名稱<%=rs(\"name\")%>,得票數<%=rs(\"hit\")%>。
用戶在查看作品時可以參加評論,評論內容需審核才能通過。
3.3 后臺設計
后臺設計用戶登錄界面,需驗證才允許進入,后臺驗證代碼如下:
if Request(\"Action\")=1 then
If Trim(Request.Form(\"validatecode\"))=Empty Or Trim(Session(\"cnbruce.com_ValidateCode\"))<>Trim(Request.Form(\"validatecode\")) Then
response.write(\"\")
response.end
end if
SQL=\"Select * from A_d_m_i_n where name='\" R(Trim(Request(\"name\"))) \"' and pass='\" MD5(R(Trim(Request(\"pass\")))) \"'\"
set nrs=server.createobject(\"adodb.recordset\")
nrs.open SQL,conn,1,3
if nrs.Bof and nrs.Eof then
Response.Write \"\"
Response.End()
else
Session(\"Admin\")=nrs(\"name\")
Session(\"flag\")=nrs(\"flag\")
nrs.Close
Response.Redirect \"Admin_Index.asp\"
end if
end if
進入系統后分為基本信息管理以及圖片管理兩個模塊。
基本信息主要是管理員用戶名和密碼的修改、公告及活動信息的添加修改,還可以設置投票開關,具體如下:
if Request(\"Action\")=1 then
if rs(\"info\")=\"開\" then
rs(\"info\")=\"關\"
else
rs(\"info\")=\"開\"
end if
rs.Update
rs.Close
Set rs=nothing
Response.Write \"\"
Response.End()
end if
圖片管理則負責對參賽作品進行管理,包括參賽作品的信息上傳、刪除以及對參賽作品評論的審核。上傳圖片是對圖片有相關要求,代碼如下:
dim upload,file,formName,formPath,iCount,filename,fileExt
set upload=new upload_5xSoft ''建立上傳對象
formPath=\"uploadimages/\"
''在目錄后加(/)
if right(formPath,1)<>\"/\" then formPath=formPath\"/\"
iCount=0
for each formName in upload.file ''列出所有上傳了的文件
set file=upload.file(formName)''生成一個文件對象
if file.filesize<100 then
response.write \"
請先選擇你要上傳的圖片[ 重新上傳 ]\"
response.end
end if
if file.filesize>1000000 then
response.write \"
圖片大小超過了限制[ 重新上傳 ]\"
response.end
end if
fileExt=lcase(right(file.filename,4))
if fileEXT<>\".jpg\" and fileEXT<>\".gif\" then
response.write \"
文件格式只能為jpg和gif格式[ 重新上傳 ]\"
response.end
end if
randomize
ranNum=int(90000*rnd)+10000
filename=formPathyear(now)month(now)day(now)hour(now)minute(now)second(now)fileExt
filename1=year(now)month(now)day(now)hour(now)minute(now)second(now)fileExt
if file.FileSize>0 then ''如果 FileSize > 0 說明有文件數據
file.SaveAs Server.mappath(filename) ''保存文件
response.write \"\"
iCount=iCount+1
end if
set file=nothing
next
set upload=nothing''刪除此對象
Response.Write
\"
\"
response.end
管理圖片及圖片在首頁顯示均按每頁顯示20個,具體代碼如下:
if Request(\"type\")<>\"\" then
SQL=\"Select * from Photo where ok=0 and t=\"Request(\"type\")\" order by id desc\"
else
SQL=\"Select * from Photo where ok=0 order by id desc\"
end if
set rs=server.createobject(\"Adodb.Recordset\")
rs.open SQL,conn,1,1
dim i,bgc
if not rs.eof then
pages = 20 '定義每頁顯示的記錄數
rs.pageSize = pages '定義每頁顯示的記錄數
allPages = rs.pageCount'計算一共能分多少頁
page = Request.QueryString(\"page\")'通過瀏覽器傳遞的頁數
'if語句屬于基本的排錯處理
if isEmpty(page) or Cint(page) < 1 then
page = 1
elseif Cint(page) > allPages then
page = allPages
end if
rs.AbsolutePage = page
i=0
Do while not rs.eof and pages > 0
4 結語
本系統界面美觀,對于校園活動評選投票公正公開,功能強大,后臺管理員管理簡單輕松,可方便快捷正確統計出投票情況,該系統目前已經用于學生校園活動中并取得不錯效果,可用于其余各項學生校園評選活動中。
參考文獻
[1]張景峰.ASP程序設計教程[M].清華大學出版社,2008.
[2]李冰.ASP動態網頁設計教程與實訓[M].中國人民大學出版社,2009.
[3]尚俊杰.網絡程序設計—— asp[M].清華大學出版社,2009.