Создание системы компьютерного тестирования для контроля знаний

Использование компьютерных технологий тестирования, их описание, значение и достоинства. Разработка технического задания для создания информационной системы. Выбор технического и программного обеспечения, проектирование приложения системы тестов.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 03.03.2015
Размер файла 571,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

ОГЛАВЛЕНИЕ

  • ВВЕДЕНИЕ
  • ГЛАВА 1. Аналитическая часть
    • 1.1 Обследование объекта и обоснование необходимости систем компьютерного тестирования
    • 1.2 Разработка технического задания для создания информационной системы
  • ГЛАВА 2. Разработка и реализация проектных решений
    • 2.1 Выбор технического и программного обеспечения
    • 2.2 Разработка проектных решений по системе и её частям
    • 2.3 Проектирование приложений системы тестов
    • 2.4 Описание программного средства
  • ЗАКЛЮЧЕНИЕ
  • СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
  • ПРИЛОЖЕНИЯ

ВВЕДЕНИЕ

В последние годы мы все чаще слышим сообщения о перспективах использования компьютерной коммуникации для решения задач, стоящих перед системой образования. Действительно, компьютер заметно изменил нашу жизнь. Еще больше изменений произойдет в ближайшее десятилетие благодаря революции в области глобальной цифровой системы связи, распространению мультимедиа.

Компьютерная коммуникация находится сегодня на острие глобальной информационной революции и не может не затрагивать образование. Не удивительно, что политики, бизнесмены, педагоги все чаще обращают внимание на эту динамичную область, которая обещает радикально изменить современную практику образования.

XXI век, информационное общество пытается решить свои проблемы с помощью информационных технологий. Использование информационных технологий и технологий мультимедиа в образовании способно радикально изменить существующую систему обучения. Организация учебного процесса может стать более инновационной в том смысле, что будут широко применяться аналитические, практические и экспериментальные принципы обучения, которые позволят ориентировать весь процесс обучения каждого отдельного обучающегося.

Современная система образования все активнее использует информационные технологии и компьютерные телекоммуникации. Особенно динамично развивается система дистанционного образования, чему способствует ряд факторов, и, прежде всего - оснащение образовательных учреждений мощной компьютерной техникой и развитие сообщества сетей Интернет. В этом и состоит актуальность данной темы.

Развитие ИКТ предоставило новую, уникальную возможность проведения занятий - внедрение дистанционной формы обучения. Как правило, в дистанционной форме обучения применяются электронные учебники. Таким образом, развитие информационных технологий дает широкую возможность для изобретения новых методов методик в образовании и тем самым повысить его качество.

Стремительное развитие ИКТ вызывает необходимость прогнозирования дальнейшего развития и внедрения ИКТ в сферу образования.

Очень актуальным становится использование школами различных систем компьютерного тестирования. Широкое распространение получили системы для учителей, которые представляют собой комплекс аппаратных и программных средств, предназначенных для управления различными процессами в рамках образовательного процесса. Проблемой настоящей работы обусловлена тем что, системы компьютерного тестирования относятся к классу сложных систем для разработки, в связи с многозначностью структурных отношений между их компонентами и необходимостью создания таких систем.

Объектом исследования является системы компьютерного тестирования, используемые для контроля знаний.

Предметом исследования является разработка тестовой оболочки в среде Visual Basic.

Цель дипломного проекта создать системы компьютерного тестирования для контроля знаний.

Для достижения поставленной цели необходимо выполнить ряд задач:

- выполнить постановку задачи, разработать модель данных;

- рассмотреть вопросы проектирования программного средства;

- изучить и проанализировать предметную область;

- создать эскизный проект;

- выбрать программные средства для реализации проекта;

- изучить проблемы, возникающие при создании тестовой оболочки в среде Eclipse Luna;

- рассмотреть интернет источники и литературу по данному вопросу.

Материалы дипломного проекта могут способствовать уменьшению трудоемкости работы учителя предметника, автоматизации их работы при контроле и систематизации знаний умений и навыков по учебной дисциплине.

Построение единой информационной среды является главной задачей, которую в рамках развития процессов информатизации решает каждое образовательное учреждение.

Внедрение информационной системы, облегчит работу образовательных учреждений, при контроле знаний по любому предмету компьютерное тестирование программа

ГЛАВА 1. Аналитическая часть

1.1 Обследование объекта и обоснование необходимости систем компьютерного тестирования

В настоящее время используются в основном бланочно-компьютерная и компьютерная (автоматизированная) технологии тестирования. В первом случае тестируемый получает тест (например задания с вариантами ответов) и опросный лист (бланк). В опросном листе по каждому заданию он заштриховывает (ставит метку) тот квадрат, который соответствует порядковому номеру правильного варианта ответа. Данные опросного листа с помощью сканера и соответствующей программы считываются (автоматически вводятся) в ЭВМ, которая производит их обработку и в соответствии с определенными критериями выставляет оценку, печатает результаты. Во втором случае тестируемый читает задания теста на мониторе ЭВМ, вводит ответы с клавиатуры, указывает щелчками мыши, результаты выводятся на экран и печать.

Бланочно-компьютерная технология используется, например, для государственного централизованного тестирования выпускников школ, гимназий, лицеев, проводимого Центром тестирования выпускников общеобразовательных учреждений при Московском педагогическом государственном университете. Система компьютерного тестирования для поступающих в вузы «Телетестинг» основана на использовании Интернет-технологий (разработчик - Центр тестирования в МГУ «Гуманитарные технологии»).

Компьютерная технология тестирования используется в вузах и других учебных заведениях для текущего контроля знаний, приема зачетов и экзаменов.

