学生考试系统.doc

上传人:小小飞 文档编号:3265575 上传时间:2019-08-07 格式:DOC 页数:29 大小:798.51KB
返回 下载 相关 举报
学生考试系统.doc_第1页
第1页 / 共29页
学生考试系统.doc_第2页
第2页 / 共29页
学生考试系统.doc_第3页
第3页 / 共29页
学生考试系统.doc_第4页
第4页 / 共29页
学生考试系统.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《学生考试系统.doc》由会员分享,可在线阅读,更多相关《学生考试系统.doc(29页珍藏版)》请在三一文库上搜索。

1、项目12 考试系统随着信息技术的飞速发展,社会信息化程度的不断提高,特别是进入网络信息化时代,更应使我们的实际工作做到快捷方便,更好地运用现代技术为教学服务,不断提高工作效率。在学校,尤其是在各大高校,考试科目众多,任课教师工作繁忙。每举行一次测验都需要事先命题、打印试卷样稿、复印试卷、试卷回收、评阅试卷等一系列的工作,而且不同专业、不同班级、不同的老师等各种因素都会影响到测试的有效性、准确性,以及公平性等,造成了考试管理中的某些不规范,给学校、教师、学生等带来了诸多不便。本项目以学校考试系统为例,目标在于针对考试管理的弊端,根据现有考试的基本流程,实现考试管理的电子化、无纸化,促进考务管理工

2、作信息化。系统概述一、 编写目的本软件系统需求说明书是基于使用户和软件开发者双方对该软件的初始规定有一个共同理解的目的,是整个系统开发工作的基础。主要为项目管理人员、开发人员提供参考。二、 背景软件系统名称:考试系统项目任务提出者:某高校教务处项目开发者:博文软件开发公司系统用户:某高校教务处三、 定义本考试系统,目的在于克服现行考试管理的弊端,根据现有考试的基本流程,实现考试管理的电子化、无纸化,减少人为因素的干扰,减轻教师、学生以及管理人员的负担。借助于本系统,教师可以对现有的试题库进行更新,学生可以公平的参与应答,管理人员能够很好地对现有的系统用户进行管理,快速方便的实现考试过程中的各项

3、任务。本考试系统有较强的通用性,经过增加科目和题目可广泛适用于各类学校的各类学科的考试。四、 参考资料本软件是根据高校教学管理实际要求,结合考试管理实际过程,综合目前几个成功的考试软件改编而来的。五、 任务概述本考试系统软件主要是针对某高校教学管理具体流程开发设计的,系统提供了较强的功能,为学生考试提供了方便。1. 目标某高校教务处为了提高工作效率,引入了该管理系统。(1) 开发意图提高本校教学管理质量和考试管理效率,适应信息化需要,为学生和教师提供优良的服务。(2) 应用目标通过本管理系统软件,能够帮助管理人员利用计算机,快速方便地实现学生上机考试和快速计时统计分数,以及实现学生考试的统一管

4、理。2. 用户特点本系统的最终用户是某高校教务处的管理员,要求具有一般的计算机基础操作知识。3. 假定和约束(1) 本项目的开发经费不超过16000元。(2) 项目管理1人,开发人员2人,软件测试人员1人。(3) 本项目的开发期限为1个月。六、 系统配置1. 软件配置操作系统:Windows98或Windows2000/XP或更高系统数据库选择:Access2000开发平台:Visual Basic 6.02. 硬件配置CPU:Pentiun II 266或更高内存:64M或以上硬盘:2G以上显示器:VGA或更高需求规定一、 系统总体功能需求根据高校管理的实际要求,结合考试管理的实际过程,在经

5、过对考试系统管理机制进行详细了解与分析后,一个功能完备的考试系统应该实现以下主要功能:1. 用户管理,掌握本考试范围内所有用户的基本情况,包括编号、姓名、登录口令等。根据不同的用户级别,给与不同的操作权限。2. 考试管理,基于考试系统的基本功能管理,本系统可以提供给教师类用户和学生类用户使用。3. 试题管理,适时的试题题库更新,试题类型包括填空题和单选题,试卷根据设置由系统自动生成。二、 用户管理用户管理是系统安全的基础。用户管理中的成员有教师和学生,教师可以添加题目、修改题目、删除题目,并可以设置考试类型和各种类题型数目。三、 试题库管理可以创建不同科目的题目,且对这些不同的科目加入不同的题

