Нужна помощь в разработке системы скоринга MCQ - PullRequest
2 голосов
/ 21 августа 2011

Я думаю о разработке системы оценки MCQ. Будет три режима, легкий, средний и жесткий. Любой новый режим может быть введен позже. Маркировка для каждого правильного ответа зависит от режима. Каждый режим будет иметь собственную реализацию системы маркировки. Будет существовать некоторая система начисления бонусов, скажем, за три правильных ответа сразу, к общему счету будут добавлены бонусные оценки. промежуточный и жесткий режим будут иметь негативную систему маркировки. Такова моя основная структура.

Я буду использовать эту систему в приложении для Android. Я запутался в дизайне, который идеально подходит.

так что, если я получу какой-либо пример кода или структуру для него, это будет хорошо.

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

1 Ответ

2 голосов
/ 21 августа 2011

Хм, кажется, есть несколько аспектов этого вопроса;Я отвечу на ваш первый и основной вопрос:

Всякий раз, когда я слышу слова «Их будет Х, еще будут добавлены позже», мои мысли сразу же обращаются к шаблону стратегии (GoF, google ...Легко найти некоторый UML для этого), который в первую очередь определяет интерфейс для алгоритма.

В этом случае вы бы реализовали 3 экземпляра этого интерфейса, и не было бы проблемой определить и добавить другойАлгоритм позже - он просто будет использовать тот же интерфейс.

Я представляю метод, который выглядит примерно так: public int markPaper(DataStructure mcq), если это вам как-то помогает.

РЕДАКТИРОВАТЬ: Да, и проверить«Единственный выбор для множественного выбора» от Schwartzbach & Frandsen - это на google - Самый лучший способ сделать честную маркировку MCQ, и который я страдал в течение прошлого года;)

EDIT2: Хорошо, чтобы сделать это немного более явным;В вашем основном потоке управления у вас может быть метод markPaper ().Поскольку мы хотим, чтобы это было модульным, мы возьмем всю эту функциональность, переместим ее в класс, реализующий интерфейс для алгоритмов классификации.Вы можете написать следующее:

main(){
    ...
    if (difficulty == 1){
        [elaborate easy algorithm here...]
    else if(...){
        [slightly harder algorithm here...]

и так далее.Вместо этого создайте вспомогательный метод, скажем отметьте, и передайте ему экземпляр этого алгоритма:

private int mark(GradingAlgorithmInterface algorithm, DataStructure paper){
    algorithm.markPaper(paper);
}

main(){
    ...
    if(difficulty == 1){
        mark(new ConcreteEasyAlgorithm(), paper);
    } else if () {...

И так далее.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...