前言:想要寫出一篇引人入勝的文章?我們特意為您整理了用戶滿意度在線調查系統(tǒng)設計論文范文,希望能給你帶來靈感和參考,敬請閱讀。
1評選系統(tǒng)的設計
1.1系統(tǒng)結構設計
本在線調查系統(tǒng)基于B/S架構,采取分層設計,模塊化實現(xiàn)的思路進行構建,以便于系統(tǒng)的維護與擴展。整個系統(tǒng)劃分為在線評選子系統(tǒng)與管理子系統(tǒng)兩部分,分別面向大量的匿名用戶與少量的管理人員使用。在線評選子系統(tǒng)是整個系統(tǒng)的核心,通過系統(tǒng)前臺頁面對企業(yè)產(chǎn)品信息進行展示。由于前臺頁面訪問量比較大,且其框架結構在運行期間幾乎不會變化,因此采取了寫靜態(tài)技術來實現(xiàn),以達到性能的最優(yōu)化。后臺管理子系統(tǒng)訪問量比較小,主要包括企業(yè)產(chǎn)品信息管理,評選數(shù)據(jù)的管理以及評選系統(tǒng)的維護。由于系統(tǒng)參數(shù)數(shù)據(jù)量小,將其存放于系統(tǒng)配置文件中。
1.2評選交互設計
全省參評企業(yè)產(chǎn)品數(shù)量多,如果全部同時展示出來,一方面?zhèn)鬏敂?shù)據(jù)量太大,另一方面不方便用戶瀏覽,直接影響著用戶的使用體驗,同時,與大規(guī)模用戶訪問進行交互,也影響著系統(tǒng)運行的穩(wěn)定性,需要盡量減少用戶交互的數(shù)據(jù)量。因此,對企業(yè)產(chǎn)品進行了分類分組,當用戶選擇某一類產(chǎn)品時,會按產(chǎn)品分類從后臺數(shù)據(jù)庫中提取數(shù)據(jù)。
1.3數(shù)據(jù)庫的設計
數(shù)據(jù)庫系統(tǒng)主要包括兩個核心數(shù)據(jù)表:產(chǎn)品信息表與投票數(shù)據(jù)采集表,分別存放參評企業(yè)的產(chǎn)品信息與匿名評選人的投票記錄。
2評選系統(tǒng)的實現(xiàn)
2.1匿名評選子系統(tǒng)的實現(xiàn)用戶評選流程圖
用戶選擇一個產(chǎn)品類別后,通過產(chǎn)品分類提取模塊,產(chǎn)生一個Ajax的Get請求,從后臺數(shù)據(jù)庫中提取該分類的企業(yè)與產(chǎn)品信息。用戶可以對產(chǎn)品進行評選,因為可以同時對多個產(chǎn)品進行同時評選,因此每選擇一個產(chǎn)品時,即利用JavaScript程序進行檢測與記錄,選擇結束后提交由后臺程序進行處理。采取Ajax技術實現(xiàn)局部刷新,而不觸發(fā)整個頁面的回傳,減少了網(wǎng)絡數(shù)據(jù)傳輸量,顯著提升系統(tǒng)性能以及用戶操作體驗。后臺程序首先對驗證碼進行驗證,另外,須對前臺驗證過的數(shù)據(jù)再次進行驗證,比如一次評選產(chǎn)品數(shù)不能超過10個,以避免繞過前臺檢測的惡意攻擊。為了防止用戶重復評選,還需要對客戶端的IP地址進行有效性驗證。用戶進行評選時,前臺拼接提交的字符串,是通過分割符將多組所評選的產(chǎn)品編號與選項值分割后組成的,示例字符串形式如“產(chǎn)品編號1,選項值X;產(chǎn)品編號2,選項值Y;產(chǎn)品編號3,選項值Z;……”。后臺服務器上運行的數(shù)據(jù)庫存儲時,也僅需要一條SQL語句就能完成批量插入操作,操作效率非常高,示例SQL代碼如“INSERTINTOvotes(productid,option,ip)select字段值列表1UNIONSELECT段值列表2UNIONSELECT段值列表3……”。其中,字段值是由強類型變量傳入的,productid字段與option字段均為整型數(shù)據(jù),而ip字段為長整型數(shù)據(jù),均不會導致SQL注入攻擊。另外,ip字段定義為長整型數(shù)據(jù)要比定義為char(16)類型數(shù)據(jù),在進行IP地址查詢時效率高得多,特別在用戶訪問量大時,更容易體現(xiàn)其性能優(yōu)點。后臺對客戶端IP地址的有效性驗證,是通過投票記錄表中IP記錄實現(xiàn)的,示例SQL代碼為“selectcount(*)fromvoteswheredatediff(day,votedate,getdate())=0andip=用戶IP地址”。如果返回值與當前評選數(shù)之和大于10,則說明評選超過當天評選數(shù),評選無效。
2.2后臺管理子系統(tǒng)的實現(xiàn)
后臺管理子系統(tǒng)主要提供給管理人員使用。通過后臺管理系統(tǒng),工作人員通過評選結果查看模塊,實時查看企業(yè)產(chǎn)品的考評結果??梢园丛u分高低、所在區(qū)域等多種方式進行排序,也可以導出Excel格式的結果。在產(chǎn)品數(shù)據(jù)管理中,可以將Excel文件或文本文檔中的原始數(shù)據(jù),遠程批量導入企業(yè)產(chǎn)品信息表中。通過系統(tǒng)參數(shù)設置模塊,可以設置數(shù)據(jù)庫鏈接字符串,恢復與備份數(shù)據(jù)庫等。系統(tǒng)參數(shù)的存放,在基于ASP.NET技術進行開發(fā)時,存于web.config文件中,而基于J2EE技術開發(fā)時,則存于config.properties文件中。假設某企業(yè)產(chǎn)品的調查數(shù)據(jù)是滿意為x,一般為y,不滿意為z。那么該產(chǎn)品的用戶滿意度即等于(x×1.0+y×0.7)/(x+y+z)×100%。實現(xiàn)用戶滿意度計算的方式有多種,由SQL語句直接運算效率高且快捷,示例如下:語句1:SELECT*FROM(SELECTprodid,SUM(CASEWHENoption=1THEN1ELSE0END)ASopt1,SUM(CASEWHENoption=2THEN1ELSE0END)ASopt2,SUM(CASEWHENoption=3THEN1ELSE0END)ASopt3FROMdbo.votesGROUPBYprodid)astmp_A語句2:SELECTname,product,opt1,opt2,opt3,(opt1*1.0+opt2*0.7)/(opt1+opt2+opt3)AStotalFROMproductsLEFTOUTERJOINtmp_AONproducts.prodid=tmp_A.prodid語句1得到某產(chǎn)品滿意度各類別計數(shù)值,并生成臨時表tmp_A,語句2得到滿意度計算結果,通過表products與表tmp_A聯(lián)合查詢,可以得到企業(yè)名稱(name),產(chǎn)品名稱(product)等信息,以及最終滿意度計算結果(total)。語句1與語句2可以合并為一條語句完成計算查詢。
2.3安全問題及解決方案
滿意度在線調查系統(tǒng)采取的B/S結構,具有很強的開放性、共享性,這給網(wǎng)上投票系統(tǒng)帶來了很多安全隱患。本系統(tǒng)采取的主要安全措施有session防護、驗證碼防護、IP地址限制等。在進行識別碼驗證時,服務器產(chǎn)生一個唯一的會話標識符。會話標識符可以采取cookie技術來存儲,但是,如果用戶的瀏覽器關閉了cookie的功能,將無法參與評選,因此采取session存儲會話標識符。由于默認的session有效期為20或30min,當用戶訪問量大時,大量的會話消耗服務器端內存,會嚴重降低系統(tǒng)的性能。因此,可以設置ses-sion的失效期(timeout)為2min,且僅在用戶向提交數(shù)據(jù)時創(chuàng)建session,這樣既保證用戶有足夠的時間輸入驗證碼,也保證了會話的及時關閉。在系統(tǒng)運行初始,通過后臺管理頁,曾發(fā)現(xiàn)投票數(shù)據(jù)出現(xiàn)兩個可疑點:
①同一IP地址連續(xù)出現(xiàn)若干次后才開始變化;
②對同一產(chǎn)品的投票時間間隔非常短,統(tǒng)計結果平均約為30s,這在人工操作且需要輸入驗證碼的情況下是難以完成的,由此認定是刷票的結果。防御自動投票軟件的方法就是增加驗證碼識別難度。一般的驗證碼很容易被OCR軟件破解,比如字跡比較清晰的數(shù)字圖片等。另外還要防止系統(tǒng)出現(xiàn)漏洞:
①在每次投票時用戶填寫的驗證碼驗證失敗后,要及時更換,防止多次猜測同一驗證碼;
②在每次投票成功后,要及時清空服務器端session會話,否則易招致攻擊者重復提交。
3結束語
本系統(tǒng)自從部署后,每年開通一次,每次在線調查歷時約半個月,累計接受訪問量約30萬人次,參評約8萬人次。在線調查期間,該系統(tǒng)經(jīng)受住了復雜網(wǎng)絡環(huán)境的考驗,運行比較平穩(wěn)。通過引入高難度的驗證碼方案,有效預防了自動化程序的攻擊。但是,由于一些網(wǎng)絡水軍的存在,對在線評選活動造成很大沖擊。這些所謂水軍是網(wǎng)絡上分散在各地方的人,有組織有預謀地進行投票,盡管政府與網(wǎng)絡運營商共同對網(wǎng)絡水軍進行封殺,但依然沒有更有效的措施進行預防。如何抵御網(wǎng)絡水軍的干擾,將是下一步研究的課題。特別鳴謝:河南省質量技術監(jiān)督局質量管理處(省防偽辦公室)宋松林處長和石笑宇主任提供的幫助。
作者:楊省偉 單位:河南質量工程職業(yè)學院