用EXCEL制作模拟考试系统

2018-01-31 6页 5.0分

1.建立题库

打开Excel 2010,建立“模拟考试系统-出题测试版”。打开此工作簿,建立“单选题”工作表(如图1),在A2输入公式=ROW()-1&"."以自动生成序号,在D2输入=IF(C2="","",RAND()),选中A2:D2拖动向下填充几百行。按住Ctrl键单击 “单选题”工作表标签拖动复制出两份,分别重命名为“多选题”(如图2)、“判断题”(如图3),分别输入题目和答案,按Alt+回车键换行。请注意以下提示:

1、以上3个工作表,在B列输入单选题题目(样式随意,但一道题只能占一个单元格),在C列输入对应考题的答案,答案输入时注意不要有多余字符。

2、“多选题”工作表的答案必须按ABCD的顺序填写,例如答案ABD,不能写ADB、BAD、BDA、DAB、DBA,答错、少答和多答均不得分;“判断题”工作表的答案只能有两种,本题按“正确”和“错误”作为答案,其他形式如“对”和“错”、“√”和“×”也可以。

3、题库中题目数量根据实际情况而定,多多益善。本例中题库数目为单选题60道、多选题50道、判断题45道。

图1

图2

图3

2.建立考生名单

新建“考生名单”工作表,在A、B、C列分别输入序号、准考证号、考生姓名,选中B列在名称框中输入“考号”,回车确定把B列命名为考号(如图4)。完成后可在名称管理器内看到名字为“考号”的名称,引用位置为“考生名单”工作表的B列。

图4

3.设计试卷

建立“试卷”工作表,按需要设置试卷,序号生成方式如题库序号。单选题30题(A5:C34),多选题40(A36:C75),判断题30题(A77:C106)。在B4输入“单选题(每题1分)”,在B35输入“多选题(每题1分,错、漏、多选均不得分)”,在B76输入“判断题(每题1分)”。

用“自选图形/基本形状”中的棱台画一个按钮,选中在名称框中输入“出题按钮”4字回车,把它命名为“出题按钮”。再右击此按钮选择“添加文字”,在按钮上输入“出题”2字。同样再画一个按钮,把它命名为“评分按钮”,添加文字“评分”。(如图5)

图5

4.显示题目(如图6)

在B5输入公式=INDIRECT("单选题!R"&ROW()-3&"C"&COLUMN(),0),复制到B5:C34(可拖动A5填充)。

在B36输入公式=INDIRECT("多选题!R"&ROW()-34&"C"&COLUMN(),0)并复制到B36:C75。

在B77输入公式=INDIRECT("判断题!R"&ROW()-75&"C"&COLUMN(),0)并复制到B77:C106。

在E5单元格输入公式=IF(D5="",0,IF(D5=C5,$G$2,0)),向下填充到E34,这公式用来判断如果D5中的答案与C4的标准答案一致就得1分否则为0分,其中G2单元格内数值为1。同理,在E36单元格输入公式=IF(D36="",0,IF(D36=C36,$H$2,0)),向下填充到E75;在E77单元格输入公式=IF(D77="",0,IF(D77=C77,$I$2,0)),向下填充到E106。可通过更改G2、H2、I2单元格的数值来更改分值。

B5的公式表示对单选题工作表中同列、行数差3的单元格(B2)的引用,公式中使用了R1C1格式的单元格编号,其中3、34、75是由三种题型的第一题所在的行号减2得来。这公式实现的是绝对位置引用,即不管在单选题工作表中进行插入、删除行或排序,B5显示的始终都是你从单选题B2中直接看到的内容。因此B5:C34、B36:C75、B77:C106三个区域将分别与相应题库中最前面的30(或40)题的内容保持一致。

图6

5.答案限制

选中单选题答题区D5:D34单击“数据/有效性”(快捷键ALT+D→L),在“允许”中选择“序列”,选中“提供下拉箭头”复选项,在“来源”中输入“A,B,C,D”,不含引号且其中逗号为半角格式(如图7)。切换到“出错警告”选项卡,输入错误信息为“只能输入A、B、C、D中的一项,其他任何符号或空格均为非法。”,选中“输入无效数据时显示警告”复选项,选择样式为“停止”(如图8),确定完成设置。

图7

图8

同样对多选题答题区D36:D75,判断题答题区D77:D106设置数据有效性,只是“来源”要分别换成“A,B,C,D,B,AC,AD,BC,BD,CD,ABC,ACD,BCD,ABCD”和“正确,错误”。 多选题的“出错警告”一定要改成“ 必须按ABCD的顺序输入多选项,否则无法正确评分”。(如图9到如图11)

