舒清錄
隨著計算機應用在人們生活、工作和學習中的滲透和普及,文字錄入已成為現(xiàn)代人必須熟練掌握的計算機基本技能之一。目前市場上雖然有一些現(xiàn)成的文字錄入測試軟件,如金山打字通、Ccit2000、Typingfaster等,這些軟件在一定程度上能提高人們文字錄入的效率,但在系統(tǒng)的集成、需求的個性化、錄入效率評價、錄入過程監(jiān)控等方面,往往還存在諸多問題。故設計該中英文文字錄入測試軟件,以期進一步提高操作者的文字錄入水平。
1 文字錄入測試涉及的主要技術
文字錄入測試主要檢驗操作者鍵盤操作以及中英文文字輸入的熟練程度。錄入的內(nèi)容主要包括英文字母、數(shù)字、漢字以及一些特殊字符等。特別是英文字母、數(shù)字、漢字、特殊符號等混合文本的錄入,對操作者的錄入技能要求更高。
本軟件是基于Visual Basic(以下簡稱VB)6.0而開發(fā)的,主要采用VB控件庫中的RichTextBox控件以及Label控件實現(xiàn)。RichTextBox控件主要用于接受用戶的輸入文本,其具有靈活、豐富的格式設置功能。Label控件用于顯示原始文本內(nèi)容,供用戶對照輸入的標準,具有不可編輯性[1]。
1.1 主要用到的RichTextBox控件屬性1)SelLength屬性——返回或設置所選擇的字符數(shù);2)SelStart屬性——返回或設置所選擇的文本的起始點,如果沒有文本被選中,則指出插入點的位置;3)SelColor屬性——返回或設置在對象里顯示圖片和文本的前景顏色;4)SelText屬性——返回或設置包含當前所選擇文本的字符串;5)AllowDrop屬性——獲取或設置控件是否接收拖放的通知等。
RichTextBox控件事件有Change事件(控件中當前文本的選擇發(fā)生改變或插入點發(fā)生變化時)、keydown事件等。
1.2 控件數(shù)組的使用本測試軟件采用按行對照錄入文本的方式,這樣有利于操作者對照原始文字錄入,可以提高錄入的速度和準確度。主要用到Label(index)和RichTextBox(index)2個控件數(shù)組,分別用于分行存放原始文本和用戶錄入的文本??丶?shù)組通過控制其索引(index),能很方便地在不同的控件中轉換,給程序設計和用戶對照輸入帶來很大的方便。
1.3 文字格式的轉換在VB6.0中,一般情況下,中文和英文或數(shù)字都只算一個字符,占一個字節(jié),給中英文混合錄入的定位帶來不便。所以采用Unicode編碼來處理中英文數(shù)字等文本,也就是把中文看作2個字節(jié),英文、數(shù)字等其他字符看作一個字節(jié)??梢酝ㄟ^LenB(StrConv(strTxt, vbFromUnicode))來求得strTxt字符串所占的字節(jié)數(shù)[2]。
2 文字錄入自動評分實現(xiàn)
在中英文錄入過程中,由于緊張、疲勞等多種原因往往會導致操作者多打、漏打、錯打字符,甚至出現(xiàn)多次交叉串行現(xiàn)象。如果在2個字符串的字符之間選取不同匹配對,操作者得到的評價將有較大差異,甚至得出不合理的結果。而判卷就是要在錄入文本和標準文本字符之間找出最佳匹配對,以便正確評價操作者的水平,但這是一個實現(xiàn)比較困難且復雜的事情。
本文把系統(tǒng)自動評分的困難轉嫁到對系統(tǒng)操作界面設計的高技巧上來,要求操作者輸入的字符必須與原文字符對應位置完全匹配才算正確,結果用不同顏色的字來表示,比如輸入正確的用藍色表示,錯誤的用紅色表示。系統(tǒng)實時統(tǒng)計藍色字符的數(shù)目,也就是輸入的正確字符數(shù)目,并實時反饋、顯示給操作者,從而可對操作者的錄入效率進行實時評價。
2.1 算法初始處理在系統(tǒng)啟動時,隨機從數(shù)據(jù)庫中得到數(shù)據(jù)加密的文字,經(jīng)過數(shù)據(jù)解密把待測試的文字存入YS()數(shù)組,存放的標準是:中文文字占2個存儲單元,其他的占一個存儲單元。例如:原始數(shù)據(jù)“我I”,則YS(0)=YS(1)="我",YS(2)="I"。把原始數(shù)據(jù)按照一定的數(shù)據(jù)標準放入RichTextBox()控件數(shù)組中,供操作者對照參考。
2.2 實時提醒用字體顏色的變化和實時顯示操作者在當前輸入情況下的正確數(shù)與錯誤數(shù)來體現(xiàn)其實時性。核心設計思想為:利用RichTextBox的selstart確定操作者輸入或刪除的起點位置值和終點位置值;通過兩值的比較,確定進行的操作類型(刪除、輸入),然后從找到正確的位置開始,一直到輸入總字符的最后位置,逐個與原始數(shù)據(jù)YS()里對應位置的內(nèi)容比較;通過比較的結果,使用RichTextBox的SelColor屬性改變輸入的文字顏色,提醒操作者。對于實時顯示操作者輸入的準確數(shù)字反饋,可以每次從最啟始位置開始,逐個比較RichTextBox的文字顏色,如果是紅色的則錯誤,錯誤計數(shù)器值加一,否則正確計數(shù)器值加一。下面是此設計思想的偽代碼:
For I = 0 To 輸入總文字的長度-1
RichTextBox控件的SelStart = I
RichTextBox控件的SelLength = 1
IfRichTextBox1.SelColor是正確的顏色值 Then
正確計數(shù)器值加一
Else
計數(shù)器值加一
End If
Next
2.3 評分實現(xiàn)當測試者完成整個測試或中途因某種原因中斷時,系統(tǒng)根據(jù)實時提醒得到的正確字符數(shù)與總的字數(shù)的比例來得出一個評價。
文字錄入測試算法流程圖如圖1所示。
3 文字錄入安全問題及其解決辦法
3.1 防止操作者篡改原始數(shù)據(jù)在文字錄入測試軟件的實際應用中,可能會出現(xiàn)有的操作者通過其他手段找到系統(tǒng)存放原始文字數(shù)據(jù)的文件并篡改的現(xiàn)象。對此,可以對原始文字數(shù)據(jù)進行加密,文件內(nèi)容被導入到系統(tǒng)再進行解密。一般而言,在此環(huán)境下簡單的加密方案就可以滿足要求。
3.2 禁止通過鼠標右鍵或鍵盤實現(xiàn)復制粘貼以及文字直接拖放為真實有效地檢驗操作者文字錄入的效率,可以通過設置RichTextBox控件的keydown事件,來禁止操作者利用鼠標右鍵或鍵盤實現(xiàn)復制粘貼以及文字直接拖放。當用戶按“Ctrl+V”時,讓系統(tǒng)剪貼板內(nèi)容清空(Clipboard.Clear)就可以達到目的[3]。拖放問題可以直接設置RichTextBox控件的禁止拖放屬性(AllowDrop設置為False)就可以實現(xiàn)。
4 結束語
本文所介紹的實現(xiàn)中英文文字錄入測試的一些關鍵技術,將為用戶開發(fā)類似軟件提供參考。同時,本文提到的實現(xiàn)方法通過變換可以運用到VB.NET環(huán)境中去,實現(xiàn)當前流行的基于B/S體系的測試模式。
參考文獻
[1]譚浩強,袁玫,薛淑斌.Visual Basic程序設計[M].第二版.北京:清華大學出版社,2007
[2]VB函數(shù)[EB/OL].http://msdn.microsoft.com/zh-cn/library/cc437624(VS.71).aspx
[3]周長安,等.獨立學院網(wǎng)絡考試的漢字錄入題設計[J].中國科技信息,2006(9):260-261