Системы компьютерного тестирования (СКТ) обеспечивают разработку дисциплинарных, междисциплинарных, квалификационных и других программ-тестов в различных предметных областях с использованием различных форм заданий. Для проверки знаний по техническим и другим дисциплинам применяются графические, мультимедийные задания.

СКТ позволяют автоматизировать не только оценку теоретических знаний, но и умений решать расчетные практические задачи. Например, может быть реализована подготовка задач с генерируемыми переменными. В задаче указываются пределы изменений значений переменных и формула (формулы) расчета. При тестировании обучаемые с помощью встроенного калькулятора будут решать однотипную задачу с разными значениями переменных (сгенерированными в заданных пределах), что исключает подбор правильного ответа, списывание.

СКТ включают две основные программы - конструктор тестов (для преподавателей) и программу контроля знаний (для студентов). С помощью конструктора тестов производится формирование и запись на жесткий (гибкий) магнитный диск сценария теста. Конструктор теста позволяет изменять сценарий, в т. ч. корректировать параметры, редактировать, удалять и добавлять задания. Ввод заданий и других элементов сценария производится с помощью встроенного или другого текстового, графического редактора. При тестировании сценарий теста считывается программой контроля знаний, задания (кадры) предъявляются обучаемому на мониторе ЭВМ. Он вводит ответы, которые сравниваются с эталонными, и выставляется оценка. Результаты тестирования выводятся на монитор ЭВМ и печать.

При контроле знаний формируется и хранится в памяти протокол опроса каждого обучаемого, а также групповая ведомость. Протокол опроса обычно включает наименование дисциплины (теста), дату, ФИО обучаемого, номера заданий, ответы (номера ответов, слова), оценки по каждому заданию (верно, неверно). Протокол может быть распечатан, например для анализа неверных ответов.

Применение компьютерного тестирования обеспечивает объективность оценки знаний на основе единых требований (стандартов) - международных, национальных, отраслевых, вузовских. Это особенно важно для выпускных и квалификационных экзаменов (получение лицензий, аттестатов) аудиторов, банковских работников, экспертов и других специалистов.

Сценарий теста вводится в ЭВМ с помощью специальной программы, называемой конструктором (дизайнером) тестов. Входящий в систему компьютерного тестирования конструктор тестов позволяет в диалоговом режиме ввести данные титула сценария, тестовые задания с эталонными ответами, инструкцию, выбрать из предлагаемых вариантов необходимые параметры теста, изменить предлагаемые настройки. Можно, например, изменить предлагаемую программой шкалу оценок. Выбирая (устанавливая) те или иные параметры, можно сформировать разные варианты теста, в т.ч. контрольно-обучающие.

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

В зависимости от назначения теста и возможностей системы компьютерного тестирования в сценарий могут быть включены и другие части, дополнены параметры теста и заданий. Например, кроме рассмотренных выше четырех частей сценария теста системы компьютерного тестирования позволяют включить список литературы, учебно-справочный материал по тесту. Краткий конспект, статистические данные, нормативы и т.п. предназначены для самообучения, самоконтроля (тренинга). При работе в контрольно-обучающем режиме студент, отвечая на задание, может обратиться к данному учебно-справочному материалу.

Если тест предназначен для использования в контрольно-обучающем режиме, то по заданию может быть разрешено 2 или 3 попытки ответа. По умолчанию при компьютерном тестировании дается только одна попытка ответа на задание. Следует отметить, что обычно разрешение на повторный ответ на задание дается при установлении в «Параметрах теста» порядка предъявления заданий «В порядке, выбираемом обучаемым». При компьютерном тестировании обучаемый из общего списка заданий сам выбирает, на какие отвечать в первую очередь. Как и при письменном тестировании, обучаемый нередко сначала отвечает на легкие, а потом на трудные (сложные) задания.

При выставлении оценки по четырехбалльной или зачетной системе по соответствующей шкале за правильный ответ на задание условно по умолчанию дается 1 балл, за неверный ответ - ноль (в т.ч. за частично правильный). Задания могут отличаться по трудности (сложности), но предполагается, что все обучаемые находятся в равных условиях, отвечая на относительно большое количество одних и тех же простых и трудных заданий. Как показывает многолетняя практика, при установлении относительно высокого процентного уровня для получения зачета или удовлетворительной оценки (70-80%) такой подход может использоваться для текущей аттестации, приема семестровых зачетов и экзаменов.

Оценка может определяться и по сумме набранных баллов при соответствующем назначении их количества за верный ответ по каждому заданию в зависимости от уровня трудности. По сумме набранных баллов определяется место обучаемого в списке прошедших тестирование (рейтинг), выставляется принятая в вузах оценка (неудовлетворительно, удовлетворительно, хорошо, отлично).

1.2 Разработка технического задания для создания информационной системы

Целью работы является разработка системы компьютерного тестирования для контроля знаний.

Используемые на устных и письменных зачетах и экзаменах традиционные вопросы и задачи без переработки, как правило, не могут быть использованы в тестах. Для них специально разрабатываются задания в тестовой форме.

Содержание действий обучаемого при контроле:

- выбор одного ответа;

- выбор нескольких ответов;

Тестовые задания могут быть вопросительными, утвердительными, текстовыми.

Система тестирования должна быть разработана в системе программирования Intellij IDEA. Тест должен загружаться из файла. На экран задания должны выводиться по одному, чтобы не отвлекать внимание от предлагаемого задания. В случае, если испытуемый не выберет ответ, на экране должен появиться предупредительное сообщение. По окончанию тестирования на экран должно выводиться количество правильных ответов, и отценка.

