臧景才
【摘 要】多媒体课件中一定量的练习题对学习者掌握所学知识是必不可少的,而课件制作又是一项十分繁重和细致的工作,在实际制作过程中设计具有扩展性的程序就显的非常重要。本文以笔者在《C语言程序设计》多媒体课件(已由中央广播电视大学出版社出版发行,刊号ISBN 7-900623-73-6)制作过程中的实际处理,介绍单选题的设计方法和思路。
【关键词】Authorware 单选题 方法 思路
一、目标描述
用户在做单项选择题时可以单击每一条答案项前的按钮或答案项,答案项前作一标记表示此答案项被选中,同时题干后括号内出现相应的字母如A、B、C、D。当用户再选择其它答案时,原来的标记消失,相应的答案前和出现新的标记。用户点击“确定”按钮系统自动判断正误,点击“分析”时,出现本道题的题解分析。点击下一题开始做下一道题,当用户返回刚才做的题时,刚才所做的选择还保留,用户可以再作修改。
二、设计祥解
设计好的模块如图1.1。其中计算图标init1_1记录每道题的正确答案和用户的选择,见图1.2。框架图标右侧的组图标q_1…n等是用来放置题目的,它附着的计算图标的内容完全一样见图1.7。这样就有利于程序扩展,有多少道题,只须复制多少个组图标。分支图标sc1_key用来显示每道题的题解分析,选择计算路径进入分支,其属性分支下方的文本输入区输入变量为false,系统不会进入它下面的任何分支。
双击打开init1_1计算图标见图1.2。自定义变量correct_answer用来记录每道单选题的正确答案。其中1000、100、10、1表示某道题的答案A、B、C、D。“\r”表示换行,表示有几道题。自定义变量user_answer用来记录用户的选择,-1表示当前未作选择。
双击sc_question框架图标见图1.3,这部分来构建单选题统一的模式其中包括上一页、下一页、确定、分析、按钮A、B、C、D以及热区over_a…over_d。显示图标display_v用系统变量CurrentPageNum和PageCount显示当前的题号和总题目数。
双击“确定”按钮附着的计算图标见图1.4。系统函数ReplaceLine从用户当前做的第几题(qn)的选择。“1000*Checked@”a”+100*Checked@”b”+10*Check@”c”+1*Checked@”d”取出的值(即ABCD其中的一个选项)来取代用户最初的选择user_answer。并把结果赋给变量user_answer供以后判断。
双击“确定”按钮进入第二层见图1.5。分支图标的分支属性是通过表达式(GetLine(correct_answer,CurrentPageNum)=GetLine(user_answer,CurrentPageNum))+1来判断进入哪个分支。组图标wrong和corrcet分别放入错误信息和正确信息的提示。表达式GetLine(user_answer,CurrentPageNum)取出用户当前题的选择与当前题正确的答案GetLine(correct_answer,CurrentPageNum)比较,如相等进入第二条分支,不相等则进入第一条分支。
双击“分析”按钮附着的计算图标见图1.6。自定义变量qn表示当前的题号。它是变化的其值在图1.6中得到。Eval("DisplayIcon(IconID@\"d_"^qn^"\")")系统函数Eval动态显示每道题的分析(即分支图标sc1_key下对应的某一分支)。
双击附着在q_1组图的计算图标见图1.7。x值是用显示图标来显示相应选项的字母,系统函数Initialize首先将它恢复为初始值(初始值为空)。qn:=CurrentPageNum自定义变量qn代表现在做的是第几题。其值由系统变量CurrentPageNum获取sc1_question框架图标页的值来得到。用户所做当前题具体是哪一个选项由下列条件语句完成:
if GetLine(user_answer, qn)=1000 then
Checked@"a":=1
x:="A"
end if
表达式GetLine(user_answer, qn)作用是从user_answer字符串中取出现在做的第几题(qn)的值,取出的值分别与1000、100、10、1比较,如果等于1000则赋予A按钮的Checked@"a":=1即选中情况为真,同时将字母A赋给X。下面的依次类推。
如果用户对本道题没有做答则ABCD选项均为未选中状态,它是由条件语句
if GetLine(user_answer, qn)= -1 then
Checked@"a":=0
Checked@"b":=0
Checked@"c":=0
Checked@"d":=0
end if来完成。
至此,单项选择题程序模块设计完成。同样,这种思路也适合于多选题的的制作。