APP下载

省计算机等级考试上报数据实现自动生成的改进

2013-04-29徐俏虹樊潮

计算机时代 2013年7期

徐俏虹 樊潮

摘 要: 省计算机等级考试是浙江高校重要的一项考试。考生相关考试信息汇总形成的上报数据库一般是由二部分组成的,一部分为上机考试所形成的上报数据,一部分是理论考试所形成的上报数据。为了把省计算机等级考试的上机部分和理论部分整合成一个完整的上报数据,在研究上机考试所形成的上报数据自动生成的基础上,经过新的编码和检验,实现了上报数据的自动生成。改进工作采用VBA编程实现,并正确地形成了上报数据的缺考库。

关键词: 计算机等级考试; VBA; 自动生成; 缺考库; 上报数据

中图分类号:TP391 文献标志码:B 文章编号:1006-8228(2013)07-43-03

0 引言

数据在任何时代都是很重要的,它具有时代意义和历史意义,每一个时代的进步和发展都会反映在各种各样的数据中。

浙江省高校计算机等级考试是一项重要的考试,其结果需要形成一个上报数据。作者在文献[1]中对上机考试部分成功实现了上报数据自动生成。由于该考试分上机和笔试两部分,为了将笔试部分的缺考情况同时反映在上报数据中,学校教务处需要汇总上机考试和笔试考试的缺考数据,为了减少人工数据整理的失误和误差,我们经过不断地尝试和編制程序,在形成的上报数据中加入了笔试考试缺考情况,即对作者文献[1]中的程序进行了改进,经过尝试和数据的检验、测试,确定完全能够形成正确的上报数据结果。

1 上报数据的研究

上报数据是一个DB格式的文件,并且是一个经过加密的文件,所以直接把这个文件中的数据读取出来使用是不可能的。经过研究,我们在上报数据自动生成系统实现的基础上,采用Excel文件格式结合VB编程来形成上报数据,进而自动生成准确的上报数据。这种办法可以大大提高上报数据的准确性,极大地减少人工操作。

2 具体实现过程

自动生成上报数据的实现我们采用了VBA(Visual Basic for Applications),它是一种宏语言,能用来扩展Excel的功能。

2.1 前期准备

先把参加上机考试的考生所生成的压缩包放在一个盘的根目录中,如D:\RAR,然后打开开始程序的运行框,在其中输入CMD回车进入DOS状态,进入DOS环境后执行CD\回车后,再执行CD D:\RAR命令, 进入D:\RAR目录后,执行DIR*>F.TXT命令,把参加上机考试的考生准考号形成上机考生数据F.TXT文本文件。

然后打开上机考生数据F.TXT文件,把文本文件的内容复制到WORD环境中,进行上机考生数据编辑。上机考生数据是如图1所示的以准考证号为内容的文件。

把“学校配置文件夹”中的本校的考生报名总库解压到本地硬盘上(ksXXX.db,XXX为学校代码)[5];打开缺考录入系统,导入本校的DB格式的全部考生数据。接下来把所有报名的考生数据全部导入上机和笔试都缺考系统,然后以EXCEL格式打开文件,并存为EXCEL格式的文件。打开这个EXCEL文件,因为总库数据在sheet1表中,于是把上机考生F.TXT中的数据放在sheet2表中,先把A列所在的单元格设置为文本格式,以使生成的F.TXT文件中参加上机考生的准考证号拷贝到A列时,能正常显示准考证号,而不是以科学计数法来显示数据,数据汇总表如图2所示。把理论缺考考生数据放在sheet3表中。

在图2的显示界面,添加“开发工具”选项卡[3],然后点击开发工具选项卡,打开Visual Basic按钮,就会出现VBA环境所示的界面。双击左边窗口中的任一表,如sheet1,所显示的代码输入窗口如图3所示。

在图3窗口空白处,输入代码,利用FOR循环和IF ELSE判断语句来实现数据和筛选,以及比较而最终得到上机和笔试缺考的考生,从而生成上报数据。为了方便数据的最后生成,把RAR文件夹中的上机考生数据放置在sheet2表中,把理论缺考的数据放在sheet3表中,在打开的窗口中直接输入如下代码:

