程序员的知识教程库

网站首页 > 教程分享 正文

运用VBA技术完美解决PPT交互式填空试题的设计

henian88 2024-08-27 15:56:14 教程分享 9 ℃ 0 评论

大家好,上一期作品是关于交互式判断试题PPT课件的设计,它甚至可以说是单选题的一个特例(只有两个选项的单选题),因此呢,比较简单。

今天,我们来分享第四种交互式试题类型“PPT交互式填空试题”的设计制作。

相比前面几种带选择性交互式试题而言,填空题有着不同的地方,主要体现在以答案关键词库为基础进行检索匹配方式进行学生答案的评价,最终得出成绩。所以,这是一种全新的交互模式,有必要分享给大家。

好了,我们直接给大家细细分享第四种类型“PPT交互式填空试题”的设计。

一、交互式填空题试题PPT课件前端界面设计

首先是插入必要的普通图形文本框作为每小题的题干展示,然后再在【开发工具】功能选项卡面板里找到ActiveX控件文本框,插入9个ActiveX控件文本框 (并设置它们的标题Caption属性,如下图所示

同时,修改命令按钮必要的属性。如下图所示

二、交互式填空题试题PPT课件后台功能代码实现

(一)模块1的实现代码

Sub OnSlideShowPageChange() '演示文档放映时即刻触发的事件

'如果当前播放的演示文档的幻灯片显示窗口的预览下,当前的显示定位为第一张幻灯片时,做一次初始化试题工作(这样就避免了每张幻灯 _

片跳变都要执行无谓的浪费资源式的初始化工作)

If ActivePresentation.SlideShowWindow.View.CurrentShowPosition = 1 Then

Initialize_Testing_Questions '调用初始化试题为未解答状态

End If

End Sub

Sub Initialize_Testing_Questions() '初始化试题为未解答状态

'填空题初始化

Dim ctr_fillblank As Shape 'ctr_fillblank为ActiveX控件(特别注意的是:PowerPoint幻灯片上面的控件皆作为图形的形式访问,要 _

访问这些“图形”式的ActiveX控件的属性必须采用“图形对象.OLEFormat.Object.属性”的形式进行)

little_subject_num = 0 'little_subject_num--统计试题小标题题目的个数

TextBoxControl_num = 0 'TextBoxControl_num--统计ActiveX文本框控件的个数

For Each shp In Slide4.Shapes

If InStr(shp.Name, "TextBox ") Then little_subject_num = little_subject_num + 1

If InStr(shp.Name, "TextBox") Then TextBoxControl_num = TextBoxControl_num + 1

Next

TextBoxControl_num = TextBoxControl_num - little_subject_num 'TextBoxControl_num统计时包含了普通文本框,所要减去普通文 _

本框图形的数量little_subject_num才是正确的ActiveX文本框控件个数

little_subject_num = little_subject_num - 1 'little_subject_num最终统计包含了试题大标题“四、填空题”,所以试题小标题题 _

目个数应该是必须减去1

For k = 1 To TextBoxControl_num 'k从填空题的1~TextBoxControl_num个填空的循环

Set ctr_fillblank = Slide4.Shapes("TextBox" & k)

ctr_fillblank.OLEFormat.Object.Value = ""

Next

End Sub

Sub FillBlank_Question() '填空题操作

'aswer--为暂存用户当前每题填空的答案,FillBlank_result--几个题填空的结果,ctr_fillblank为ActiveX控件(特别注意的是 _

:PowerPoint幻灯片上面的控件皆作为图形的形式访问,要访问这些“图形”式的ActiveX控件的属性必须采用“图形对 _

象.OLEFormat.Object.属性”的形式进行)

Dim aswer As String, FillBlank_result As String, ctr_fillblank As Shape

Dim FillBlank_key(0 To 8) As String '定义一个0~8下标范围的填空答案数组FillBlank_key

right_keys = Array("大道", "无为", "理性", "人生价值", "哲学", "宗教", "艺术", "信念", "坚持") '定义并且初始化正确答案 _

数组

aswer = "" '暂存用户当前每题填空的答案的变量,初始化为空

