宝哥软件园

php实现在线考试系统[带源代码]

编辑:宝哥软件园 来源:互联网 时间:2021-08-29

注:本文旨在记录学习和发展思路。这个程序没有商业价值。要了解开发思路,商业需要升级两次!

效果图如下:

QQ截图20170629130332.png

题库主页显示

QQ截图20170629130317.png

试题在线测试

QQ截图20170629130100.png

分数统计

这个小项目的目的是练习PHP的基础知识,通过数组操作实现考试信息的存储和加载,引入模板文件实现考试数据的调用布局。

1.由于数据库不是用于小项目,所以试题以数组的形式存储在PHP文件中,部分代码如下:

?Php//题库2返回[//题库标题' title'='PHP基础语法考试试题(二)',//答题时限(秒)'超时'=1200,//题库' data'=[//真或假题型' binary'=['name'=' True或False Question '//题型名' score'=24,//题型得分' data'=[1=['question'='在带后缀的文件中'。“php”,所有的PHP代码只能用“?php?标签内。'答案'='否']、2=['问题'='标量类型包括布尔、整数、字符串和数组。'答案'='否'],3=['问题'=' var _ dump是PHP中使用的函数,用于打印变量或表达式的类型和值等相关信息。'答案'='是']],//选择题' single'=['name'='选择题',' score'=40,' data'=[1=['question'='在以下选项中,不区分大小写的标识符是()。'选项'=['函数名','常量名','变量名','属性名'],'答案'='A' ],2=[2,那怎么获取考试数据?只需导入文件

$data=require。/data/1 . PHP ';请注意,上面的检查文件是一个由return返回的数组。引入文件后,我们直接将考试数组数据赋给$data变量,然后通过操作$data来显示题库数据。

3.可变题库文件。

所有题库文件统一放在/data/目录下,每个试题对应一个. php文件。如果想知道有多少测试数据,也就是多少。php文件,这里我们使用glob()函数,代码如下:

//数一数”。php "文件。这里,项目库文件名必须是一个连续的数字$ count=count (glob('。/data/*。PHP ');glob()函数返回一个文件列表数组,运行glob()函数转储的输出结果如下:

数组(3) {[0]=字符串(12)”。/data/1 . PHP“[1]=string(12)”。/data/2 . PHP“[2]=string(12)”。/data/3.php'}因为存储数据的文件名都是连续的

4.匿名函数的使用。

匿名函数是没有函数名的函数,也叫闭包函数,常用来破坏函数参数的值。对于临时定义的函数,使用匿名函数时不需要考虑函数命名冲突的问题。这里使用的匿名函数纯粹是为了练习。我们还可以将以下代码封装成一个函数:

$ func=func($ data)use($ func){ $ result=[];Foreach ($data as $k=$v){ //如果是数组,继续递归;如果是字符串,转义$result[$k]=is_array($v)?$func($v) : (is_string($v)?toh tml(v):美元(v);}返回$ result};使用匿名函数递归来转义考试数据的特殊字符。

5.转义HTML特殊字符。

如果在试题中出现HTML标签,浏览器会对其进行解析,导致无法按原样输出。因此,有必要对题库中可能存在的HTML标签的字符进行转义。代码如下:

//HTML特殊字符转义函数到HTML($ str){ $ str=HTML specialchars($ str,ent _ quotes);return str_replace(“”、“”、$ str);}在这里,我们使用函数htmlspecialchars()来转义可能存在的特殊字符,这样当我们再次输出时,就可以按照我们想要的格式进行输出。

相应的htmlspecialchars()函数不能转义空格和换行符。要转义空格,需要使用str_replace()函数直接替换,换行符可以使用nl2br函数。

6.return返回两个值。

具体代码如下:

函数getDataInfo($ data){ $ count=[];//保存某个题型中的题数$ score=[];//每道题的分数foreach($ data as $ k=$ v){ $ count[$ k]=count($ v[' data ']);$ score[$ k]=round($ v[' score ']/$ count[$ k]);}返回[$count,$ score];//使用list()接收返回值:list($count,$ score);序列依次对应}代码最后返回两个带return的结果变量。要接收这两个返回值,需要使用list()接收数组赋值,然后依次将数组中的元素赋给变量。

7.将要使用的函数封装成函数函数,方便调用,避免代码重复。

这里使用的所有函数都尽可能封装成函数。使用时可以引入函数文件,方便管理,提高代码利用率。

8.使用模板

在使用PHP处理数据之后,在PHP文件中使用它

//引入HTML模板‘必需’。/view/index . html ';引入HTML模板,在模板中,我们还可以插入PHP标签来输出想要的数据,并动态显示数据。

网上考试系统请选择题库$v):时间:分钟总分:分钟开始考试,直接输出变量:=$值?

循环输出一组变量:PHP foreach($值为$k=$v):~~~~~~~?php endforeach?

9.注意三元运算符的使用。

作为一些简单的判断输出,使用三元运算符:它可以大大提高效率,简化代码。

!-回答情况- td?=$v?是' : '错了?/td!得分?=$v?$score[$type] : 0?/td在上面的代码中,$v是一个bool值,我们可以通过三元运算符省略很多if判断,让代码看起来更干净。

10.页面计时倒计时、关闭页面提示、未能提交试题、考试时间结束自动提交试卷等功能都是通过jQuery和javascript实现的,这里不做解释。

最后附上程序源代码的下载地址给大家:点击这里下载

摘要

以上是边肖介绍的PHP htmphp实现的在线考试系统附带的源代码。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!

更多资讯
游戏推荐
更多+