999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VB和PYTHON的問卷錄入與分析系統

2018-01-06 00:58:20徐暢暢
電腦知識與技術 2017年35期
關鍵詞:內容系統

徐暢暢

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

關鍵詞:計算機;調查問卷;數據錄入;數據管理;編程;軟件;VB 6.0;PYTHON 3.5

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

1 背景

隨著21世紀的到來,我們的社會逐步邁入大數據時代,數據的收集、分析是處理大數據的基礎。目前數據收集常采用紙質調查問卷,但紙質調查問卷需要手工輸入問卷數據,進而進行統計學處理。手工轉換為電子版的調查問卷數據統計學處理工作量大,后期數據匯總工作繁瑣。現有的問卷錄入軟件界面繁瑣,使用時往往需要操作者具備一定的專業常識。以EPIDATA問卷錄入系統為代表相關軟件,在錄入中文內容時容易出現亂碼,并且數據的移植性差。

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

2 研究內容

2.1 軟件設計的思維導圖

1) 數據錄入模塊

2) 數據格式判斷模塊:統計學處理前準備工作

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

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

2.3 先行系統設計的過程與實際操作流程

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

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

1) 問卷錄入的準備工作

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

以下為聲明內容:

Dim ExApp As New Excel.Application

Dim ExBook As Excel.Workbook

Dim ExWorksheet As Excel.Worksheet

2) 電子問卷模板形成

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

以下代碼實現軟件的問題與選項提取:

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 ‘確定問題的個數,再導入問題及選項內容

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,將其命名為“錄入區”,在其中新建按鈕等。利用CHECK選擇框進行問題的勾選,TEXT輸入框進行錄入選項,錄入選項同時進行備份,配有防關閉功能,斷點重錄功能,激活“臨時休息區”(詳見“操作流程”:1.3、1.4)。

以下代碼實現錄入時選項的顯示:

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

以下代碼實現選擇問題選項:

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

‘問卷中相應問題項,其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 = ""

以下代碼負責在錄入時進行備份:

If Text1.Visible = True Then

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

……

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

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

Close #1

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

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

Close #2

Open "d:\副本 內容" & no.Caption & ".txt" For Append As #3

Print #3, b

Close #3

Open "d:\副本 數字" & 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:\副本 內容.txt" For Append As #1

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

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

Close #1

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

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

Close #2

Open "d:\副本 內容" & no.Caption & ".txt" For Append As #3

Print #3, Text4.Text

Close #3

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

Print #4, "無"

Close #4

4) 數據導出

新建FORM3,命名為“導出區”,保存同時進行備份(詳見“操作流程”中1.6)。

以下代碼實現臨時緩存區內的所有內容進行備份:

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) ‘備份問題選項臨時存放區

Close #3

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

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

Close #4

Next i

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

Command4_Click ‘對臨時緩存區內的所有內容進行備份

Label3.Caption = ""

listnum = Form4.List3.ListCount

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

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

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) 問卷數據錄入內容的保存與修改

新建FORM4,命名為“臨時收錄區”,用于支持數據的保存、修改。

以下部分實現“刪除直接改正法”的“刪除”按鈕:

On Error Resume Next

List1.RemoveItem (List1.ListIndex)

List2.RemoveItem (List2.ListIndex)

List3.RemoveItem (List3.ListIndex)

List4.RemoveItem (List4.ListIndex)

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

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

Text3.Text = 3

List1.ListIndex = -1

List2.ListIndex = -1

List4.ListIndex = -1

End Sub

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

Text3.Text = 4

List1.ListIndex = -1

List2.ListIndex = -1

List3.ListIndex = -1

End Sub

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

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

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( ) ‘添加修改內容(注意:僅能修改第一個格子)

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

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,命名為“臨時休息區”,用于錄入人員在錄入時的臨時休息。臨時休息區一但激活會關閉所有其他窗口,解除需要密碼(詳見“操作流程”中1.7)。

以下代碼實現臨時休息區:

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)

‘拒絕常規關閉(與錄入區防關閉的代碼相同)

Cancel = True

End Sub

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

先行系統的錄入部分組裝完成后,我想起新學的PYTHON語言擁有有高效的、優秀的matplotlib庫繪圖能力與良好的數據處理能力,采用PYTHON進行統計學處理能提高統計學處理的速度,同時降低代碼編寫時的錯誤發生率。

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

以下代碼實現判斷是否需要進行自動繪圖:

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為媒介,結合之前的判斷內容與后續添加的內容進行科學繪圖。

以下代碼實現自動繪圖:

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