Интерфейс должен быть интуитивно понятный, максимально простой и удобный. Среда функционирования программного продукта -- операционные системы семейства MS Windows.

Техническое задание:

Разработать системы компьютерного тестирования.

Используя систему программирования Intellij IDEA, создать систему тестирования для обеспечения качественного, быстрого контроля умений знаний обучающихся.

Проектируемый программный продукт должен реализовывать следующие требования к функциональным характеристикам:

- требования к надежности;

- условия эксплуатации;

- требования к составу и параметрам технических средств;

- требования к информационной и программной совместимости;

- требования к документации.

Выводы по первой главе

Компьютерное тестирование - это средство, которое позволяет с минимальными затратами времени преподавателя объективно проверить знание большого количества студентов.

Хорошо спланированный график тестирований является хорошим стимулом, который побуждает студентов к систематической работе в течение семестра.

Компьютерные тесты положительно воспринимаются учащимися. Преимуществом компьютерного тестирования является автоматическая проверка результатов и исключение влияния человеческого фактора.

Еще одним преимуществом компьютерных тестов является то, что в процессе проверки знаний студенты видят в преподавателе не оппонента, а союзника.

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

ГЛАВА 2. Разработка и реализация проектных решений

2.1 Выбор технического и программного обеспечения

IntelliJ IDEA -- коммерческая интегрированная среда разработки программного обеспечения на многих языках программирования, в частности Java, JavaScript, Python, разработанная компанией JetBrains. Язык Java -- объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Приложения Java обычно транслируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине вне зависимости от компьютерной архитектуры.

Этот язык не привязан к своей среде разработки и к операционной системе Windows, являясь универсальным инструментом написания приложений.

Программы на Java транслируется в байт-код, выполняемый виртуальной машиной Java (JVM) -- программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.

Достоинством подобного способа выполнения программ является полная независимость байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности, в рамках которой исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание.

Часто к недостаткам концепции виртуальной машины относят снижение производительности. Ряд усовершенствований несколько увеличил скорость выполнения программ на Java:

· применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде,

· широкое использование платформенно-ориентированного кода (native-код) в стандартных библиотеках,

· аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM).

2.2 Разработка проектных решений по системе и её частям

Разрабатываемая система тестирования предназначена для эксплуатации на персональных компьютерах любой архитектуры, под управлением любой операционной системы.

При разработке данного программного продукта использовались следующие программные средства:

- Intellij IDEA;

- Блокнот.

В Intellij IDEA разрабатывался дружественный интерфейс, для работы с системой тестирования. Также создание рабочей области типа панели управления «кнопок».

Применялись следующие компоненты:

Форма JFrame - это класс, который можно расширить путем его наследования. В результате можно получить нужное окно будущей программы (приложения). Форма является классом, поэтому имеет свои поля и методы, однако расширяя этот класс обычно создают свои поля и методы. Форма является контейнером для других объектов, т.е. она может содержать кнопки, списки, текстовые поля и т.п.

Элементы управления - это объекты, которые служат для организации интерфейса между пользователем и компьютером. Например: кнопки, списки, переключатели. Элемент управления - это объект, имеющий свои свойства, методы, события.

1. Надпись JLabel - служит для добавления текста на форму. Этот текст не может быть изменен пользователем, но может быть изменен программой.

2. Текстовое поле - JTextField

Служит для того, чтобы пользователь мог ввести текст во время работы программы.

3. Кнопка JButton

4. Флажок - JCheckBox

Используется, когда пользователь должен ввести Да (флажок установлен ) или Нет (флажок снят )

5. Переключатель - JRadioButton

Позволяет пользователю выбрать один вариант из нескольких.

6. Выпадающий список - JСomboBox

Пользователь может выбирать нужную строку. По нажатии , открывается список, из которого можно выбрать нужную строку.

7. Поле ввода строк - JTextArea. Представляет собой область, которую можно заполнять текстом большой длины. Текст может быть статичен, если Editable находится в положении false.

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

Программный код - это набор слов и символов языка программирования. Слова и символы должны быть записаны строго по правилам языка, без орфографических и пунктуационных ошибок. Именно точное написание позволит компьютеру однозначно понять и выполнить программу.

Первым шагом создания любого приложения на Java является создание класса.

2.3 Проектирование приложения системы тестов

Продумав как должна работать программа, в соответствии с особенностями Java, получим следующую схему работы приложения:

1) Регистрация. Ввод пароля. Если будет указан пароль отличный от эталонного, то пользователь не сможет пользоваться редактором тестов, а только лишь проходить уже существующие тесты.

2) Если зашел обычный пользователь, то должна появиться форма выбора теста. Т.к. количество тестов произвольного числа, то будем хранить их имена в отдельном файле, и считывать в List<String>. Обычные массивы не подходят из-за своей статичности.

3) После выбора теста должен появится первый вопрос на новой форме. В зависимости от вопроса будут добавлены компоненты или JCheckBox(несколько ответов) или JRadioButton(один ответ).

4) После нажатия кнопки «Ответить» должна пройти проверка на выбор варианта ответа. Если пользователь не выбрал ни один ответ, то появляется предупреждение. Переход к следующему вопросу возможен только после выбора одного(несколько) варианта(ов) ответа и нажатия кнопки «Ответить».

5) После того, как пользователь ответил на все вопросы, появляется сообщение об оценке и количестве правильных ответов. Система распознавания правильных ответов жесткая. После этого приложение завершает свою работу.

6) Если же зашел администратор, то должна появиться форма выбора режима приложения: пройти тест или создать тест.

7) Если выбрать «Пройти тест», то произойдет тоже самое, что и в пунктах 2-5.

