用Excel VBA设计考试信息系统

时间:2022-09-19 04:58:57

用Excel VBA设计考试信息系统

摘要高校学生期末考试,如果每场考试都采取随机座次,并且直到入考场时学生才知道自己的座次,学生就没有机会提前设计协同作弊。但是用手工方式实现每场考试随机安排座位,工作量大,效率低下。使用Excel制作一个考试信息系统,能完美的完成这项工作。

关键词 Excel VBA;随机;信息系统

中图分类号 TP31文献标识码 A 文章编号 1674-6708(2010)18-0140-01

1 实际工作中的问题与需要

高校学生一般都安排集中期末考试,考试都是各专业单独组织考场,考生都是平时在一起学习的同学。如果座次直接按照学号,可以方便监考老师检查考生到场情况,但是一直是一样的座次不变,固定考生相邻的时间长了,会出现协同作弊的现象,甚至出现雷同卷。虽然可以通过监考老师加强监视力度来避免,但是最好用技术的方法来解决。如果打印出学生学号姓名清单,随机贴到座位上,但是每场考试都贴标签,太麻烦,而且学生不容易找到自己的座位。后来采用当场抽签的办法,制作两份号码标签,一份贴到考试座位上,另外一份让考生抽签,抽到后对号入座,这种方法虽然能够实现随机排坐,但是太费时间,监考教师手里没有座次表,学生可以趁乱自己换标签调座,另外如果有缺考的学生,难以查找登记。最后,我们决定还是使用计算机,进行考场安排,以达到事半功倍的效果。该设想是考场里座位上只贴号码,有N个座位则号码从1~N。考试前半小时随机产生考生座次表,考试前10分钟在考场门口张贴一张座次表,此表按学号排序,考生可快速查到自己的座位号。监考教师领一份座次表,此表按座位号排序,监考教师可快速查到每个座位上的考生,对缺考考生快速查找登记。

2 解决问题的思路

我们借助Excel电子表格实现这个工作。首先制作出学生清单,包含学号、姓名、性别等几列,并填入实际数据。添加一列用来产生随机数,添加另外一列,用来产生座次号。具体方法如下,在随机数一列第一单元格插入函数rand(),或者直接输入“=rand()”,把这一单元格内容复制到此列其他单元格,或者使用快速填充。这样随机数一列所有单元格都有一个随机数,按照随机数列给所有行重新排序,排序完毕后,在座次号一列用1,2,3……填充,然后删掉随机数列,按照学号一列重新排序,这样就把所有的考生随机的安排到相应的座位上去。按照学号排序打印的表格就是张贴给学生查找自己座号的表格,考生可快速检索到自己的座位。按照座号排序打印出的表格就是给监考教师核对学生入场情况的表格,只需在表格上标记出空位的座位号,便可记录下缺考学生。如此组织考场简洁方便,快速有序。需要说明是,如果同一次的考试安排到多个考场,比如两个,那么这两个考场的座次号都是从1开始。制作表格的时候,按座号排序后,再添加一列标题为考场,选取前面第一考场人数的行在考场这一列标记为第一考场,剩下的标记为第二考场另外座次号减去第一考场人数,从1开始排起。

3 编制程序,做成完整的考试信息系统

以上利用Excel实现了随机安排考生座位,但是需要手动编辑Excel数据,手动排序打印,容易出现误操作,并且不熟悉Excel的用户不能胜任。我们考虑编制程序,做一个直观的用户界面,让用户能够选择考生范围,输入考场个数,考场地点,把相应的考生随机安排到指定的考场里。这样使用起来更加直观,另外添加学生管理,课程管理,成绩录入,成绩单打印等模块,做成一个完整的考试信息系统。把所有学生的信息制作成一个电子表格,作为基本的数据库,其他数据从这里提取。利用Excel VBA设计一个窗体作为程序的主界面。添加相应功能模块的按钮,分别编写对应模块的程序代码。这里给出生成考生随机座号的程序代码。

Private Sub CommandButton1_Click()

Dim i As Integer

'学生数据表格带标题行

'A列存学号,F列存随机数,G列存座号

'对所有的数据行在F列产生一个随机数

i = 2

Do While Range("A" & i) ""

Range("F" & i).Select

ActiveCell.FormulaR1C1 = Rnd()

i = i + 1

Loop

'按照随机数进行排序

Range("A1:F12").Sort Key1:=Range("F4"), Order1:=xlAscending, Header:= _

xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _

SortMethod:=xlPinYin, DataOption1:=xlSortNormal

'依次填入座号

i = 2

Do While Range("A" & i) ""

Range("G" & i).Select

ActiveCell.FormulaR1C1 = i - 1

i = i + 1

Loop

'按照学号进行排序

Range("A1:G12").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _

xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _

SortMethod:=xlPinYin, DataOption1:=xlSortNormal

End Sub

参考文献

[1] 赵志东.Excel VBA基础入门[M].北京:人民邮电出版社,2006.

[2] 王萍萍,等.ASP+Dreamweaver动态网站开发[M].北京:清华大学出版社,2008.

上一篇:沥青路面的工程质量管理 下一篇:加强检测机构仪器设备管理的思考