tcexam是一个非常优秀的在线考试系统,将纸笔考试转化为在计算机上在线完成,只要有计算机和网络就可以考试,大大简化了整个考试流程,将出题、考试、管理阅卷登常规过程一并纳入一个系统中,不仅减少了人力,而且极大的提高了整个效率和考试结果的可信度。Glow认为最大的收益方为组织考试的老师,它让老师免去了试卷排版和编排的工作,将更多的时间放在了出题的质量上,而且只需要提交 csv 格式或者 xml 格式的考试试题设置相关考试要求,其他的工作比如判卷就可以交与服务器完成,特别是当题目大多数为选择题时效果最明显。(TCExam的主页和下载页面为这个)
为什么要把 csv 转换成 xml
TCExam 考试系统默认只能导入xml格式的考试试题,但是我们老师给的考试试题确实从Excel 转换后的 csv 格式。只有通过修改考试系统的源代码来让TCExam考试系统支持csv 格式的试题导入。这里 Glow 采用曲线救国的方法,将 csv 格式的试题先转换成xml,然后由老师手动导入到考试系统。下面是老师提供的 csv 格式的部分试题。
CSVInsert,标题(1),类型(2),解答(3),答案(4),分值(5),答错扣分(可选项)(6),分级level(7),Tag(8),留空列(9),留空列(10),选项A(11),选项B(12),选项C(13)…,选项D(14),选项E(15)
1,车床的种类很多,其中应用最广的是( )。,1,,12,,,1,,,,立式车床,卧式车床,仪表车床,转塔车床,
2,目前最常用的车刀材料是为( )。,1,,12,,,2,,,,硬质合金和碳素钢,硬质合金和高速钢,碳素钢和高速钢,硬质合金和45号钢,
60,车削加工的切削用量三要素有( )。,2,,11,12,13,,,2,,,,切削速度,切削深度 ,进给量,切削宽度,切削厚度
61,在金属切削加工过程中,工件上存在三个不断变化的表面有( )。,2,,11,12,14,,,2,,,,已加工表面 ,待加工表面 ,端面,过渡表面,内孔
103,车工是使用车床进行切削的工种。,3,,11,,,1,,,,是,,,,
104,车工是使用车床的技术工人。,3,,11,,,1,,,,是,,,,
csv格式的文件主要是用逗号来分隔文件内容的格式。
TCExam格式的xml文件如下
<?xml version=”1.0” encoding=”UTF-8” ?>
<tcexamquestions version=“11.2.004”>
<header lang=“cn” date=“2011-11-18 08:49:14”>
</header>
<body>
<module>
<name>车工机考试题</name>
<enabled>true</enabled>
<subject>
<name>单选题</name>
<description>单选题</description>
<enabled>true</enabled>
<question>
<enabled>true</enabled>
<type>single</type>
<difficulty>1</difficulty>
<position></position>
<timer>0</timer>
<fullscreen>false</fullscreen>
<inline_answers>false</inline_answers>
<auto_next>false</auto_next>
<description>车床的种类很多,其中应用最广的是( )。</description>
<explanation></explanation>
<answer>
<enabled>true</enabled>
<isright>false</isright>
<position></position>
<keyboard_key></keyboard_key>
<description>立式车床</description>
<explanation></explanation>
</answer>
</question>
</subject>
</module>
</body>
</tcexamquestions>
在分析 csv 和 TCExam考试系统的代码后,转换的 php 代码的思路也越来越明晰。首先我们先读取 csv 文件,然后逐行读取它,使用 php 的 explode 函数,将每行文字用英文逗号分隔,输出为数组方便后面的调用。最后输出 TCExam 标准的 xml 文件提供下载。
如何给 TCExam 添加 csv 转换成 xml 的功能
1、在 admin/code/tce_import_xml_questions.php 文件的 97 行左右添加如下的代码,主要是给考试系统添加上传 csv 格式的文件,以及添加考试试题的名称。(复制代码时请把下面中出现的中文引号全部改为英文引号,否则就会报语法错误;另外把tce_import_xml_question.php的编码改成UTF-8无BOM编码)
echo ‘<div class=”tceformbox”>’.K_NEWLINE;
echo ‘<h1>csv转换为xml</h1>’.K_NEWLINE;
echo ‘<form action=”transf.php” method=”post” enctype=”multipart/form-data” id=”form_ratingeditor”>’.K_NEWLINE;
echo ‘<div class=”row”>’.K_NEWLINE;
echo ‘<span class=”label”>’.K_NEWLINE;
echo ‘<label for=”file”>csv文件:</label>’.K_NEWLINE;
echo ‘</span>’.K_NEWLINE;
echo ‘<span class=”formw”>’.K_NEWLINE;
echo ‘<input type=”file” name=”file” id=”file” /><br />’.K_NEWLINE;
echo ‘</span>’.K_NEWLINE;
echo ‘</div>’.K_NEWLINE;
echo ‘<div class=”row”>’.K_NEWLINE;
echo ‘<span class=”label”>’.K_NEWLINE;
echo ‘<label for=”module_name”>试题名称:</label>’.K_NEWLINE;
echo ‘</span>’.K_NEWLINE;
echo ‘<span class=”formw”>’.K_NEWLINE;
echo ‘<input type=”text” name=”module_name” id=”module_name” />’.K_NEWLINE;
F_submit_button(“update”, 上传, 上传);
echo ‘</span>’.K_NEWLINE;
echo ‘</div>’.K_NEWLINE;
echo ‘<br />’.K_NEWLINE;
echo ‘<br />’.K_NEWLINE;echo ‘</form>’.K_NEWLINE;
echo ‘</div><!– svc转换为xml结束 –>’.K_NEWLINE;
- 修改后的页面效果
2、在 TCExam 考试系统的 admin/code 文件夹中添加 transf.php 文件,点击这里下载
源代码如下:
3、修改上面的要求后,老师在后台的“模块”→“导入”中上传 csv 格式的试题,填写相关的考试试题名称后,点击提交后系统就会弹出下载的 xml 文件,老师可以直接把此 xml 文件导入到考试系统中。
题外话
如果您的 csv 格式的文件内容结构和我的不同的话,可以参考一下我的代码。主要思路就是逐行读取 csv 文件后,输出为TCExam考试系统能够读取的 xml 试题文件。如果你在实际操作中遇到问题,可以在 新浪微博 、 twitter 、 Google+ 上联系我。