• 
    

    
    

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

      ?

      基于VB和PYTHON的問卷錄入與分析系統(tǒng)

      2018-01-06 00:58徐暢暢
      電腦知識與技術(shù) 2017年35期
      關(guān)鍵詞:數(shù)據(jù)錄入副本選項

      徐暢暢

      摘要:采用VB 6.0語言開發(fā)數(shù)據(jù)錄入問卷、核對并修改問錄入數(shù)據(jù)錯誤等功能,PYTHON 3.5語言進(jìn)行數(shù)據(jù)統(tǒng)計并繪制相應(yīng)統(tǒng)計學(xué)圖表,Excel文檔進(jìn)行問卷數(shù)據(jù)的保存、輔助問卷錄入,自主研發(fā)出“先行”問卷錄入與分析系統(tǒng)。該系統(tǒng)可高效完成數(shù)據(jù)采集和管理工作,節(jié)約了紙質(zhì)問卷錄入時間;同時該軟件易于實施,數(shù)據(jù)移植性好,后續(xù)輸出的電子數(shù)據(jù)基本不存在亂碼現(xiàn)象;軟件后續(xù)數(shù)據(jù)進(jìn)行科學(xué)管理和統(tǒng)計分析,功能更趨完善,便于社會調(diào)查最終順利實施。

      關(guān)鍵詞:計算機;調(diào)查問卷;數(shù)據(jù)錄入;數(shù)據(jù)管理;編程;軟件;VB 6.0;PYTHON 3.5

      中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2017)35-0109-05

      1 背景

      隨著21世紀(jì)的到來,我們的社會逐步邁入大數(shù)據(jù)時代,數(shù)據(jù)的收集、分析是處理大數(shù)據(jù)的基礎(chǔ)。目前數(shù)據(jù)收集常采用紙質(zhì)調(diào)查問卷,但紙質(zhì)調(diào)查問卷需要手工輸入問卷數(shù)據(jù),進(jìn)而進(jìn)行統(tǒng)計學(xué)處理。手工轉(zhuǎn)換為電子版的調(diào)查問卷數(shù)據(jù)統(tǒng)計學(xué)處理工作量大,后期數(shù)據(jù)匯總工作繁瑣?,F(xiàn)有的問卷錄入軟件界面繁瑣,使用時往往需要操作者具備一定的專業(yè)常識。以EPIDATA問卷錄入系統(tǒng)為代表相關(guān)軟件,在錄入中文內(nèi)容時容易出現(xiàn)亂碼,并且數(shù)據(jù)的移植性差。

      Excel是Windows平臺下電子表格處理軟件,能夠進(jìn)行各種數(shù)據(jù)的處理、統(tǒng)計分析和輔助決策操作。Excel文檔擁有良好的數(shù)據(jù)保管能力,數(shù)據(jù)移植性好,廣泛地應(yīng)用于眾多領(lǐng)域。Visual Basic 6.0(VB 6.0)語言擁有易于學(xué)習(xí),界面設(shè)計容易,與Excel的結(jié)合效果好。PYTHON語言同樣易于學(xué)習(xí),其強大之處在于它有豐富和強大的類庫,可以方便地處理各種需求。PYTHON的繪圖庫(matplotlib庫),是一款功能強大的科學(xué)繪圖庫,修復(fù)中文顯示問題后可以高效率的繪制各種統(tǒng)計學(xué)圖表。綜上所述,結(jié)合Excel、VB 6.0、PYTHON優(yōu)秀之處,可以很好地解決目前問卷錄入系統(tǒng)目前存在的問題。

      2 研究內(nèi)容

      2.1 軟件設(shè)計的思維導(dǎo)圖

      1) 數(shù)據(jù)錄入模塊

      2) 數(shù)據(jù)格式判斷模塊:統(tǒng)計學(xué)處理前準(zhǔn)備工作

      2.2 “先行”(Forerun)問卷錄入與分析系統(tǒng)設(shè)計理念

      “先行”(Forerun)問卷錄入與分析系統(tǒng)(簡稱先行系統(tǒng))應(yīng)該包括問卷錄入、數(shù)據(jù)統(tǒng)一格式保存、數(shù)據(jù)備份和統(tǒng)計學(xué)處理等功能。數(shù)據(jù)錄入工作重復(fù)性質(zhì)較強,需要一定效率的工作,強調(diào)錄入系統(tǒng)準(zhǔn)確和簡潔特質(zhì)。數(shù)據(jù)統(tǒng)一格式保存需要一定的兼容性,文字不易發(fā)生改變。數(shù)據(jù)備份同樣需要一定的格式,保存內(nèi)容在不同機器上不易發(fā)生改變,對于編程語言較為容易操作的性質(zhì)。統(tǒng)計學(xué)處理建立在一定的數(shù)據(jù)保存格式下才能進(jìn)行,需要效率高、精確度高。針對以上的問題,我結(jié)合自身先前的編程經(jīng)歷,決定設(shè)計一套軟件組成的系統(tǒng),配合不同語言的優(yōu)勢進(jìn)行問卷錄入系統(tǒng)軟件設(shè)計。

      2.3 先行系統(tǒng)設(shè)計的過程與實際操作流程

      VB 6.0語言具有簡單、易于組合軟件界面的特點,且VB與Excel之間的兼容性好,我又經(jīng)常使用,因此我設(shè)計先行系統(tǒng)時首先著手從上述語言開始編寫。我先結(jié)合Excel設(shè)計問卷,并將問卷按照特定形式放于Excel中,方便使用VB進(jìn)行處理。

      2.4 先行系統(tǒng)的錄入模塊(基于VB6.0)

      1) 問卷錄入的準(zhǔn)備工作

      在VB中調(diào)用了“Microsoft Excel 15.0 Object Library”,使VB可以實現(xiàn)對于Excel的打開、關(guān)閉、讀取、寫入功能。新建窗體FORM1,將其命名為 “問題與選項”,聲明與Excel處理有關(guān)的內(nèi)容。

      以下為聲明內(nèi)容:

      Dim ExApp As New Excel.Application

      Dim ExBook As Excel.Workbook

      Dim ExWorksheet As Excel.Worksheet

      2) 電子問卷模板形成

      按下FORM1的按鍵,將Excel中的問題、選項提取至軟件中。

      以下代碼實現(xiàn)軟件的問題與選項提取:

      Dim aata(1000) As String

      ……

      Dim hata(1000) As String

      Set ExApp = CreateObject("Excel.Application")

      Set ExApp = New Excel.Application

      Set ExBook = ExApp.Workbooks.Open(Text1.Text)

      Set xlsheet = ExBook.Worksheets("sheet1")

      For i = 1 To Val(Form2.wt.Text) — 1 ‘確定問題的個數(shù),再導(dǎo)入問題及選項內(nèi)容

      aata(i) = ExApp.Sheets("sheet1").Range("a" & i).Value

      ……

      hata(i) = ExApp.Sheets("sheet1").Range("h" & i).Value

      Next i

      ExApp.ActiveWorkbook.Save

      ExApp.Workbooks.Close

      ExApp.Quit

      For q = 0 To Val(Form2.wt.Text) - 2

      List1.AddItem aata(q + 1)

      ……

      List8.AddItem hata(q + 1)

      Next q

      3) 問卷錄入

      隨后新建FORM2,將其命名為“錄入?yún)^(qū)”,在其中新建按鈕等。利用CHECK選擇框進(jìn)行問題的勾選,TEXT輸入框進(jìn)行錄入選項,錄入選項同時進(jìn)行備份,配有防關(guān)閉功能,斷點重錄功能,激活“臨時休息區(qū)”(詳見“操作流程”:1.3、1.4)。

      以下代碼實現(xiàn)錄入時選項的顯示:

      If Check3.Caption = "" Then ‘查找空白項:check1c和heck2為非空白項,檢查check3-8

      Check3.Visible = False

      End If

      ……

      If Check7.Caption = "" Then

      Check7.Visible = False

      End If

      If Check1.Caption = "(" Then

      Text1.Visible = False

      Text4.Visible = True ‘打開手工填寫窗口

      Text4.SetFocus

      End If

      以下代碼實現(xiàn)選擇問題選項:

      If Val(Text1.Text) = 1 And Len(Check1.Caption) > 0 Then

      ‘問卷中相應(yīng)問題項,其Len(object.Caption)>0

      Check1.Value = 1

      End If

      ……

      If Val(Text1.Text) = 7 And Len(Check7.Caption) > 0 Then

      Check7.Value = 1

      End If

      If Val(Text1.Text) = 8 And Len(Check1.Caption) > 0 Then ‘特殊情況窗口被激活

      Check8.Value = 1

      End If

      Text1.Text = ""

      以下代碼負(fù)責(zé)在錄入時進(jìn)行備份:

      If Text1.Visible = True Then

      ‘nb.text為問卷序號(1、2、3….),text2.text為問題號,no.caption為問卷編號(例:vx0001)

      ……

      Open "d:\副本 內(nèi)容.txt" For Append As #1

      Print #1, Val(nb.Text) & "(" & Val(Text2.Text) - 1 & ")" & b ‘b為選項

      Close #1

      Open "d:\副本 數(shù)字.txt" For Append As #2

      Print #2, Val(nb.Text) & "(" & Val(Text2.Text) - 1 & ")" & c ‘c為機械碼

      Close #2

      Open "d:\副本 內(nèi)容" & no.Caption & ".txt" For Append As #3

      Print #3, b

      Close #3

      Open "d:\副本 數(shù)字" & no.Caption & ".txt" For Append As #4

      Print #4, c

      Close #4

      Text1.SetFocus

      End If

      If Text4.Visible = True And Len(Text4.Text) > 0 Then

      ……

      Open "d:\副本 內(nèi)容.txt" For Append As #1

      Print #1, Val(nb.Text) & "(" & Val(Text2.Text) - 1 & ")" & Text4.Text

      ‘text4.text為特殊情況與文字問題錄入的窗口

      Close #1

      Open "d:\副本 數(shù)字.txt" For Append As #2

      Print #2, Val(nb.Text) & "(" & Val(Text2.Text) - 1 & ")" & "無"

      Close #2

      Open "d:\副本 內(nèi)容" & no.Caption & ".txt" For Append As #3

      Print #3, Text4.Text

      Close #3

      Open "d:\副本 數(shù)字" & no.Caption & ".txt" For Append As #4

      Print #4, "無"

      Close #4

      4) 數(shù)據(jù)導(dǎo)出

      新建FORM3,命名為“導(dǎo)出區(qū)”,保存同時進(jìn)行備份(詳見“操作流程”中1.6)。

      以下代碼實現(xiàn)臨時緩存區(qū)內(nèi)的所有內(nèi)容進(jìn)行備份:

      listnum = Form4.List4.ListCount

      Open "d:\副本 1號.txt" For Append As #1

      Print #1, Now

      Close #1

      Open "d:\副本 2號.txt" For Append As #2

      Print #2, Now

      Close #2

      For i = 1 To listnum

      Open "d:\副本 1號.txt" For Append As #3

      Print #3, Form4.List3.List(i) ‘備份問題選項臨時存放區(qū)

      Close #3

      Open "d:\副本 2號.txt" For Append As #4

      Print #4, Form4.List4.List(i) ‘備份機械碼臨時存放區(qū)

      Close #4

      Next i

      以下代碼實現(xiàn)保存問題選項的功能(與機械碼保存相同):

      Command4_Click ‘對臨時緩存區(qū)內(nèi)的所有內(nèi)容進(jìn)行備份

      Label3.Caption = ""

      listnum = Form4.List3.ListCount

      Dim bata(80000) As String ‘儲存所有問題的選項結(jié)果

      Dim x(80000) As String ‘x、y分別儲存Excel文檔的保存坐標(biāo)

      Dim y(80000) As String ‘記錄切分點

      Dim z(80000) As Single

      If Text1.Text = "" Or Text2.Text = "" Then

      a = MsgBox("無效路徑!", 256)

      Exit Sub

      End If

      For o = 0 To listnum

      bata(o + 1) = Form4.List3.List(o)

      Next o

      Set ExApp = CreateObject("Excel.Application")

      Set ExApp = New Excel.Application

      Set ExBook = ExApp.Workbooks.Open(Text1.Text)

      Set xlsheet = ExBook.Worksheets("sheet1")

      ……

      For la = 1 To listnum

      On Error Resume Next

      xlsheet.Cells(Val(y(la)), Val(x(la))).Value = Mid(bata(la), z(la) + 2)

      Next la

      Label3.Caption = "done"

      ExApp.ActiveWorkbook.Save

      ExApp.Workbooks.Close

      ExApp.Quit

      5) 問卷數(shù)據(jù)錄入內(nèi)容的保存與修改

      新建FORM4,命名為“臨時收錄區(qū)”,用于支持?jǐn)?shù)據(jù)的保存、修改。

      以下部分實現(xiàn)“刪除直接改正法”的“刪除”按鈕:

      On Error Resume Next

      List1.RemoveItem (List1.ListIndex)

      List2.RemoveItem (List2.ListIndex)

      List3.RemoveItem (List3.ListIndex)

      List4.RemoveItem (List4.ListIndex)

      以下部分實現(xiàn)“刪除直接改正法”的“插入”按鈕:

      Private Sub List3_Click() ‘問題選項臨時存放區(qū)

      Text3.Text = 3

      List1.ListIndex = -1

      List2.ListIndex = -1

      List4.ListIndex = -1

      End Sub

      Private Sub List4_Click() ‘機械碼臨時存放區(qū)

      Text3.Text = 4

      List1.ListIndex = -1

      List2.ListIndex = -1

      List3.ListIndex = -1

      End Sub

      Private Sub Command4_Click() ‘添加修改內(nèi)容(注意:第一個格子不能修改)

      a = InputBox("輸入修改內(nèi)容")

      If Len(a) = 0 Then

      Exit Sub

      End If

      If Text3.Text = "1" Then

      List1.AddItem a, List1.ListIndex + 1

      End If

      If Text3.Text = "3" Then

      List3.AddItem a, List3.ListIndex + 1

      End If

      If Text3.Text = "4" Then

      List4.AddItem a, List4.ListIndex + 1

      End If

      End Sub

      Private Sub Command6_Click( ) ‘添加修改內(nèi)容(注意:僅能修改第一個格子)

      a = InputBox("輸入修改內(nèi)容")

      If Len(a) = 0 Then

      Exit Sub

      End If

      If Text3.Text = "1" Then

      List1.AddItem a, 0

      End If

      If Text3.Text = "3" Then

      List3.AddItem a, 0

      End If

      If Text3.Text = "4" Then

      List4.AddItem a, 0

      End If

      End Sub

      6) 問卷錄入的安全

      新建FORM5,命名為“臨時休息區(qū)”,用于錄入人員在錄入時的臨時休息。臨時休息區(qū)一但激活會關(guān)閉所有其他窗口,解除需要密碼(詳見“操作流程”中1.7)。

      以下代碼實現(xiàn)臨時休息區(qū):

      Private Sub Command1_Click()

      If Text1.Text = "abcdef" Then ‘密碼為abcdef

      Form1.Visible = True

      Form2.Visible = True

      Form4.Visible = True

      Form5.Visible = False

      End If

      Text1.Text = ""

      End Sub

      Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

      ‘拒絕常規(guī)關(guān)閉(與錄入?yún)^(qū)防關(guān)閉的代碼相同)

      Cancel = True

      End Sub

      2.3 先行系統(tǒng)的判斷、繪圖模塊(基于PYTHON)

      先行系統(tǒng)的錄入部分組裝完成后,我想起新學(xué)的PYTHON語言擁有有高效的、優(yōu)秀的matplotlib庫繪圖能力與良好的數(shù)據(jù)處理能力,采用PYTHON進(jìn)行統(tǒng)計學(xué)處理能提高統(tǒng)計學(xué)處理的速度,同時降低代碼編寫時的錯誤發(fā)生率。

      首先進(jìn)行編寫的是排除人工填寫部分,人工填寫部分的內(nèi)容之間存在較大差異性,因此先行系統(tǒng)對這部分?jǐn)?shù)據(jù)不自動進(jìn)行統(tǒng)計學(xué)處理。判斷后的結(jié)果,均以文本文檔形式(后綴為“.txt”的文件,簡稱TXT)保存。

      以下代碼實現(xiàn)判斷是否需要進(jìn)行自動繪圖:

      a=str(0) #不是為0

      b=str(1) #是為1

      q=open("1.txt",'r')

      for line in q:

      s=line

      t=s.split()

      if (t[0][0].__contains__("(")) == True:

      t1=open("2.txt",'a')

      t1.write(b+"\n")

      t1.close()

      if (t[0][0].__contains__("(")) == False:

      t2=open("2.txt",'a')

      t2.write(a+"\n")

      t2.close()

      q.close()

      繪圖部分以TXT為媒介,結(jié)合之前的判斷內(nèi)容與后續(xù)添加的內(nèi)容進(jìn)行科學(xué)繪圖。

      以下代碼實現(xiàn)自動繪圖:

      cnames = [ #繪圖顏色(無黑色和不易辨別的顏色)

      '#F0F8FF',

      '#00FFFF',

      '#7FFFD4',

      ……]

      panduan=[] #判斷是否需要自動繪圖

      cn=[] #所有問題的選項結(jié)果

      que=[] #問卷的問題

      choose=[] #問卷題目的選項

      huancun1=[] #緩存區(qū)1

      huancun2=[] #緩存區(qū)2

      huancun3=[] #緩存區(qū)3

      qunub=0 #問題數(shù)量

      st1=open("2.txt",'r')#讀取判斷表

      for line in st1:

      s=line

      t=s.split()

      panduan=panduan + t

      st1.close()

      t=""

      s=""

      st2=open("cn.txt",'r') #讀取錄入的中文

      for line in st2:

      s=line

      t=s.split()

      if len(huancun1)

      huancun1=huancun1 + t

      if len(huancun1)==len(t):

      cn.append(huancun1)

      huancun1=[]

      st2.close()

      t=""

      s=""

      st4=open("que.txt",'r') #讀取問題

      for line in st4:

      s=line

      t=s.split()

      que=que+t

      qunub=int(qunub)+1

      st4.close()

      t=""

      s=""

      st5=open("1.txt",'r') #讀取問題的選項

      for line in st5:

      s=line

      t=s.split()

      if len(huancun3)

      huancun3=huancun3 + t

      if len(huancun3)==len(t):

      choose.append(huancun3)

      huancun3=[]

      st5.close()

      del s,t,line,huancun1,huancun2,huancun3

      import matplotlib.pyplot as plt

      import matplotlib as mpl

      from matplotlib.font_manager import FontProperties

      for i in range(qunub):

      savename=i+1

      tit=str(i+1)+"."+que[i]

      cn1=cn[i]

      pan=panduan[i]

      labels=[]

      inside=[]

      if pan=="0": #pan為1或其他字符,則不需畫圖

      ……

      for s4 in range(len(labels)): #對選項進(jìn)行折疊,防止問題過長超出畫布

      labels[s4]=labels[s4]+'('+inside[s4]+'人)'

      if len(labels[s4])>15:

      zz=len(labels[s4])

      for n in range (10,zz+1,10):

      labels[s4]=labels[s4][:n]+'\n'+labels[s4][n:]

      ……

      pie=plt.pie(inside,labels=labels,autopct='%1.2f%%',colors=cnames)

      #設(shè)置為繪制餅圖,顯示百分比

      ……

      a.set_size_inches(18.5, 10.5) #設(shè)置畫布大小

      a.savefig('圖表/'+str(savename)+'.png',dpi=90)

      a.show()

      以上海市xxx小學(xué)的數(shù)據(jù)為例,成功的導(dǎo)出了錄入數(shù)據(jù)與統(tǒng)計學(xué)圖表,軟件的測試獲得了成功(詳見“操作流程”、“圖表”文件夾)。

      3 結(jié)束語

      本軟件界面操作簡潔,無需太多計算機方面的知識即可掌握操作方法。

      軟件運行快捷,有效的提高了問卷錄入的速度;基層使用者大多數(shù)熟悉Excel的基本操作,對于數(shù)據(jù)的管理提供了便利,也減低了數(shù)據(jù)管理對使用者的難度。充分利用了VB的界面設(shè)計、PYTHON的繪圖能力與Excel的數(shù)據(jù)移植性方面的優(yōu)勢,與現(xiàn)有的許多的問卷錄入軟件不支持中文相比,本軟件幾乎完美

      地支持中文。有關(guān)閉密碼,無法通過常規(guī)方法關(guān)閉,提高了錄入的安全性。因此,該軟件的適用范圍較為廣泛,有較大的使用前景和推廣價值。

      總之,通過先行系統(tǒng)進(jìn)行數(shù)據(jù)錄入及統(tǒng)計學(xué)處理,可高效完成數(shù)據(jù)采集和管理工作,大大節(jié)約了紙質(zhì)問卷錄入時間與確保錄入時的安全,軟件后續(xù)數(shù)據(jù)進(jìn)行科學(xué)管理和統(tǒng)計分析,便于社會調(diào)查最終順利實施。

      參考文獻(xiàn):

      [1] 范蔭恒.《物理化學(xué)實驗》數(shù)據(jù)處理系統(tǒng)軟件的開發(fā)及應(yīng)用[J]. 計算機與應(yīng)用化學(xué), 2005(11):1066-1069.

      [2] 孔玉. 臨床試驗數(shù)據(jù)管理軟件的開發(fā)與應(yīng)用[J]. 第二軍醫(yī)大學(xué), 2007(63).

      [3] 龐勝利. Python環(huán)境下用pyExcelerator操作Excel[J]. 電腦編程技巧與維護(hù), 2009(20):48-49,64.

      [4] 魏紹蓉. 基于Visual Basic與Excel相結(jié)合的問題研究[J]. 青海師范大學(xué)學(xué)報:自然科學(xué)版, 2010(1):67-69.

      [5] 羅隆福. 基于VB的電力機車牽引變壓器分析軟件開發(fā)[J]. 湖南大學(xué)學(xué)報:自然科學(xué)版, 2011(7):43-47.

      [6] 陸健. 臨床試驗電子化數(shù)據(jù)管理與統(tǒng)計分析系統(tǒng)的開發(fā)及應(yīng)用[D].上海: 第二軍醫(yī)大學(xué), 2012.

      [7] 孫玉環(huán). 基于EpiData與SAS系統(tǒng)的紙版問卷數(shù)據(jù)錄入質(zhì)量控制技巧[J]. 中國衛(wèi)生統(tǒng)計, 2012(4):607-608,611.

      [8] 李瀟. 基于excel的數(shù)據(jù)管理及其在公共衛(wèi)生領(lǐng)域內(nèi)的應(yīng)用[J]. 中國衛(wèi)生統(tǒng)計, 2014(6):1084-1086.

      猜你喜歡
      數(shù)據(jù)錄入副本選項
      基于SPSS軟件在市場調(diào)研中的數(shù)據(jù)錄入方法
      面向流媒體基于蟻群的副本選擇算法①
      基于SPSS軟件在市場調(diào)研中的數(shù)據(jù)錄入方法
      跟蹤導(dǎo)練(四)
      閱讀理解
      跟蹤導(dǎo)練(5)
      單項填空精選練習(xí)100道
      副本放置中的更新策略及算法*
      绥德县| 闻喜县| 嘉禾县| 河池市| 阳信县| 浦城县| 正阳县| 武川县| 永宁县| 南丰县| 吕梁市| 白水县| 盐源县| 宁津县| 沁水县| 邯郸县| 荆州市| 万全县| 兴文县| 建德市| 延安市| 天台县| 千阳县| 黑河市| 望城县| 白玉县| 西城区| 集贤县| 德格县| 崇文区| 上林县| 万山特区| 方山县| 惠州市| 普定县| 出国| 阜新市| 阳城县| 鄱阳县| 祁门县| 元阳县|