0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 100
|
|
1 | |
Онлайн-тест (вступительного экзамена) в институте19.08.2019, 05:31. Показов 2697. Ответов 61
Метки нет Все метки)
(
Добрый день коллеги,
Онлайн-тест (вступительного экзамена) в институте. Исходные данные: 1) Всего 120 вопросов по 3 предметам. География - 50 вопросов, История - 30 вопросов и Биология - 40 вопросов. 2) В тесте будет 15 вопросов по географии, 10 вопросов по истории и 12 вопросов по биологии. 3) На тест дается 50 минут. Надо сделать на главной странице: 1) Три кнопки с названиями предметов. К примеру, нажав на “ГЕОГРАФИЯ” абитуриент открывал все 50 вопросов по очереди, в каждом вопросе прилагается по 4 ответа. Один из которых правильный. Он нажимает на один ответ из четырех, потом кнопку “ПРОВЕРИТЬ” и система показывает его ответ и правильный ответ. Типа этого https://cdlstudy.com/test_sample/index.php?id=1. Здесь не будет учета времени. 2) Четвертая кнопка будет “ПРОЙТИ ТЕСТ НА ВРЕМЯ”. Тут будет задаваться 37 вопросов (по 3 предметам) вразброс со счетчиком обратного времени - 50 минут. Вопросы: 1) Все 120 вопросов загрузить в БД phpMyAdmin в 1 общую таблицу или в 3 разные таблицы? Как лучше? 2) Как настроить вытаскивание 15 вопросов из 50 по ГЕОГРАФИИ? 3) Кто-нибудь раньше такое делал? Спасибо. Жду. P.S. Предметов на самом деле больше, просто расписал на примере 3-х для наглядности.
0
|
|
19.08.2019, 05:31 | |
Ответы с готовыми решениями:
61
Вероятность сдачи вступительного экзамена VB6.0 Типизированные файлы.Дан файл,содержащий сведения о результатах вступительного экзамена по математике.
Тест онлайн |
621 / 464 / 169
Регистрация: 26.05.2016
Сообщений: 2,584
|
|
19.08.2019, 10:13 | 2 |
уууу, тут целое поле для творчества.
я бы разделил. Только phpmyadmin это не БД, БД у Вас скорее всего mysql. sql запрос к таблице, в которой География c LIMIT 15, но выберет подряд. Если нужно случайно, то можно php скриптом выбирать по 1-му случайному в цикле до 15. наверняка делали ![]() ![]() ![]() ![]() ![]()
0
|
1112 / 554 / 319
Регистрация: 21.06.2012
Сообщений: 1,854
|
|
19.08.2019, 10:17 | 3 |
1) Создаем 2 таблицы. Одна с категориями, вторая с вопросами. id категорий указываем в таблице с вопросами.
2) WHERE `id_category` = 7 ORDER BY RAND() LIMIT 15 7 - айдишник категории ГЕОГРАФИЯ3) Естественно.
2
|
621 / 464 / 169
Регистрация: 26.05.2016
Сообщений: 2,584
|
|
19.08.2019, 10:20 | 4 |
0
|
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 100
|
|
19.08.2019, 20:38 [ТС] | 5 |
sasha0012, Спасибо!
Значит нужны 2 таблицы - 1 с категориями, а 2 с вопросами. Возникает 3 вопроса: 1) А в какую таблицу забивать по 4 ответа к каждому вопросу? Во 2 таблицу или создать 3-ю таблицу? 2) Из 4-х ответов каждого вопроса 1 ответ правильный (остальные 3 ответа неправильные), как его отмечать в таблице? 3) Как постоянно менять местами 4 ответа при появлении вопроса? (если их оставить в одной последовательности студенты могут просто запомнить что 2-м по счету всегда идет правильный ответ). Студенты при подготовке к экзамену будут помногу раз открывать ВСЕ вопросы для заучивания, поэтому ответы на экране надо постоянно менять местами... Спасибо. жду
0
|
1112 / 554 / 319
Регистрация: 21.06.2012
Сообщений: 1,854
|
|
19.08.2019, 22:14 | 6 |
1) Да, третью с ответами, ответам прописываем id вопроса.
2) Флажок (поле в третьей таблице), по умолчанию 0, правильный ответ 1 3) Тот-же RAND смешивает выборку, просто убираем LIMIT, либо LIMIT 4 WHERE `id_question` = 247 ORDER BY RAND()
0
|
621 / 464 / 169
Регистрация: 26.05.2016
Сообщений: 2,584
|
|
20.08.2019, 09:39 | 7 |
я бы разделил на таблицы по предметам. Каждая запись - текст вопроса и 4 (можно и больше) поля для ответов. Один верный, скажем первый.
например первый, название столбца trueReply.
Случайным образом. Например все 4 ответа поместить в массив и его случайным образом перемешать, например с помощью встроенной функции shuffle(), а результат вывести в html.
0
|
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 100
|
|
20.08.2019, 16:24 [ТС] | 8 |
sasha0012, и atanov, СПАСИБО БОЛЬШОЕ!
Попробую оба варианта! Остается 2 последних вопроса: 1) Как запоминать тест при его прохождении? Чтобы на финише вывести его на экран для user'a? 2) Как сделать обратный отсчет времени 50 минут на тесте и закрыть его при окончании времени? Добавлено через 8 минут Вопрос "2)" имеется в виду закрыть тест при окончании 50 минут для вывода результатов его прохождения.
0
|
621 / 464 / 169
Регистрация: 26.05.2016
Сообщений: 2,584
|
|
20.08.2019, 16:34 | 9 |
Начните сначала. Экзаменуемый как-то попадает на станицу, где выводятся вопросы. Т.е. должна быть авторизация. Как правило user имеет уникальную запись в таблице бд. В эту таблицу можно заносить результаты. Далее ответы пользователя отправляются на сервер, где сравниваются с информацией из бд. false/true можно сохранить хотя бы в новую таблицу, что-то типа testResults. В общем вариантом масса.
т.к. выбор пользователя (экзаменуемого) будет сохранён, ничто не мешает вывести результата -> список всех вопросов, зеленым выделить правильные, красным неправильные. на клиенте с помощью js. Если время вышло, то нельзя отправить на сервер.
0
|
767 / 323 / 157
Регистрация: 26.05.2016
Сообщений: 2,127
|
|
20.08.2019, 16:47 | 10 |
делал простенькие тесты для интереса)
выводил по 5-ть на страницу с чексбоксом - пользователь отвечал - сразу выводились результаты -какие правильные какие нет
0
|
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 100
|
|
20.08.2019, 19:02 [ТС] | 11 |
atanov, andyyy, спасибо за разъяснения.
Сейчас попробовал создавать таблицы в phpmyadmin. 1) Создать 1 таблицу для пользователей и 2 таблицу с предметами не проблема; 2) Создать 3 таблицу с вопросами не проблема; 4) Создать 4 таблицу с ответами на вопросы - вот здесь тупик. Можно создать 7 полей: 1 - id; 2 - id вопроса; 3 - 1 ответ правильный; 4 - 2 ответ; 5 - 3 ответ; 6 - 4 ответ; 7 - "Флажок, по умолчанию 0, правильный ответ 1" - советовал sasha0012. Вопрос: Как правильный ответ в 3 поле связать с флажком в 7 поле?
0
|
1112 / 554 / 319
Регистрация: 21.06.2012
Сообщений: 1,854
|
|
20.08.2019, 19:32 | 12 |
Таблица с ответами:
1 - id (INT); 2 - id вопроса (INT); 3 - ответ (TEXT); 4 - флажок (TINYINT или BOOLEAN). Правильному ответу в поле "флажок" присваиваем 1 или true
0
|
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 100
|
|
20.08.2019, 19:35 [ТС] | 13 |
sasha0012, если бы все было так просто! :-)
проблема в том что у каждого вопроса обязательно должно быть 4 ответа: 1 правильный и 3 неправильных. Куда же записать эти 3 неправильных?
0
|
1112 / 554 / 319
Регистрация: 21.06.2012
Сообщений: 1,854
|
|
20.08.2019, 19:38 | 14 |
В этом случае нет привязки к количеству ответов. Их может быть сколько угодно. Поле "id вопроса" как думаете, зачем?
Добавлено через 2 минуты Таблица 4 строится по аналогии с таблицей 3
0
|
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 100
|
|
20.08.2019, 20:03 [ТС] | 15 |
sasha0012, Сорян, затупил! Спасибо!
А как быть с выводом всего теста в конце? Вы согласны с предложением atanov, ? "Экзаменуемый как-то попадает на станицу, где выводятся вопросы. Т.е. должна быть авторизация. Как правило user имеет уникальную запись в таблице бд. В эту таблицу можно заносить результаты. Далее ответы пользователя отправляются на сервер, где сравниваются с информацией из бд. false/true можно сохранить хотя бы в новую таблицу, что-то типа testResults. В общем вариантом масса." Или попроще можно как-то сделать?
0
|
1112 / 554 / 319
Регистрация: 21.06.2012
Сообщений: 1,854
|
|
20.08.2019, 20:18 | 16 |
Все зависит от логики приложения. Если максимально просто, то можно так: создаем пятую таблицу с результатами. Там 4 поля (id, id пользователя, результат, время прохождения теста, дата прохождения). В "результат" записываем количество правильных ответов, в "время прохождения теста" время которое потратил на тест. После завершения теста записываем данные в таблицу (независимо от результатов), а при выводе информации пользователю (студенту) уже обрабатываем данные согласно логике приложения. То есть, если время превышено, или ошибок много, или попыток много, либо временной интервал между двумя тестами слишком короткий, или еще что-то, то показываем сообщение о ошибке и предлагаем повторить.
В общем вариантов на самом деле масса.
0
|
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 100
|
|
20.08.2019, 20:44 [ТС] | 17 |
sasha0012, суть в том что надо показать пользователю весь пройденный тест за 50 минут.
Все вопросы и все ответы к ним. С указанием вопроса и его ответа, если он неправильный, то и правильного ответа. Это можно реализовать в Вашей 5 таблице?
0
|
1112 / 554 / 319
Регистрация: 21.06.2012
Сообщений: 1,854
|
|
20.08.2019, 20:55 | 18 |
Да, можно. Надо добавить одно поле и туда записывать айдишники ответов в таком виде: 1,7,27,81,12,458,71,35,......,41
При выводе ответов студенту проверяем состояние "флажка", если 1 красим ответ в зеленый, если 0 красным. Выводим ответы из таблицы ответов конструкцией IN(1,7,27,81,12,458,71,35,......,41) Добавлено через 30 секунд Ну и с вопросами аналогично Добавлено через 1 минуту кстати если у ответа флажок 0, то вытаскиваем из таблицы ответов ответ с флажком 1 с таким-же id вопроса
1
|
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 100
|
|
20.08.2019, 21:19 [ТС] | 19 |
sasha0012, более менее стало понятно! Спасибо!
Как появятся новые вопросы, сразу напишу! :-)
0
|
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 100
|
|
20.08.2019, 21:19 [ТС] | 20 |
sasha0012, более менее стало понятно! Спасибо!
Как появятся новые вопросы, сразу напишу! :-)
0
|
20.08.2019, 21:19 | |
Помогаю со студенческими работами здесь
20
Тест онлайн фепо Тест регулярного выражения онлайн
Нужно создать онлайн тест для сайта Как узнать ответы на онлайн тест, используя код страницы Нужно разъяснение в решении вступительного задания Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |