本块功能说明:本块主要功能是从服务器端下载题库。通过向服务器发送题库下载请求,进行第一次握手。服务器做出应答后,获得服务器开通端口连接到服务器并进行文件传输。
窗口界面
模块名: Init
参数: 无
功能:初始化窗口
设计构思:
通过查找Exambak.bak来 和比较Exambak.bak大小来判断是否已经下载过考题库,如果未下载则向服务器发送下载文件请求,服务器获得请求并分配端口,即发送下载考题库文件请求到服务器;否则则跳过。
模块名: WskFileComm_DataArrival (Winsock事件)
参数: 无
功能:获得服务器发来的文件流并写入文件
设计构思:
服务器发送文件流(文件内容)来时触发该事件,由于通讯非连续性的所以要通过CurrentFileLen全局变量来记录文件写入的当前位置,以便下次数据流来时从CurrentFileLen位置开始写入知道CurrentFileLen>= DownFileLenCount(文件总大小)改值在考生登录时已经获得。
3.1.4 ExamManageSystem.FrmBulid 随机生成考题窗口
文件名:FrmBulid.frm
本块功能说明:考试题目初始化,根据有无备份文件来判断,是随机生成题目还是还原从备份文件中还原题目信息
没有备份文件时
有备份文件时
模块名: RndSubject
参数: 无
功能:随机出题
设计构思:
通过已经分配好大小的数组FillSubject()填空题SingleChoiceSubject()单选题MultiChoiceSubject()多选题OperationSubject()操作题 分别从题库中找取相应的表单随机抽取表单中的记录的位置分别放入数组中形成索引。
模块名: ResumeSubject
参数: 无
功能:还原题目
设计构思:
通过已经分配好大小的数组FillSubject()填空题SingleChoiceSubject()单选题MultiChoiceSubject()多选题OperationSubject()操作题 分别从备份文件中提取出来放入数组中形成索引。
3.1.5 ExamManageSystem.FrmFillTest 填空题
文件名:FrmLogin.frm
本块功能说明:是考生做答填空的窗口。
模块名: CheckSubject
参数: (cMemo As String, Sign As String)
功能:将数据库里的数据转换为考题样式
设计构思:
如:题目 VB中什么函数是__1__提取字符的? __1__为填空 而存入数据库中则是VB中什么函数是☆取字符的?(☆是填空的标记可以是自己设定的)此函数就是将数据库中的转换成现实中看的懂的题目,并且记录填空的个数到变量ResultNum。
模块名: ViewFillResult
参数: 无
功能:为填空题的空位分配答题的文本框
设计构思:
根据题目的填空数量来分配给考生答题文本框(此功能类似许多考试中的与答题纸)题目与答案分开。方便对考生的答题内容进行记录。
3.1.6 ExamManageSystem. FrmSelectTest 单选题
文件名:FrmSelectTest.frm
本块功能说明:是考生做答单选题的窗口。并即时记录考生当前所做的答案(考生做一题则记录一题的答案)
窗口界面
这快主要介绍主要构思(详细请参照原代码)
窗口在加载时通过对SingleChoiceSubject()(已经在生成题目时候已经初始化过)中记录号对数据库进行访问,取出每题的当前选择答案和正确答案本被到 SingleSelectQuestion()和SingleRightQuestion()中,以便对考生答题的状态进行记录,也方便总分的计算。题目的切换是通过SingleChoiceSubject()数组来进行切换,SingleChoiceSubject是记录题库中记录号的索引,用全局变量CurrentT(是记录当前题目的索引)初始值为0 则代表第一条记录。切换题目其实就是对CurrentT进行加减操作。之后通过数据库移动到SingleChoiceSubject(CurrentT)中存储的记录号,在显示在窗口中。考生对当前题目做答也是按照同上的方法记录到数据库中和储存选择题目的变量SingleSelectQuestion() 中
3.1.7 ExamManageSystem. FrmMultiSelectTest 多选题
文件名:FrmMultiSelectTest.frm
本块功能说明:是考生做答多选题的窗口。并即时记录考生当前所做的答案(考生做一题则记录一题的答案)
窗口界面
这快主要介绍主要构思(详细请参照原代码)
窗口在加载时通过对MultiChoiceSubject()(已经在生成题目时候已经初始化过)中记录号对数据库进行访问,取出每题的当前选择答案和正确答案本被到 MultiSelectQuestion()和MultiRightQuestion()中,以便对考生答题的状态进行记录,也方便总分的计算。题目的切换是通过MultiChoiceSubject()数组来进行切换,MultiChoiceSubject是记录题库中记录号的索引,用全局变量CurrentT(是记录当前题目的索引)初始值为0 则代表第一条记录。切换题目其实就是对CurrentT进行加减操作。之后通过数据库移动到MultiChoiceSubject(CurrentT)中存储的记录号,在显示在窗口中。考生对当前题目做答也是按照同上的方法记录到数据库中和储存选择题目的变量MultiSelectQuestion() 中。由于多选题不同与单选题,考生可选多个答案,所以考生每次选择题目时候都对复选框进行检索找出考生所选的答案,复选框(0-5)对应答案(A-F) 如果复选框0,5 是被选择的 则题目答案就是”AF”记录到数据库和变量中。
3.1.8 ExamManageSystem. FrmOperation 操作题
文件名:FrmOperation.frm
本块功能说明:是考生做答操作题的窗口。非本程序功能,针对现在上机考试除了基础题外还应有应用方面的要求,本窗口则是给出题目的要求 考生可通过特定考核的工具软件进行考试
题目的切换是通过OperationSubject ()数组来进行切换,OperationSubject是记录题库中记录号的索引,用全局变量CurrentT(是记录当前题目的索引)初始值为0 则代表第一条记录。切换题目其实就是对CurrentT进行加减操作。之后通过数据库移动到OperationSubject (CurrentT)中存储的记录号,在显示在窗口中。
3.1.8 CommonModule通用模块
模块名: executeSQL
参数: (ByVal SQL As String, msgstring As String)
功能:执行SQL语句
设计构思:
执行SQL语句,参数SQL是SQL语句,参数msgstring 是查询信息返回值
模块名: connectstring
参数: 无
功能: