• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      支持邏輯跳轉(zhuǎn)及填答約束的網(wǎng)絡(luò)問卷調(diào)查系統(tǒng)設(shè)計與實現(xiàn)

      2015-03-02 12:23:43盧錦運等
      軟件導(dǎo)刊 2015年1期

      盧錦運等

      摘要:隨著互聯(lián)網(wǎng)的普及和信息技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)問卷調(diào)查已成為數(shù)據(jù)、資料收集的一種常用手段。傳統(tǒng)網(wǎng)絡(luò)問卷調(diào)查系統(tǒng)普遍缺少題目邏輯跳轉(zhuǎn)和用戶填答校驗功能,針對這一情況提出一種支持邏輯跳轉(zhuǎn)和填答約束的網(wǎng)絡(luò)問卷調(diào)查系統(tǒng)的實現(xiàn)方法。該方法基于校驗規(guī)則實現(xiàn)了對用戶填答的約束,同時通過設(shè)置跳轉(zhuǎn)邏輯增強(qiáng)了問卷的靈活性和適應(yīng)性。該方法在2013年重慶市基礎(chǔ)教育質(zhì)量監(jiān)測教師問卷調(diào)查中得到應(yīng)用,結(jié)果表明,該方法能夠提高回收數(shù)據(jù)的準(zhǔn)確性與規(guī)范性,具有較強(qiáng)的適用性。

      關(guān)鍵詞:網(wǎng)絡(luò)問卷調(diào)查系統(tǒng);JSON;邏輯跳轉(zhuǎn);填答約束;MongoDb

      DOIDOI:10.11907/rjdk.143621

      中圖分類號:TP319

      文獻(xiàn)標(biāo)識碼:A 文章編號文章編號:16727800(2015)001010704

      0 引言

      問卷調(diào)查是數(shù)據(jù)、資料收集的一種常用手段。傳統(tǒng)的問卷調(diào)查通過人工方式發(fā)放、回收、統(tǒng)計問卷。隨著互聯(lián)網(wǎng)的普及和信息技術(shù)的迅猛發(fā)展,傳統(tǒng)人工問卷調(diào)查方式越來越無法滿足社會發(fā)展和人們生活的需求,網(wǎng)絡(luò)問卷調(diào)查以其低成本、高可靠性、高效性、互動性等特點逐漸成為當(dāng)前一種主流的調(diào)查方法[7]。

      當(dāng)前網(wǎng)絡(luò)問卷調(diào)查實現(xiàn)方式主要有兩種:①HTML靜態(tài)頁面。這種方式將所有要調(diào)查的問題做成HTML頁面后上傳至服務(wù)器,當(dāng)更新題目信息時需要重新更新HTML頁面。因此,靜態(tài)頁面方式效率低下且需要專業(yè)人員完成;②基于ASP、PHP等編程語言與數(shù)據(jù)庫相結(jié)合制作而成的動態(tài)頁面。該方式效率較高,操作更為方便,是目前的主流做法。

      迄今為止,市面上出現(xiàn)了多種網(wǎng)絡(luò)問卷調(diào)查軟件,這些軟件基本可以實現(xiàn)數(shù)據(jù)采集功能,但是大多缺乏對用戶輸入數(shù)據(jù)的動態(tài)校驗,從而使后期對調(diào)查數(shù)據(jù)清理的工作量巨大,同時由于無法設(shè)置跳轉(zhuǎn)邏輯題而使問卷靈活性和適用性較差。本文擬結(jié)合重慶市基礎(chǔ)教育質(zhì)量監(jiān)測教師問卷調(diào)查系統(tǒng)的設(shè)計與實現(xiàn)環(huán)節(jié)探討在網(wǎng)絡(luò)問卷調(diào)查系統(tǒng)中如何實現(xiàn)用戶填答的約束校驗及題目的邏輯跳轉(zhuǎn)功能。

      1 系統(tǒng)設(shè)計

      1.1 系統(tǒng)架構(gòu)

      三層模式具有安全性高、維護(hù)成本低、各層之間耦合度較低等優(yōu)點,因此本文采用了Web顯示層、業(yè)務(wù)邏輯層和數(shù)據(jù)層(即B/S/D)的三層模式架構(gòu),如圖1所示。

      圖1 三層模式架構(gòu)

      Web顯示層主要用于提供人機(jī)交互界面,本文中Web顯示層通過JavaScript腳本語言實現(xiàn)以下功能:接收用戶輸入數(shù)據(jù)、校驗用戶輸入數(shù)據(jù)、向服務(wù)器回傳數(shù)據(jù)、根據(jù)用戶填答動態(tài)生成下一題。

      業(yè)務(wù)邏輯層主要接收客戶端請求并將數(shù)據(jù)傳給數(shù)據(jù)層,同時將處理結(jié)果返回至客戶端。本文在業(yè)務(wù)邏輯層采用三層開發(fā)框架RTC(RealThinClient SDK)。RTC采用HTTP 協(xié)議實現(xiàn)數(shù)據(jù)傳輸,具有效率高、穩(wěn)定性好等優(yōu)點。

      數(shù)據(jù)層主要用于存儲系統(tǒng)使用過程中產(chǎn)生的數(shù)據(jù)。傳統(tǒng)的數(shù)據(jù)存儲方式主要采用Oracle、SQL Server、MySQL等關(guān)系型數(shù)據(jù)庫,然而在大數(shù)據(jù)背景下,傳統(tǒng)關(guān)系型數(shù)據(jù)庫在高并發(fā)讀寫、高效率存儲等方面越來越顯得力不從心[1]。鑒于重慶市基礎(chǔ)教育質(zhì)量監(jiān)測教師問卷調(diào)查系統(tǒng)要在兩小時內(nèi)完成數(shù)萬名教師問卷調(diào)查,在高頻率的數(shù)據(jù)讀寫操作中,為了保證系統(tǒng)的穩(wěn)定性,本文采用了并發(fā)性高、靈活性強(qiáng)、支持海量數(shù)據(jù)存儲的NoSQL(Not-Only SQL)存儲系統(tǒng)MongoDb[9]。

      1.2 數(shù)據(jù)庫結(jié)構(gòu)設(shè)計

      MongoDb以keyvalue形式存儲數(shù)據(jù)。相比于傳統(tǒng)關(guān)系型數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)庫、表(table)、記錄(record)3個層次,MongoDb則由數(shù)據(jù)庫、集合(collection)、文檔對象(Documentoriented、BSON)3個層次組成[2],其中MongoDb中的collection對應(yīng)于關(guān)系型數(shù)據(jù)庫里的table。

      與傳統(tǒng)關(guān)系型數(shù)據(jù)庫在使用前必須定義數(shù)據(jù)存儲模型不同,MongoDb的數(shù)據(jù)存儲模式是自由的(schemafree),即在同一個collection里可以有不同格式或類型的文檔對象[3]。MongoDb中一個collection的實例如下:

      {"_id":"1","USERNAME":"Tom","PASSWORD":"123456"}

      {"_id":"2","USERNAME":"LILY","AGE":"10","GENDER":"female"}

      {"_id":"3","USERNAME":"Peter","PWD":11111}

      雖然MongoDb的數(shù)據(jù)存儲模式自由,但在一般情況下,為了便于數(shù)據(jù)管理,同一個集合內(nèi)的文檔對象都會以相同格式定義存儲。結(jié)合重慶市基礎(chǔ)教育質(zhì)量監(jiān)測教師問卷內(nèi)容及網(wǎng)絡(luò)問卷調(diào)查的特點,本文設(shè)計了以下幾個集合:用戶集合(USER_INFO)、問卷集合(SURVEYS)、問卷題目集合(SURVEY_QUESTIONS)、結(jié)果集合(SURVEY_ANS)。用戶集合主要存儲教師相關(guān)信息,包括教師登錄問卷系統(tǒng)所需的賬號和密碼。問卷集合用于存儲問卷基本信息,包括問卷、問卷指導(dǎo)語以及問卷其它相關(guān)屬性。問卷題目集合用于存儲每套問卷所包含的題目信息,包括、題目類型(本文設(shè)計了單選、多選、填空、問答4種題型),以及單選或多選類型問題中可供選擇的選項信息、填答約束規(guī)則、跳轉(zhuǎn)邏輯設(shè)置等。結(jié)果集合則用于存放回收的調(diào)查數(shù)據(jù),其結(jié)構(gòu)根據(jù)問卷題目動態(tài)生成。

      2 關(guān)鍵技術(shù)設(shè)計與實現(xiàn)

      2.1 數(shù)據(jù)傳輸格式

      在大規(guī)模、高并發(fā)的Web系統(tǒng)應(yīng)用中,選擇一種合適的數(shù)據(jù)傳輸格式至關(guān)重要。JSON (JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式,采用完全獨立于語言的文本格式,易于閱讀和編碼,同時它是JavaScript規(guī)范的子集[8],因此能很好地被大部分瀏覽器解析,避免了不同瀏覽器帶來的兼容性問題。另一方面,JSON在數(shù)據(jù)傳輸效率方面明顯優(yōu)于其它數(shù)據(jù)傳輸格式[4,5]。另外,本文所采用的MongoDB數(shù)據(jù)庫以BSON格式存儲,而BSON是一種類JSON二進(jìn)制形式的存儲格式,兩者之間轉(zhuǎn)換較為容易。鑒于以上幾點,本文選擇JSON作為問卷系統(tǒng)的數(shù)據(jù)傳輸格式。

      以下是以JSON描述一道題目的示例:

      {

      "ID" : "1",

      "TITLE" : "目前,您正在使用的手機(jī)是什么品牌?",

      "OPTIONS":"1=IPhone;2=三星;3=華為;4=聯(lián)想;5=其它",

      "TYPE" : "多選題",

      "ATTACH" : "2;2;;5,6;",

      "ISREQUIRED" : "1",

      "CONSTRAIN": "{'atype':'multchoise','minc':'1','maxc':'2','mutex':'5'}"

      }

      該JSON對象包括7個元素:①題目編號(ID)為1;②題目(TITLE)為“目前,您正在使用的手機(jī)是什么品牌?”;③選項(OPTIONS)一共包括“IPhone、三星、華為、聯(lián)想、其它”等5個選項,其對應(yīng)的選項值分別為“1、2、3、4、5”,5個選項以“;”連接;④題目類型(TYPE)為多選題;⑤附加題(ATTACH)存儲題目的跳轉(zhuǎn)邏輯;⑥是否必做題(ISREQUIRED)值為1時表示必做,0表示選做;⑦填答約束(CONSTRAIN)為此題的填答規(guī)則。

      2.2 填答約束

      為了減輕后期對問卷調(diào)查結(jié)果數(shù)據(jù)的清理工作,需要對用戶填答的數(shù)據(jù)格式加以約束才能確?;厥諗?shù)據(jù)格式的統(tǒng)一,因此在問卷發(fā)布前需要設(shè)置好問題的填答規(guī)則。

      上文介紹了題目JSON數(shù)據(jù)中CONSTRAIN元素為題目的填答規(guī)則。本文通過對CONSTRAIN值的解析,調(diào)用相關(guān)校驗功能實現(xiàn)對用戶輸入的約束。若題目無需對用戶輸入進(jìn)行約束,則該元素對應(yīng)值為空。

      題目的填答規(guī)則由問卷編制人員根據(jù)實際情況進(jìn)行動態(tài)設(shè)置。本文采用模塊化思想,對用戶填答校驗部分進(jìn)行模塊化設(shè)計,傳入約束規(guī)則、填答結(jié)果以及題目相關(guān)信息即可獲得用戶填答的校驗結(jié)果,如圖2所示。

      圖2 問卷填答校驗?zāi)K

      下面分別以填空題、多選題為例介紹對用戶填答約束的實現(xiàn)方法。

      (1) 填空題的填答規(guī)則主要用于約束用戶輸入為統(tǒng)一格式的值。

      如:你的年齡?

      若此題沒有設(shè)置填答規(guī)則,用戶的填答可能會五花八門:30、30歲、三十歲、30、200等各種格式甚至是非合理的答案,要使填答結(jié)果統(tǒng)一為合理的英文數(shù)字,且對于教師而言年齡段一般在18到70歲之間,這道題的填答規(guī)則可設(shè)置如下:{'atype':'integer','minvalue':'18','maxvalue':'70'},這個規(guī)則中atype表示只允許用戶填答整數(shù),minvalue表示允許用戶輸入的最小值為18,maxvalue則表示允許輸入的最大值為70。通過設(shè)置這一規(guī)則,可以約束用戶的輸入只能為介于18~70之間的整數(shù)。若無需限制用戶輸入的最小值或最大值,則可通過將minvalue或maxvalue對應(yīng)的值設(shè)為空來實現(xiàn)。

      同樣,如果要約束填答結(jié)果為小數(shù),則設(shè)置規(guī)則中的atype為number,如果填答結(jié)果為時間格式,則設(shè)置atype為date,并可以通過設(shè)置mindate和maxdate的值限制用戶輸入的時間范圍。

      圖3為此題對應(yīng)的效果圖。

      (2)多選題的填答規(guī)則主要包括限制用戶選擇選項的個數(shù)以及互斥選項的設(shè)置。以2.1中的題目為例,該題的填答規(guī)則為:{'atype':'multchoise','minc':'1','maxc':'2','mutex':'5'} 。該規(guī)則中atype值為multchoise,表示此規(guī)則為多選題的約束規(guī)則;minc值為1,表示最少需要選擇一個選項;maxc值為2,表示最多只能選擇兩個選項;mutex為互斥選項,其對應(yīng)的值為某一選項值,表示該選項不能與其它選項同時被選中。若此題沒有互斥題,mutex對應(yīng)的值則為空。在多選題約束規(guī)則中,minc對應(yīng)的值應(yīng)大于等于1且小于等于maxc對應(yīng)的值,而maxc對應(yīng)的值則應(yīng)大于等于minc對應(yīng)的值而小于等于選項的個數(shù)。

      圖4為此題對應(yīng)的效果圖。

      圖3 填空題填答約束效果

      圖4 多選題填答約束效果

      2.3 邏輯跳轉(zhuǎn)

      隨著問卷內(nèi)容的多樣化,邏輯跳轉(zhuǎn)逐漸成為了網(wǎng)絡(luò)問卷調(diào)查系統(tǒng)的重要功能之一。邏輯跳轉(zhuǎn)的主要思想是在用戶填答問卷時,系統(tǒng)能夠根據(jù)被訪者當(dāng)前題目的答案和編制問卷時定制的跳轉(zhuǎn)邏輯動態(tài)地生成下一題,以供用戶繼續(xù)作答[6]。

      本文通過對相關(guān)題目設(shè)置附加題的形式實現(xiàn)題目邏輯跳轉(zhuǎn)的控制。在問卷發(fā)布前首先將問卷題目分為兩類:一類是必做題,另一類是附加題。必做題指在用戶填答過程中必須回答的題,它不依賴于其它題目而出現(xiàn);附加題則不一定出現(xiàn)在用戶填答過程中,它的出現(xiàn)依賴于用戶對其它題目的填答及跳轉(zhuǎn)邏輯。以圖5所示的例子解釋本文的邏輯跳轉(zhuǎn)設(shè)計思想。

      圖5中,問卷共有5道題,其中只有題目一為必做題,題目二、三、四、五均為附加題,題目二、三、四的出現(xiàn)依賴于用戶對題目一的填答及跳轉(zhuǎn)邏輯設(shè)定。若用戶在題目一中選擇的答案為A,那么下一道題則為題目三;若選擇了B,下一道題為題目二;若選擇C,則下一道題為題目四;若選擇D,則題目二、三、四均不出現(xiàn)而直接結(jié)束問卷;同樣,當(dāng)用戶對題目三的填答符合跳轉(zhuǎn)邏輯,則系統(tǒng)動態(tài)生成題目五。

      圖5 問卷填答流程

      選擇題和填空題的跳轉(zhuǎn)邏輯有所區(qū)別,選擇題的跳轉(zhuǎn)是在用戶選擇設(shè)定了邏輯跳轉(zhuǎn)指令選項后進(jìn)行,而填空題跳轉(zhuǎn)則在用戶填答的答案滿足邏輯跳轉(zhuǎn)條件后進(jìn)行。2.1中介紹了題目JSON中ATTACH元素存儲題目跳轉(zhuǎn)邏輯,根據(jù)選擇題和填空題的填答差異,本文分別設(shè)計了選擇題和填空題的跳轉(zhuǎn)邏輯格式。下面分別介紹選擇題和填空題邏輯跳轉(zhuǎn)的實現(xiàn)方式:

      (1) 選擇題的ATTACH中存儲的是每個選項對應(yīng)的附加題題號,當(dāng)用戶選擇了某個或某幾個選項后,下一道題則根據(jù)選中選項對應(yīng)的附加題題號動態(tài)生成。本文將每個選項對應(yīng)的附加題題號以“;”相連,因此N個選項就對應(yīng)有N組附加題題號(若某個選項無附加題則留空,若有多個附加題則附加題題號以“,”隔開),在ATTACH存儲中就有N-1個“;”。

      以2.1中的題目為例,該題共有5個選項,因此ATTACH存儲有5組附加題題號:第1個選項“IPHONE”和第2個選項“三星”對應(yīng)的附加題題號都為2,表示當(dāng)用戶選擇了第1或第2個選項后,下一道題將會是第2題;第3和第5個選項對應(yīng)的附加題題號為空,則表示當(dāng)用戶選擇“華為”或“其它”選項后將不會有附加題而直接進(jìn)入下一題;第4個選項對應(yīng)的附加題題號為5和6,表明當(dāng)用戶選擇了“聯(lián)想”選項后,系統(tǒng)將第5題和第6題附加到此題之后。

      (2) 填空題的ATTACH中存儲的則是跳轉(zhuǎn)邏輯表達(dá)式,其語法規(guī)則是:表達(dá)式=附加題題號,即當(dāng)用戶的答案滿足了表達(dá)式后則下一道題為附加題題號對應(yīng)的題目。

      如:>0&&<50=10,20表示如果輸入的答案介于0~50之間則在其后附加第10題和第20題。

      本文問卷生成步驟如下:

      Step1:初始化題目數(shù)組QusArray并將數(shù)組下標(biāo)QusIndex設(shè)為0,將問卷中所有必做題按題號順序裝入至QusArray中。

      Step2:若QusIndex=length(QusArray),則結(jié)束此次問卷;否則生成QusArray[QusIndex]題號對應(yīng)的題目。

      Step3:校驗用戶輸入。若校驗失敗,提示用戶校驗信息;否則,保存當(dāng)前答案并且進(jìn)行INC(QusIndex),同時根據(jù)答案和題目的跳轉(zhuǎn)邏輯判斷是否有附加題,若有附加題且題號不存在于QusArray中,則將附加題依次插入到QusArray中,插入的起始位置為QusIndex+1,轉(zhuǎn)Step2。

      3 結(jié)語

      本文提出了一種支持邏輯跳轉(zhuǎn)及填答約束的網(wǎng)絡(luò)調(diào)查問卷系統(tǒng)技術(shù)實現(xiàn)方法,通過對題目設(shè)置輸入約束規(guī)則實現(xiàn)了用戶填答結(jié)果的規(guī)范性、保證了數(shù)據(jù)的準(zhǔn)確性,從而大大減輕了后期數(shù)據(jù)清理工作量;另一方面,通過對相應(yīng)題目設(shè)置跳轉(zhuǎn)邏輯增強(qiáng)了問卷的靈活性和適應(yīng)性。本方法已成功應(yīng)用于2013年重慶市基礎(chǔ)教育質(zhì)量監(jiān)測教師問卷調(diào)查系統(tǒng)中,結(jié)果表明,該系統(tǒng)在問卷靈活性、結(jié)果準(zhǔn)確性以及系統(tǒng)并發(fā)性上都能很好地滿足網(wǎng)上問卷調(diào)查需要。

      阳泉市| 天峻县| 勐海县| 桐梓县| 宿州市| 义马市| 科尔| 抚州市| 东乌珠穆沁旗| 兰州市| 高碑店市| 龙游县| 汉寿县| 普宁市| 伊通| 黄龙县| 海门市| 包头市| 泸州市| 依兰县| 湖北省| 陆川县| 定结县| 民勤县| 甘孜县| 铜陵市| 从化市| 特克斯县| 罗甸县| 临泉县| 吐鲁番市| 潼关县| 平江县| 保靖县| 清丰县| 五峰| 怀化市| 哈尔滨市| 达拉特旗| 车险| 洛宁县|