authorware如何做考试系统
从目前
Authorware
的实际应用来看,大多数人还仅限于制作一些比较简单的多媒体课件。但
是很多软件在开发时都需要和数据库等软件结合,来对数据进行大量快速地处理。该文介绍了如何将
操作方法
- 01
摘要:从目前 Authorware 的实际应用来看,大多数人还仅限于制作一些比较简单的多媒体课件。但 是很多软件在开发时都需要和数据库等软件结合,来对数据进行大量快速地处理。该文介绍了如何将 Authorware 和 Access 二者进行有效的结合,来开发制作在线考试系统。 关键词:在线考试系统; Authorware ; Access ; ODBC 1 建立数据库 我们采用 Access 数据库来建立数据表,然后让 Authorware 使用 ODBC 技术去访问表中的内容。在 Access 中建立信息库和试题库,库中各表的建立如下: 信息库: 学生 信息表(编号,姓名(文本),学号(文本),成绩(数字)) 试题库:(在试题库中亦可根据需要添加试题表) 试题一表(编号,题目类型(文本),题目(备注),答案(文本),分值(数字),标志(数字)) 试题二表(编号,题目类型(文本),题目(备注),答案(文本),分值(数字),标志(数字)) 试题三表(编号,题目类型(文本),题目(备注),答案(文本),分值(数字),标志(数字)) 要访问数据库首先要连接数据库,通过 ODBC 接口连接数据库,必须先设置数据源。本设计中设置数 据源的方法是利用 Au ? thorware 提供的外部函数文件 tMsDSN.u32 ,这是 32 位的动态连接库文件。 tMsDSN.u32 中只有一个函数 tMsDBRegister (),可以自动在 32 位 ODBC 控制面板中注册数据库。 tMsDSN.u32 文件在 Authorware 的安装目录中,用户在使用其函数 tMsDBRegister ()前要对其函数进行 装载, 并且要将该文件和程序文件一起打包发布。 其次是操作数据库, 在 Authorware 中提供了一个 odbc.u32 文件,此文件中提供了对数据库进行操作的几个函数,将其中的三个函数 ODBCOpen 、 ODBCClose 、 ODBCExecute 导入即可运用。 ODBCOpen 用于打开数据库, ODBCClose 用于关闭数据库, ODBCExecute 用于向 ODBC 的 SQL 解释程序发送一条 SQL 命令。对于数据库的各种操作均通过 SQL 语句去执行。 2 Authorware 中界面的制作 图 1 2.1 登录系统界面的制作 连接信息数据库计算图标内容如下: ODBChandle : =ODBCOpen ( WindowHandle , "error" , " 信息库 " , "" , "" ) if ODBChandle=0 then dbType : = "Microsoft Access Driver ( *.mdb ) " --ODBC 数据源驱动程序 DSN : = "DSN= 信息库; "-- 指定数据源名 description : = " 学生 信息库; "-- 数据源描述 FIL : = "FIL=MS Access ; "-- 指定数据源的数据库类型 DBQ : = "DBQ="^FileLocation^" 信息库 .mdb ; " -- 指定数据库文件 dblist : =DSN^description^FIL^DBQ-- 指定 ODBC 数据源名、描述以及与之相关联的数据库文件 result : =tMsDBRegister ( 4 , dbType , dblist ) -- 配置数据源打开数据库源程序 end if 用显示图标制作一个登录界面,用交互图标作文本输入,需定义变量 name 、 num ,用来记录输入的 名字和学号。利用系统变量 EntryText 和 NumEntry 把用户输入的姓名和学号分别储存到 name 、 num 中, 代码为: name : =EntryText , num : =NumEntry 。用户输入完信息后点击界面上的确定或重新输入按钮。 确定计算图标内容如下: if name<>"" & num<>"" then-- 输入的姓名、学号若不为空 ODBChandle : =ODBCOpen ( WindowHandle , "error" , " 信息库 " , "" , "" ) -- 打开信息库 sqlstr : ="insert into 学生信息表(姓名,学号) values ( "^name^" , "^num^" ) " student : =ODBCExecute ( ODBChandle , sqlstr ) -- 把刚才输入的学生的姓名、学号 写 入数据库中 ODBCClose ( ODBChandle ) -- 关闭数据库 else-- 输入的姓名、学号若为空 SystemMessageBox ( WindowHandle , " 输入不能为空! " , "Warning" , 48 ) -- 给出提示 GoTo ( IconID@" 登录界面 " ) 框需重新输入 end if 重新输入计算图标内容如下: GoTo ( IconID@" 登录界面 " ) 2.2 试题系统界面的制作 为了统计做题分值,需用到两个外部函数 baSysFolder 和 CopyFile 在本机建立临时数据库文件。建立 临时数据库文件计算图标的内容如下: Result : =baSysFolder ( "temp" ) -- 获取本机上的临时文件夹路径,函数在 Budapi.u32 中 CopyFile ( FileLocation^" 试题库 .mdb" , Result^" 试题库 .mdb" , 0 ) -- 建立临时文件, 函数在 Winapi.u32 中 连接试题数据库计算图标的内容如下: 与连接信息库一样, 只需把 DBQ : = "DBQ="^FileLocation^" 信息库 .mdb ; " 改 写 成 DBQ : = "DBQ="^ Result ^" 试题库 .mdb ; " 即可。随机抽取试题分支中每套试题的界面如下:图 2 2.2.1 试题界面的制作(如图 2 ) 初始总成绩和题号计算图标的内容如下: score : =0 n : =1 用显示图标制作一个做题的界面,再利用交互图标在界面上制作 3 个交互按钮,各分支按钮内容的设 置如下: 提交计算图标的内容如下: hh : =SystemMessageBox ( WindowHandle , " 提交成绩后即将退出系统!确定要提交吗? " , "Confirmation" , 292 ) -- 点击提交按钮,会弹出提示框询问用户是否确定提交成绩 if hh=6 then-- 用户若选的是 yes 按钮 ODBChandle : =ODBCOpen ( WindowHandle , "error" , " 信息库 " , "" , "" ) -- 打开信息库 sqlstr : ="insert into 学生 信息表(成绩) values ( "^score^" ) " student : =ODBCExecute ( ODBChandle , sqlstr ) -- 把做题总成绩写信息库 ODBCClose ( ODBChandle ) -- 关闭信息库 DeleteFile ( Result^" 信息库 .mdb" ) -- 删除临时数据库 GoTo ( IconID@" 退出系统 " ) -- 进入退出系统 end if 下一题计算图标的内容如下: n : =n+1 if ( n>=1 ) & ( n<=20 ) then GoTo ( IconID@" 填空题 " ) else if ( n>=21 ) & ( n<=40 ) then GoTo ( IconID@" 单选题 " ) else if ( n>=41 ) & ( n<=50 ) then GoTo ( IconID@" 多选题 " ) else if ( n>=51 ) & ( n<=70 ) then GoTo ( IconID@" 判断题 " ) else SystemMessageBox ( WindowHandle , " 已完成全部测试题!可点击提交按钮提交成绩! " , "Information" , 64 ) -- 完成全部测试,提示用户可提交成绩 end if 上一题计算图标的内容如下: n : =n-1 if……end if -- 与下一题计算图标中的内容一样,但没有 else 分句;在此分支中设置按钮的激活条件为 n>=2 ,当题目号为 1 时,此按钮不可用 接着系统根据 n 值在题型框架图标中选择相应的题型。 2.2.1.1 题型界面的制作 每种题型的交互界面可根据此题型来制作,如填空题的界面制作如上图 2 ,图中各图标的内容设置如 下: 读题 计算机 图标的内容如下: ODBChandle : =ODBCOpen ( WindowHandle , "error" , " 试题库 " , "" , "" ) -- 打开试题库 sqlstring : ="select 题目 from 试题一 where 编号 =’"^n^"’" timu : =ODBCExecute ( ODBChanlde , sqlstring ) -- 根据 n 值读取题目 ODBCClose ( ODBChandle ) -- 关闭试题库 在显示填空题目的显示图标中用文本输入工具输入: {timu} ,利用交互图标作文本输入交互,用户根 据显示的题目答题。以下计算图标中的 flag 变量是用于记录此题分值是否被加入过总分, flag : =0 表示未 被加入过, flag : =1 表示加入过,题目原标志段中的值为 0 。 做题交互分支中计算图标的内容如下: answer : =Entrytext -- 把输入内容储存在 answer 变量中 ODBChandle : =ODBCOpen ( WindowHandle , "error" , " 试题库 " , "" , "" ) -- 打开试题库 sqlstr : ="select 标志 from 试题一 where 编号 =’"^n^"’" flag : =ODBCExecute ( ODBChanlde , sqlstr ) -- 据 n 值取出该题目对应的标志值放在 flag 变量中 sqlstr : ="select 答案 from 试题一 where 编号 =’"^n^"’" daan : =ODBCExecute ( ODBChanlde , sqlstr ) -- 据 n 值取出该题目对应的答案值放在 daan 变量中 sqlstr : ="select 分值 from 试题一 where 编号 =’"^n^"’" fenzhi : =ODBCExecute ( ODBChanlde , sqlstr ) -- 据 n 值取出该题目对应的分值值放在 fenzhi 变量中 if flag=1 then-- 若 flag 为 1 score : =score-fenzhi -- 先从总分中减掉该题的分值 end if if answer=daan the n-- 若用户输入的答案与题目答案一致 score : =score+fenzhi -- 在总分中加入该题分值 setflag : ="update 试题一 set 标志 =1 where 编号 =’"^n^"’" -- 把该题的标志值置成 1 ODBCExecute ( ODBChanlde , setflag ) end if ODBCClose ( ODBChandle ) -- 关闭数据库 2.3 退出系统界面的制作 用显示图标制作一个退出的界面,利用 quit ()函数退出即可。 3 网络发布 将程序打包为 text.a7r 文件, 再用 Authorware 的 Web Packager 打包生成用于网络上浏览的 text.aam , 将生成的 text.aam 流文件放在服务器的考试系统目录下,最后使用任何文本编辑软件编 写 简单的 html 詹 慧静 . 用 Authorware7.0 制作多媒体课件 [M]. 北京:高等 教育 出版社, 2009. [3] 李智鑫 .Authorware7.0 中文版多媒体制作教程 [M]. 北京:中国水利水电出版社, 2006. [4] 缪亮,付邦道 .Authorware 多媒体课件制作实用教程 [M]. 2 版 . 北京:清华大学出版社, 2008.