Sub f()

Dim ss1 As Integer '定义总表中的循环变量

Dim ss2 As Integer '定义实际上机表中的循环变量

Dim ss3 As Integer '定义理论缺考中的循环变量

For ss1=2 To 12

For ss2=2 To 5

'MsgBox "ss1" & Sheet1.Cells(ss1,1).Value

‘MsgBox函数也称为消息对话框[6],用户在使用这个函数后,可以很方便地查看当看运动结果

‘进而修改程序

If Sheet1.Cells(ss1, 1).Value=Sheet2.Cells(ss2, 1)

.Value Then

'取总表sheet1中一个准考证号与上机表sheet2中取一个准考证号想比较,如果相同,取理论缺考表sheet3中一个准考证号相比较

For ss3=2 To 5

If Sheet1.Cells(ss1,1).Value=Sheet3.Cells(ss3,1)

.Value Then

'如果相同,那么置sheet1表中的理论缺考为‘是,上机缺考为‘否

Sheet1.Cells(ss1, 4).Value="是"

Sheet1.Cells(ss1, 5).Value="否"

GoTo 1 '转到总表取下一个准考证号 数据

Else '如果不与理论缺考表中的这个准考证号相同

If ss3=5 Then '如果在理论缺考表中查询结束还没有查询到

Sheet1.Cells(ss1,1).Value="" '置表准考证号为空

GoTo 1

End If

End If

Next

Else

If ss2=5 Then '如果在上机表中查询结束还没有查询到

Sheet1.Cells(ss1, 5).Value="是" '置上机缺考为‘是

For ss3=2 To 5

If Sheet1.Cells(ss1,1=Sheet3.Cells(ss3,1) Then

Sheet1.Cells(ss1, 4).Value="是"

'置理论缺考为‘是

GoTo 1

Else

If ss3=5 Then '如果在理论缺考表中查询结束还没有查询到

Sheet1.Cells(ss1,4).Value="否" '置理论缺考为‘否

GoTo 1

End If

End If

Next

End If

End If

Next

1: Next

Exit Sub

在鼠标光标所处的位置單击工具栏上的“运行子过程/用户窗体”按钮,相应的过程就会被运行[4],所以点击当前的代码窗口后,再点击菜单栏中的“运行子程序/用户窗体”,或是直接按F5,就会运行上面的代码,得到缺考考生数据表,如图4所示。

在图4所示的数据中,有准考证号为空的考生,需要把这些数据删除,可以利用这个小程序:

'判断为空行就删除

Sub ff()

Dim ss1 As Integer

For ss1=2 To 9

If Sheet1.Cells(ss1, 1).Value="" Then

Sheet2.Rows(ss1).Delete

End If

Next

End Sub[1]

经过检验,所得到的缺考考生数据准确无误。该系统的应用节省了人工操作的时间,有效地减少人工输入数据时所可能产生的错误。把这些数据导入缺考库,生成DB文件,就可以上报。把这些程序录制成宏,然后通过宏的运行即可快捷地执行相关操作[2]。

3 结束语

本文对“省计算机等级考试上报数据的自动生成系统实现”[1]进行了改进,增加了笔试考生缺考数据的自动生成功能,把上机考试和笔试考试中缺考考生同时自动生成上报数据。对于不熟悉编程的使用者,如教务处相关人员也可以轻松上手,可适用于浙江有相关考试的学校使用,有一定的推广和实用的价值。

参考文献:

[1] 樊潮.省计算机等级考试上报数据的自动生成系统实现[J].计算机时代,2012.7:37-39

[2] 九州书源.Excel2010高效办公从入门到精通(高清视频版)[M].清华大学出版社,2012.

[3] 李东海等.Excel2010实战办公技巧精粹查询宝典[M].兵器工业出版社,2012.

[4] 许小荣等.Excel VBA语法与应用手册[M].电子工业出版社,2010.

[5] 黄兴.作弊缺考录入系统-用户使用说明书[Z].杭州电子科技大学,2012.4.

[6] 陈庆章等.Visual Basic程序设计基础[M].浙江科学技术出版社,2010.