1.2.4 根据以上分析,自动判卷模板的原理可用图1来描述 2 教师端程序题模板生成工具 2.1 功能实现 为实现程序题自动判卷功能,设计程序题模板生成工具,并让其实现以下功能:导入一个源文件, 生成一一对应的考试模板、判卷模板,并为生成的考试、判卷模板提供浏览、测试功能,以便及时修改和调整。 2.2 设计方法 2.2.1 对导入源文件预处理 对源文件以注释的形式添加一些特殊标记,通过识别这些特殊标记对源代码自动修改或增添。例如: //code_fosOpen 开文件流标记,在判卷模板中自动增加定义记事本文件的输出流代码; //code_fosClose 关文件流标记,在判卷模板中自动增加关闭文件流和释放内存代码; //code_judge 判卷变量标记,设置得分点; //code_delete 挖空行标记,所设置行变为下划线; //edit_function 编辑函数标记,设置函数,由学生编写函数体; //code_resetInstance 修改用例标记,为判卷模板和考试模板设置不同的测试用例。 2.2.2 判卷函数头文件、静态库文件 功能:在判卷模板中将考生答案和正确答案进行对比。 文件描述: (1)头文件(compare.h),文件内容如右图。(2)静态库文件(compare.lib),为compare.h中声明的方法提供具体实现。 文件引用: #include"compare.h" #pragma comment(lib,"compare.lib") 2.2.3 模板生成工具设计 针对1中的不同标记,该工具会自动生成相应的按钮,通过点击按钮和简单的设置生成判卷、考试模板: (1)判卷模板。点击按钮实现函数体编写、代码段填空、判卷变量的选择,通过对判卷变量正确值的设置、以及判卷代码插入位置的设置,可预览、测试、生成判卷模板。 (2)考试模板。在判卷模板设置的基础上,通过对测试用例进行修改,可预览、测试、生成考试模板,并具有相应题目说明文件的编写功能。 2.3 原理解释与图解 现结合一个简单的例子对模板生成工具的原理进行解释,并用图解展示: 第一步:选择载入用于生成考试、判卷模板的.cpp源文件,然后根据按钮提示,选择挖空行、编辑函数、判卷变量等,并根据提示进行必要的设置(见图3)。 附:为便于说明问题,此处以一个求取平方数的简单程序为例,本例中只有一个判卷变量(对应一个得分点)的设置,对于较复杂的程序,可以设置多个得分点。 第二步:点击“预览”菜单对将要生成的判卷模板进行预览,初步查看是否正确,然后点击“测试”菜单选择对判模板进行自动编译运行,若正常运行,转步骤三;若失败,根据编译运行的错误提示,返回步骤一进行修改设置。 第三步:点击“生成”菜单,选择保存位置,即可生成判卷模板(见图4)。 第四步:进行用例修改,修改后的用例用于生成学生考试模板(见图5)。 第五步:预览、测试运行,最终生成考试模板,并根据运行结果编写题意说明文件(见图6,图7)。 3 学生端答题界面 |