Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 17, 2009 15:41:01

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Организация системы тестирования в ZODB

Здравствуйте все, суть проблемы в следующем: требуется создать систему удаленного контроля знаний типа Moodle( http://moodle.org/, http://demo.moodle.org/ ). Работаю на Zope 3.4.
Поделитесь своими соображенями, на счет того, как лучше построить в ZODB объекты для реализации проведения тестирования, много чего в голову приходит, но чтобы остановиться на чем-то конкретном - не могу =). Меня в первую очередь интересуют сами объекты - тесты ( идея в том, что тест может содержать ‘n’ вопросов различного типа в одном тесте, например с выбором одного варианта ответа, многих (будут проверятся автоматически), с письменным ответом, который потом будет проверятся преподавателем…. )

Заранее спасибо!



Отредактировано (Апрель 17, 2009 15:41:27)

Офлайн

#2 Апрель 18, 2009 13:06:13

astoon
От:
Зарегистрирован: 2007-04-09
Сообщения: 335
Репутация: +  2  -
Профиль   Отправить e-mail  

Организация системы тестирования в ZODB

Делал как-то подобное (theorytesting.com напр., хотя и не совсем то же), и ZODB удобен для подобных вещей. Думаю, можно сделать так:
1) Общий контейнер для тестов.
2) В него можно добавлять тесты.
3) Каждый тест - это контейнер, но с дополнительными полями title и description и чего-то там еще.
В него можно добавлять вопросы - это объекты (Persistent, Contained). Поскольку ответы на вопросы могут иметь разную схему, то сделать разные типы, и потом можно добавлять новые.
4) Объект-вопрос имеет схему (пример для варианта список-строк):

class IQuestionBase(Interface):

question = Text(title=u"Сюда создатель теста записывает вопрос")

class IQuestionWithListAnswer(IQuestionBase):

answersTest = List(
title=u"Это список возможных ответов в текстовом виде"
value_type=TextLine())

answersRight = List(
title=u"Это список правильных ответов",
value_type=TextLine())
4) В сайт-менеджер добавить zope.session.session.PersistentSessionDataContainer, зарегистрировать как именованную локальную утилиту с именем FOO_BAR
5) При старте тестирования случайно или еще по какому-то алгоритму подбираются список вопросов (или все) и их UIDs кладутся в
сессию:
session = ISession(self.request)
sessionData = session[FOO_BAR]
sessionData[QEUSTIONS] = questionUIDS
6) Форма для отвечающих перебирает объекты, выталкивая их UIDS из sessionData, берет у объекта интерфейс и поле answerTest и по нему строит форму, сохраняя результат в сессии. Так как при построении формы понадобится другой field (в вышенауказанном примере - нужно Choice) - то построить словарь соответствий между используемыми field'ами.

Вот так. А можно еще как-нибудь, согласен что вариантов куча.



Офлайн

#3 Апрель 23, 2009 15:42:21

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Организация системы тестирования в ZODB

Спасибо, astoon за отзывчивость, я вот тоже больше склоняюсь к такому решению.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version