public function exam() { if (IS_POST) { if (!check_post_key()) { $this->error('发生错误!'); } if (!checkAdmin(2)) { $this->error('You have no privilege!'); } if (isset($_POST['examid'])) { $flag = AdminexamModel::instance()->upd_exam(); $this->checkflag($flag, 3); } else { if (isset($_POST['examname'])) { $flag = AdminexamModel::instance()->add_exam(); $this->checkflag($flag, 3); } } } else { if (IS_GET && I('get.eid') != '') { $eid = I('get.eid', 0, 'intval'); $page = I('get.page', 1, 'intval'); $key = set_post_key(); $row = M('exam')->where("exam_id=%d and visible='Y'", $eid)->find(); if ($row) { if (!checkAdmin(4, $row['creator'])) { $this->error('You have no privilege!'); } $this->zadd('page', $page); $this->zadd('row', $row); $this->zadd('mykey', $key); $this->auto_display(); } else { $this->error('No Such Exam!'); } } else { $page = I('get.page', 1, 'intval'); $key = set_post_key(); $this->zadd('page', $page); $this->zadd('mykey', $key); $this->auto_display(); } } }
public function rejudgepaper($users, $eid, $start_timeC, $end_timeC, $mark) { $choosesum = 0; $judgesum = 0; $fillsum = 0; $programsum = 0; $sum = 0; $allscore = AdminexamModel::instance()->getallscore($eid); $choosearr = AdminexamModel::instance()->getuserans($eid, $users, 1); $query = "SELECT `choose_id`,`answer` FROM `ex_choose` WHERE `choose_id` IN\n\t\t(SELECT `question_id` FROM `exp_question` WHERE `exam_id`='{$eid}' AND `type`='1')"; $row = M()->query($query); if ($row) { foreach ($row as $key => $value) { if (isset($choosearr[$value['choose_id']])) { $myanswer = $choosearr[$value['choose_id']]; if ($myanswer == $value['answer']) { $choosesum += $allscore['choosescore']; } } } unset($row); unset($choosearr); } //choose over $judgearr = AdminexamModel::instance()->getuserans($eid, $users, 2); $query = "SELECT `judge_id`,`answer` FROM `ex_judge` WHERE `judge_id` IN\n\t\t(SELECT `question_id` FROM `exp_question` WHERE `exam_id`='{$eid}' AND `type`='2')"; $row = M()->query($query); if ($row) { foreach ($row as $key => $value) { if (isset($judgearr[$value['judge_id']])) { $myanswer = $judgearr[$value['judge_id']]; if ($myanswer == $value['answer']) { $judgesum += $allscore['judgescore']; } } } unset($row); unset($judgearr); } //judge over $fillarr = AdminexamModel::instance()->getuserans($eid, $users, 3); $query = "SELECT `fill_answer`.`fill_id`,`answer_id`,`answer`,`answernum`,`kind` FROM `fill_answer`,`ex_fill` WHERE\n\t\t`fill_answer`.`fill_id`=`ex_fill`.`fill_id` AND `fill_answer`.`fill_id` IN ( SELECT `question_id` FROM `exp_question` WHERE `exam_id`='{$eid}' AND `type`='3')"; $row = M()->query($query); if ($row) { foreach ($row as $key => $value) { if (isset($fillarr[$value['fill_id']][$value['answer_id']]) && (!empty($fillarr[$value['fill_id']][$value['answer_id']]) || $fillarr[$value['fill_id']][$value['answer_id']] == "0")) { $myanswer = trim($fillarr[$value['fill_id']][$value['answer_id']]); $rightans = trim($value['answer']); if ($myanswer == $rightans && strlen($myanswer) == strlen($rightans)) { if ($value['kind'] == 1) { $fillsum += $allscore['fillscore']; } else { if ($value['kind'] == 2) { $fillsum = $fillsum + $allscore['prgans'] / $value['answernum']; } else { if ($value['kind'] == 3) { $fillsum = $fillsum + $allscore['prgfill'] / $value['answernum']; } } } } } } unset($row); unset($fillarr); } //fillover $query = "SELECT distinct `question_id`,`result` FROM `exp_question`,`solution` WHERE `exam_id`='{$eid}' AND `type`='4' AND `result`='4'\n\t\tAND `in_date`>'{$start_timeC}' AND `in_date`<'{$end_timeC}' AND `user_id`='" . $users . "' AND `exp_question`.`question_id`=`solution`.`problem_id`"; $row = M()->query($query); $row_cnt = count($row); $programsum = $row_cnt * $allscore['programscore']; //$program over $sum = $choosesum + $judgesum + $fillsum + $programsum; if ($mark == 0) { // if the student has not submitted the paper $sql = "INSERT INTO `ex_student` VALUES('" . $users . "','{$eid}','{$sum}','{$choosesum}','{$judgesum}','{$fillsum}','{$programsum}')"; M()->execute($sql); } else { $sql = "UPDATE `ex_student` SET `score`='{$sum}',`choosesum`='{$choosesum}',`judgesum`='{$judgesum}',`fillsum`='{$fillsum}',`programsum`='{$programsum}'\n\t\t\tWHERE `user_id`='" . $users . "' AND `exam_id`='{$eid}'"; M()->execute($sql); } }
public function adduser() { if (IS_POST && I('post.eid') != '') { if (!check_post_key()) { $this->error('发生错误!'); } else { if (!checkAdmin(2)) { $this->error('You have no privilege of this exam'); } else { $eid = I('post.eid', 0, 'intval'); $flag = AdminexamModel::instance()->addexamuser($eid); if ($flag === true) { $this->success('考生添加成功', U('Teacher/Exam/userscore', array('eid' => $eid)), 2); } else { $this->error('Invaild Path'); } } } } else { if (!$this->isowner($this->eid)) { $this->error('You have no privilege of this exam'); } else { $ulist = ""; $row = M('ex_privilege')->field('user_id')->where("rightstr='e{$this->eid}'")->order('user_id')->select(); if ($row) { $cnt = 0; foreach ($row as $key => $value) { if ($cnt) { $ulist .= "\n"; } $ulist .= $value['user_id']; $cnt++; } unset($row); } $key = set_post_key(); $this->zadd('mykey', $key); $this->zadd('ulist', $ulist); $this->auto_display(); } } }