在线考试系统PHP编码,在线考试系统

[php]代码库<?php

set_include_path('.' . PATH_SEPARATOR . './admin'. PATH_SEPARATOR . get_include_path());

include("global.php");

$threadid = intval($_REQUEST[threadid]);

if($_POST["action"]=="dotest"){

$_POST[radio] = $_POST[radio] ? $_POST[radio] : array();

$_POST[checkbox] = $_POST[checkbox] ? $_POST[checkbox] : array();

//取得单选和多选分值

$getsetmark = $db->query_first("SELECT radio,checkbox FROM ".$db_prefix."setmark");

//缓存所有正确答案

$answers = $db->query("SELECT id,title,choicetype,answer FROM ".$db_prefix."title WHERE 1");

$answer_array = array();

$titles = array();

$error = array();

$tmark = 0;

while($row = $db->fetch_array($answers)){

$answer_array[$row[id]] = $row[answer];

$titles[$row[id]] = $row[title];

if($row[choicetype]=="radio"){

$tmark += $getsetmark[radio];

}elseif($row[choicetype]=="checkbox"){

$tmark += $getsetmark[checkbox];

}

}

$mark = 0;

foreach($_POST[radio] as $titleid=>$choice){

if($choice == $answer_array[$titleid]){

$mark += $getsetmark[radio];

}else{

$error[] = array($titleid,$choice,$answer_array[$titleid]);

}

}

foreach($_POST[checkbox] as $titleid=>$choice){

$c_answers = explode(",",$answer_array[$titleid]);

$flag = false;

foreach($c_answers as $answer){

if(!in_array($answer,$choice)){

$flag = true;

}

}

foreach($choice as $answer){

if(!in_array($answer,$c_answers)){

$flag = true;

}

}

if($flag){

$error[] = array($titleid,implode(",",$choice),$answer_array[$titleid]);

continue;

}

$mark += $getsetmark[checkbox];

}

$msg = "本次考试总分{$tmark}分\\n你的得分{$mark}分\\n";

if($error){

$msg .= "以下题目你回答错误:\\n";

foreach($error as $v){

$msg .= "{$titles[$v[0]]}\\n你的答案:{$v[1]}\\n正确答案:{$v[2]}\\n\\n";

}

}

echo "";

exit;

}

if(!$threadid){

echo "参数错误";

echo '';

exit;

}

//考试名称

$threads = $db->query_first("SELECT name FROM ".$db_prefix."thread WHERE id=$threadid");

$threadtitle = $threads[name];

//题目表单

$conditions = $threadid ? "threadid='$threadid'" : 1;

$titles = $db->query("SELECT * FROM ".$db_prefix."title WHERE $conditions ORDER BY id ASC");

$titlelist = false;

$int = 0;

while($title = $db->fetch_array($titles)){

$int++;

$choices = false;

$tests = $db->query("SELECT * FROM ".$db_prefix."choice WHERE extends=$title[id] ORDER BY id ASC");

$i=0;

while($test=$db->fetch_array($tests)) {

$i++;

$checked = $test["IsDefault"] ? "checked" : false;

if($title[choicetype]=="radio"){

$choices .= " $test[choice]"; //

}else{

$choices .= " $test[choice]";//

}

}

eval("\$titlelist .= \"".gettemplate("test_title_list")."\";");

}

eval("\$header = \"".gettemplate("test_header")."\";");

eval("\$footer = \"".gettemplate("test_footer")."\";");

eval("dooutput(\"".gettemplate("test_test")."\");");

?>

694748ed64b9390909c0d88230893790.png

