>일반적인 문제 >PHP 개발 온라인 시험 교육 시스템

PHP 개발 온라인 시험 교육 시스템

angryTom
angryTom앞으로
2020-02-22 12:12:002583검색

PHP 개발 온라인 시험 교육 시스템

php 온라인 시험 교육 시스템 개발

참고: 이 글은 학습 및 개발 아이디어를 기록하기 위한 것입니다. 상업적인 사용에는 두 번째 업그레이드가 필요합니다.

(추천 학습: php training)

렌더링은 다음과 같습니다:

PHP 개발 온라인 시험 교육 시스템

문제 은행 홈페이지 표시

PHP 개발 온라인 시험 교육 시스템

시험 문제 온라인 테스트

PHP 개발 온라인 시험 교육 시스템

점수 통계

이 작은 것을 넘겨주세요 프로젝트 목적은 PHP의 기본 지식을 연습하고, 배열 연산을 통해 시험 문제 정보의 저장 및 로딩을 구현하고, 템플릿 파일을 도입하고, 시험 문제 데이터의 호출 레이아웃을 구현하는 것입니다.

1. 소규모 프로젝트는 데이터베이스를 사용하지 않기 때문에 테스트 문제는 배열 형태로 PHP 파일에 저장됩니다.

참고: 아래 코드는 매우 지저분합니다. . . 기사 끝 부분에서 프로그램 소스 코드를 다운로드하고 이 블로그 게시물과 비교하여 볼 수 있습니다.