6、目。或者对已有的科目添加题目,修改题目,删除题目。四、 考试管理通过此功能考试系统可以定时,即考试时间自动记时。还可以自动的统计考试分数,以及统计出每道题的对错情况。UML系统建模使用UML进行系统建模,就是使用面向对象的方法来分析系统,以此建立面向对象的系统模型。对于本项目,主要使用UML中的用例图和时序图来进行系统分析。一、 UML用例图描述1. 角色的确定,经分析,本系统可以创建的角色有:学生、系统、教师和管理员。2. 创建角色与用例关系图,在确定角色基础上建立用例关系图,如图12-1所示。系统学生教师考 试试题管理图12-1二、 UML时序视图描述学生考试全过程时序图,如图12-2所示

7、。图12-2学生系统教师考试管理登录登录通过验证通过验证请求试卷发放试卷成绩统计答题数据库的设计实现一、数据库的需求分析本程序涉及到两个数据库分别用来存储所有候选的试题集合和某次考试调用的具体试题的数据集合。都是用于存储试题数据的所以他们有相同的分类和部分字段,首先都应该分成选择题和填空题两种,都应该有题目编号字段、试题正文字段、标准答案字段等。但是由于两个数据库的作用不同,因此也应该有一些不同的字段,例如记录某次考试的数据库应该包含试题在该次考试里面的编号,学生的答案字段等。此外这两个数据库的操作也不尽相同,存储所有候选的试题的数据库应该只对教师开放并支持试题的更改、输入、删除和查询等操作。

8、而某次考试的调用试题组成的数据库应该每次更新,这个数据库对学生允许的操作是查询试题,输入更改删除学生的答案,而试题标答对他们是不可见的。但是对此数据库老师应该能调用查询试题、学生答案和试题标准答案并进行评分记录。二、数据库概念结构设计本项目实例根据上面的设计规划出的实体有:教师(管理人员)、考试题目、学生(考生)。下面画出各实体之间的最主要的E-R关系图,如图12-3所示。教师考试题目学生管理使用编号编号类型编号名称成绩名称图12-3三、数据库逻辑结构设计及实现该项目包含两个数据库:TestDB.mdb(考试题库)和Test.mdb(学生考试库),它们分别属于两个功能模块:教师模块(题库管理程

9、序)和学生模块(试题答案及评分系统)。1.考试题库(TestDB.mdb)中的表及其结构(1)填充题题库表TestFillDb,该表建立一个主索引,索引名称为PrimaryKey,索引字段为id,该表的结构如表12-1所示。表12-1字段名含义字段类型字段长度id题目号整型fill_ti填充题内容文本fill_da填充题标准答案文本(2)选择题题库表TestSeleDb,该表建立一个主索引,索引名称为PrimaryKey,索引字段为id,该表的结构如表12-2所示。表12-2字段名含义字段类型字段长度id题目号整型se_ti选择题内容文本se_da选择题标准答案文本se_dati1选择题可选答

10、案文本se_dati2选择题可选答案文本se_dati3选择题可选答案文本se_dati4选择题可选答案文本2.考试库(Test.mdb)中的表及其结构(1)填充题题库表FillDb,该表建立一个主索引,索引名称为PrimaryKey,索引字段为id,该表的的结构如表12-3所示。表 12-3字段名含义字段类型字段长度id题目号整型fill_ti填充题内容文本fill_da填充题标准答案文本fill_ksda填充题考生答案文本fill_tiid出题顺序号整型(2)选择题题库表SeleDb,该表也建立主索引,索引名称为PrimaryKey,索引字段为id,该表的结构如表12-4所示。表12-4字

11、段名含义字段类型字段长度id题目号整型se_ti选择题内容文本se_da选择题标准答案文本se_dati1选择题可选答案文本se_dati2选择题可选答案文本se_dati3选择题可选答案文本se_dati4选择题可选答案文本se_tiid出题顺序号整型sele_ksda选择题考生答案文本(3)为了验证学生身份合法性以及记录学生的成绩,设一个表UserDb,其结构如表12-5所示。表12-5字段名含义字段类型字段长度user_id用户号文本8user_name用户名文本10user_seat座位号文本2user_sscore选择题得分整型user_fscore填充题得分整型user_flag区

