APP下载

Authorware结合数据库制作在线考试系统

2012-04-29蒋维黄绍龙

电脑知识与技术 2012年26期

蒋维 黄绍龙

摘要:从目前Authorware的实际应用来看,大多数人还仅限于制作一些比较简单的多媒体课件。但是很多软件在开发时都需要和数据库等软件结合,来对数据进行大量快速地处理。该文介绍了如何将Authorware和Access二者进行有效的结合,来开发制作在线考试系统。

关键词:在线考试系统;Authorware;Access;ODBC

中图分类号:TP37文献标识码:A文章编号:1009-3044(2012)26-6363-04

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 then--若用户输入的答案与题目答案一致

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[2]詹慧静.用Authorware7.0制作多媒体课件[M].北京:高等教育出版社,2009.

[3]李智鑫.Authorware7.0中文版多媒体制作教程[M].北京:中国水利水电出版社,2006.

[4]缪亮,付邦道.Authorware多媒体课件制作实用教程[M]. 2版.北京:清华大学出版社,2008.