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