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