php 온라인 시험 시스템 구현[소스 코드 첨부]

설명:본 글 은 학습 개발 방향 을 기록 하기 위해 프로그램 이 상업 적 가 치 를 가지 지 않 고 개발 방향 을 이해 하기 위해 상업 용 은 2 차 업그레이드 가 필요 합 니 다!
효과 도 는 다음 과 같다.
QQ截图20170629130332.png
문제 집 첫 페이지 전시
QQ截图20170629130317.png
시험 문제 온라인 테스트
QQ截图20170629130100.png
점수 통계
이 작은 프로젝트 를 통 해 PHP 기초 지식 을 연습 하고 배열 작업 을 통 해 시험 문제 정보 저장 소 를 불 러 오고 템 플 릿 파일 을 도입 하여 시험 문제 데이터 호출 구 조 를 실현 하 는 것 이 목적 입 니 다.
1.작은 항목 이 데이터 베 이 스 를 사용 하지 않 기 때문에 시험 문 제 는 PHP 파일 에 배열 형식 으로 저장 되 고 일부 코드 는 다음 과 같 습 니 다.

<?php//     return [ 
//     'title' => 'PHP       ( )', //    (  ) 
'timeout' => 1200, //   
'data' => [ //    
'binary' => [ 
'name' => '   ', //     
'score' => 24, //     
'data' => [ 
1 => [ 
'question' => ' ".php"      ,   PHP       "<?php ?>"   。', 
'answer' => 'no' 
], 2=> [ 
'question' => '         、  、        。', 
'answer' => 'no' 
], 3=> [ 
'question' => 'var_dump PHP                        。', 
'answer' => 'yes' 
] 
] 
], //    
'single' => [ 
'name' => '   ', 
'score' => 40, 
'data' => [ 
1 => [ 
'question' => '     ,           ( )。', 
'option' => [ 
'   ','   ','   ','   ' 
], 
'answer' => 'A' 
], 2=> [
2.그러면 시험 문제 데 이 터 를 어떻게 얻 나 요?파일 을 가 져 오 면 됩 니 다.

$data=require "./data/1.php";
위의 시험 문제 파일 은 return 으로 돌아 오 는 배열 입 니 다.파일 을 도입 한 후에 시험 문제 배열 데 이 터 를$data 변수 에 직접 부여 하고$data 를 조작 하여 문제 라 이브 러 리 데 이 터 를 보 여 줍 니 다.
3.변수 라 이브 러 리 파일.
    모든 문제 라 이브 러 리 파일 은/data/디 렉 터 리 에 통일 되 어 있 습 니 다.각 시험 항목 은 하나의.php 파일 에 대응 합 니 다.시험 데이터 가 얼마나 있 는 지 알 고 싶 습 니 다.즉,몇 개의.php 파일 입 니 다.여기 서 우 리 는 glob()함 수 를 사 용 했 습 니 다.코드 는 다음 과 같 습 니 다.

//        “.php”    ,                 $count = count(glob('./data/*.php'));
    glob()함 수 는 파일 목록 의 배열 을 되 돌려 줍 니 다.glob()함수 dump 출력 결 과 는 다음 과 같 습 니 다.

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(' ','&nbsp;',$str);
}
    함수 html specialchars()함 수 를 사용 하여 존재 할 수 있 는 특수 문 자 를 전의 합 니 다.이렇게 다시 출력 할 때 우리 가 원 하 는 형식 으로 출력 할 수 있 습 니 다.
    html specialchars()함수 에 대응 하여 빈 칸 과 줄 을 바 꿀 수 없습니다.빈 칸 을 바 꾸 려 면 str 를 사용 해 야 합 니 다.replace()함 수 는 직접 교체 하고 줄 바 꿈 자 는 nl2br 함 수 를 사용 할 수 있 습 니 다.
6.return 은 두 가지 값 형식 을 되 돌려 줍 니 다.
    구체 적 인 코드 는 다음 과 같다.

function getDataInfo($data){ 
 $count = []; 
//            
$score = []; 
//       
foreach ($data as $k=>$v) 
{ 
$count[$k]=count($v['data']); 
 $score[$k]=round($v['score']/$count[$k]); 
 } return [$count,$score]; 
//  list()     :list($count,$score);      }
    코드 는 마지막 으로 return 을 사용 하여 두 개의 결과 변 수 를 되 돌려 주 었 습 니 다.이 두 개의 반환 값 을 받 으 려 면 list()를 사용 하여 한 배열 의 할당 을 받 고 배열 의 요 소 를 순서대로 변수 에 부여 해 야 합 니 다.
7.사용 할 기능 을 하나의 기능 함수 로 밀봉 하여 호출 이 편리 하고 코드 가 중복 되 지 않도록 합 니 다.
    여기에 사용 되 는 모든 기능 을 가능 한 한 하나의 함수 로 봉 하여 사용 할 때 함수 파일 을 도입 하면 관리 하기 편리 하고 코드 이 용 률 을 높 일 수 있다.
8.템 플 릿 사용
    PHP 로 데 이 터 를 처리 한 후,PHP 파일 에서 사용

//  HTML  require './view/index.html';
HTML 템 플 릿 을 도입 합 니 다.템 플 릿 에 도 PHP 탭 을 삽입 하여 원 하 는 데 이 터 를 출력 하고 동적 으로 데 이 터 를 표시 할 수 있 습 니 다.

           $v): ?>
   :     :     
변 수 를 직접 출력 합 니 다:<?=$value?>순환 출력 변수:<?php foreach($value as $k=>$v): ?>~~~~~~~<?php endforeach; ?>9.3 원 연산 자의 사용 에 주의 하 세 요.:?
    출력 을 간단하게 판단 할 때 3 원 연산 자 를 사용 합 니 다.?효율 을 크게 향상 시 키 고 코드 를 간소화 할 수 있다.

<!--      -->
<td><?=$v ? ' ' : ' '?>
</td><!--    -->
<td><?=$v ? $score[$type] : 0?>
</td>
상기 코드 에서$v 는 bool 값 입 니 다.3 원 연산 자 를 통 해 우 리 는 많은 if 판단 을 생략 하여 코드 를 더욱 깨끗하게 보일 수 있 습 니 다.
10.페이지 의 시간 카운트다운,페이지 알림 닫 기,시험 문제 제출 알림 하지 않 음,시험 시간 종료 자동 답안 지 제출 기능 은 jQuery,javascript 을 통 해 이 루어 집 니 다.여 기 는 설명 하지 않 습 니 다.
마지막 으로 프로그램 소스 코드 다운로드 주 소 를 동봉 합 니 다.다운로드 하려 면 여 기 를 누 르 십시오
총결산
위 에서 말 한 것 은 소 편 이 소개 한 PHP htmphp 가 온라인 시험 시스템 의 소스 코드 를 실현 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 저 에 게 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기