图9

图10

图11

6.准考证号验证

选中“试卷”工作表中要输入准考证号的D2单元格,单击“数据/有效性”,在“允许”中选择“系列”,取消“提供下拉箭头”复选项,在“来源”中输入=INDIRECT("考号")(如图12)。切换到“出错警告”选项卡,输入错误信息为“你输入的准考证号并不存在,请重新输入”,选中“输入无效数据时显示警告”,并设置样式为“停止”(如图13)。

图12

图13

在F2单元格输入公式=IF(D2="","",VLOOKUP(D2,考生名单! $B:$C,2,FALSE)),在D2单元格输入准考证号后会自动显示考生姓名。(如图14)

图14

7.随机抽题

右击“出题”按钮,选择“指定宏”,在弹出窗口中,输入宏名为“出题”,位置选择当前工作簿,单击“新建”按钮,复制如下代码粘贴到框内,结果如图15,保存时将文件另存为启用宏的.xlsm格式。

Sub 出题()

If Range("D2").Value = 0 Then

提示 = MsgBox("请先输入准考证号")

GoTo 重来

End If

'如果D2为空则弹出提示要求输入准考证号并直接跳到后面的"重来:"处。

Sheets("单选题").Range("A:D").Sort Key1:=Sheets("单选题").Range("D2"), Order1:=xlAscending, Header:=xlGuess

Sheets("多选题").Range("A:D").Sort Key1:=Sheets("多选题").Range("D2"), Order1:=xlAscending, Header:=xlGuess

Sheets("判断题").Range("A:D").Sort Key1:=Sheets("判断题").Range("D2"), Order1:=xlAscending, Header:=xlGuess

'这三行分别是对单选、多选和判断题工作表的A:D区域按D列随机数升序排序。

Columns("B:B").Rows.AutoFit

'对B列设置最适合行高,以完整显示题目。

Range("D5").Select

'定位到D5以便输入答案

ActiveSheet.Shapes("出题按钮").Visible = False

'隐藏出题按钮以防重复选题

ActiveSheet.Shapes("评分按钮").Visible = True

'显示评分按钮

重来:

End Sub

图15

试卷中的题目总是显示各题库最前面的N题,而在此对各题库按随机数进行随机排序后最前面的N题自然是随机的,也就相当于是随机抽题了。

8.成绩记录表

新建 “成绩记录”工作表(如图16),在A2输入公式=NOW(),并选中A列右击从“设置单元格格式”中设置为日期格式以显示当前时间。在B2输入公式=试卷!D2和C2输入公式=试卷!F2以显示相应数据。D2输入公式=SUM(E2:G2)对后面三个得分进行合计,E2、F2、G2则分别输入公式=SUM(试卷!E5:E34)、=SUM(试卷!E36:E75)、=SUM(试卷!E77:E106)分别对相应题型得分进行合计。

图16

9.评分和记录保存

右击“评分”按钮,选择“指定宏”,输入宏名“评分”,位置选择当前工作簿,单击“新建”按钮,复制如下代码粘贴到框内,结果如图17:

Sub 评分()

Sheets("成绩记录").Rows("3:3").Insert Shift:=xlDown

'在成绩记录工作表第3行前插入一行

Sheets("成绩记录").Rows("2:2").Copy

'复制成绩记录工作表第2行

Sheets("成绩记录").Range("A3").PasteSpecial Paste:=xlPasteValues

'以数值方式粘贴到成绩记录工作表A3

得分 = MsgBox("最终得分" & Range("成绩记录!D2").Value & "  其中:单选题" & Range("成绩记录!E2").Value & "、多选题" & Range("成绩记录!F2").Value & "、判断题" & Range("成绩记录!G2").Value, , "评分结果")

'弹出信息框显示成绩记录!D2、E2、F2、G2的数据,标题为"评分结果"

Range("D2,D5:D34,D36:D75,D77:D106").ClearContents

'清除试卷工作表中输入的内容

Sheets("试卷").Rows("3:500").RowHeight = 0

Sheets("成绩记录").Rows("2:2").RowHeight = 0

'设置题目区行高为0,以隐藏所有题目

ActiveSheet.Shapes("出题按钮").Visible = True

ActiveSheet.Shapes("评分按钮").Visible = False

'显示出题按钮,隐藏评分按钮

ActiveWorkbook.Save