'#F0F8FF',

'#00FFFF',

'#7FFFD4',

……]

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

cn=[] #所有問題的選項結果

que=[] #問卷的問題

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

huancun1=[] #緩存區1

huancun2=[] #緩存區2

huancun3=[] #緩存區3

qunub=0 #問題數量

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)): #對選項進行折疊,防止問題過長超出畫布

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)

#設置為繪制餅圖,顯示百分比

……

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

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

a.show()

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

3 結束語

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

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

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

總之,通過先行系統進行數據錄入及統計學處理,可高效完成數據采集和管理工作,大大節約了紙質問卷錄入時間與確保錄入時的安全,軟件后續數據進行科學管理和統計分析,便于社會調查最終順利實施。

參考文獻:

[1] 范蔭恒.《物理化學實驗》數據處理系統軟件的開發及應用[J]. 計算機與應用化學, 2005(11):1066-1069.

[2] 孔玉. 臨床試驗數據管理軟件的開發與應用[J]. 第二軍醫大學, 2007(63).

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

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

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

[6] 陸健. 臨床試驗電子化數據管理與統計分析系統的開發及應用[D].上海: 第二軍醫大學, 2012.

[7] 孫玉環. 基于EpiData與SAS系統的紙版問卷數據錄入質量控制技巧[J]. 中國衛生統計, 2012(4):607-608,611.

[8] 李瀟. 基于excel的數據管理及其在公共衛生領域內的應用[J]. 中國衛生統計, 2014(6):1084-1086.

猜你喜歡
內容系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
內容回顧溫故知新
科學大眾(2022年11期)2022-06-21 09:20:52
內容回顧 溫故知新
科學大眾(2021年21期)2022-01-18 05:53:48
內容回顧溫故知新
科學大眾(2021年17期)2021-10-14 08:34:02
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
主要內容
臺聲(2016年2期)2016-09-16 01:06:53
主站蜘蛛池模板: 亚洲经典在线中文字幕| 国产亚卅精品无码| 国产在线自乱拍播放| 国产肉感大码AV无码| 91最新精品视频发布页| 亚洲熟女偷拍| 亚洲成AV人手机在线观看网站| 国产精品福利社| 鲁鲁鲁爽爽爽在线视频观看| 四虎精品黑人视频| 国产福利一区视频| 国产高清毛片| 无码一区中文字幕| 亚洲人成在线精品| 色综合天天综合| 日本亚洲最大的色成网站www| 国产精品微拍| 精品国产中文一级毛片在线看 | 日本精品影院| 毛片手机在线看| 99这里精品| 在线观看国产精品一区| 亚洲男人天堂2020| 国产三级毛片| av午夜福利一片免费看| 国产精品一区不卡| 日本午夜视频在线观看| 日本高清免费不卡视频| 久久福利片| 亚洲第一黄色网址| 国产永久在线视频| 狠狠色综合网| 久久黄色影院| 亚洲人成成无码网WWW| 午夜性刺激在线观看免费| 中文字幕日韩久久综合影院| 国产91线观看| 美女毛片在线| 欧美日韩国产综合视频在线观看 | 国产日韩精品一区在线不卡| 国外欧美一区另类中文字幕| 国产午夜精品一区二区三| 国产精品va免费视频| 国产精品深爱在线| 欧美一区二区啪啪| 92午夜福利影院一区二区三区| 国内精品久久久久鸭| 亚洲欧美国产高清va在线播放| 国内毛片视频| 国产办公室秘书无码精品| 18禁黄无遮挡网站| 亚洲国产第一区二区香蕉| 好吊日免费视频| 99这里只有精品在线| 国产浮力第一页永久地址 | 欧美成人二区| 日本欧美视频在线观看| 亚洲精品无码久久毛片波多野吉| 国产成人精品综合| 国产真实乱了在线播放| 免费不卡在线观看av| 国产成人福利在线视老湿机| 亚洲第一香蕉视频| 久久这里只精品国产99热8| 91视频青青草| 国精品91人妻无码一区二区三区| 亚洲成a人片在线观看88| 一级看片免费视频| 日本人又色又爽的视频| 国产精品污污在线观看网站| 无码区日韩专区免费系列| 91亚洲国产视频| 996免费视频国产在线播放| 欧美国产菊爆免费观看| 色九九视频| a级毛片毛片免费观看久潮| 亚洲一道AV无码午夜福利| 色婷婷电影网| 五月天久久婷婷| 亚洲成在人线av品善网好看| 69av免费视频| 波多野结衣亚洲一区|