12、别考生是否交卷是/否系统程序实现一、系统设计概况由于该系统由两个模块构成,系统流程如图12-4所示。新增修改删除定位试题库自动选题考试库学生登录评分答题图12-41.教师模块:实现题库管理功能,包括题库的建立、修改和删除,以及从题库中随机抽取考题制作考盘等。在该模块里,程序提供一个登陆界面,只有输入正确的用户名和密码后,才可以继续进行操作。窗体切换流程图如图12-5所示,主要功能如下:a. 登录(验证用户的合法性)b. 题库的管理与维护,包括题库记录的新建、修改、删除和定位。c. 从题库中自动选择一定数量的试题,作为本次考试的学生考试库。d. 生成考盘。随机产生题号,使各考生的题目顺序不一样。

13、用户登录窗体(FrmDl)题库管理窗体(FrmSele)选题窗体(FrmXt)制作学生考盘窗体(FrmCopy)图12-52.学生模块:实现答题及评分功能,包括学生登录、答题和自动评分等。在该模块里,程序流程如图12-6所示,窗体切换流程如图12-7所示。该模块的主要功能如下:a. 随机产生题号,使各考生的题目顺序不一样b. 登录(验证考生的合法性)c. 答题(选择题和填空题)。如果学生中途退出,可再次进入答题环境。d. 当学生答题结束退出时,系统可自动进行评分。评分后,不能再进入答题界面。FFFFT学生登录交卷评分过吗?全部答完题吗?交卷评分吗?学生答题评分结束TT学生登录窗体(FrmDl)

14、学生答题窗体(FrmXz)为答完提示窗体(FrmTs)阅卷评分窗体(FrmTj)全部答完吗?T 图12-6 图12-7二、试题库管理程序的实现试题库管理程序(教师模块)由个窗体和个模块文件组成,接下来我们将分别加以介绍。1.用户登录窗体FrmDl(1)窗体设计:a. 启动,新建一个工程ctk.vbp。b. 将窗体Form1保存为FrmDl.frm,在窗体中添加2个框架;1个命令按钮,Caption属性为“确定”;1个含有4个元素的按钮数组,Caption分别为“题库管理”、“自动选题”、“制作考盘”和“退出”;2个文本框和3个标签。窗体布局如图12-8所示。图12-8(2)编写代码:a.在程序

15、的“通用”声明段定义变量:Dim cs As Integer cs为用户登录时出错的次数b.编写窗体load事件响应的代码:窗体加载时调用模块xt.bas中的通用过程CenterOnSetupForm(功能是将窗口居中安放)。Private Sub Form_Load() Dim i as Integer CenterOnSetupForm Me i=1 i为记录 End Subc.编写Cmgqd按钮的Click事件响应代码,这段程序要实现:检查用户名和密码是否正确,如果连续错三次,则只能退出。(3)部分代码如下: If cs 3 Then If UCase(TxtName.Text) TEA

16、CHER Then Lblsm.Caption = 用户名输入错误,请重新输入! cs = cs + 1 TxtName.SetFocus Cmdml(0).Enabled = False Cmdml(1).Enabled = False Cmdml(2).Enabled = False ElseIf (TxtCode.Text) kaoshi Then Lblsm.Caption = 密码错误,重新输入! TxtCode.SetFocus cs = cs + 1 Cmdml(0).Enabled = False Cmdml(1).Enabled = False Cmdml(2).Enable

17、d = False Else Lblsm.Caption = Cmdml(0).Enabled = True Cmdml(1).Enabled = True Cmdml(2).Enabled = True End If Else Lblsm.Caption = 已经连续三次错误,请退出! Cmdqd.Enabled = False Cmdml(0).Enabled = False Cmdml(1).Enabled = False Cmdml(2).Enabled = False Cmdml(3).SetFocus End Ifd.编写Cmdml按钮的Click事件响应代码,注意的是该按钮为一个

18、按钮数组分别实现以下功能:单击“题库管理”按钮显示题库管理窗体,单击“自动选题”按钮显示自动选题窗体,单击“制作考盘”按钮显示制作考盘窗体,单击“退出”按钮结束程序并退出。2.自动选题窗体FrmXt(1)窗体设计:a.启动,新建一个工程TestSele.vbp。b.将窗体命名为FrmSele.frm,窗体布局如图12-9所示。图12-9 c.执行工程菜单中“引用”命令,选中“Microsoft DAO 3.60 Object Library”复选框。 (2)编写代码:a. 生成考试库的程序流程图,如图12-10所示。FFi=1i=指定题数考试库中是否则存在该题在题库中随机抽取一题将该题添加到考