'保存

End Sub

图17

10.其他设置

选中A4单击“窗口/冻结空格”以始终显示1:3行的标题和按钮。右击C、E列选择隐藏。为答题区以外单元格设置填充色以示区别,把评分按钮重叠到出题按钮上(如图18)。

图18

选中D5:D34右击选择“设置单元格格式”,在“保护”选项卡中单击取消“锁定”选项,对于同样需要添写的D2,D36:D75,D77:D106区也同样取消锁定设置(如图19)。然后单击“工具/保护/保护工作表”,在中间“允许此工作表所有用户进行”列表中只选中“选定未锁定单元格”和“设置行格式”两个选项,输入密码(如图20),单击确定把工作表保护起来,这样考生就无法修改试题等相应单元格了。单击评分以隐藏所有题目,同时显示出题按钮,把文件另存为“模拟考试系统-考生测试版.xlsm”,退出。

如图19

如图20

系统维护

1.隐藏工作表

选中除“试卷”工作表除外的其他工作表,右击选择隐藏,以免考生看到。(如图21)

图21

2.保护VBA代码

右击 “试卷”工作表,选择“查看代码”,选中VBAProject(模拟考试系统-考生测试版.xlsm),右击,选择“VBAProject 属性”,在“保护”选项卡中选中“查看时锁定工程”,并输入密码(如图22),确定,保存文档后退出。关闭文档后再重新打开,查看代码需输入密码,这样任何人没有密码就别想修改这些代码了。

图22

3.保护工作簿

为防止考生修改,在“审阅”选项卡中选中“保护工作簿”,勾选“结构”和“窗口”选项,输入密码后确定(如图23)。

完成以上三步后,在没有密码的前提下,考生只能输入准考证号和进行答题,不能取消隐藏工作表、取消隐藏某列或某行、查看和修改VBA代码。

图23

如何考试

打开“模拟考试系统-考生测试版.xlsm”就只有一张“试卷”工作表,先输入准考证号回车确认,正确的话就显示姓名,否则会要求你重输。单击出题按钮即可显示题目,同时出题按钮会变成评分按钮。考生可在D列选中相应单元格直接输入答案或单击下拉按钮从列表中选择输入(如图24到图26)。题目做完后,单击“评分”按钮即可显示最后得分,确定后自动保存,并回复到最初状态。

图24

图25

图26

系统修改

在电脑上能直接处理的题型就只有这三种,所以能改的也只有各种题的数量而已。步骤如下:

1.撤消工作表保护,在相应题目中选中N行,右击选择“复制”再选择“插入复制单元格”,如果要减少则右击选择“删除”就OK。

2.选中“试卷”工作表B:D列,右击选择“取消隐藏”,按之前讲的公式修改复制各题型区域的公式。

3.然后重新隐藏C列和保护工作表,分数记录中的公式会自动调整可不必修改