little_subject_num = 0 'little_subject_num--统计试题小标题题目的个数

TextBoxControl_num = 0 'TextBoxControl_num--统计ActiveX文本框控件的个数

For Each shp In Slide4.Shapes

If InStr(shp.Name, "TextBox ") Then little_subject_num = little_subject_num + 1

If InStr(shp.Name, "TextBox") Then TextBoxControl_num = TextBoxControl_num + 1

Next

TextBoxControl_num = TextBoxControl_num - little_subject_num 'TextBoxControl_num统计时包含了普通文本框,所要减去普通 _

文本框图形的数量little_subject_num才是正确的ActiveX文本框控件个数

little_subject_num = little_subject_num - 1 'little_subject_num最终统计包含了试题大标题“四、填空题”,所以试题小标题 _

题目个数应该是必须减去1

For k = 1 To TextBoxControl_num 'k从填空题的“1~ActiveX文本框控件个数”个填空的循环

Set ctr_fillblank = Slide4.Shapes("TextBox" & k)

If Len(Trim(ctr_fillblank.OLEFormat.Object.Value)) = 0 Then '如果当前控件访问的状态值为True(选中),则作如下填空的答 _

案的在FillBlank_aser_str_array数组中对应答案的下标获取存于t变量中

aswer = "[未填写答案]"

Else

aswer = ctr_fillblank.OLEFormat.Object.Value

End If

FillBlank_key(k - 1) = aswer '同时将这个答案字符存于每题的填空答案数组中FillBlank_key

FillBlank_result = FillBlank_result & aswer & Space(1)

Next

right_key_num = 0 '定义并初始化一个正确答案数量变量right_key_num,初始化为0

For i = 0 To UBound(right_keys) '该循环是将所有题正确的答案从数组中转出类串联,同时统计正确的答案数量

r_key_str = r_key_str & right_keys(i) & Space(1) '将所有题正确的答案从数组中转出串联

If FillBlank_key(i) = right_keys(i) Then

right_key_num = right_key_num + 1 '统计正确的答案数量

End If

Next

r_key_str = Left(r_key_str, Len(r_key_str) - 1) '去掉尾部多余的空格

right_key_rate = "您填空的正确率为【" & Round(100 * right_key_num / (UBound(right_keys) + 1), 1) & "%】"

'以下即是间隔填空结果字符串、正确答案字符串、正确率字符串进行串接,然后显示

FillBlank_result = "第1~" & little_subject_num & "道填空题[" & TextBoxControl_num & "个空]您填空的答案分别是:" & Chr(10) & Left(FillBlank_result, Len(FillBlank_result) - 1)

right_answers = "正确答案是:" & Chr(10) & r_key_str

total_result = FillBlank_result & Chr(10) & right_answers & Chr(10) & right_key_rate

MsgBox total_result, vbInformation, "答案揭晓"

End Sub

(二)Slide4里的必要代码

Private Sub Display_FillBlank_Result_Btn_Click()

FillBlank_Question '调用填空题操作过程

End Sub

三、交互式填空题试题PPT课件运行测试

(一)按<F5>键,进入演示文档放映状态。如下图

(二)未进行任何试题的填空时,直接点击<查看填空的结果和答案>按钮,将呈现无任何填空选择的结果状态。如下图

(三)只进行部份试题的填空时,点击<查看填空的结果和答案>按钮,将呈现部份填空选择的结果状态。如下图

(四)进行全部试题的填空后,点击<查看填空的结果和答案>按钮,将呈现全部填空的结果状态。如下图

四、本期技术小结

(一)巧妙运用数组的形式存储答案关键词,以形成答案库。如下截图

(二)通过检索、匹配答案关键词的形式分析答案的准确率,进而得出成绩。如下截图

好了,我们本期的内容就分享到这里,希望大家好好体味,之后我会推出对于该作品对应的头条视频,也请大家多多关注哦!

最后,还是非常感谢大家不离不弃地关注我,希望大家继续关注(头条号:跟我学Office高级办公)、推广和点评!也请大家持续关注我的下一期关于简答题的交互式作品的推出哦!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表