说明 1.shijuan_ertui.php为抽取坛友抽题逻辑代码所编写的文件,想看原本的可查看shijuan_kangfu.php 2.通用入口为index.html 3.想增加账号的可至xueyuan.php增加 复制代码 隐藏代码 $xueyuans = array( array('xueyuan_id'=>"110101190001011009",'xueyuan_name'=>"陈林",'xueyuan_pic'=>"chenlin.jpg",'xueyuan_kemu'=>"2"), array('xueyuan_id'=>"110101190001011017",'xueyuan_name'=>"吴彬",'xueyuan_pic'=>"wubin.jpg",'xueyuan_kemu'=>"1"), array('xueyuan_id'=>"sf证号",'xueyuan_name'=>"姓名",'xueyuan_pic'=>"照片名称",'xueyuan_kemu'=>"可学科目"), ); 4.如线上使用建议通过数据库存储 5.校验学员是否注册的逻辑仅作为演示使用,实在想作为线上使用请注意“xueyuan_id”的唯一性 6.sf证校验才用js强校验方式,新增学员的时候一定要输入正确sf证否者无法登陆,若想改为自定义账号登录,请自行更改js相关代码 7.请仔细查看源码,防止信息泄露,本系统演示中所提供的sf证号均为虚拟构造,仅作登录/考试演示使用 8.源码全部开源(其实总共也没几句代码),无任何侵权、收集信息的地方! 常见问题解析: 1.题库不一致 ——演示使用,重点请放在抽题上 2.需不需要服务器 ——本地搭建不需要,下载一个wamp或者其他集成环境,访问你的电脑内网IP即可多人答题 3.添加题库和学员信息 ——同2,我改成sql读取,不给你sql你能获取?通过读取php文件获取信息=通过sql读取的信息(从数据结果来说),为方便演示当然是文件越精简越好 4.关于交卷评分 ——参考网友提供的check.php文件,我没做他的集成,毕竟正常来说是入库。以文件方式存储,不符合上面说的越精简越好 5.完善系统 ——①,作为本地模拟考试,仅验证sf证号,密码原本的设计就是可有可无,加一个显得更正式而已,若作为线上,请加上必要的用户校验,一句话:不要相信用户的任何输入 ——②,出于精简,我是能省则省,删除很多校验和逻辑判断,以满足部分人的学习需求 ——③,文件全为初学php时无事写的,功能没问题,请无视代码质量 ——④,文中提到,此系统能公布出来完全是因为坛友的源码讨论,所以系统中会出现1.php和xueyuan.php,check.php等,最初系统设计是直接post。同3,这两个文件的出现相当于我已经帮你把数据从数据库里面取出来了放到了一个数组中。
第1章 前台 本网站的前台主要实现的网络在线考试及成绩查询等功能。 1.1 注册 想要进行在线考试必须先登录,如果您是新用户需要先进行注册,以获取登录密码,单击登录页面中的“注册”按钮,进入“学生注册信息”页面。 在此页面中填写完整的注册信息,单击“注册”按钮,完成注册操作。 注意:如果忘记密码可以通过密码问题及问题答案来找回密码。 1.2 在线考试 在线考试的操作步骤如下: (1)进入登录页面,在学生证号、密码及验证码处填写正确的登录信息,单击“登录”按钮,进入前台在线考试的主页面,学号:0000000000000001,密码:25175。 (2)阅读完考生规则后,单击“开始”按钮,进入选择考试套题页面。 (3)在此页面中选择考试课程及相应的套题名称,单击“同意”按钮,进入准备考试页面。 (4)单击“开始”按钮,进入考试页面。 (5)考试时间为20分钟,20分钟后如果不交卷,自统自动提交考卷。单击“交卷”按钮,下面将显示您的考试成绩。 (6)单击“退出当前系统”按钮,完成本次在线考试。 1.3 成绩查询 登录成功后,在此页面的右上方单击“查询成绩”按钮,进入查询页面。 在此页面中考生不但可以查看自己的考试成绩,还可以查看其他考生的成绩。在查询条件处选择相应的查询条件,并输入查询关键字,单击“查询”按钮,下方列表栏中显示查询结果。 第2章 后台 在登录页面中的“学生证号”处输入管理员用户名“25175”,在密码处输入“25175”,填写正确的验证码,并勾选“管理员登录”复选框,单击“登录”按钮, 后台主要包括:管理员、管理注册学生、管理课程信息、管理套题信息、管理考生成绩、管理考试题目、添加试题。其中管理员、管理注册学生、管理课程信息、管理套题信息、管理考生成绩、管理考试题目的操作方法相同,下面以管理员为例,讲解其操作方法。 在功能导航区中单击“管理员”按钮。此页面主要实现添加、修改、删除、查询管理员信息等功能。 管理员页面的操作方法如下: (1)添加管理员。单击“添加管理员”按钮,在管理员名称及管理员密码处填写管理员名称及密码,然后单击“添加”按钮,完成添加操作。 (2)修改。单击“修改”按钮,在此页面中可对管理员的名称及密码进行修改,修改完成后,单击“修改”按钮,完成修改操作。 (3)删除。单击“删除”按钮,即可删除该条管理员信息。 (4)查询。在查询条件处选择相应的查询条件并输入相对应的关键字,单击“查询”按钮,下方显示查询结果,完成查询操作。 在功能导航区中单击“添加试题”按钮,进入如图2.6所示的页面,在此页面中选择要添加的试题的所属专业、课程主套题名称。 单击“选择”按钮,在此页面中填写完整的试题信息,单击“添加”按钮,完成添加操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值