<?php
// 考试题库二
return [   
// 题库标题  
&#39;title&#39; => &#39;PHP基础语法考试题(二)&#39;,   
// 答题时限(秒数) 
&#39;timeout&#39; => 1200,   
// 题库   
&#39;data&#39; => [      
// 判断题 
&#39;binary&#39; => [       
          &#39;name&#39; => &#39;判断题&#39;, 
        // 题型名称
&#39;score&#39; => 24,     
        // 题型分数 
&#39;data&#39; => [          
          1 => [       
          &#39;question&#39; => &#39;在".php"后缀的文件中,所有的PHP代码都只能写在"<?php ?>"标记内。&#39;,               &#39;answer&#39; => &#39;no&#39;            ], 
        2=> [           
            &#39;question&#39; => &#39;标量类型包括布尔型、整型、字符串型和数组型。&#39;,               &#39;answer&#39; => &#39;no&#39;            ], 
        3=> [    
                  &#39;question&#39; => &#39;var_dump是PHP中用于打印变量或表达式的类型与值等相关信息的函数。&#39;,              
         &#39;answer&#39; => &#39;yes&#39;        
            ]        
         ]    
          ],      
        // 单选题  
&#39;single&#39; => [     
            &#39;name&#39; => &#39;单选题&#39;,         &#39;score&#39; => 40
        ,         &#39;data&#39; => [ 
                   1 => [               
        &#39;question&#39; => &#39;下列选项中,不区分大小写的标识符是( )。&#39;,               &#39;option&#39; => [                  &#39;函数名&#39;,&#39;常量名&#39;,&#39;变量名&#39;,&#39;属性名&#39;               ],               &#39;answer&#39; => &#39;A&#39;            ], 2=> [

2. 그럼 어떻게 시험 문제 데이터를 얻을 수 있을까요? 그냥 파일을 가져오세요

$data=require "./data/1.php";

위 시험 문제 파일은 return으로 반환된 배열이니 참고하세요. 파일을 가져올 때 시험 문제 배열 데이터를 $data 변수에 직접 할당한 후 문제 은행 데이터를 표시합니다. $data를 운영함으로써.

3. 가변 문제은행 파일.

모든 문제 은행 파일은 /data/ 디렉터리에 있습니다. 각 테스트 항목은 .php 파일에 해당합니다. 테스트 데이터의 양, 즉 .php 파일의 수를 알고 싶다면 여기를 참조하세요. 우리는 glob() 함수를 사용하며 코드는 다음과 같습니다:

//统计题库目录下的“.php”文件个数,此处要求题库文件名必须是连续的数字$count = count(glob(&#39;./data/*.php&#39;));

glob() 함수는 파일 목록의 배열을 반환하고 glob() 함수 덤프 실행의 출력 결과는 다음과 같습니다:

array(3) {    [0]=>  string(12) "./data/1.php"    [1]=>  string(12) "./data/2.php"    [2]=>  string(12) "./data/3.php"}

왜냐하면 데이터를 저장하는 파일 이름은 모두 연속된 숫자이므로 루프를 통해 읽는 것이 편리합니다. 시험 문제 정보를 가져옵니다.

4. 익명 기능 사용.

익명 함수는 함수 이름이 없는 함수로, 함수 매개변수의 값을 파기하는 데 자주 사용됩니다. 임시로 정의된 함수의 경우 함수의 문제를 고려할 필요가 없습니다. 명명 충돌. 여기에 사용된 익명 함수는 순전히 연습용입니다. 다음 코드를 함수 함수로 캡슐화할 수도 있습니다.

$func = function ($data) use(&$func){  $result = [];  foreach ($data as $k=>$v){    //如果是数组,则继续递归,如果是字符串,则转义      $result[$k] = is_array($v) ? $func($v) : (is_string($v) ? toHtml($v) : $v);  }  return $result;};

익명 함수를 사용하여 시험 문제 데이터의 특수 문자를 재귀적으로 이스케이프합니다.

5. HTML 특수 문자를 이스케이프하세요.

테스트 문제에 HTML 태그가 나타나면 브라우저에서 구문 분석되어 그대로 출력될 수 없으므로 문제 은행에 존재할 수 있는 HTML 태그를 문자 이스케이프 처리해야 합니다.

//HTML特殊字符转义function toHtml($str){    $str=htmlspecialchars($str,ENT_QUOTES);    return str_replace(&#39; &#39;,&#39; &#39;,$str);}

여기서는 htmlspecialchars() 함수가 사용됩니다. 이 함수는 출력 시 원하는 형식이 될 수 있도록 가능한 특수 문자를 이스케이프 처리합니다.

해당 htmlspecialchars() 함수는 공백과 줄 바꿈을 이스케이프할 수 없습니다. 공백을 이스케이프하려면 str_replace() 함수를 사용하여 이를 직접 대체해야 합니다. nl2br 함수를 사용할 수 있습니다.

6. return은 두 가지 값 형식을 반환합니다.

구체적인 코드는 다음과 같습니다.

function getDataInfo($data){    $count = [];            //保存某种题型的题目数量    $score = [];            //每道题的分值    foreach ($data as $k=>$v) {        $count[$k]=count($v[&#39;data&#39;]);        $score[$k]=round($v[&#39;score&#39;]/$count[$k]);    }    return [$count,$score];         //使用list()接收返回值:list($count,$score);顺序依次对应}

코드는 최종적으로 return을 사용하여 두 개의 결과 변수를 반환합니다. 이 두 개의 반환 값을 받으려면 list()를 사용하여 배열 할당을 받고 요소를 할당해야 합니다. 변수에 차례로 배열합니다.

7. 쉽게 호출하고 코드 중복을 피하기 위해 사용할 함수를 기능적 함수로 캡슐화합니다.

여기서 사용되는 모든 함수는 최대한 함수로 캡슐화하여 사용합니다. 함수 파일만 도입하면 관리가 용이하고 코드 활용도가 높아집니다.

8. 템플릿 사용

PHP를 사용하여 데이터를 처리한 후

//引入HTML模板require &#39;./view/index.html&#39;;

를 사용하여 PHP 파일에 HTML 템플릿을 삽입하고 동적 표시를 위해 원하는 데이터를 출력할 수도 있습니다. .

在线考试系统请选择题库$v): ?>
         时间:分钟 总分:分开始考试

변수 직접 출력: =$value?>

변수 세트를 출력하는 루프: $v): ?>~~ ~~ ~~

9. 삼항 연산자 사용에 주의하세요. :?

当做一些简单的判断输出时,使用三元运算符: ?可以大大的提升效率,简化代码。

<!-- 答题情况 --><td><?=$v ? &#39;对&#39; : &#39;错&#39;?></td><!-- 得分 --><td><?=$v ? $score[$type] : 0?></td>

上述代码中,$v是一个bool值,通过三元运算符我们可以省略一大堆if判断,使代码看上去更加整洁。

10、页面中的计时倒计时、关闭页面提示、未做考题提交提示、考试时间结束自动交卷功能是通过jQuery、javascript来实现的,这里不作说明。

程序源码下载地址:

http://www.seoalphas.com/data/upload/ueditor/20170629/595494a1f01ea.rar

注:php中文网提供大量免费、原创、高清的php视频教程,并且会定期举行php公益培训

위 내용은 PHP 개발 온라인 시험 교육 시스템의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제