19、试库i=i+1结束选题TT图12-10b. 从试题库中抽取指定数目的考题到学生考试库中,要经过以下几个主要步骤:1 打开题库和学生考试库2 清空学生考试库3 打开进行查询的相关的索引4 生成考试库中的选择题表5 生成考试库中的填充题表6 关闭时题库和学生考试库,并给出选题完成的提示信息c. 程序里需要注意的设计问题:1 打开题库TestDb.mdb后应该先建立对应选择题和填充题表的记录集2 打开学生考试库Test.mdb,应建立对应选择题和填充题的记录集3 使用Seek方法前必须设置各个记录集的索引4 随机数的使用应根据当前时间产生随机种子以保证每次运行选题程序时所得的题目不同部分代码如下:生

20、成考试库中的选择题表i = 1While i = (Txt_sele.Text) Randomize (Timer) rn = Int(selenum) * Rnd + 1) rsSele.Seek =, rn If Not rsSele.NoMatch Then 学生考试库中查询:没有匹配记录则添加该题题号的试题,同时考试库的试题数+1 rsStudSele.Seek =, rn If rsStudSele.NoMatch Then rsStudSele.AddNew rsStudSele.id = rsSele.id rsStudSele.se_ti = rsSele.se_ti rsSt

21、udSele.se_da = rsSele.se_da rsStudSele.se_dati1 = rsSele.se_dati1 rsStudSele.se_dati2 = rsSele.se_dati2 rsStudSele.se_dati3 = rsSele.se_dati3 rsStudSele.se_dati4 = rsSele.se_dati4 rsStudSele.se_tiid = i rsStudSele.Update i = i + 1 End If End IfWend关闭试题库和学生考试库,并给出选题完成的提示信息rsSele.CloseSet rsSele = Not

22、hingrsFill.CloseSet rsFill = NothingrsStudSele.CloseSet rsStudSele = NothingrsStudFill.CloseSet rsStudFill = NothingCmd_ok.Enabled = FalseLbl_msg.Caption = 自动选题完成,请退出3.试题库管理窗体FrmManage.frm (1)窗体设计:a.新建一个工程TestManage.vbp,窗体FrmManage,该窗体包括:2个框架、6个标签、5个多行文本框,5个命令按钮、一个下拉组合框和一个Adodc控件,如图12-11所示图12-11b.Ad

23、odc控件的属性设置见表12-6所示,帮定控件的部分属性设置见表12-7所示。另外将5个多行文本框的Locked属性设置为True(不允许随意修改显示的内容)。表 12-6属性属性值ConnectionStringProvider=Microsof.Jet.OLEDB.3.6;Persisit Security Info=False;Data Source=TestDb.mdbCommandType1_adCmdTextRecordsourceSelect * from Testseledb order by id表 12-7控件属性属性值Lbl_idDataSourceDataFieldAd

24、odc1idTxt_tiDataSourceDataFieldAdodc2st_tiTxt_da1DataSourceDataFieldAdodc1se_dati1Txt_da2DataSourceDataFieldAdodc1se_dati2Txt_da3DataSourceDataFieldAdodc1se_dati3Txt_da4DataSourceDataFieldAdodc1se_dati4Cmb_daDataSourceDataFieldAdodc1se_da (2)编写代码:a. 窗体装载时的事件响应代码,要使得在Combox中增加“A”、“B”、“C”、“D”4项b. 在编写跳

25、转按钮时,如果找不到跳转的题号,则显示第一条记录c. 对于新增按钮,如果Cmd_add按钮的Caption属性为“新增”,单击后将变为“确定”,同时其他按钮均不可使用;单击“确定”按钮后,根据用户的选择增加记录或者取消要增加的记录,同时,该按钮的标题变回“新增”,其他按钮恢复可用状态。d. 在修改按钮的事件代码中,如果Cmd_update按钮的Caption为“修改”,单击后变为“确定”,同时其他按钮均不可用;单击“确定”后,根据客户的选择确认或者取消对记录的修改,同时,该按钮的标题变回“修改”,其他按钮恢复可用状态e. 对于删除按钮,需要用消息框提示用户是否真的删除该条记录。部分代码如下:P