8) Если выбрать «Создать тест», то появится форма ввода имени теста и количества вопросов в нем.

9) После ввода имени теста и количества вопросов они заисываются в файл и появляется форма создания вопроса. Каждый вопрос создается в новой форме, а информация о нем записывается в файл.

10) Как только последний вопрос создан приложение заканчивает свою работу.

Для осуществления логики данного приложения понадобиться создать 6 классов (и ещё 1 с точкой входа в программу).

Класс StartProgram является главным классом, где находиться public static void main(String[] args).

Класс ThisTest будет хранить имя теста. С его помощью так же можно улучшить данное приложение.

Класс CreaterTests отвечает за ввод имени нового теста и количества вопросов в нем.

Класс CreaterQuestion отвечает за создание вопросов нового теста. Класс StartForm используется для выбора администратором режима приложения.

Класс FirstForm отвечает за выбор теста, который нужно пройти. Класс Question отвечает за создание формы, на которой выбирают вариант ответа на вопрос.

Программный код основного класса:

package by.gsu.alukyanov;

import javax.swing.*;

import java.io.*;

import java.util.ArrayList;

import java.util.List;

/**

* Created by Антон on 27.11.2014.

*/

public class StartProgram {

public static void main(String[] args){

try{

String name=JOptionPane.showInputDialog("Введите имя");

String password=JOptionPane.showInputDialog("Введите пароль, если вы администратор");

if(password.equals("123456")) //если пароль совпадает с правильным

{

final StartForm start = new StartForm("Выбор режима");

//создаем форму для определения будем мы создавать

start.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//тест или проходить один из существующих(т.е. выбор режима)

start.setSize(305, 190);

//start.setResizable(false);

start.setLocationRelativeTo(null); //окно появлялось по центру

start.setVisible(true);

while (true) {

//поток этой формы ждет пол секунды, а потом проверяет выбран ли режим

Thread.sleep(500);

if (start.isEnd()) break;

}

if (start.getMode()) { //если режим==создание теста

List<String> thisWrite = new ArrayList<String>();

//создаем списое данных, который после заполнения будем заносить в файл. дальше будем //называть лист

final CreaterTests creater = new CreaterTests();

//создаем форму редактора теста

creater.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

creater.setSize(220, 180);

//creater.setResizable(false);

creater.setLocationRelativeTo(null);

creater.setVisible(true);

while (true) { //поток формы создания теста ждет //пол секунды, а потом проверяет задано ли имя теста и кол-во вопросов

Thread.sleep(500);

if (creater.isEnd()) break;

}

String curDir = new File("").getAbsolutePath();

//в переменную curDir заносим текущую деректоию

thisWrite.add(creater.getTestName());

//добавляем в лист имя(тему) теста

thisWrite.add("\n\n");

//перенос через 2 строки (тесты создаются по своему стандарту)

for (int j = 0; j < creater.getCountQuestions(); j++) {

//цикл добавления вопросов в тест (их кол-во указывается при создании теста)

thisWrite.add("Вопрос " + (j + 1) + ".");

//добавляем в лист номер вопроса

CreaterQuestion addQuestion = new CreaterQuestion("Добавление вопроса", creater.getTestName(), thisWrite);

addQuestion.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //создание формы редактора вопроса. передаем ему лист для дальнейшего заполнения

addQuestion.setSize(440, 620);

//addQuestion.setResizable(false);

addQuestion.setLocationRelativeTo(null);

addQuestion.setVisible(true);

while (true) {

//ждем пока вопрос будет добавлен

Thread.sleep(500);

if (addQuestion.isEnd()) break;

}

thisWrite = addQuestion.getList();

//возвращаем лист в главный поток

thisWrite.add("\n");

//запонение, требуемое стандартом тестов

if (j == creater.getCountQuestions() - 1) {

thisWrite.add("end."); //указать что это конец теста

}

}

if (!thisWrite.get(thisWrite.size() - 1).equals("end.")) //если тест не закончен, то не создаем файл

JOptionPane.showMessageDialog(null, "Не закончено создание теста. Тест удален.");

else {

//записываем лист в файл

writeListToFileOff(curDir + "\\src\\by\\gsu\\alukyanov\\" + creater.getTestName(), thisWrite);

//добавляем имя теста в файл, где храняться имена всех тестов

List<String> list = readFile(curDir + "\\src\\by\\gsu\\alukyanov\\" + "listOfTest");

list.add(creater.getTestName());

writeListToFileOn(curDir + "\\src\\by\\gsu\\alukyanov\\" + "listOfTest", list);

}

} else { //если выбран режим прохождения тестов

final FirstForm mainForm = new FirstForm("Начало");

//создаем форму выбора теста

mainForm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

mainForm.setSize(425, 250);

//mainForm.setResizable(false);

mainForm.setLocationRelativeTo(null);

mainForm.setVisible(true);

while (true) { //ждем пока тест не будет выбран

Thread.sleep(500);

if (!mainForm.getTestName().equals("")) break;

}

String curDir = new File("").getAbsolutePath();

//узнаем текущую деректорию

//создаем лист, который будет содержать всю информацию о тесте

List<String> lines = readFile(curDir + "\\src\\by\\gsu\\alukyanov\\" + mainForm.getTestName());

ThisTest test = new ThisTest(lines.get(0)); //создаем объект теста

String thisLine = lines.get(0);

//создаем переменную количества вариантов ответа, что бы знать //какого размера форма нам понадобится

int count = 0;

boolean fl = false;

//создаем лист, который будет содержать информацию о текущем вопросе.

List<String> question = new ArrayList<String>();

//начинаем с 3ей строки т.к. первая - это имя теста, а вторая - пустая строка

for (int i = 2; !thisLine.equals("end."); i++) {

question.add(lines.get(i));

//добавляем в лист вопроса информацию о нем

if (fl) count++;

//увеличиваем количество вариантов ответа, если они уже начались

//если начинаются варианты ответов, то ставим fl=true

if (lines.get(i).equals("Один") || lines.get(i).equals("Много")) fl = true;

thisLine = lines.get(i); //переопределяем текущую строку

//если текущая строка пустая, то вся информация о вопросе уже лежит в его листе

if (thisLine.equals("")) {

Question quest = new Question(question); //создаем форму вопроса что бы пользователь мог дать ответ

quest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//если количество вариантов ответа меньше 5, то хватит и обычного размера формы

if (count < 6) quest.setSize(425, 270);

//иначе нужен размер побольше в зависимости сколько вариантов ответа в вопросе

else quest.setSize(425, 270 + (count - 6) * 15);

//quest.setResizable(false);

quest.setLocationRelativeTo(null);

quest.setVisible(true);

//пользователь ответил на вопрос. теперь информация о вопросе больше не нужна

//и мы создаем новый лист, хранящий информацию о следующем вопросе.

question = new ArrayList<String>();

while (true) { //ждем пока пользователь отвечает на вопрос

Thread.sleep(500);

if (quest.isEnd()) break;

}

fl = false; //будем использовать для проверки правильности ответа на вопрос

if (quest.getTrueAnswers().size() == quest.getAnswer().size()) {

for (int j = 0; j < quest.getTrueAnswers().size(); j++) {

//если ответ не сходится с правильным, то прерываем проверку

if (quest.getAnswer().get(j) != quest.getTrueAnswers().get(j)) {

fl = true;

break;

}

}

//если проверка не была прервана, то добавляем балл за правильный ответ

if (!fl) Question.countTrueAnswersAdd();

}

count = 0;

fl = false; //сбрасываем значения для следующего вопроса

}

}

JOptionPane.showMessageDialog(null, "Вы завершили тест: " + test.getTema() + "\nКоличество правильных ответов= " + Question.getCountTrueAnswer() + "\n" +

"Ваша отценка: " + (10.0 * Question.getCountTrueAnswer() / (float) Question.getCountQuestions()));

}

}

else { //если обычный пользователь

final FirstForm mainForm = new FirstForm("Начало");//создаем форму выбора теста

mainForm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

mainForm.setSize(425, 250);

//mainForm.setResizable(false);

mainForm.setLocationRelativeTo(null);

mainForm.setVisible(true);

while (true) { //ждем пока тест не будет выбран

Thread.sleep(500);

if (!mainForm.getTestName().equals("")) break;

}

String curDir = new File("").getAbsolutePath(); //узнаем текущую деректорию

//создаем лист, который будет содержать всю информацию о тесте

List<String> lines = readFile(curDir + "\\src\\by\\gsu\\alukyanov\\" + mainForm.getTestName());

ThisTest test = new ThisTest(lines.get(0)); //создаем объект теста

String thisLine = lines.get(0);

//создаем переменную количества вариантов ответа, что бы знать какого размера форма нам понадобится

int count = 0;

boolean fl = false;

//создаем лист, который будет содержать информацию о текущем вопросе.

List<String> question = new ArrayList<String>();

//начинаем с 3ей строки т.к. первая - это имя теста, а вторая - пустая строка

for (int i = 2; !thisLine.equals("end."); i++) {

question.add(lines.get(i)); //добавляем в лист вопроса информацию о нем

if (fl) count++; //увеличиваем количество вариантов ответа, если они уже начались

//если начинаются варианты ответов, то ставим fl=true

if (lines.get(i).equals("Один") || lines.get(i).equals("Много")) fl = true;

thisLine = lines.get(i); //переопределяем текущую строку

//если текущая строка пустая, то вся информация о вопросе уже лежит в его листе

if (thisLine.equals("")) {

Question quest = new Question(question); //создаем форму вопроса что бы пользователь мог дать ответ

quest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//если количество вариантов ответа меньше 5, то хватит и обычного размера формы

if (count < 6) quest.setSize(425, 270);

//иначе нужен размер побольше в зависимости сколько вариантов ответа в вопросе

else quest.setSize(425, 270 + (count - 6) * 15);

//quest.setResizable(false);

quest.setLocationRelativeTo(null);

quest.setVisible(true);

//пользователь ответил на вопрос. теперь информация о вопросе больше не нужна

//и мы создаем новый лист, хранящий информацию о следующем вопросе.

question = new ArrayList<String>();

while (true) { //ждем пока пользователь отвечает на вопрос

Thread.sleep(500);

if (quest.isEnd()) break;

}

fl = false; //будем использовать для проверки правильности ответа на вопрос

if (quest.getTrueAnswers().size() == quest.getAnswer().size()) {

for (int j = 0; j < quest.getTrueAnswers().size(); j++) {

//если ответ не сходится с правильным, то прерываем проверку

if (quest.getAnswer().get(j) != quest.getTrueAnswers().get(j)) {

fl = true;

break;

}

}

//если проверка не была прервана, то добавляем балл за правильный ответ

if (!fl) Question.countTrueAnswersAdd();

}

count = 0;

fl = false; //сбрасываем значения для следующего вопроса

}

}

JOptionPane.showMessageDialog(null, "Вы завершили тест: " + test.getTema() + "\nКоличество правильных ответов= " + Question.getCountTrueAnswer() + "\n" +

"Ваша отценка: " + (10.0 * Question.getCountTrueAnswer() / (float) Question.getCountQuestions()));

}

}

//если во время выполнения программы возникла ошибка

catch(Exception e) {JOptionPane.showMessageDialog(null,"Error: "+e);}

}

//метод считывает данные из файла и заносит их в лист

public static List<String> readFile(String file) throws IOException {

BufferedReader reader = new BufferedReader(new FileReader(file));

String line;

List<String> lines = new ArrayList<String>();

while ((line = reader.readLine()) != null) {

lines.add(line);

}

if(lines.get(0)==null) return null;

return lines;

}

//метод для записи листа в файл, содержащий имена тестов.

//нужен из-за особого расположения данных в файле

public static void writeListToFileOn(String fileName,List<String> list)throws Exception{

FileWriter fw = new FileWriter(fileName);

BufferedWriter bw = new BufferedWriter(fw);

for(int i=0;i<list.size();i++)

if(i==list.size()-1) bw.write(list.get(i));

else bw.write(list.get(i)+"\n");

bw.close();

}

//метод для записи листа в файл

public static void writeListToFileOff(String fileName,List<String> list)throws Exception{

FileWriter fw = new FileWriter(fileName);

BufferedWriter bw = new BufferedWriter(fw);

for(String s: list)

bw.write(s);

bw.close();

}

}

