Файл: Анализ тз 2 Рассмотрение тз. 2 Глава проектирование веб приложения 6 Диаграммы вариантов использования. 6.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 04.05.2024
Просмотров: 40
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
return;
}
if(value_input_otvet == data[1][amout]['answers']){
var clickBut = document.getElementById('click_but_'+data_id_vopros);
clickBut.style.backgroundColor = 'green';
}
else {
var clickBut = document.getElementById('click_but_'+data_id_vopros);
clickBut.style.backgroundColor = 'red';
}
//делаем неактивный блок с отвеченным вопросом
$('#click_but_'+data_id_vopros).attr("data-active", "false");
//скрываем блок
var id_del_block = document.getElementById(data_id_vopros);
id_del_block.style.display = 'none';
proverka();
return;
}
if(data_type == "test") {
//проверка задан ли хоть один радиобаттон
if($("#radio_"+data_id_vopros+"_0").is(":checked")||$("#radio_"+data_id_vopros+"_1").is(":checked")||$("#radio_"+data_id_vopros+"_2").is(":checked")||$("#radio_"+data_id_vopros+"_3").is(":checked")) {
for(let i=0;i<=3;i++){
if($("#radio_"+data_id_vopros+"_"+i).is(":checked")){
if(i == data[1][amout]['active']) {
var clickBut = document.getElementById('click_but_'+data_id_vopros);
clickBut.style.backgroundColor = 'green';
//делаем неактивный блок с отвеченным вопросом
$('#click_but_'+data_id_vopros).attr("data-active", "false");
//скрываем блок
var id_del_block = document.getElementById(data_id_vopros);
id_del_block.style.display = 'none';
proverka();
return;
}
else {
var clickBut = document.getElementById('click_but_'+data_id_vopros);
clickBut.style.backgroundColor = 'red';
//делаем неактивный блок с отвеченным вопросом
$('#click_but_'+data_id_vopros).attr("data-active", "false");
//скрываем блок
var id_del_block = document.getElementById(data_id_vopros);
id_del_block.style.display = 'none';
proverka();
return;
}
}
}
}
alert("Ответ не выбран!");
}
});
//кнопка закончить тест
$('body').on('click',"#finishTest", function() {
var count = $('#num_voprosov').val();
var chet;
for(let i=1;i<=count;i++){
var clickBut = document.getElementById('click_but_'+i);
if(clickBut.dataset.active == "true"){
alert("Закончите тест");
chet = 1;
return;
}
}
if(!chet){
$('#countdown-1').timeTo(1, function () {
resultTest();
});
}
return;
});
//мини кнопки для каждого вопроса
$('body').on('click',".sel_mini", function() {
if($(this).attr('data-active') == "true") {
//колличество вопросов
var num_voprosov = $('#num_voprosov').val();
for (let i = 1; i <= num_voprosov; i++) {
var data_id = document.getElementById(i);
data_id.style.display = 'none';
}
//ключ вопроса
var data_id = $(this).attr('data-but-vopros');
var data_id = document.getElementById(data_id);
data_id.style.display = 'block';
}
});
//функция подсчета результата
function resultTest() {
//баллы за тест и за вопрос
const strokaGrade = 2;
const testGrade = 1;
//колличество вопросов в теста
var count = $('#num_voprosov').val();
//смотрим сколько всего возможно набрать баллов
var maxPoints = 0;
for(let i=1;i<=count;i++){
//смотрим тип вопроса
var typeQuestion = document.getElementById('confirmation_'+i);
//если строка
if(typeQuestion.dataset.type == "stroka"){
maxPoints = maxPoints+strokaGrade;
}
//если тест
if(typeQuestion.dataset.type == "test") {
maxPoints = maxPoints+testGrade;
}
}
//alert(maxPoints);
//подсчитываем сколько набрал баллов студент
//баллы студента
var points = 0;
for(let i=1;i<=count;i++){
//проверяем подтвежден ли вопрос
var question = document.getElementById('click_but_'+i);
if(question.dataset.active == "false"){
//смотрим тим вопроса
var typeQuestion = document.getElementById('confirmation_'+i);
//если строка
if(typeQuestion.dataset.type == "stroka"){
//ответ записанный студентом
var value_input_otvet = $("#input_otvet_"+i).val();
//проверяем правильный ли ответ
if(value_input_otvet == data[1][i-1]['answers']){
//засчитываем очки
points = points+strokaGrade;
}
}
//если тест
if(typeQuestion.dataset.type == "test") {
//ответ записанный студентом
var value_input_otvet = $('input[name="radio_'+i+'"]:checked').val();
//проверяем правильный ли ответ
if(value_input_otvet == data[1][i-1]['active']) {
//засчитываем очки
points = points+testGrade;
}
}
}
}
//alert(points);
/////////////////
//считаем оценку
////////////////
//макимум по стобальной системе
const max = 100;
//оценка студента по стобальной системе
var points100 = (max/maxPoints)*points;
//приводим к целому числу
points100 = parseInt(points100,10);
//делаем проверку по 5-бальной системе
var grade = 0;
//отправка в статистику
function getResult() {
var surname = $('#input1').val();
var name = $('#input2').val();
var patronymic = $('#input3').val();
var institute = $('#input4').val();
var speciality = $('#input5').val();
var well = $('#input6').val();
var namePrepdmet = $('#input5').val();
var nameTest = $('#input6').val();
$.ajax({
url: 'function.php',
method: 'post',
dataType : "json",
data: {surname:surname, name:name, patronymic:patronymic, institute:institute, speciality:speciality, well:well, namePrepdmet:namePrepdmet, nameTest:nameTest, grade:grade},
success: function(data){
result = data;
}
});
}
switch(true) {
case(points == 0):
case(points100<25):
grade = 1;
getResult();
alert("Ваша оценка "+grade+"!");
location.reload();
break;
case(points100<49):
grade = 2;
getResult();
alert("Ваша оценка "+grade+"!");
location.reload();
break;
case(points100<74):
grade = 3;
getResult();
alert("Ваша оценка "+grade+"!");
location.reload();
break;
case(points100<89):
grade = 4;
getResult();
alert("Ваша оценка "+grade+"!");
location.reload();
break;
case(points100>89):
grade = 5;
getResult();
alert("Ваша оценка "+grade+"!");
location.reload();
break;
}
}
Листинг 2(prepodFunction.php)
//проверка на существование теста перед его записью
function proverka_na_delete_test($conn) {
if($_POST['id_test']){
$link = $_POST['id_test'];
//echo $link;
$sqlDelTest = "DELETE test,question,answers FROM test INNER JOIN question INNER JOIN answers WHERE test.id_test = question.id_test AND question.id_question = answers.id_question AND test.link='$link'";
mysqli_query($conn, $sqlDelTest);
}
}
//создание теста
function crate_test($conn){
//id предмета
$id_predmet = $_POST['id_predmet'];
//echo "id предмета: ".$id_predmet."
";
//колличество вопросов в тесте
$num_vopros = $_POST['num_vopros'];
//Запись в таблицу test
//Название теста
$name_new_test = $_POST['name_new_test'];
//echo "Название теста: ".$name_new_test."
";
$link = "http://localhost/test/test.php?name_test=".$name_new_test;
mysqli_query($conn, "INSERT INTO `test` (`name_test`, `id_predmet`, `link`, `num_rows`) VALUES ('$name_new_test', '$id_predmet', '$link', '$num_vopros')");
$id_test = mysqli_fetch_array(mysqli_query($conn, "SELECT max(id_test) FROM `test`"));
//текущий id теста в таблице
$id_test = $id_test[0][0];
//echo $id_test;
//echo "Колличество вопросов: ".$num_vopros."
";
//массив с вопросами
$array_question = array();
//массив с ответами
$array_answers = array();
//массив с id вопросами
$array_id_question = array();
//sql запись вопросов в базу данных
$sql_question = "INSERT INTO `question` (`name_question`, `type_question`, `id_test`) VALUES ";
//sql запись ответов в базу данных
$sql_answers
= "INSERT INTO `answers` (`name_answer`, `id_question`, `active`) VALUES ";
for ($i = 1; $i <= $num_vopros; $i++) {
//название вопроса
$name_vopros = $_POST["name_vopros_".$i];
//тип вопроса
$type_vopros = $_POST["type_vopros_".$i];
//формирование запроса на таблицу вопросов
$sql_question_dop = "('$name_vopros','$type_vopros',$id_test),";
$sql_question = $sql_question.$sql_question_dop;
}
//обрезаем последний символ
$sql_question = mb_substr($sql_question, 0, -1);
//запись в базу данных вопросов
mysqli_query($conn, $sql_question);
$id_vopros = mysqli_fetch_array(mysqli_query($conn, "SELECT max(id_question) FROM `question`"));
$id_vopros = $id_vopros[0];
//цыкл формирования массива с id вопросов
array_push($array_id_question, $id_vopros);
for($e=1; $e <= $num_vopros-1; $e++) {
array_push($array_id_question, $id_vopros-$e);
}
$array_id_question1 = array_reverse($array_id_question);
//print_r($array_id_question);
//цыкл формирования массива с ответами
for ($i = 1; $i <= $num_vopros; $i++) {
$id_question = $array_id_question1[$i-1];
//тип вопроса
$type_vopros = $_POST["type_vopros_".$i];
if($type_vopros == "test") {
//варианты ответов
$otvet_test_1 = $_POST["input_test_1_".$i];
$otvet_test_2 = $_POST["input_test_2_".$i];
$otvet_test_3 = $_POST["input_test_3_".$i];
$otvet_test_4 = $_POST["input_test_4_".$i];
//правильный ответ
$active_otvet = $_POST["radio_but_".$i];
if($active_otvet == "1") {
$otvet = [$otvet_test_1, $id_question, 1];
array_push($array_answers, $otvet);
$otvet = [$otvet_test_2, $id_question, 0];
array_push($array_answers, $otvet);
$otvet = [$otvet_test_3, $id_question, 0];
array_push($array_answers, $otvet);
$otvet = [$otvet_test_4, $id_question, 0];
array_push($array_answers, $otvet);
}
if($active_otvet == "2") {
$otvet = [$otvet_test_1, $id_question, 0];
array_push($array_answers, $otvet);
$otvet = [$otvet_test_2, $id_question, 1];
array_push($array_answers, $otvet);
$otvet = [$otvet_test_3, $id_question, 0];
array_push($array_answers, $otvet);
$otvet = [$otvet_test_4, $id_question, 0];
array_push($array_answers, $otvet);
}
if($active_otvet == "3") {
$otvet = [$otvet_test_1, $id_question, 0];
array_push($array_answers, $otvet);
$otvet = [$otvet_test_2, $id_question, 0];
array_push($array_answers, $otvet);
$otvet = [$otvet_test_3, $id_question, 1];
array_push($array_answers, $otvet);
$otvet = [$otvet_test_4, $id_question, 0];
array_push($array_answers, $otvet);