用html制作简单考试系统,巧用EXCEL制作模拟考试系统相关推荐

  1. 计算机模拟考试系统(excel2003),用Excel建立模拟考试系统(下)

    用Excel建立模拟考试系统(下) [ 2005-10-19 11:03:19 ] 作者:陈桂鑫 责任编辑:zhanghuafeng 做教师的少不了为学生制作各种各样的考试卷子,市面上虽有各种模拟考试 ...

  2. 计算机等级考试office2007,计算机等级考试:WPS巧借Office2007制作描红字帖

    为了帮助广大考生更好的复习,帮考网小编整理提供了计算机等级考试:WPS巧借Office2007制作描红字帖,以供各位考生复习参考,希望对考生复习有所帮助. 由于工作的需要,一般电脑中都同时安装有Mic ...

  3. java实现模拟考试系统,基于jsp的驾照模拟考试系统a-JavaEE实现驾照模拟考试系统a - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的驾照模拟考试系统a, 该项目可用各类java课程设计大作业中, 驾照模拟考试系统a的系统架构分为前后台两部分, 最 ...

  4. 2020美容师(中级)复审模拟考试及美容师(中级)模拟考试系统

    题库来源:安全生产模拟考试一点通公众号小程序 2020美容师(中级)复审模拟考试及美容师(中级)模拟考试系统,包含美容师(中级)复审模拟考试答案解析及美容师(中级)模拟考试系统练习.由安全生产模拟考试 ...

  5. 2020焊工(技师)考试及焊工(技师)模拟考试系统

    题库来源:安全生产模拟考试一点通公众号小程序 2020焊工(技师)考试及焊工(技师)模拟考试系统,包含焊工(技师)考试答案解析及焊工(技师)模拟考试系统练习.由安全生产模拟考试一点通公众号结合国家焊工 ...

  6. 2020熔化焊接与热切割模拟考试及熔化焊接与热切割模拟考试系统

    题库来源:安全生产模拟考试一点通公众号小程序 2020熔化焊接与热切割模拟考试及熔化焊接与热切割模拟考试系统,包含熔化焊接与热切割模拟考试答案解析及熔化焊接与热切割模拟考试系统练习.由安全生产模拟考试 ...

  7. 2021年起重机械指挥考试内容及起重机械指挥模拟考试系统

    题库来源:安全生产模拟考试一点通公众号小程序 2021年起重机械指挥考试内容及起重机械指挥模拟考试系统,包含起重机械指挥考试内容答案和解析及起重机械指挥模拟考试系统练习.由安全生产模拟考试一点通公众号 ...

  8. 2020压力管道巡检维护模拟考试及压力管道巡检维护模拟考试系统

    题库来源:安全生产模拟考试一点通公众号小程序 2020压力管道巡检维护模拟考试及压力管道巡检维护模拟考试系统,包含压力管道巡检维护模拟考试答案解析及压力管道巡检维护模拟考试系统练习.由安全生产模拟考试 ...

  9. 2021年C证(安全员)复审模拟考试及C证(安全员)作业模拟考试

    题库来源:安全生产模拟考试一点通公众号小程序 C证(安全员)复审模拟考试是由公众号安全生产模拟考试一点通提供,C证(安全员)证模拟考试题库是根据C证(安全员)最新版教材汇编出C证(安全员)仿真模拟考试 ...

  10. 2021年安全员-A证模拟考试及安全员-A证复审模拟考试

    题库来源:安全生产模拟考试一点通公众号小程序 安全员-A证模拟考试考前必练!安全生产模拟考试一点通每个月更新安全员-A证复审模拟考试题目及答案!多做几遍,其实通过安全员-A证考试试题很简单. 1.[多 ...

最新文章

  1. halcon算子翻译——set_framegrabber_callback
  2. 做了这么久SEO优化,想必你很了解“网页快照”!
  3. 写日历的一些总结(二)
  4. 质数,约数(数论) AcWing算法课
  5. 代码 直接调节显示设备亮度_投影仪太暗怎么调整?如何给投影机增加亮度?颜色也能调吗?这项功能必须要有...
  6. ios html gif 显示,iOS中gif图的显示方法示例
  7. css 中的伪类选择器before 与after
  8. android P版本ro.build.date时间修改
  9. MySQL之DDL(定义)语句
  10. vs2019编译c语言提示有病毒,关于VS2019代码编译的问题(C++)
  11. [二叉树遍历|BST]leetcode 538 把二叉搜索树转换为累加树
  12. opencv图像分析与处理(15)- 图像压缩中的编码方法:霍夫曼编码、Golomb编码、Rice编码、算术编码及其实现
  13. 漏洞扫描工具MySQL_打造一款自动扫描全网漏洞的扫描器
  14. 语音信号处理 | 傅里叶变换、短时傅里叶变换、小波变换、希尔伯特变换、希尔伯特黄变换
  15. php解析酷狗音乐,PHP_将酷狗krc歌词解析并转换为lrc歌词php源码,最近在进行一次对酷狗音乐歌 - phpStudy...
  16. UE4 VR官方教程学习总结-项目设置
  17. c++中获取蓝图组件_C++和蓝图
  18. android gpu平板 推荐,性能强的不像话,最强安卓平板华为平板M6上手
  19. 新知实验室 TRTC实时音视频
  20. 【Unity3D编辑器扩展】Unity3D中实现UI界面控制,UI界面的显示和隐藏实现

热门文章

  1. 曼车仪表显示故障车载计算机,汽车仪表盘上的故障标志图解大全
  2. 使用 VLD 检测内存泄漏
  3. imx6ull 485 调试
  4. 浦发银行计算机基础知识题库,2018浦发银行面试经验(信息科技岗,总行信息技术岗等)...
  5. jmeter 录制回放工具badboy 下载安装步骤
  6. Think-Cell Chart 咨询级图表制作-秦川-专题视频课程
  7. 软件推荐之 QttabBar
  8. 打开图片默认是WPS图片,还原成win7自带的图片查看方式
  9. Linux ——IP配置修改
  10. javassist修炼笔记