280 likes | 456 Views
第 8 章 小型试题库系统设计案例. 学习目标: 了解应用项目的设计、分析及开发过程 教学内容: 8.1 系统的组成及功能简述 8.2 试题库管理程序的设计 8.3 试题答题及评分程序的设计 8.4 有待完善的问题与思考. 返回目录. 8.1 系统组成及功能简述 - 系统组成. 小型试题库系统的组成模块: 教师模块:实现题库管理功能 学生模块:实现答题及自动评分功能. 返回目录. 8.1 系统组成及功能简述 - 系统组成. 小型试题库系统的组成模块: 教师模块:实现题库管理功能
E N D
第8章 小型试题库系统设计案例 学习目标: 了解应用项目的设计、分析及开发过程 教学内容: 8.1 系统的组成及功能简述 8.2 试题库管理程序的设计 8.3 试题答题及评分程序的设计 8.4 有待完善的问题与思考
返回目录 8.1 系统组成及功能简述-系统组成 小型试题库系统的组成模块: • 教师模块:实现题库管理功能 • 学生模块:实现答题及自动评分功能
返回目录 8.1 系统组成及功能简述-系统组成 小型试题库系统的组成模块: • 教师模块:实现题库管理功能 • 学生模块:实现答题及自动评分功能
返回目录 8.1 系统组成及功能简述-教师模块的功能 试题库管理程序(教师模块)的功能: • 登录(验证用户的合法性) • 题库的管理与维护:记录的新建、修改、删除和定位 • 选题:从题库中自动选择一定数量的选择题和填空题,作为本次学生考试的考试库。 • 生成学生考盘
返回目录 8.1 系统组成及功能简述-学生模块的功能 试题答题及评分程序(学生模块)的功能: • 随机产生题号,使各考生的题目顺序不一样 • 登录(验证考生的合法性) • 答题。中途退出,可再次进入答题环境。 • 答题结束退出时,系统可自动进行评分。评分后,不能再进入答题界面。 窗体切换流程
返回目录 8.1 系统组成及功能简述-数据库设计 • 以第7章[例7.11]中建立的试题库TestDb.MDB和学生考试库Test.MDB为基础 • 为验证学生身份的合法性以及记录学生的成绩,需在考试库Test.MDB中增加一个考生表UserDb,结构:
返回目录 8.2 试题库管理程序的设计 试题库管理程序(教师模块)由四个窗体和一个模块文件(xt.bas)组成
返回目录 8.2 试题库管理程序的设计 1. 用户登录窗体FrmDl (1) 窗体设计: • 新建一个VB工程,保存为ctk.vbp • 将窗体Form1保存为FrmDl.frm • 部分控件的属性见教材表8.2
返回目录 8.2 试题库管理程序的设计 (2) 编写代码 : • 在程序的“通用”声明段定义模块级变量 Dim cs As Integer '记录用户登录时出错的次数 • 编写窗体的Load事件响应代码:调用xt.bas中的通用过程CenterOnSetupForm(功能:将窗口居中安放) • 编写Cmgqd按钮(“确定”)的Click事件响应代码:检查用户名和密码是否正确。如果连错3次,只能退出 • 编写Cmdml按钮(控件数组按钮)的Click事件响应代码:根据选择打开"题库管理"、"选题"或"制作考盘"窗体
返回目录 8.2 试题库管理程序的设计 2. 添加自动选题窗体FrmXt 将[例7.11]中的FrmSele.frm窗体添加到本工程中,并进行重命名另存: • 添加FrmSele窗体: 执行“工程→添加文件”命令,选择[例7.11]建立的FrmSele.frm文件 • 将FrmSele.frm另存为FrmXt.frm
返回目录 8.2 试题库管理程序的设计 3. 添加题库管理窗体FrmSele 将[例7.12]中的FrmManage.frm窗体添加到本工程中,并进行重命名另存: • 添加FrmManage.frm窗体: 执行“工程→添加文件”命令,选择[例7.12]建立的FrmManage.frm文件 • 将FrmManage.frm另存为FrmSele.frm
返回目录 8.2 试题库管理程序的设计 4. 设计制作考盘窗体FrmCopy (1) 添加窗体: • 执行“工程→添加窗体”命令,添加一个新窗体,并保存为FrmCopy.frm • 在窗体上添加两个命令按钮和一个标签。标签的属性设置:Caption为空,ForeColor为红色。
返回目录 8.2 试题库管理程序的设计 (2) 编写代码 : • 编写窗体的Load事件响应代码,功能:出现“请插入学生考盘!”的提示 • 编写通用过程CopyDB,功能:复制试题文件 • 编写Cmdqd按钮(“确定”)的Click事件响应代码:调用CopyDB过程,将当前目录中的test.mdb复制到A盘的根目录中 • 编写Cmdexit按钮(“返回”)的Click事件响应代码:卸载制作考盘窗体
返回目录 8.2 试题库管理程序的设计 5. 添加模块文件xt.bas • 执行“工程→添加模块”命令,添加一个模块,并保存为xt.bas • 在模块代码窗口中定义通用过程,功能:将窗口居中安放
返回目录 8.3 试题答题及评分程序的设计 试题答题及评分程序(学生模块)也是由四个窗体和一个模块文件组成 (xt.bas)组成。
返回目录 8.3 试题答题及评分程序的设计 1. 考生登录窗体FrmDl (1) 窗体设计: • 新建一个VB工程,保存为xz.vbp • 将窗体Form1保存为FrmDl.frm • 按右图进行窗体设计
返回目录 8.3 试题答题及评分程序的设计 (2) 编写代码 : • 编写窗体的Load事件响应代码: • 通过DAO 工作区对象的OpenDatabase方法打开学生考试库Test.MDB • 调用xt.bas中的过程(将窗口居中安放) • 编写Txtcode文本框(“考核证号”)的LostFocus事件响应代码:失去焦点时检查准考证号输入是否正确 • 编写Txtname文本框(“姓名”)的LostFocus事件响应代码:失去焦点时检查姓名是否输入
返回目录 8.3 试题答题及评分程序的设计 • 编写Txtzwh文本框(“座位号”)的LostFocus事件响应代码:失去焦点时检查座位号是否正确输入 • 编写cmdml按钮(“正确无误”)的Click事件响应代码:检查准考证号、考生姓名和座位号是否按要求输入。如果正确,则: • 向UserDb表中添加一条用户记录。若该记录已存在,则给出相应的提示 • 显示Frmxz(考生答题)窗体,卸载Frmdl(考生登录)窗体
返回目录 8.3 试题答题及评分程序的设计 2. 考生答题窗体FrmXz (1) 添加窗体: • 执行“工程→添加窗体”命令,添加一个新窗体,并保存为FrmXz.frm • 在窗体上添加一个SSTab控件:执行“工程→部件”命令,“控件” 选Microsoft Tabbed Dialog Control 6.0 • 设置SSTab控件: • 属性窗口中设置Tabs为2,设置TabsPerRow为2
返回目录 8.3 试题答题及评分程序的设计 • 设置SSTab控件: • 右击SSTab控件,选“属性”命令, 设置如下:
返回目录 8.3 试题答题及评分程序的设计 • 设置SSTab控件: • “单选题”选项卡界面设置(部分控件的属性见教材表8.3):
返回目录 8.3 试题答题及评分程序的设计 • 设置SSTab控件: • “填空题”选项卡界面设置(部分控件的属性见教材表8.4):
返回目录 8.3 试题答题及评分程序的设计 (2) 编写代码 : • 在 “通用”声明段定义模块级变量及通用过程xianshi • 编写窗体的Load事件响应代码 • 编写单击Option1按钮(选择答案)的事件响应代码 • 编写滚动Hscroll(选择题目)的事件响应代码 • 编写单击滚动条上的Optti按钮(选题)的事件响应代码 • 编写窗体的Activate(激活)事件响应代码 • 编写单击Cmdjj按钮(“交卷评分” )的事件响应代码 • 编写单击Cmdjs按钮(“结束”)的事件响应代码
返回目录 8.3 试题答题及评分程序的设计 3. 考生答题未答完提示窗体FrmTs (1) 添加窗体: • 执行“工程→添加窗体”命令, 添加一个新窗体,并保存为 FrmTs.frm • 设计窗体 (2) 编写代码 : • 编写窗体的Load事件响应代码 • 编写单击命令按钮数组的事件 响应代码
返回目录 8.3 试题答题及评分程序的设计 4. 阅卷评分窗体FrmTj (1) 添加窗体: • 执行“工程→添加窗体” 命令,添加一个新窗体, 并保存为FrmTj.frm • 设计窗体
返回目录 8.3 试题答题及评分程序的设计 (2) 编写代码 : • 在 “通用”声明段定义模块级变量 Dim senum As Integer '记录答对的选择题数 Dim finum As Integer '记录答对的填空题数 • 编写窗体的Load事件响应代码:判别选择题和填空题的答题是否正确,并给出考生得分 • 编写单击cmdml按钮(“结束考试”)的事件响应代码:将考生成绩记录在考生表中,并释放记录集对象。
返回目录 8.3 试题答题及评分程序的设计 5. 添加模块文件xt.bas • “工程→添加模块” ,添加一个模块,保存为xt.bas • 在模块代码窗口中定义全局变量及通用过程
返回目录 8.4 有待完善的问题与思考 • 在学生考试库中,由于“se_ksda”(学生答案)和“se_da”(标准答案)在同一个数据表中,考生可以直接打开Access数据库得到标准答案。因而在实际应用中,必须避免发生这种情况。 • 在“自动选题”程序代码中,每一条记录被选中的几率是相同的。而在实际应用中,可以给每道题赋予一个权值,用于表示题目的难易程度,从题库中选择考题时可以选择不同难度的题目,以增加选题的多样性。