Программный код класса ThisTest:

package by.gsu.alukyanov;

import java.util.ArrayList;

import java.util.List;

/**

* Created by Антон on 27.11.2014.

*/

public class ThisTest {

private String tema=String.valueOf("");

private List<String> questions=new ArrayList<String>();

List<Integer> trueAnswers=new ArrayList<Integer>();

private int countQuestions=0;

public String getTema(){

return this.tema;

}

public void setTema(String s){

this.tema=String.valueOf(s);

}

public void addQuestion(String question){

questions.add(question);

countQuestions++;

}

public void addTrueAnswer(int trueAnswer){

trueAnswers.add(trueAnswer); }

public ThisTest(String tema){

setTema(tema);

}

}

Программный код класса CreaterQuestion:

package by.gsu.alukyanov;

import javax.swing.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileWriter;

import java.util.ArrayList;

import java.util.List;

public class CreaterQuestion extends JFrame{

private JTextField question;

private JTextArea answers;

private JLabel label1,label2,label3,label4;

private JTextField trueAnswers;

private JButton buttonAdd;

private boolean end=false;

private String testName;

private List<String> thisList;

public List<String> getList(){return this.thisList;}

public void setList(List<String> thisList){ this.thisList=thisList;}

public boolean isEnd(){return this.end;}

public String getTestName(){return this.testName;}

public CreaterQuestion(String title,String testName,List<String> thisWrite){

super(title);

this.testName=String.valueOf(testName);

setList(thisWrite);

label1=new JLabel();

label2=new JLabel();

label3=new JLabel();

label4=new JLabel();

label1.setText("Введите сюда вопрос");

label2.setText("Введите сюда варианты ответов.");

label4.setText("Вариант ответа заканчивается точкой.");

label3.setText("Введите сюда номера правильных ответов");

buttonAdd=new JButton("Добавить вопрос");

question=new JTextField();

answers=new JTextArea();

trueAnswers=new JTextField();

label1.setBounds(15, 15, 300, 20);

question.setBounds(15,40,400,25);

label2.setBounds(15, 70, 300, 20);

label4.setBounds(15, 90, 300, 20);

answers.setBounds(15,115,400,400);

label3.setBounds(15, 520, 500, 20);

trueAnswers.setBounds(15,550,100,25);

buttonAdd.setBounds(230,540,185,35);

setLayout(null);

add(label1);add(question);

add(label2);add(label4);add(answers);

add(label3);add(trueAnswers);

add(buttonAdd);

eHandler handler=new eHandler();

buttonAdd.addActionListener(handler);

}

public boolean checkString(String string) {

try {

Integer.parseInt(string);

} catch (Exception e) {

return false;

}

return true;

}

public boolean corectAnswers(){

String text=String.valueOf(answers.getText());

char[] arrayText=text.toCharArray();

int countDot=0;

for(int i=0;i<arrayText.length;i++)

if(arrayText[i]=='.') countDot++;

text=trueAnswers.getText();

char[] array=text.toCharArray();

int countTrueAnswers=0;

for(int i=0;i<array.length;i++)

if(checkString(String.valueOf(array[i]))) countTrueAnswers++;

if(countDot<=countTrueAnswers) return false;

return true;

}

public boolean countQuestionOnTrueQuestion(){

String text=String.valueOf(answers.getText());

char[] arrayText=text.toCharArray();

int countDot=0;

for(int i=0;i<arrayText.length;i++)

if(arrayText[i]=='.') countDot++;

text=trueAnswers.getText();

char[] array=text.toCharArray();

for(int i=0;i<array.length;i++) {

if(checkString(String.valueOf(array[i]))) {

if (Integer.parseInt(String.valueOf(array[i])) > countDot) return false;

}else continue;

} компьютерный тестирование информационный знание

return true;

}

public void writeToFile(String fileName,String data){

try{

String curDir = new File("").getAbsolutePath();

FileWriter fw = new FileWriter(curDir + "\\src\\by\\gsu\\alukyanov\\"+fileName);

BufferedWriter bw = new BufferedWriter(fw);

bw.write(data);

bw.close();

}

catch(Exception e) {

JOptionPane.showMessageDialog(null,"Error! "+ e);

}

}

class eHandler implements ActionListener {

public void actionPerformed(ActionEvent EVENT){

if(EVENT.getSource()==buttonAdd){

if(question.getText().equals("")) JOptionPane.showMessageDialog(null,"Введите вопрос");

else if(answers.getText().equals("")) JOptionPane.showMessageDialog(null,"Введите варианты ответов");

else if(trueAnswers.getText().equals("")) JOptionPane.showMessageDialog(null,"Введите правильные ответы");

else if(!corectAnswers()) JOptionPane.showMessageDialog(null,"Количество вариантов ответов \nдолжно быть больше количества правильных ответов");

else if(!countQuestionOnTrueQuestion()) JOptionPane.showMessageDialog(null,"Среди вариантов ответов нет \n одного из указаных правильных ответов");

else {

thisList.add("\n"+question.getText());

//writeToFile(getTestName(), question.getText());

if(checkString(trueAnswers.getText())) thisList.add("\nОдин");//writeToFile(getTestName(), "Один");

else thisList.add("\nМного");//writeToFile(getTestName(), "Много");

String text = String.valueOf(answers.getText());

char[] arrayText = text.toCharArray();

char[] temp = new char[500];

int k = 0,c=0;

for (int i = 0; i < arrayText.length; i++) {

int l = 0;

if (arrayText[i] == '.') {

for (int j = k; j < i; j++) {

if(arrayText[i]!='\n') {

temp[l] = arrayText[j];

l++;

}

}

k=i+1;

c++;

String t="";

for(int p=0;p<temp.length;p++)

if(temp[p]!='\n')

t=t+String.valueOf(temp[p]);

thisList.add("\n"+c+" "+t);//writeToFile(getTestName(),""+c+" "+t);

for(int p=0;p<temp.length;p++)

temp[p]=' ';

}

}

thisList.add("\nПравильно: "+trueAnswers.getText()+"\n");//writeToFile(getTestName(), "Правильно: "+trueAnswers.getText());

end=true;

dispose();

}

}

}

}

}