26、rivate Sub Cmd_add_Click()Dim nu As IntegerIf Cmd_add.Caption = 新增 Then 使各相关控件解锁,并使新题的题号为题库中最后一条记录的题号加1 Txt_ti.Locked = False Txt_da1.Locked = False Txt_da2.Locked = False Txt_da3.Locked = False Txt_da4.Locked = False Cmb_da.Locked = False Adodc1.Recordset.MoveLast nu = Adodc1.Recordset(id) + 1 Adod

27、c1.Recordset.AddNew 增加该条记录 Lbl_id.Caption = nu 是按钮上的“新增”改为“确定”,并将其他命令按钮变灰 Cmd_add.Caption = 确定 Cmd_update.Enabled = False Cmd_dele.Enabled = False Cmd_sele.Enabled = False Cmd_exit.Enabled = False Txt_ti.SetFocus Else answer = MsgBox(确实要新增该条记录吗, vbYesNo, 增加记录) If answer = vbYes Then Adodc1.Recordset

28、.Update 确认增加 Else Adodc1.Recordset.CancelUpdate 取消增加 End If 使各相关控件锁定,使“确定”改为“新增”,使其他命令按钮可用 Txt_ti.Locked = True Txt_da1.Locked = True Txt_da2.Locked = True Txt_da3.Locked = True Txt_da4.Locked = True Cmb_da.Locked = True Cmd_add.Caption = 新增 Cmd_update.Enabled = True Cmd_dele.Enabled = True Cmd_sele

29、.Enabled = True Cmd_exit.Enabled = TrueEnd IfEnd Sub4.设计制作考盘窗体FrmCopy (1)窗体设计:a.添加窗体,在ctk.vbp工程里添加新窗体FrmCopy.frmb.窗体是添加两个命令按钮和一个标签,如图12-12所示,标签的属性设置是:Caption为空,ForeColor为红色图12-12 (2)编写代码:定义一个CopyDB过程,用于复制试题记录。部分代码如下:Sub CopyDB(SoucePath As String, destpath As String)Dim DirName As StringOn Error Res

30、ume Next DirName = Dir(SoucePath, ATTR_HIDDEN Or ATTR_READONLY) If DirName = Then Lblts.Caption = 学生试题盘制作失败! Else SetAttr destpath, ATTR_NORMAL FileCopy SoucePath, destpath If Err 0 And Err 53 Then MsgBox Error(Err), 48 End If Lblts.Caption = 学生试题盘制作完成! End IfEnd Sub5.模块文件xt.bas在工程里添加模块xt.bas其作用是使窗口

31、居中安放。部分代码如下:Sub CenterOnSetupForm(child As Form) Dim dh As Integer Dim dw As Integer dh = Screen.Height - child.Height dw = Screen.Height - child.Width child.Top = (dh / 2) child.Left = (dw / 2)End Sub三、试题答题及评分程序的设计试题答题及评分程序(学生模块)也由个窗体和个模块文件组成,接下来我们将分别加以介绍。1.考生登录窗体FrmDl.frm (1)窗体设计:新建工程xz.vbp和窗体FrmD

32、l.frm,按照图12-13对窗体进行设置。图12-13 (2)编写代码:该段程序应该实现以下功能:提示用户输入正确的考核证号和姓名及座位号,当输入的三项值都正确时判断该用户是否是已经考过试的用户,如果是已经考过试的则不予登录。Private Sub cmdml_Click() If Len (Txtcode.Text) 8 Then Lblsm.Caption = 准考证号必须输入,长度为8位 Txtcode.SetFocus ElseIf Len(Txtname.Text) = 0 Then Lblsm.Caption = 考生姓名必须输入 Txtname.SetFocus Exit Su

33、b ElseIf Len(Txtzwh.Text) = 0 Then Lblsm.Caption = 座位号必须输入 Txtzwh.SetFocus Exit Sub End If Lblsm.Caption = - 向UserDb表添加一条用户记录 - Set rsuser = db.OpenRecordset(UserDb) With rsuer .Index = PrimaryKey .Seek =, Trim(Txtcode.Text) If .NoMatch Then .AddNew .Fields(user_id).Value = Txtcode.Text .Fields(user

34、_name).Value = Txtname.Text .Fields(user_seat).Value = Txtzwh.Text Else If .Fields(user_flag).Value = True Then MsgBox 改名同学已参加过考试,推出程序, 48 End End If End If End With Frmxz.Show Unload MeEnd Sub2.考生答题窗体FrmXz (1)窗体设计:添加窗体FrmXz.frm.。执行“工程”菜单中的“部件”命令,在“控件”选项卡中选中“Microsoft Tabbed Dialog Control 6.0”复选框以添

