- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在Excel中设计试卷生成系统
在Excel中设计试卷生成系统
PAGE / NUMPAGES
在Excel中设计试卷生成系统
在 Excel 中设计试卷生成系统
作为一名教师,经常要经历考试、出卷这个过程。虽然“无纸化”考试已经开始被大家所了解,但真正实现的学校却不多。作为一名信息技术教师, 我希望能够利用计算机开发出一套简单实用、可以自动生成试卷的系统, 把大家从繁琐的出卷过程中解放出来。考虑到试卷要
打印出来, 我没有选择VB, 而是选择了大家都很熟悉的Excel 2000,利用其中的VBA脚本语言来实现试卷的自动生成。 ?
系统实现的功能 ?
组卷方式为章节控制方式。保证各章节的分值不易失衡,根
据出题者的要求,按章节随机从题库中抽题组卷。?
格式化试卷(包括设置试卷标题、 进行页面设计、添加页眉等),达到可以直接打印的要求。 ?
题库中试题内容与参考答案融为一体, 由系统生成的试卷文档
既可以打印出学生考试用卷,也可以打印出样卷。?
构建题库 ?
?
该系统题库采用 Excel 表格的形式,字段名分别为 “标准答案” 、
“题干”、 “答案 A”、“答案 B”、“答案 C”、“答案 D”(如
图 1)。题库中的记录可以采用两种方法来录入: ?
直接手工录入:打开工作簿,在题库工作表中可以直接输入题目; ?
从已有题库文件中导入到 Excel 题库里面,比如可以从现成的 Access 题库中直接导入到该题库里。 ?
但是无论哪种方法都必须满足下面的条件: 所有的题目按章节排序,并记录每一章节题目的起始位置, 以后向题库里面添加记录时不能在文件尾追加, 而是要放到所属章节的位置, 并修正试卷生成界面里相应的地方。 ?
建立试卷生成界面 ?
?
所谓试卷生成界面就是系统提供给用户的用于输入各种条件值
的地方,本系统是由用户设定各章节所出题目的个数, 因此界面
比较简单。我们把工作簿中的 Sheet3 工作表设计为系统界面 (如图 2)。在该界面下用户只要在 B 列相应单元格中输入每个章节的题目数(例如,第一、二章都出 10 个题,就在 B1、B2 单元格
里分别输入 10,没有出题的章节后面可以为空白, 如图 2 所示),然后按“ Ctrl+D ”组合键执行宏命令就可以生成试卷。其中此界
面除 B 列外其余各列都设置为保护状态, 以避免用户的误操作影响程序的执行。在图 2 中我们还可以看到 D、F 列标明了题库中每一章题目的起始位置, 这里的设置是在完成题库后根据题库内容来填写,一般只填写一次,如果题库的内容有变化,一定要在此处作相应的改变。 ?
生成试卷 ?
生成试卷是本系统的核心部分,这部分的设计主要是采用 Excel
里面的宏命令。 其中的关键代码主要是自己编制的, 有些辅助功
能采用录制宏的方法实现。 本系统的组卷方式为按照各章节要求
的题目数自动随机组卷, 所以核心代码部分为三个方面: 按照用
户要求产生符合要求的随机数, 并把该数存储于一个数组中, 产
生的随机数就是选中题目的序号;按要求把所选记录复制到
Sheet2 工作表中,并转换成我们常见的试卷模式; 格式化试卷。 ?
1. 生成随机数 ?
本系统中的随机数主要是标志出现在试卷中题库记录的位置, 例如我们随机产生了一个数 99,表示题库中第 99 条记录是我们试卷中的一个题目。 关于随机数的要求: 一是生成的数必须不能重复,这样就避免试卷中重题的出现; 二是生成的数必须在给定的范围里产生,如图 2 所示要求,第一章的题目范围是 1~117,所以我们产生的 10 个随机数必须是在 1~ 117 之间的不能重复的数。具体实现代码如下: ?
①产生一定范围的随机数我们用 RND()函数,我们把产生的这
个函数赋予临时变量 j ,其中的
2 中 D、F 列中相应值。 ?
fanwei(1,1),fanwei(1,2)
为图
j = Int(Rnd()
* (fanwei(l,
2) - fanwei(l,
1) + 1))
+ fanwei(l,
1)?
②产生不重复的随机数。 我们采用的方法是用新产生的数和前面
产生的数分别比较,如果不同就直接记入数组 id() ,如果有相
同的话重新再生成,然后再比较,如此循环。 ?
For i = 1 To timu(l)?
a:j = Int(Rnd() * (fanwei(l, 2) - fanwei(l, 1) + 1)) + fanwei(l, 1)?
id(i) = j?
避免产生重复的随机数 ? For k = 1 To i - 1?
If j = id(k) Then?
GoTo a:?
Else?
id(i) = j?
End If?
Next k?
2. 按产生的随机序列
原创力文档


文档评论(0)