Программный код класса CreaterTests:

package by.gsu.alukyanov;

import javax.swing.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.*;

import java.util.ArrayList;

import java.util.List;

public class CreaterTests extends JFrame{

private boolean end=false;

private JLabel name,count;

private JTextField nameTest;

private JTextField countQuestions;

private JButton buttonCreating;

private int countQ=1;

public String getTestName(){return this.nameTest.getText();}

public int getCountQuestions(){return this.countQ;}

public boolean isEnd(){

return this.end;

}

public void setEnd(){this.end=true;}

public CreaterTests(){

super("Создание теста");

name=new JLabel();

count=new JLabel();

name.setBounds(15, 20, 100, 20);

count.setBounds(15, 50, 150, 20);

name.setText("Имя теста");

count.setText("Количество вопросов");

buttonCreating=new JButton("Начать создание теста");

buttonCreating.setBounds(15,100,185,35);

nameTest=new JTextField();

nameTest.setBounds(100,20,100,20);

countQuestions=new JTextField();

countQuestions.setBounds(150,50,50,20);

setLayout(null);

add(name);add(nameTest);

add(count);add(countQuestions);

add(buttonCreating);

eHandler handler=new eHandler();

buttonCreating.addActionListener(handler);

}

public boolean checkString(String string) {

try {

Integer.parseInt(string);

} catch (Exception e) {

return false;

}

return true;

}

public boolean notNullFile(String file){

try {

BufferedReader reader = new BufferedReader(new FileReader(file));

return true;

}catch (Exception e){ return false;}

}

public static List<String> readFile(String file) throws IOException {

BufferedReader reader = new BufferedReader(new FileReader(file));

String line;

List<String> lines = new ArrayList<String>();

while ((line = reader.readLine()) != null) {

lines.add(line);

}

if(lines.get(0)==null) return null;

return lines;

}

class eHandler implements ActionListener {

public void actionPerformed(ActionEvent EVENT){

if(EVENT.getSource()==buttonCreating){

try {

if (nameTest.getText().equals("")) JOptionPane.showMessageDialog(null, "Введите название теста");

else if (countQuestions.getText().equals("")) JOptionPane.showMessageDialog(null, "Введите колличество вопросов в тесте");

else if (!checkString(countQuestions.getText()))

JOptionPane.showMessageDialog(null, "Некоректно введено количество \nвопросов в тесте");

else {

boolean fl=true;

String curDir = new File("").getAbsolutePath();

String name=nameTest.getText();

List<String> listOfTests=readFile(curDir + "\\src\\by\\gsu\\alukyanov\\"+"listOfTest");

for(String s: listOfTests){

if(s.equals(name)) {

JOptionPane.showMessageDialog(null, "Такой тест уже существует");

fl=false;

break;

}

}

if (fl) {

countQ = Integer.parseInt(countQuestions.getText());

setEnd();//показать что создание теста закончено.

dispose();//закрыть форму создания теста

}

}

}catch(Exception e){

JOptionPane.showMessageDialog(null,"Error! "+e);

}

}

}

}

}