35、加一个SSTab控件。对于SSTab控件的属性设置如下:l Tabs为2,设置TabsPerRow为2l 右键单击SSTab控件,选择快捷菜单中属性命令。如图12-14所示,“当前选项卡0”的“选项卡标题”为“单选题”,“当前选项卡1”的“选项卡标题”为“填充题”。图12-14l 在“单选题”选项卡上添加5个文本框控件(Txt_ti表示某道选择题、Txt_da(0)Txt_da(3)表示4个单选答案)、1个标签控件(Lblid表示题号)、1个Hscroll控件、1个有4个成员的Option控件数组(供学生选择答案)和一个有20个成员的Option控件数组(供学生选择题目),如图12-15所示,

36、部分控件属性设置如表12-8所示。表 12-8控件属性属性值HscrollMinMaxLargeChange1201Option1(0)CaptionValueATrueOption1(1)CaptionBOption1(2)CaptionCOption1(3)CaptionDOption1(0)Option1(3)Backcolor&H00FF8Optti(1)Optii(20)BackColor&H00FF8图12-15l 在“填空题”选项卡上添加1个Data控件(fillDate)、1个标签控件(Lblfill_id表示题号)、2个文本框控件(Txt_fill用于显示填空题、Txtfil

37、l_ksda用于输入答案)、2个Frame控件、1个Timer控件,部分控件的属性如表12-9所示,窗体样式如图12-16所示。表 12-9控件属性属性值Lblfill_tiDataSocureDataFieldfillDatefill_tiTxt_fillDataSocureDataFieldfillDatefill_idTxtfill_ksdaDataSocureDataFieldfillDatefill_ksdaTimerInterval30图12-16l 在窗体底部添加两个命令按钮Cmdjj(交卷评分)和Cmdjs(结束)。 (2)编写代码:该程序应该包括8个部分:a. 通用声明用以定

38、义变量及过程。b. 编写窗体装载时的事件响应代码,以通过DATA控件打开考试题填空库并通过DAO打开考试题选择库,设置每题出现的顺序号并把选择题出现的顺序随机排序。c. 编写单击选中Option1(选择答案)时的事件响应代码。d. 编写滚动Hscroll时的事件响应代码。e. 编写单击选中Optti(选题)时的事件响应代码。f. 编写窗体激活时的事件响应代码。g. 编写单击Cmdjj(“交卷评分”按钮)时的事件响应代码。h. 编写单击Cmdjs(“结束”按钮)时事件响应代码。部分代码如下:Private Sub Form_Load()Dim i, n, num, rn As Integer O

39、n Error GoTo ErrMsg CenterOnSetupform Me FrmXz.Caption = 考试 sele = 0 通过DATA控件打开考试题填空库 fillData.Connect = Access fillData.DatabaseName = test.mdb fillData.RecordSource = filldb 通过DAO打开考试题选择库,设置每题出现的顺序号 Set rssele = db.OpenRecordSet(seleDb) i = 0 rssele.MoveFirst While Not rssele.EOF i = i + 1 rssele.

40、MoveNext Wend 生成20道选择题出现的先后随机顺序 n = i num = 0 For i = 1 To n selenum(i) = 0 Next i Do While num n Randomize (Timer) rn = Int(n - 1 + 1) * Rnd + 1) If selenum(rn) = 0 Then num = num + 1 selenum(rn) = num End If Loop i = 1 rssele.MoveFirst While Not rssele.EOF rssele.Edit rssele.Fields(se_tiid).Value

41、= selenum(i) rssele.Update rssele.MoveNext i = i + 1 Wend 根据顺序号排序从新打开考试题选择库seledb Set rssele = db.OpenRecordSet(Select * from seledb order by se_tiid) 判断选择试题库是否存在考生答案, 如果有,则设置相应的题号单选按钮的颜色为红色并记数 sele = 0 i = 0 While Not rssele.EOF If Trim(rssele.Fields(se_ksda).Value) Then Optti(i + 1).BackColor = &HFF& sele = sele + 1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1