侯伟 吴锦杨 袁龙华
摘要:本随机抽题系统以毕业答辩为例结合VBA编程和微信公众号互联网技术,改变了传统活动现场环节中的纸质化抽签及抽题的形式,同时还具有答题倒计时功能。本随机抽题系统可适用于毕业答辩、课堂教学互动、晚会现场抽奖、教学知识竞赛、面试随机抽题等需要随机抽签或抽题的场合。该系统能够使每一位在场用户通过投影仪屏幕同时看到随机所抽题目,相比传统纸质抽题更公平公正。
关键词:VBA编程;随机抽题;随机抽签;微信公众号;倒计时
中图分类号:TP37 文献标识码:A 文章编号:1009-3044(2016)30-0100-03
1背景意义
随着电子行业的突飞猛进,计算机及其应用软件走进了人们的生活,我们应该充分利用电子产品资源。例如,在高校毕业答辩、研究生入学面试等各个抽题环节中一般采用纸质化抽题,这样不仅浪费纸张、浪费碳粉,同时打印机在打印过程中所消耗电能以及微细碳粉对环境产生的危害也不可忽视。我国仍有大部分地区实行火力发电,需要消耗煤炭,而纸张来源于树皮,这些纸张、电能的消耗都间接导致温室效应,不符合国家长期发展的要求。通过微信公众号,学生在答辩环节中还可以参与投票表决互动,选出自己认为最佳答辩毕业生。在高校研究生面试、企业面试、教学知识竞赛、晚会比赛等活动中,通过使用本系统中引用的二维码技术仍然可以满足不同用户的需求。
2技术方案
本随机抽题软件可根据参赛选手总人数,自动设置抽签数量,参赛选手只需要点击“开始抽签”控制按钮便可随机滚动生成签号,此时系统状态输出显示器会显示“正在抽签”,点击“停止抽签”控制按钮即可获得自己的抽签结果,此时系统状态输出显示器会显示“您抽的是×号签”。参赛选手点击“开始抽题”控制按钮时便可高速滚动显示题目编号,此时系统狀态输出显示器会显示“正在抽题”,参赛选手点击“停止抽题”控制按钮即可随机不重复获得一个题目编号,此时系统状态输出显示器会显示“请您回答×号题”。此时点击“打开题目”控制器即可查看自己抽取的题目,参赛选手回答题目的同时,系统自动进入120s倒计时阶段,参赛选手回答完毕题目之后可以点击“参考答案”触发控制按钮得知自己回答正确与否,并且可以点击“继续抽题”触发控制器按钮进行下一轮抽题环节,所有题目抽取完毕之后,系统会自动弹框提醒参赛选手“题目已抽完,请点击初始化重新抽题!”
3代码内容
PPT中使用VBA方法目前已经有较多参考文献讲述,在此不再详述,本次随机抽题所用VBA编码如下:
Dim Canbeuse, QuestionNum1, QuestionUsed1, QuestionNum2, QuestionUsed2, arrRM, FCQXS, F As Integer
Dim flag As Boolean
Private Sub 抽取框_Change()
End Sub
Private Sub 初始化_Click()
Call CQ_do1("stop")
Call CQ_do2("stop")
Canbeuse = 1
取框.ForeColor = &HC00000
抽取框.Text = "圆融"
已抽题目.Text = ""
已抽签.Text = ""
文字描述.Text = "勤学务实 卓越"
Me.开始抽签.Caption = "开始抽签"
Me.开始抽题.Caption = "开始抽题"
QuestionNum2 = ActivePresentation.Slides.Count - 1
题目总数.Text = QuestionNum2
End Sub
Private Sub 开始抽签_Click()
抽取框.ForeColor = &HFF&
If Me.开始抽签.Caption = "停止抽签" Then
Me.开始抽签.Caption = "开始抽签"
Call CQ_do1("stop")
Else
Me.开始抽签.Caption = "停止抽签"
Call CQ_do1("start")
End If
End Sub
Private Sub CQ_do1(doTag)
QuestionNum1 = 总人数.Text
QuestionUsed1 = Split(Me.已抽签, " , ", -1, 1)
Canbeuse = 1
If doTag = "start" Then
F = 0
If UBound(QuestionUsed1) < QuestionNum1 Then
Dim n As Integer
Randomize '初始化随机函数
Do
'Sleep 30
n = Int((QuestionNum1) * Rnd + 1) 'n为随机抽取的数值,设置为从1-QuestionNum里抽取
抽取框.Text = n
If 开始抽签.Caption = "开始抽签" Then
文字描述.Text = "您抽的是 号签"
Else
文字描述.Text = "正在抽签"
End If
If F = 1 Then
Dim J, m
Canbeuse = 1
For J = 1 To UBound(QuestionUsed1)
m = QuestionUsed1(J - 1)
If QuestionUsed1(J - 1) = n Then
Canbeuse = 0
Exit For
Else
End If
Next
If Canbeuse = 1 Then
已抽签 = 已抽签 + 抽取框.Text + " , " '题目标记用 , 分隔
Exit Do
End If
End If
DoEvents
Loop
Else
MsgBox ("抽签结束,请准备抽题。")
End If
Else
F = 1
End If
End Sub
Private Sub 开始抽题_Click()
抽取框.ForeColor = &HFF&
If Me.开始抽题.Caption = "停止抽题" Then
Me.开始抽题.Caption = "开始抽题"
Call CQ_do2("stop")
Else
Me.开始抽题.Caption = "停止抽题"
Call CQ_do2("start")
End If
End Sub
Private Sub CQ_do2(doTag)
QuestionNum2 = ActivePresentation.Slides.Count - 1
QuestionUsed2 = Split(Me.已抽题目, " , ", -1, 1)
Canbeuse = 1
If doTag = "start" Then
F = 0
If UBound(QuestionUsed2) < QuestionNum2 Then
Dim n As Integer
Randomize '初始化隨机函数
Do
'Sleep 30
n = Int((QuestionNum2) * Rnd + 1) 'n为随机抽取的数值,设置为从1-QuestionNum里抽取
抽取框.Text = n
If 开始抽题.Caption = "开始抽题" Then
文字描述.Text = "请您回答 号题"
Else
文字描述.Text = "正在抽题"
End If
If F = 1 Then
Dim J, m
Canbeuse = 1
For J = 1 To UBound(QuestionUsed2)
m = QuestionUsed2(J - 1)
If QuestionUsed2(J - 1) = n Then
Canbeuse = 0
Exit For
Else
End If
Next
If Canbeuse = 1 Then
已抽题目 = 已抽题目 + 抽取框.Text + " , " '题目标记用 , 分隔
Exit Do
End If
End If
DoEvents
Loop
Else
MsgBox ("题目已抽完,请点击初始化重新抽题!")
End If
Else
F = 1
End If
End Sub
Private Sub 打开题目_Click()
If 抽取框.Text = "圆融" Then
MsgBox ("请先抽题!")
ElseIf 开始抽题.Caption = "停止抽题" Then
MsgBox ("请点击停止抽题!")
ElseIf 开始抽签.Caption = "停止抽签" Then
MsgBox ("抽题环节请勿抽签!")
Else
ActivePresentation.SlideShowWindow.View.GotoSlide Val(抽取框.Text + 1)
End If
End Sub
4结论
与现有技术相比,本次设计的随机抽题系统具有以下优点:
1)无需用户手动统计题目总数量,通过“初始化”控制器按钮自动查询数据库题目数量,并将题目数量发送至抽题控制器,实现将抽取题目编号变化范围自动限定在题目总数量以内功能。
2)本随机抽题软件不仅可保存用户抽题记录,还可多次循环使用,“初始化”控制器按钮可以直接向处理器发送清除指令,快速清空抽签记录以及抽题记录,从而实现下一轮的抽签与抽题功能。
3)将“开始抽签”和“停止抽签”按钮集成为一个按钮,通过Me指令监测当前抽签控制器活动窗口是否激活,如果激活控制器显示为“停止抽签”按钮,否则控制器显示“开始抽签”按钮,相比于现有的“开始抽签”和“停止抽签”控制器按钮分别独立设计而言,减少了屏幕面积占用比例,提高屏幕美感。
4)可随时输出抽题活动状态,用户点击“开始抽题”控制器按钮时,系统状态输出显示器显示为“正在抽题”,点击“停止抽题”控制按钮之后,系统状态输出显示器显示为“请您回答×号题”。
5)用户可以随时查阅抽签或抽题记录,系统状态输出显示端每次都会将抽到的签号及题号反馈到“已抽签号”及“已抽题目”显示器。
6)本随机抽题系统采用PPT格式相比于传统的exe格式,具有占用空间小,无需用户安装,可在任何装有office的电脑上使用等优点,用户课根据自己实际情况修改PPT参数及幻灯片背景等,无需单独学习即可掌握相关使用技巧。
参考文献:
[1] 王琳.PPT轻松实现随机抽题[J].电脑爱好者,2012(17):68-68.
[2] 郜亚丽.巧用VBA编程实现PPT演示文稿的智能交互[J].办公自动化:综合版, 2010(10):46-48.
[3] 陈江.PPT2010编程实现随机抽题[J].电脑编程技巧与维护,2016(7):12-12.
[4] 吴安洪,胡维康.在PPT中巧用VBA进行考题的抽签[J].中学时代,2013(21):211-211.
[5] 朱建国.PPT新视角[M].北京:电子工业出版社,2013:189-241.