Программный код класса StartForm:

package by.gsu.alukyanov;

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class StartForm extends JFrame{

private boolean modeCreating=false;

private JTextArea textArea;

private JButton startButton1;

private JButton startButton2;

private boolean end=false;

eHandler handler=new eHandler();

public boolean isEnd(){

return this.end;

}

public boolean getMode(){

return this.modeCreating;

}

public void modeCreatingOn(){this.modeCreating=true;}

public void modeCreatingOff(){this.modeCreating=false;}

public StartForm(String titleForm) {

super(titleForm);

startButton1 = new JButton(" Тестирование ");

startButton2 = new JButton("Cоздать тест");

...

Подобные документы

  • Создание системы компьютерного тестирования для контроля знаний. Проблемы, возникающие при создании тестовой оболочки в среде Ren`Py. Разработка проектных решений по системе и её частям. Структура тестирования, вопросы и ответы тестирующей системы.

    дипломная работа [501,6 K], добавлен 12.09.2016

  • Использование информационных технологий в учебном процессе. Тестирование как средство контроля знаний. Разработка компьютерной системы тестирования знаний. Описание языка программирования. Вредные факторы воздействия компьютера на здоровье человека.

    дипломная работа [562,2 K], добавлен 06.06.2014

  • Создание сетевой системы тестирования с целью автоматизации процесса контроля знаний, оценивания результатов и создания тестовых заданий. Файлы проекта и их назначение. Описание алгоритмов и модулей программы. Работа с сетью, руководство пользователя.

    контрольная работа [928,3 K], добавлен 23.12.2012

  • Выбор инструментальной среды разработки программного обеспечения системы. Алгоритм создания теста и ввода его исходных данных. Анализ экономической эффективности применения программного обеспечения "Тестирования знаний обучающихся программированию".

    дипломная работа [3,2 M], добавлен 11.09.2014

  • Проектирование базы данных, информационной подсистемы PLC-Tester, модуля тестирования и web-приложения. Разработка логической структуры программного продукта и общие требования к техническому обеспечению. Запуск программы и описание тестовых прогонов.

    дипломная работа [3,2 M], добавлен 30.06.2011

  • Рассмотрение теоретических и методологических основ создания компьютерных тестов. Описание практической разработки программного обеспечения для контроля знаний студентов. Сравнение экономических и технических параметров аналогичных тестовых программ.

    дипломная работа [1,3 M], добавлен 14.07.2010

  • Проверка и коррекция знаний учащихся в системе личностно ориентированной технологии образования с использованием тестирования. Подготовка материалов для компьютерного контроля знаний. Разработка проекта "тестирующая программа". Понятие и виды тестов.

    дипломная работа [696,2 K], добавлен 16.06.2015

  • Назначение и архитектура экспертных систем, их применение в сфере образования. Экспертные системы тестирования, принципы их функционирования. Инструментальные средства создания приложения и разработка программы тестирования. Описание программы, листинг.

    дипломная работа [706,4 K], добавлен 07.05.2012

  • Обследование объекта, обоснование необходимости систем компьютерного тестирования. Анализ существующих разработок и обоснование выбора технологии проектирования. Создание системы компьютерного тестирования на основе случайного выбора в среде Visual Basic.

    дипломная работа [2,4 M], добавлен 18.08.2013

  • Организация проверки результатов обучения и оценки знаний, использование систем тестирования, основные требования к ним. Создание современной модели WEB-сервиса тестирования знаний; программная реализация; защита от копирования информации и списывания.

    курсовая работа [24,1 K], добавлен 11.05.2012

  • Исходные данные к проекту информационной системы "Протокол технического эксперимента", ее назначение. Описание программы, ее структурная схема. Описание алгоритма работы программы. Программные средства разработки. Методика испытания (тестирования).

    курсовая работа [806,6 K], добавлен 17.02.2016

  • Обзор технологий проектирования компьютерных тестов и анализ существующих систем тестирования. Создание системы автоматизированного тестирования студентов с динамической генерацией тестовых заданий при участии преподавателя, с функцией оценивания.

    дипломная работа [3,6 M], добавлен 18.07.2012

  • Создание технического задания на разработку информационной системы для заказа билета на самолет. Требования к документированию. Порядок контроля и приемки системы. Разработка концепции, архитектуры построения и платформы реализации информационной системы.

    курсовая работа [1,8 M], добавлен 13.05.2015

  • История развития и виды тестирования программного обеспечения. Инсталляционное, регрессионное, конфигурационное, интеграционное, локализационное, модульное тестирование. Методы сокращения трудоемкости модульного тестирования разрабатываемого приложения.

    курсовая работа [309,5 K], добавлен 16.12.2015

  • Анализ предметной области и разработка информационного обеспечения автоматизированной информационной системы "Система тестирования". Проектирование базы данных методом "Сущность-Связь". Технология создания базы в MS Access. Real-time работа системы.

    курсовая работа [4,5 M], добавлен 23.12.2014

  • История возникновения тестирования программного обеспечения, основные цели и особенности его проведения. Виды и типы тестирования, уровни его автоматизации. Использование и исследование необходимых технологий. Полный цикл прогона всей системы мониторинга.

    дипломная работа [1,7 M], добавлен 03.05.2018

  • Обоснование необходимости разработки компьютерной системы тестирования студентов. Анализ используемого программного и технического обеспечения на предприятии. Требования к функционированию модуля. Сведения о программе: структура, настройка и проверка.

    курсовая работа [1,7 M], добавлен 13.06.2017

  • Архитектура и история создания операционной системы Android. Язык программирования Java. Выбор средства для реализации Android приложения. Программная реализация Android приложения. Проведение тестирования разработанного программного обеспечения.

    курсовая работа [167,8 K], добавлен 18.01.2017

  • Методика и основные этапы разработки системы тестирования для оценки уровня знаний студентов с применением технологии "Клиент-сервер". Проектирование клиентской, серверной части данной системы тестирования, порядок составления финальных отчетов.

    дипломная работа [587,6 K], добавлен 08.11.2010

  • Изучение языков программирования PHP, SQL, C++, HTML. Рассмотрение правил запуска и использования локального сервера Denwer. Составление технического задания по разработке программного продукта. Описание создаваемого мобильного и веб-приложения.

    курсовая работа [212,4 K], добавлен 07.04.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.