close

Вход

Забыли?

вход по аккаунту

?

Пояснительная записка (5)

код для вставкиСкачать
 Аннотация
Данный проект посвящен созданию программного блока тестирования на способность к концентрации и переключению внимания, с помощью которого облегчается решение задач психологических служб в образовании, управлении персоналом и личном использовании. Проблема заключалась в автоматизации теста по заданной методике. Программный блок реализован на языке C++ (в качестве интегрированной среды разработки была взята среда Borland C++ Buider). Результаты тестирования сохраняются в файл CSV, который легко редактируется в Microsoft Office Excel, что сокращает времени на сбор статистики. Пояснительная записка включает в себя: "Специальную часть" и "Экологическая часть и безопасность жизнедеятельности".
В "Специальную часть" включено:
* "Разработка блока тестирования" - в данном разделе предъявлены схема работы блока тестирования, схемы данных и т.д.
* "Разработка пользовательского интерфейса" - в данном разделе описаны особенности пользовательского интерфейса.
* "Анализ тестовых испытаний" - в данном разделе предъявлены тестовые испытания программного блока.
В разделе "Экологическая часть и безопасность жизнедеятельности" содержится описание оптимального рабочего места программиста.
Дипломный проект включает в себя: * 154 страниц;
* 56 рисунков;
* 36 таблиц.
Оглавление
Введение7
1. Специальная часть9
1.1. Постановка задачи9
1.2. Аналитический обзор13
1.3. Разработка блока тестирования и описание алгоритма18
1.3.1. Обоснование выбора средств решения поставленной задачи18
1.3.2. Описание алгоритма20
1.3.2.1. Описание алгоритма работы программного блока20
1.3.2.2. Описание алгоритма тестирования22
1.3.2.3. Описание алгоритма сохранения результатов25
1.3.2.4. Описание алгоритма просмотра статистики29
1.3.2.5. Описание алгоритма построения графика31
1.4. Разработка пользовательского интерфейса32
1.4.1. Инструкция для пользователя34
1.4.2. Статистика результатов тестирования35
1.4.3. Процесс тестирования37
1.4.4. Меню39
1.4.4.1. Пункт меню "Файл - Инструкция"39
1.4.4.2. Пункт меню "Файл - Настройка"40
1.4.4.3. Пункт меню "Файл - Тест"41
1.4.4.4. Пункт меню "Файл - Выход"41
1.4.4.5. Пункт меню "Справка - О программе"41
1.5. Текст программы42
1.6. Анализ тестовых испытаний программного блока43
1.6.1. Проверка предоставления инструкции43
1.6.2. Проверка обеспечения ввода личных данных пользователя, требующихся для статистики45
1.6.3. Проверка обеспечения ввода дополнительных настроек47
1.6.4. Проверка обеспечения режима тестирования48
1.6.5. Проверка расчета параметров, требующихся для статистики49
1.6.6. Проверка отображения личных данных и параметров в табличном виде после прохождения теста67
1.6.7. Проверка отображения и сохранения графика изменения темпа пользователя после прохождения теста68
1.6.8. Проверка сохранения личных данных пользователя и параметров в файлы75
1.6.9. Результаты тестовых испытаний76
1.7. Разработка руководства оператора77
1.7.1. Назначение программы77
1.7.2. Условия выполнения программы78
1.7.3. Требования к пользователю78
1.7.4. Выполнение программы79
1.7.4.1. Загрузка и запуск программы79
1.7.4.2. Выполнение программы80
1.7.4.3. Завершение работы программы88
1.7.5. Сообщения оператору89
1.7.5.1. Ошибка сохранения файла89
1.7.5.2. Ошибка при регистрации89
1.7.5.3. Сообщение при завершении работы во время теста90
2. Экологическая часть и безопасность жизнедеятельности91
2.1. Исследование возможных опасных и вредных факторов, возникающих при работе с ЭВМ, и их воздействие на пользователей91
2.1.1. Исследование возможных опасных и вредных факторов, возникающих при работе с ЭВМ91
2.1.2. Анализ влияния опасных и вредных факторов на пользователя92
2.2. Способы защиты пользователей от воздействия на них опасных и вредных факторов96
2.2.1. Методы и средства защиты от поражения электрическим током96
2.2.2. Методы и средства защиты от рентгеновского излучения98
2.2.3. Методы и средства защиты от ультрафиолетового излучения100
2.2.4. Методы и средства защиты от электромагнитных полей низкой частоты100
2.2.5. Методы и средства защиты от статического электричества101
2.3. Эргономические требования к рабочим местам пользователей102
2.3.1. Требования к помещениям, оборудованию рабочих мест и освещенности102
2.3.2. Рекомендации по защите пользователей от излучений ПЭВМ103
2.4. Выводы104
3. Заключение105
4. Список использованной литературы106
Приложение 1. Техническое задание108
Приложение 2. Расчет максимального и минимального времени ответа114
Приложение 3. Текст программы125
Приложение 4. Графические материалы148
Введение
В современном мире на наших глазах совершаются поистине чудеса науки и техники, которые раньше казались невероятными, а теперь они существуют и кружат неподготовленные к подобному потоку информации головы. [4]
А вновь конструируемые системы восприятия и переработки информации направлены на облегчение функций органов зрения и слуха. Но существует тревожный аспект развития психики человека, связанный с технизацией общества и с перенасыщением повседневной жизни информацией. Постоянное увеличение объема знаний и в связи с этим рост потока информации вполне естественно заставляет задуматься: а не приведет ли все это к непредвиденным перегрузкам. [4]
Постепенно развивается привычка все слушать и смотреть без сосредоточения внимания, и тогда эта привычка к непрерывной информационно-шумовой нагрузке лишает человека необходимого внутреннего покоя. Именно поэтому, когда требуется сосредоточиться на чем-то одном, человеку бывает сложно переключить внимание в нужное русло, ему начинает мешать шум улицы, где-то работающий телевизор, и даже обычный бытовой шум. Для этого нужно сознательно управлять своим вниманием, чтобы и тогда тот информационный фон служил просто "шумовым интерьером". [4]
Особое значение для достижения успеха в любой деятельности имеет концентрация и устойчивость внимания, которые характеризуют глубину, длительность и интенсивность психической деятельности человека. Именно сосредоточенность и устойчивость отличают людей, страстно увлеченных делом, умеющих ради основного переключиться от многочисленных побочных раздражителей. [6]
Необходимо найти для каждого человека наиболее благоприятные именно для него, режим, ритм условия работы. Обычно такой стиль вырабатывается сам собой, хотя иногда его приходится искать методом проб и ошибок. И если человек не может сам помочь себе - это должны взять на себя психологи. А им в свою очередь помогают новые специально разработанные для этого тесты. [5,7]
Существует множество тестов, упражнений и методик, но проблема заключается в автоматизации тестов по уже существующим методикам.
При компьютерном тестировании больше возможностей соблюдения достоверности теста, т.е. обеспечение защиты его результатов от сознательных неискренности испытуемого или непреднамеренных мотивационных искажений. Также повышается надежность тестирования - стабильность результатов тестовых испытаний, устойчивость теста по отношению к разнообразным источникам помех (шумовых и др.). [8,9]
При использовании компьютера в психологическом тестировании существенно облегчается обработка результатов, появляется возможность самостоятельного проведения тестирования испытуемым, который может выявить свои слабые стороны и улучшить свои результаты при помощи тестов-тренажеров. [8]
Исходя из вышеизложенных проблем, мной было принято решение создать программный блок, который бы тестировал пользователя на способность к концентрации и переключению внимания. Главная особенность данного тестирования заключается в решении простых логических операций в условиях заданного темпа, т.е. испытуемый сам устанавливает наиболее подходящий для него темп тестирования. Если пользователь изначально выбрал неверный темп и, например, будет ошибаться, темп будет замедляться до тех пор, пока он не станет оптимальным. Таким образом, данный программный блок будет подстраиваться по темпу под каждого испытуемого автоматически в зависимости от его результатов.
Данная программа создается для облегчения решения задач психологических служб в образовании, управлении персоналом и личном использовании.
1. Специальная часть
1.1. Постановка задачи
Существует проблема в необходимости программного блока тестирования для решения задач психологических служб в образовании, управлении персоналом и личном использовании.
Цель: * повышение удобства проведения тестирования;
* сокращение времени на сбор статистики. Задача: * разработать блок тестирования пользователя на его способность к концентрации и переключению внимания. Тестирование должно происходить по заданной методике;
* программный блок должен быть реализован под Windows;
* программный блок должен отображать результаты испытуемого и график изменения темпа во время тестирования;
* результаты тестирования и изменения темпа испытуемых должны сохраняться в файлы формата CSV;
* график изменения темпа может быть сохранен в файл при желании пользователя.
Техническое задание на разработку прилагается (Приложение 1). Входные данные:
Следующие входные данные должны вводиться пользователем с клавиатуры. * имя;
* фамилия;
* отчество;
* возраст;
* группа;
Следующие входные данные устанавливаются пользователем при желании:
* время решения задачи (мин) - время теста составляет от 1 до 60 мин;
* стартовое время экспозиции числа (с) - стартовое время предъявления числа (вопроса) изменяется в интервале от 1 до 10 с (с шагом изменения продолжительности равным 1 с);
* шаг изменения темпа (с) - время изменения темпа предъявления следующего числа (вопроса) после правильного/ошибочного ответа может соответственно увеличиваться/уменьшаться от 0,05 до 0,5 с. После прохождения регистрации, испытуемому следует пройти тестирование. Ответы должны вводиться с клавиатуры.
Выходные данные:
Следующие выходные данные сохраняются в файл User_Test.csv и будут представлены в табличном виде после прохождения тестирования:
* имя - имя испытуемого, введенного при регистрации;
* фамилия - фамилия испытуемого, введенного при регистрации;
* отчество - отчество испытуемого, введенного при регистрации;
* возраст - возраст испытуемого, введенного при регистрации;
* группа - группа испытуемого, введенного при регистрации;
* дата - дата прохождения тестирования;
* время - время прохождения тестирования;
* время решения задачи - время тестирования (вводится испытуемым в Настройках);
* стартовое время экспозиции числа - стартовое время предъявления числа (вводится испытуемым в Настройках);
* шаг изменения темпа - время изменения темпа предъявления следующего числа после правильного/ошибочного ответа (вводится испытуемым в Настройках);
* сколько чисел предъявлено - количество предъявленных чисел, за время тестирования, вычисляется по формуле (1.1);
(1.1)
где Nпред. - количество предъявленных чисел за время тестирования;
Nправ. - количество правильных ответов за время тестирования;
Nошиб. - количество ошибочных ответов за время тестирования;
Nзапазд. - количество запаздываний (количество раз, когда испытуемый не успевал дать ответ).
* сколько верных ответов - количество правильных ответов;
* сколько ошибочных ответов - количество неправильных ответов;
* число запаздываний - количество раз, когда испытуемый не успевал дать ответ;
* среднее время ответа - рассчитывается по формуле (1.2):
(1.2)
где Тср. - среднее время ответа за время тестирования;
Тзадачи - время решения задачи;
Тэксп. - стартовое время экспозиции числа;
Nправ. - количество правильных ответов за время тестирования;
Nошиб. - количество ошибочных ответов за время тестирования.
В случае, если во время тестирования испытуемый не дал ответа, то среднее время ответа будет равняться времени решения задачи;
* максимальное время ответа - максимальное время предъявления чисел (вопросов) испытуемому;
* минимальное время ответа - минимальное время предъявления чисел (вопросов) испытуемому;
* балл по качеству - рассчитывается по формуле (1.3):
(1.3)
где В - балл по качеству;
Nправ. - количество правильных ответов за время тестирования;
Nпред. - количество предъявленных чисел за время тестирования.
* номер в таблице темпа - номер строки в файле User_Tempo.csv.
Помимо вышеперечисленного, изменения темпа (снижение/ускорение) работы испытуемого во время тестирования должно быть сохранено в файл User_Tempo.csv
Каждому испытуемому, помимо полученных параметров (из файла User_Test.csv), соответствует номер строки в таблице темпа User_Tempo.csv, именно на основании него программный блок должен отображать график изменения темпа во время тестирования. Данный график может быть сохранен в файл при желании пользователя.
1.2. Аналитический обзор
С каждым годом расширяются границы применения психологического тестирования. Использование тестирования постепенно расширилось от узконаправленных советов относительно учебных и профессиональных планов, до рассмотрения всех аспектов жизни человека. [8]
Компьютерные технологии, при корректности их применения, имеют огромные потенциальные возможности для развития внимания, памяти, интеллекта, точностных и скоростных качеств. [9]
В связи с прогрессом компьютерных технологий появляется большое количество психологических тестов и упражнений на основе уже известных методик и рекомендаций или их аналогов.
Следует отметить, что большинство тестирований написаны с использованием Web-технологий и их легко найти в интернете. А это дает преимущество - прохождение тестирования без инсталляции программы на компьютере. Но, к сожалению, у таких программ имеется и существенных ряд недостатков:
* отсутствие каких-либо дополнительных настроек, нужных испытуемому;
* не предусмотрено импортирование сохраненных результатов в Microsoft Office Excel. Более того, часто совершенно отсутствует возможность сохранения результата, а значит, нет данных для сбора и обработки статистики;
* нет возможности прохождения тестирования, если компьютер не подключен к интернету;
* требуется установка дополнительных библиотек и плееров (например, Flash Player).
Помимо Web-технологий, следует отметить комплекс программ Effecton Studio 2008, который содержит более 150 психологических тестов и упражнений. Данный комплекс программ подразделяется на пакеты по изучению памяти, внимания, реакции и восприятия, свойств личности человека, межличностных отношений и т.д. [12]
Пакет "Внимание" включает уникальную коллекцию из 14 тестов и 15 упражнений, позволяющих детально исследовать и развивать все основные свойства внимания - интенсивность, устойчивость, избирательность, переключаемость. Свойства внимания можно исследовать и развивать несколькими взаимодополняющими тестами, что позволяет получить более точные и эффективные результаты. [10,11]
Данный пакет обладает рядом достоинств:
* Широкий набор тестов и упражнений.
* Тесты и упражнения реализованы с привлечением широкого диапазона аудиовизуальных средств.
* Единая база результатов.
Но, к сожалению, у пакета "Внимание" существуют и недостатки:
* Effecton Studio 2008 является платной программой, и даже если потребуется несколько тестов, необходимо будет покупать весь пакет;
* не предусмотрено импортирование сохраненных результатов в Microsoft Office Excel;
* отсутствуют дополнительные настройки;
* все тесты и упражнения не изменяют темп предъявления вопросов испытуемому во время тестирования.
Следует отметить, программу ABC Count, которая реализована по аналогичной методике. Данная программа обладает рядом недостатков:
* реализована под MS-DOS;
* не изменяет темп предъявления вопросов испытуемому во время тестирования;
* нет возможности сохранения результата, что затрудняет процесс сбора данных для статистики.
Программа R-Test включает в себя 3 теста, один из которых реализован по аналогичной методике. Данная программа обладает рядом достоинств:
* наличие дополнительных настроек;
* результаты сохраняются в базу данных MS Access, которая может импортироваться в MS Excel.
Однако, есть и недостатки:
* программе требуется инсталляция и установка дополнительных программных средств (Framework 2.0);
* R-Test не изменяет темп предъявления вопросов испытуемому во время тестирования;
Для улучшения наглядности проведенного мной анализа, составлена таблица 1.1 на основании аналогов и критерий, по которым видны достоинства и недостатки каждого.
Таблица 1.1 - Обзор и анализ аналогичных программ
Аналоги
КритерииТесты на базе Web-технологийEffecton Studio 2008
Пакет "Внимание"ABC
CountR-TestНаличие аналогичной методики+++Возможность автоматически изменять темп предъявления вопросов во время тестированияНаличие дополнительных настроек++Возможность сохранения результата++Возможность импортирования результатов в MS Excel+Независимость программы (работа без инсталляции и дополнительных библиотек, и без участия интернета) Исходя из отсутствия аналога по всем критериям, мной было принято решение создать программный блок тестирования, который заключается в решении простых логических операций в условиях заданного темпа.
В основу методики был взят аналог теста Иоселиани на переключение внимания. Испытуемому будет последовательно предъявлены однозначные цифры от 0 до 9, появление красной цифры означает вычитание из предшествующего результата данного числа, соответственно появление зеленой означает сложение. Цифры предъявляются в навязанном темпе, в случайном порядке и высвечиваются в различных частях экрана, но с тем ограничением, что результат как сложения, так и вычитания с предшествующим числом находится в интервале от 0 до 9. Испытуемый перед началом тестирования имеет возможность установить дополнительные настройки:
* время решения задачи (мин) - время теста составляет от 1 до 60 мин;
* стартовое время экспозиции числа (с) - стартовое время предъявления числа (вопроса) изменяется в интервале от 1 до 10 с (с шагом изменения продолжительности равным 1 с);
* шаг изменения темпа (с) - время изменения темпа предъявления следующей цифры (вопроса) после правильного/ошибочного ответа может соответственно увеличиваться/уменьшаться от 0,05 до 0,5 с. Главная особенность заключается в том, что во время тестирования, если был выбран неверный (слишком быстрый) темп, то он будет замедляться по мере получения ошибок. Верно и обратное, если испытуемый выбрал для себя слишком легкий (медленный) темп и не допускает ошибок, то он будет постепенно ускоряться. Таким образом, данный программный блок по мере получения результатов будет автоматически снижать и ускорять темп пока он не станет оптимальным для испытуемого. 1.3. Разработка блока тестирования и описание алгоритма
1.3.1. Обоснование выбора средств решения поставленной задачи
Выбор средств решения поставленной задачи был сделан в пользу языка С++ и озвучен в Техническом задании. Но программный блок можно было бы реализовать другими способами. Программный блок можно реализовать на языке С++ и результаты тестирования сохранять в базу данных InterBase. Но данный выбор имеет недостатки:
* потребуется дополнительная установка программных средств;
* сложности с редактированием результатов;
* сложности с импортированием результатов в MS Excel.
В случае, если программный блок тестирования реализовать на языке PHP и результаты тестирования сохранять в базу данных MySQL. Но данный выбор имеет недостатки:
* следует учитывать особенности отображения в различных браузерах;
* потребуется участие интернета;
* сложности с редактированием результатов.
Если программный блок тестирования реализовать на языке PHP, но результаты тестирования сохранять в файлы XLS. Данный выбор имеет преимущество: простота редактирования результатов. Но есть и недостатки:
* следует учитывать особенности отображения в различных браузерах;
* потребуется дополнительная установка программных средств:
o интерпретатор PHP (PHP 5.2.9);
o Web-сервер (Apache и др.);
o MS Office (MS Excel);
В связи с большим количеством недостатков у предыдущих вариантов, программный блок следует реализовать на языке C++, потому что, учитывая требования:
* блок будет реализован под Windows;
* блок будет работать без инсталляции, дополнительных библиотек и без установки других программных средств;
* блок будет работать без участия интернета.
Для повышения удобства пользовательского интерфейса в качестве интегрированной среды разработки была взята среда Borland C++ Buider.
Результаты тестирования будут сохраняться в файлы CSV, потому что, учитывая требования:
* сохранение будет происходить независимо от установки MS Office;
* возможность редактирования результатов в MS Excel.
1.3.2. Описание алгоритма
1.3.2.1. Описание алгоритма работы программного блока
При успешном запуске программы, пользователь может выбрать следующие варианты:
* Просмотр инструкции осуществляется следующим образом: происходит предъявление инструкции пользователю.
* Перед началом тестирования пользователь, должен ввести свои личные данные и установить параметры в настройках. Для сохранения результатов тестирования, я решила сделать ввод личных данных обязательным условием, без которого пользователь не может начать тестирование.
Во время тестирования изменение темпа предъявления чисел (вопросов) сохраняется в файл User_Tempo.csv. Во время тестирования происходит расчет остальных параметров, таких как среднее, максимальное и минимальное время ответа, и т.д.
После окончания тестирования, для наибольшего удобства использования программного блока, рассчитанные параметры автоматически сохраняются в User_Test.csv. При успешном сохранении пользователь может просмотреть результаты.
* Для просмотра статистики следует ввести личные данные: имя, фамилия и отчество. Их также я решила сделать обязательными, потому что на основании этих данных происходит поиск человека в файле User_Test.csv. При просмотре графика программный блок перестраивает его по соответствующей строке (Номер в таблице темпа) из файла User_Tempo.csv.
Для наглядности предъявим схему работы программного блока тестирования на рисунке 1.1. При описании алгоритма, я использовала следующий источник [16].
Рисунок 1.1 - Схема работы блока тестирования
1.3.2.2. Описание алгоритма тестирования
Алгоритм тестирования заключается в следующем: предъявление вопросов происходит в цикле до тех пор, пока не истекло время тестирования (время решения задачи). Предъявление чисел происходит по датчику случайных чисел, чтобы не было повторений предъявления чисел (вопросов) при последующих загрузках программного блока. После предъявления числа включается функция KeyPress, т.е. есть возможность испытуемому дать ответ. Данное решение мной было принято, чтобы испытуемый нечайно не дал ответ до предъявления числа (вопроса).
Дале происходит сохранение темпа предъявления числа (вопроса) в файл User_Tempo.csv. Данное сохранение происходит независимо от наличия ответа. Это было реализовано, чтобы, если испытуемый за время тестирования не сделает ни единого ответа, то будут сохранены значения равные стартовому времени экспозиции числа (т.е. график будет выглядеть как прямая, параллельная оси абсцисс). Таким образом, будет наглядно видно, что испытуемый никак не реагировал на предъявление вопросов.
Далее происходит анализ наличия ответа: правильный, ошибочный или вовсе ответ не был дан.
В случае, неправильного ответа, предъявляется сообщение об ошибке, после чего программный блок ждет нажатия правильного ответа и после этого продолжает работу. Далее происходит отключение функции KeyPress.
В случае, правильного ответа происходит отключение функции KeyPress. Это реализовано для того, чтобы испытуемый не имел возможности отвечать несколько раз на одно предъявленное число.
Далее после выше упомянутых событий или если ответ не дан, происходит расчет некоторых результатов испытуемого. Например, таких как счет верных ответов, ошибочных ответов, число запаздываний. Также на этом этапе происходит поиск максимального и минимального времени ответа (сравнение максимального/минимального времени ответа с текущим).
После чего, предъявление числа повторяется, до тех пор пока не закончится время тестирования.
После окончания тестирования происходит расчет оставшихся результатов испытуемого:
* сколько чисел предъявлено рассчитывается по формуле 1.4; (1.4)
где Nпред. - количество предъявленных чисел за время тестирования;
Nправ. - количество правильных ответов за время тестирования;
Nошиб. - количество ошибочных ответов за время тестирования;
Nзапазд. - количество запаздываний (количество раз, когда испытуемый не успевал дать ответ).
* среднее время ответа рассчитывается по формуле1.5; (1.5)
где Тср. - среднее время ответа за время тестирования;
Тзадачи - время решения задачи;
Тэксп. - стартовое время экспозиции числа;
Nправ. - количество правильных ответов за время тестирования;
Nошиб. - количество ошибочных ответов за время тестирования.
В случае, если во время тестирования испытуемый не дал ответа, то среднее время ответа будет равняться времени решения задачи; * балл по качеству рассчитывается по формуле 1.6;
(1.6)
где В - балл по качеству;
Nправ. - количество правильных ответов за время тестирования;
Nпред. - количество предъявленных чисел за время тестирования.
После расчета, данные сохраняются в файл User_Test.csv.
Для наглядности предъявим схему алгоритма тестирования на рисунке 1.2. При описании алгоритма, я использовала источник [16].
Рисунок 1.2 - Схема алгоритма тестирования 1.3.2.3. Описание алгоритма сохранения результатов В связи с тем, что программный блок должен сохранять результаты во время тестирования, а так же рассчитывать различные параметры, после его окончания, то мной было принято решение сохранение производить в 2 файла: User_Test.csv и User_Tempo.csv.
Для наглядности предъявим схему данных программного блока тестирования на рисунке 1.3. При описании алгоритма, я использовала следующий источник [16].
Рисунок 1.3 - Схема данных блока тестирования
User_Test.csv
В файл User_Test.csv сохраняются все рассчитанные параметры, и в нем находятся все данные необходимые для статистики.
Описание параметров, которые сохраняются в файл User_Test.csv предъявлено в таблице 1.2.
Таблица 1.2 - Сохраняемые параметры в файл User_Test.csv
ПолеОписаниеТипИмяимя испытуемого, введенного при регистрацииStringФамилияфамилия испытуемого, введенного при регистрацииStringОтчествоотчество испытуемого, введенного при регистрацииStringВозраствозраст испытуемого, введенного при регистрацииIntegerГруппагруппа испытуемого, введенного при регистрацииStringДата дата прохождения тестированияDataВремя время прохождения тестированияTimeВремя решения задачивремя тестирования (вводится испытуемым в Настройках)IntegerСтартовое время экспозиции числастартовое время предъявления числа (вводится испытуемым в Настройках)IntegerШаг изменения темпавремя изменения темпа предъявления следующего числа после правильного/ошибочного ответа (вводится испытуемым в Настройках)DoubleСколько чисел предъявлено количество предъявленных чисел за время тестирования, рассчитывается по формуле (1.7):
(1.7)
где Nпред. - количество предъявленных чисел за время тестирования;
Nправ. - количество правильных ответов за время тестирования;
Nошиб. - количество ошибочных ответов за время тестирования;
Nзапазд. - количество запаздываний.IntegerСколько верных ответовколичество правильных ответовIntegerСколько ошибочных ответовколичество неправильных ответовIntegerЧисло запаздываний ответаколичество раз, когда испытуемый не успевал дать ответIntegerСреднее время ответарассчитывается по формуле (1.8):
(1.8)
где Тср. - среднее время ответа за время тестирования;
Тзадачи - время решения задачи;
Тэксп. - стартовое время экспозиции числа;
Nправ. - количество правильных ответов за время тестирования;
Nошиб. - количество ошибочных ответов за время тестирования.
В случае, если во время тестирования испытуемый не дал ответа, то среднее время ответа будет равняться времени решения задачи;FloatМаксимальное времямаксимальное время предъявления чисел (вопросов) испытуемомуFloatМинимальное время минимальное время предъявления чисел (вопросов) испытуемомуFloatБалл по качеству рассчитывается по формуле (1.9):
(1.9)
где В - балл по качеству;
Nправ. - количество правильных ответов за время тестирования;
Nпред. - количество предъявленных чисел за время тестирования.FloatНомер в таблице темпаномер строки в файлеInteger User_Tempo.csv
Сохранение данных в этот файл происходит каждый раз при предъявлении числа (вопроса) испытуемому. За время прохождения тестирования сохраняется массив данных со временем изменения предъявления числа (вопроса) испытуемому. На основании этих данных строится график изменения тема пользователя.
Связь между файлами
Таким образом, каждому испытуемому, помимо строки полученных параметров (из файла User_Test.csv), соответствует номер строки в таблице темпа User_Tempo.csv. По номеру в таблице темпа программа ищет нужную строку и отображает график. Наглядная схема изображена на рис. 1.4.
Файл результатов (User_Test.csv)Файл темпа (User_Tempo.csv)ИмяРяд данных времени изменения предъявления вопроса испытуемому.ФамилияОтчествоВозрастГруппаДата Время Время решения задачиСтартовое время экспозиции числаШаг изменения темпаСколько чисел предъявлено Сколько верных ответовСколько ошибочных ответовЧисло запаздываний ответаСреднее время ответаМаксимальное время ответаМинимальное время ответаБалл по качеству Номер в таблице темпа Рисунок 1.4 - Связь между файлами
1.3.2.4. Описание алгоритма просмотра статистики
Алгоритм просмотра статистики заключается в следующем. Сначала происходит поиск испытуемого в файле с результатами User_Test.csv. Изначально считывается строка из файла, далее идет сравнение считанного поля "Имя" и имя введенного пользователем перед просмотром статистики. Аналогично сравниваются поля "Фамилия" и "Отчество". Если все 3 поля ("Имя", "Фамилия", "Отчество") совпадают, то происходит вывод результатов тестирования в таблицу.
Далее считывается следующая строка из файла, и данный поиск продолжается до тех пор, пока не кончится файл, т.е. считывание данных происходит построчно.
Для наглядности предъявим схему алгоритма просмотра статистики на рисунке 1.5. При описании алгоритма, я использовала источник [16].
Рисунок 1.5 - Схема алгоритма просмотра статистики
1.3.2.5. Описание алгоритма построения графика
Алгоритм построения графика заключается в следующем. Если в таблице статистики имеется минимум одна заполненная строка, то в случае выделения данной строки, программный блок строит график темпа испытуемого.
Если в таблице выделена строка, то происходит поиск значения поля "Номер в таблице темпа". По данному значению ищется строка в файле темпа User_Tempo.csv. Далее происходит построение и отображение графика по считанному из файла массиву.
Для наглядности предъявим схему алгоритма просмотра статистики на рисунке 1.6. При описании алгоритма, я использовала источник [16].
Рисунок 1.6 - Схема алгоритма построения графика
1.4. Разработка пользовательского интерфейса
Одна из целей создания программного блока является - повышение удобства проведения тестирования, поэтому разработка пользовательского интерфейса важный момент в создании программного блока.
Для достижения поставленных целей был разработан максимально удобный пользовательский интерфейс.
Мной было разработано создать в главном окне программы 3 основные кнопки:
* Инструкция - после ознакомления с ней можно перейти в Статистику или Тестирование.
* Статистика - после ввода личных данных пользователя для поиска, можно просмотреть результаты тестирований.
* Тестирование - после ввода личных данных пользователя для регистрации, можно пройти тест, после чего просмотреть результаты.
Общая наглядная схема интерфейса представлена на рис. 1.7.
Рисунок 1.7 - Наглядная схема интерфейса
Для максимального удобства прохождения тестирования, мной был разработан следующий интерфейс.
При запуске программы появляется главное окно программного блока (см. рис. 1.8), на нем я разместила:
* меню - для того, чтобы пользователь мог в любой момент времени, вернуться в начало или посмотреть инструкцию, если забыл ее во время тестирования;
* 3 основные кнопки - они являются наиболее часто используемыми при прохождении тестирования:
o Инструкция
o Статистика
o Тестирование. Рисунок 1.8 - Главное окно программного блока 1.4.1. Инструкция для пользователя
Нажав на кнопку Инструкция, испытуемому будет предъявлена инструкция по проведению тестирования (см. рис. 1.9). Ознакомившись с ней, испытуемый может сразу перейти в Статистику или Тестирование.
Рисунок 1.9 - Инструкция к тестированию
1.4.2. Статистика результатов тестирования
Нажав на кнопку Статистика, испытуемому следует ввести личные данные пользователя:
* Имя
* Фамилия
* Отчество Данные требуются для поиска нужных ему результатов тестирования (см. рис. 1.10), поэтому они являются обязательными для заполнения. После того, как данные введены, следует нажать Посмотреть статистику.
Рисунок 1.10 - Поиск испытуемого
Далее в табличном виде будут представлены результаты данного испытуемого за каждый раз, когда он проходил тестирование (см. рис. 1.11). Испытуемый также может посмотреть график изменения темпа для каждого раза прохождения тестирования, щелкая мышкой по выбранной им строке.
Испытуемый может сохранить график изменения темпа предъявления вопросов в файл при желании.
Рисунок 1.11 - Статистика
1.4.3. Процесс тестирования
Нажав на кнопку Тестирование (см. рис. 1.12), испытуемый должен ввести личные данные пользователя необходимые для регистрации:
* Имя
* Фамилия
* Отчество
* Возраст
* Группа. По причине того, что данные сохраняются при каждом прохождении теста, то поля являются обязательными для заполнения. Далее испытуемый может начать проходить тестирование, нажав Начать тест.
Рисунок 1.12 - Регистрация испытуемого
Для повышения удобства пользовательского интерфейса, мной было решено, по окончании тестирования данные автоматически сохранять.
После успешного сохранения данных в файлы и можно перейти к просмотру результатов, нажав Просмотреть статистику (см. рис. 1.13).
Рисунок 1.13 - Окончание тестирования
1.4.4. Меню Для повышения удобства проведения тестирования было сделано меню (см. рис. 1.14), которое сопровождает испытуемого на всех этапах: просмотр инструкции, просмотр статистики и проведение тестирования.
В меню объединены все пункты, которые являются необязательными для запуска или заполнения, но необходимы для удобства.
Рисунок 1.14 - Меню
1.4.4.1. Пункт меню "Файл - Инструкция"
Выбрав данный пункт меню, испытуемому будет предъявлена инструкция по проведению тестирования (см. рис. 1.15). Для повышения удобства проведения тестирования, испытуемый может ее свернуть и пользоваться во время тестирования или вызвать данное окно в любое необходимое ему время.
Рисунок 1.15 - Инструкция
1.4.4.2. Пункт меню "Файл - Настройка"
Выбрав данный пункт меню, перед началом тестирования испытуемый имеет возможность установить дополнительные настройки (см. рис. 1.16), которые не являются обязательными.
Для повышения удобства установки настройки и для повышения надежности ввода корректных данных, испытуемый будет выбирать из списка нужное ему значение, а не вводить его с клавиатуры.
При желании испытуемый может установить:
* время решения задачи (мин) - время теста может составляет от 1 до 60 мин;
* стартовое время экспозиции числа (с) - стартовое время предъявления числа изменяется в интервале от 1 до 10 с (с шагом изменения продолжительности равным 1 с);
* шаг изменения темпа (с) - время изменения темпа предъявления следующей цифры после правильного/ошибочного ответа может соответственно увеличиваться/уменьшаться от 0,05 до 0,5 с. Рисунок 1.16 - Настройка
1.4.4.3. Пункт меню "Файл - Тест"
Выбрав данный пункт меню, испытуемый в любой момент времени имеет возможность вернуться в главное окно программного блока.
1.4.4.4. Пункт меню "Файл- Выход"
Выбрав данный пункт меню, испытуемый покидает программный блок.
1.4.4.5. Пункт меню "Справка - О программе"
Выбрав данный пункт меню, испытуемому предъявляется окно с сведениями о программном блоке тестирования (см. рис. 1.17).
Рисунок 1.17 - О программном блоке
1.5. Текст программы
В связи с большим объемом, текст программы предъявлен в Приложении 3.
1.6. Анализ тестовых испытаний программного блока
В техническом задании был дан ряд функций, которые должен выполнять программный блок, поэтому я решила проводить тестовые испытания по каждой функции. Проверка будет считаться завершенной в том случае, если вышеперечисленная последовательность действий оператора будет соответствовать выполнению данной функции. [13]
1.6.1. Проверка предоставления инструкции
Проверка выполнения указанной функции выполняется следующими образами:
1. выбором кнопки Инструкция после запуска программного блока (рис. 1.18);
Рисунок 1.18 - Инструкция к тестированию
2. последовательным выбором пунктов меню Файл - Инструкция (рис. 1.19);
Рисунок 1.19 - Инструкция к тестированию
Проверка считается завершенной, потому что вышеперечисленная последовательность действий оператора соответствует выполнению данной функции.
1.6.2. Проверка обеспечения ввода личных данных пользователя, требующихся для статистики
Проверка выполнения указанной функции выполняется следующими образами:
1. При успешном запуске программного блока следует выбрать Тестирование (рис. 1.20).
Далее необходимо заполнить соответствующие поля для регистрации:
* имя;
* фамилия;
* отчество;
* возраст;
* группа;
Рисунок 1.20 - Регистрация испытуемого
2. При успешном запуске программного блока следует выбрать Статистика (рис. 1.21).
Далее необходимо заполнить соответствующие поля для поиска:
* имя;
* фамилия;
* отчество;
Рисунок 1.21 - Поиск испытуемого
Проверка считается завершенной, потому что вышеперечисленная последовательность действий оператора соответствует выполнению данной функции.
1.6.3. Проверка обеспечения ввода дополнительных настроек
Проверка выполнения указанной функции выполняется следующим образом:
* при успешном запуске программного блока последовательным выбором пунктов меню Файл - Настройка (рис. 1.22).
В результате будет отображено окно "Настройка". В случае необходимости следует ввести требуемые настройки ("Время решение задачи", "Стартовое время экспозиции числа", "Шаг изменения темпа").
Рисунок 1.22 - Настройка
Проверка считается завершенной, потому что вышеперечисленная последовательность действий оператора соответствует выполнению данной функции.
1.6.4. Проверка обеспечения режима тестирования
Проверка выполнения указанной функции выполняется следующим образом:
* после успешного запуска программы, последовательном выборе Тестирование и заполнения регистрационных данных пользователя, следует нажать кнопку Начать тест.
Результат проверки данной функции представлен на рис. 1.23.
Рисунок 1.23 - Режим тестирования
Проверка считается завершенной, потому что вышеперечисленная последовательность действий оператора соответствует выполнению данной функции.
1.6.5. Проверка расчета параметров, требующихся для статистики
Проверка выполнения указанной функции выполняется согласно следующим действиям:
Производится аналитический расчет всех параметров после прохождения тестирования, после чего эти данные сравниваются с параметрами, полученными программным блоком. Проверка считается завершенной в случае идентичности результатов, полученных аналитическим путем и полученных программным блоком.
Расчет параметров производится по следующим формулам и принципам (см. табл. 1.3).
Таблица 1.3 - Сводная таблица формул и принципов, необходимых для расчета параметров
ПараметрыФормулы и принципыСколько чисел предъявлено (1.10)
где Nпред. - количество предъявленных чисел за время тестирования;
Nправ. - количество правильных ответов за время тестирования;
Nошиб. - количество ошибочных ответов за время тестирования;
Nзапазд. - количество запаздываний (количество раз, когда испытуемый не успевал дать ответ).Сколько правильных ответовколичество правильных ответов известно после прохождения тестированияСколько ошибочных ответовколичество ошибочных ответов известно после прохождения тестированияЧисло запаздываний ответаколичество запаздываний известно после прохождения тестированияСреднее время ответа (1.11)
где Тср. - среднее время ответа за время тестирования;
Тзадачи - время решения задачи (время прохождения тестирования);
Тэксп. - стартовое время экспозиции числа (стартовое время предъявления вопроса);
Nправ. - количество правильных ответов за время тестирования;
Nошиб. - количество ошибочных ответов за время тестирования.
В случае, если во время тестирования испытуемый не дал ответа, то среднее время ответа будет равняться времени решения задачи.Максимальное время ответаРасчет производится в MS Excel (см. Приложение 2)Минимальное время ответаРасчет производится в MS Excel (см. Приложение 2)Балл по качеству (1.12)
где В - балл по качеству;
Nправ. - количество правильных ответов за время тестирования;
Nпред. - количество предъявленных чисел за время тестирования. Мной было проведено 8 проверок с различными вариантами результатов и установленных настроек:
1 проверка- тестирование проходит при максимальном количестве правильных ответов;
2 проверка - тестирование проходит при максимальном количестве ошибочных ответов;
3 проверка - тестирование проходит при отсутствии любого ответа;
4-7 проверки - тестирования проходят с различными вариациями правильных, ошибочных ответов и запаздываний;
8 проверка - тестирование проходит по максимальному возможному времени решения задачи.
1. Установим следующие настройки:
Время решения задачи: 1 мин.
Стартовое время экспозиции числа: 3 сек.
Шаг изменения темпа: 0,05 сек.
В таблице 1.4 представлены результаты прохождения тестирования.
Таблица 1.4 - Результаты тестирования
Правильные ответыЗапаздываниеОшибочные ответы2400 Расчет значений параметров, происходит с учетом результатов тестирования. Значения, полученные мной аналитическим путём, предъявлены в таблице 1.5:
Таблица 1.5 - Значения параметров, рассчитанные аналитическим путём
ПараметрыЗначениеСколько чисел предъявлено (расчет по формуле 1.10)24,00Сколько правильных ответов24,00Сколько ошибочных ответов0,00Число запаздываний ответа0,00Среднее время ответа (расчет по формуле 1.11)2,38Максимальное время ответа3,00Минимальное время ответа1,80Балл по качеству (расчет по формуле 1.12)1,00 Программный блок после прохождения тестирования рассчитал значения параметров. Данные результаты, полученные программным блоком представлены на рисунке 1.24.
Рисунок 1.24 - Значения параметров, рассчитанные программным блоком
Результаты, полученные программным блоком, и результаты, полученные аналитическим путём - идентичны.
2. Установим следующие настройки:
Время решения задачи: 2 мин.
Стартовое время экспозиции числа: 2 сек.
Шаг изменения темпа: 0,15 сек.
В таблице 1.6 представлены результаты прохождения тестирования.
Таблица 1.6 - Результаты тестирования
Правильные ответыЗапаздываниеОшибочные ответы0029 Расчет значений параметров, происходит с учетом результатов тестирования. Значения, полученные мной аналитическим путём, предъявлены в таблице 1.7:
Таблица 1.7 - Значения параметров, рассчитанные аналитическим путём
ПараметрыЗначениеСколько чисел предъявлено (расчет по формуле 1.10)29,00Сколько правильных ответов0,00Сколько ошибочных ответов29,00Число запаздываний ответа0,00Среднее время ответа (расчет по формуле 1.11)4,07Максимальное время ответа6,35Минимальное время ответа2,00Балл по качеству (расчет по формуле 1.12)0,00 Программный блок после прохождения тестирования рассчитал значения параметров. Данные результаты, полученные программным блоком представлены на рисунке 1.25.
Рисунок 1.25 - Значения параметров, рассчитанные программным блоком
Результаты, полученные программным блоком, и результаты, полученные аналитическим путём - идентичны.
3. Установим следующие настройки:
Время решения задачи: 3 мин.
Стартовое время экспозиции числа: 1 сек.
Шаг изменения темпа: 0,4 сек.
В таблице 1.8 представлены результаты прохождения тестирования.
Таблица 1.8 - Результаты тестирования
Правильные ответыЗапаздываниеОшибочные ответы01790 Расчет значений параметров, происходит с учетом результатов тестирования. Значения, полученные мной аналитическим путём, предъявлены в таблице 1.9:
Таблица 1.9 - Значения параметров, рассчитанные аналитическим путём
ПараметрыЗначениеСколько чисел предъявлено (расчет по формуле 1.10)179Сколько правильных ответов0Сколько ошибочных ответов0Число запаздываний ответа179Среднее время ответа180Максимальное время ответа180Минимальное время ответа180Балл по качеству (расчет по формуле 1.12)0 Программный блок после прохождения тестирования рассчитал значения параметров. Данные результаты, полученные программным блоком представлены на рисунке 1.26.
Рисунок 1.26 - Значения параметров, рассчитанные программным блоком
Результаты, полученные программным блоком, и результаты, полученные аналитическим путём - идентичны.
4. Установим следующие настройки:
Время решения задачи: 1 мин.
Стартовое время экспозиции числа: 5 сек.
Шаг изменения темпа: 0,5 сек.
В таблице 1.10 представлены результаты прохождения тестирования.
Таблица 1.10 - Результаты тестирования Правильные ответыЗапаздываниеОшибочные ответы8111112110155 Расчет значений параметров, происходит с учетом результатов тестирования. Значения, полученные мной аналитическим путём, предъявлены в таблице 1.11:
Таблица 1.11 - Значения параметров, рассчитанные аналитическим путём
ПараметрыЗначениеСколько чисел предъявлено (расчет по формуле 1.10)37,00Сколько правильных ответов11,00Сколько ошибочных ответов8,00Число запаздываний ответа18,00Среднее время ответа (расчет по формуле 1.11)2,89Максимальное время ответа5,00Минимальное время ответа0,50Балл по качеству (расчет по формуле 1.12)0,30 Программный блок после прохождения тестирования рассчитал значения параметров. Данные результаты, полученные программным блоком представлены на рисунке 1.27.
Рисунок 1.27 - Значения параметров, рассчитанные программным блоком
Результаты, полученные программным блоком, и результаты, полученные аналитическим путём - идентичны.
5. Установим следующие настройки:
Время решения задачи: 2 мин.
Стартовое время экспозиции числа: 3 сек.
Шаг изменения темпа: 0,10 сек.
В таблице 1.12 представлены результаты прохождения тестирования.
Таблица 1.12 - Результаты тестирования Правильные ответыЗапаздываниеОшибочные ответы51110011118110110821013012112012110110131111411011011100 Расчет значений параметров, происходит с учетом результатов тестирования. Значения, полученные мной аналитическим путём, предъявлены в таблице 1.13:
Таблица 1.13 - Значения параметров, рассчитанные аналитическим путём
ПараметрыЗначениеСколько чисел предъявлено (расчет по формуле 1.10)90,00Сколько правильных ответов40,00Сколько ошибочных ответов18,00Число запаздываний ответа32,00Среднее время ответа (расчет по формуле 1.11)2,02Максимальное время ответа3,00Минимальное время ответа0,60Балл по качеству (расчет по формуле 1.12)0,44 Программный блок после прохождения тестирования рассчитал значения параметров. Данные результаты, полученные программным блоком представлены на рисунке 1.28.
Рисунок 1.28 - Значения параметров, рассчитанные программным блоком
Результаты, полученные программным блоком, и результаты, полученные аналитическим путём - идентичны.
6. Установим следующие настройки:
Время решения задачи: 3 мин.
Стартовое время экспозиции числа: 1 сек.
Шаг изменения темпа: 0,25 сек.
В таблице 1.14 представлены результаты прохождения тестирования.
Таблица 1.14 - Результаты тестирования Правильные ответыЗапаздываниеОшибочные ответы1110012006081404050 Расчет значений параметров, происходит с учетом результатов тестирования. Значения, полученные мной аналитическим путём, предъявлены в таблице 1.15:
Таблица 1.15 - Значения параметров, рассчитанные аналитическим путём
ПараметрыЗначениеСколько чисел предъявлено (расчет по формуле 1.10)43,00Сколько правильных ответов5,00Сколько ошибочных ответов24,00Число запаздываний ответа14,00Среднее время ответа (расчет по формуле 1.11)6,17Максимальное время ответа5,75Минимальное время ответа0,75Балл по качеству (расчет по формуле 1.12)0,12 Программный блок после прохождения тестирования рассчитал значения параметров. Данные результаты, полученные программным блоком представлены на рисунке 1.29.
Рисунок 1.29 - Значения параметров, рассчитанные программным блоком
Результаты, полученные программным блоком, и результаты, полученные аналитическим путём - идентичны.
7. Установим следующие настройки:
Время решения задачи: 5 мин.
Стартовое время экспозиции числа: 10 сек.
Шаг изменения темпа: 0,4 сек.
В таблице 1.16 представлены результаты прохождения тестирования.
Таблица 1.16 - Результаты тестирования Правильные ответыЗапаздываниеОшибочные ответы40111131605917108 Расчет значений параметров, происходит с учетом результатов тестирования. Значения, полученные мной аналитическим путём, предъявлены в таблице 1.17:
Таблица 1.17 - Значения параметров, рассчитанные аналитическим путём
ПараметрыЗначениеСколько чисел предъявлено (расчет по формуле 1.10)67,00Сколько правильных ответов31,00Сколько ошибочных ответов22,00Число запаздываний ответа14,00Среднее время ответа (расчет по формуле 1.11)5,47Максимальное время ответа10,00Минимальное время ответа0,80Балл по качеству (расчет по формуле 1.12)0,47 Программный блок после прохождения тестирования рассчитал значения параметров. Данные результаты, полученные программным блоком представлены на рисунке 1.30.
Рисунок 1.30 - Значения параметров, рассчитанные программным блоком
Результаты, полученные программным блоком, и результаты, полученные аналитическим путём - идентичны.
8. Установим следующие настройки:
Время решения задачи: 60 мин.
Стартовое время экспозиции числа: 3 сек.
Шаг изменения темпа: 0,5 сек.
В таблице 1.18 представлены результаты прохождения тестирования.
Таблица 1.18 - Результаты тестирования Правильные ответыЗапаздываниеОшибочные ответы005061407061913850412060119901811301392108201201560411101140111051085941048741303111197512011701101543989101 Расчет значений параметров, происходит с учетом результатов тестирования. Значения, полученные мной аналитическим путём, предъявлены в таблице 1.19:
Таблица 1.19 - Значения параметров, рассчитанные аналитическим путём
ПараметрыЗначениеСколько чисел предъявлено (расчет по формуле 1.10)474,00Сколько правильных ответов163,00Сколько ошибочных ответов176,00Число запаздываний ответа135,00Среднее время ответа (расчет по формуле 1.11)10,60Максимальное время ответа15,50Минимальное время ответа0,50Балл по качеству (расчет по формуле 1.12)0,35 Программный блок после прохождения тестирования рассчитал значения параметров. Данные результаты, полученные программным блоком представлены на рисунке 1.31.
Рисунок 1.31 - Значения параметров, рассчитанные программным блоком
Результаты, полученные программным блоком, и результаты, полученные аналитическим путём - идентичны.
1.6.6. Проверка отображения личных данных и параметров в табличном виде после прохождения теста
Проверка выполнения указанной функции выполняется следующими образами:
1. после прохождения теста, нажать кнопку Посмотреть статистику - появится таблица с результатами тестирования (рис. 1.32).
2. после успешного запуска программного блока выбрать кнопку Статистика, ввести требуемые данные, после чего, следует нажать Посмотреть статистику - появится таблица с результатами тестирования (рис. 1.32).
Рисунок 1.32 - Просмотр статистики (таблица)
Проверка считается завершенной, потому что вышеперечисленная последовательность действий оператора соответствует выполнению данной функции.
1.6.7. Проверка отображения и сохранения графика изменения темпа пользователя после прохождения теста
1.6.7.1. Проверка отображения графика изменения темпа пользователя
Проверка выполнения указанной функции выполняется следующим образом:
* при просмотре статистики в таблице следует щелкнуть по выбранной строке, вследствие чего отобразиться график изменения темпа пользователя (рис. 1.33). Рисунок 1.33 - Просмотр статистики (таблица и график)
Проверка считается завершенной, потому что вышеперечисленная последовательность действий оператора соответствует выполнению данной функции.
1.6.7.2. Проверка корректности построения графика изменения темпа пользователя
Корректность построения графика проверяется визуальным сравнением изменения кривизны графика и результатов прохождения тестирования:
* максимальное времени ответа должно соответствовать наибольшему значению на графике;
* минимальное времени ответа должно соответствовать наименьшему значению на графике; * изменения кривизны графика должно совпадать с получением правильных и ошибочных ответов или с их отсутствием;
* график должен отображать установленные значения настроек.
Корректность построения графика проверяется по 8 случаями, представленных в 1.6.5. Проверка расчета параметров, требующихся для статистики.
1. Результаты прохождения тестирования представлены в 1.6.5. Проверка расчета параметров, требующихся для статистики (в таблицах 1.4 и 1.5). На основании данных был построен следующий график изменения темпа пользователя (рис. 1.34) Рисунок 1.34 - График изменения темпа (проверка №1)
2. Результаты прохождения тестирования представлены в 1.6.5. Проверка расчета параметров, требующихся для статистики (в таблицах 1.6 и 1.7). На основании данных был построен следующий график изменения темпа пользователя (рис. 1.35) Рисунок 1.35 - График изменения темпа (проверка №2)
3. Результаты прохождения тестирования представлены в 1.6.5. Проверка расчета параметров, требующихся для статистики (в таблицах 1.8 и 1.9). На основании данных был построен следующий график изменения темпа пользователя (рис. 1.36) Рисунок 1.36 - График изменения темпа (проверка №3)
4. Результаты прохождения тестирования представлены в 1.6.5. Проверка расчета параметров, требующихся для статистики (в таблицах 1.10 и 1.11). На основании данных был построен следующий график изменения темпа пользователя (рис. 1.37) Рисунок 1.37 - График изменения темпа (проверка №4)
5. Результаты прохождения тестирования представлены в 1.6.5. Проверка расчета параметров, требующихся для статистики (в таблицах 1.12 и 1.13). На основании данных был построен следующий график изменения темпа пользователя (рис. 1.38) Рисунок 1.38 - График изменения темпа (проверка №5)
6. Результаты прохождения тестирования представлены в 1.6.5. Проверка расчета параметров, требующихся для статистики (в таблицах 1.14 и 1.15). На основании данных был построен следующий график изменения темпа пользователя (рис. 1.39) Рисунок 1.39 - График изменения темпа (проверка №6)
7. Результаты прохождения тестирования представлены в 1.6.5. Проверка расчета параметров, требующихся для статистики (в таблицах 1.16 и 1.17). На основании данных был построен следующий график изменения темпа пользователя (рис. 1.40) Рисунок 1.40 - График изменения темпа (проверка №7)
8. Результаты прохождения тестирования представлены в 1.6.5. Проверка расчета параметров, требующихся для статистики (в таблицах 1.18 и 1.19). На основании данных был построен следующий график изменения темпа пользователя (рис. 1.41) Рисунок 1.41 - График изменения темпа (проверка №8)
Проверка считается завершенной, потому что график изменения темпа пользователя отображает результаты прохождения тестирования:
* максимальное времени ответа соответствует наибольшему значению на графике;
* минимальное времени ответа соответствует наименьшему значению на графике; * изменения кривизны графика совпадает с получением правильных и ошибочных ответов или с их отсутствием;
* график отображает учет значений настроек (стартовое время экспозиции числа и т.д.).
А значит, построение графика происходит корректно, что соответствует выполнению данной функции.
1.6.7.3. Проверка сохранения графика изменения темпа пользователя
Проверка выполнения указанной функции выполняется следующим образом:
* при просмотре статистике, и успешно отображении графика необходимо нажать кнопку Сохранить график, далее откроется окно "Сохранить как" (рис. 1.42), где следует ввести Имя файла и нажать Сохранить.
Рисунок 1.42 - Сохранение графика
Проверка считается завершенной, потому что вышеперечисленная последовательность действий оператора соответствует выполнению данной функции.
1.6.8. Проверка сохранения личных данных пользователя и параметров в файлы
Проверка выполнения функции выполняется следующим образом:
* визуальное сравнение введенных личных данных пользователя и сохраненных данных (в файл User_Test.csv);
* визуальное сравнение рассчитанных параметров (аналитическим путем) и параметров, полученных программным блоком (сохраненные в User_Test.csv).
Результаты прохождения тестирования представлены в 1.6.5. Проверка расчета параметров, требующихся для статистики. В таблице 1.4 произведен расчет параметров аналитическим путем, на рисунке 1.24 предъявлены результаты блока тестирования. В силу того, что результаты блока тестирования выводятся из файла User_Test.csv, то можно сделать вывод, что сохранение параметров происходит корректно.
Аналогично и для остальных 7 проверок - сохранение параметров происходит корректно. Проверка считается завершенной, потому что сохранение личных данных пользователя и параметров в файлы происходит корректно, что соответствует выполнению данной функции.
1.6.9. Результаты тестовых испытаний
Для наглядности результаты тестовых испытаний предъявим в виде таблицы 1.20, где будут перечислены проводимые тестовые испытания и отмечен положительный или отрицательный результат каждого вида испытания.
Таблица 1.20 - Результаты тестовых испытаний
Проводимые тестовые испытанияРезультаты испытанийПроверка предоставления инструкции+Проверка обеспечения ввода личных данных пользователя+Проверка обеспечения ввода дополнительных настроек +Проверка обеспечения режима тестирования+Проверка расчета параметров при:+время решения задачи, минстартовое время экспозиции числа, сшаг изменения темпа, сналичие правильных ответов наличие ошибочных ответов 130,05++220,15++310,40+150,50+++230,10+++310,25+++5100,40+++6030,50+++Проверка сохранения личных данных пользователя и параметров в файлы+Проверка отображения личных данных и параметров в табличном виде после прохождения теста+Проверка отображения и сохранения графика изменения темпа пользователя после прохождения теста+ 1.7. Разработка руководства оператора
1.7.1. Назначение программы
1.7.1.1. Функциональное назначение
Функциональным назначением программного блока является решение задач психологических служб в образовании, управлении персоналом и личном использовании.
1.7.1.2. Эксплуатационное назначение
Программный блок должен эксплуатироваться в профильных подразделениях на объектах Заказчика.
Конечными пользователями программного блока должны являться сотрудники профильных подразделений объектов Заказчика.
1.7.1.3. Состав функций
Программный блок обеспечивает возможность выполнения перечисленных ниже функций:
1. предоставление инструкции;
2. обеспечение ввода личных данных пользователя, требующихся для статистики;
3. обеспечение ввода дополнительных настроек (таких как время решения задачи, стартовое время экспозиции числа, шаг изменения темпа);
4. обеспечение режима тестирования;
5. расчет параметров, требующихся для статистики;
6. отображение личных данных и параметров в табличном виде после прохождения теста;
7. отображение и сохранение графика изменения темпа пользователя после прохождения теста;
8. сохранение личных данных пользователя и параметров в файлы;
1.7.2. Условия выполнения программы
1.7.2.1. Климатические условия эксплуатации
Климатические условия эксплуатации, при которых должны обеспечиваться заданные характеристики, должны удовлетворять требованиям, предъявляемым к техническим средствам в части условий их эксплуатации.
1.7.2.2. Минимальный состав технических средств
В состав технических средств должен входить IBM-совместимый персональный компьютер (ПЭВМ), включающий в себя:
* процессор Pentium-IV с тактовой частотой - 3,2 ГГц;
* оперативную память объемом 1 Гб;
1.7.2.3. Минимальный состав программных средств
Системные программные средства, используемые программой, должны быть представлены лицензионной локализованной версией операционной системы.
1.7.3. Требования к пользователю
Для работы программного блока минимум требуется один конечный пользователь (оператор).
Конечный пользователь программного блока (оператор) должен обладать практическими навыками работы с графическим пользовательским интерфейсом операционной системы.
1.7.4. Выполнение программы
1.7.4.1. Загрузка и запуск программы
Загрузка и запуск программы осуществляется способами, детальные сведения о которых изложены в Руководстве пользователя операционной системы.
В случае успешного запуска программы на рабочем столе будет отображено главное окно программы (рис. 1.43).
Рисунок 1.43 - Главное окно программного блока 1.7.4.2. Выполнение программы
1.7.4.2.1. Выполнение функции предоставления инструкции
Выполнение указанной функции возможно следующими способами: 1. выбором кнопки Инструкция (рис. 1.44);
Рисунок 1.44 - Инструкция к тестированию
2. последовательным выбором пунктов меню Файл - Инструкция (рис. 1.45);
В результате будет отображено окно "Инструкция", которым можно свернуть и пользоваться во время тестирования.
Рисунок 1.45 - Инструкция к тестированию
1.7.4.2.2. Выполнение функции обеспечения ввода личных данных пользователя
Выполнение указанной функции возможно следующими способами:
1. При успешном завершении загрузки и запуска (см. п. Загрузка и запуск программы) следует выбрать Тестирование (рис. 1.46).
Далее необходимо заполнить соответствующие поля для регистрации:
* имя;
* фамилия;
* отчество;
* возраст;
* группа;
Рисунок 1.46 - Регистрация испытуемого
В случае если не все поля заполнены, программный блок не начнет тестирование, предъявив сообщение об ошибке.
2. При успешном завершении загрузки и запуска (см. п. Загрузка и запуск программы) следует выбрать Статистика (рис. 1.47).
Далее необходимо заполнить соответствующие поля для поиска:
* имя;
* фамилия;
* отчество;
Рисунок 1.47 - Поиск испытуемого
В случае если не все поля заполнены, программный блок не выдаст статистику, предъявив сообщение об ошибке.
1.7.4.2.3. Выполнение функции обеспечения ввода дополнительных настроек Выполнение указанной функции возможно следующим способом: последовательным выбором пунктов меню Файл - Настройка (рис. 1.48).
В результате будет отображено окно "Настройка". В случае необходимости следует ввести требуемые настройки ("Время решение задачи", "Стартовое время экспозиции числа", "Шаг изменения темпа").
Для выбора необходимо кликнуть по выбранному значению, чтобы оно было подсвечено. На рисунке ниже изображено, что для "Время решения задачи" выбрано значение 1 минута, а для "Стартовое время экспозиции числа" и "Время тема" - выбор еще не сделан.
Рисунок 1.48 - Настройка
Когда требуемые параметры будут выбраны, следует нажать кнопку Сохранить.
1.7.4.2.4. Выполнение функции обеспечения режима тестирования и сохранения личных данных пользователя и параметров
Выполнение указанной функции возможно только после заполнения регистрационных данных пользователя (см. п. Выполнение функции обеспечения ввода личных данных пользователя). Если все поля заполнены, то следует нажать кнопку Начать тест.
После чего пользователь может проходить тест, руководствуясь прочитанной инструкцией (Файл - Инструкция).
По истечении времени тестирования появится сообщение "Тест завершен" (рис. 1.49).
Рисунок 1.49 - Окончание тестирования
Сохранение личных данных, параметров, изменение темпа во время тестирования в файлы выполняется автоматически. После чего, появится кнопка Посмотреть статистику. 1.7.4.2.5. Выполнение функции отображения личных данных и параметров 1.7.4.2.1.1. Просмотр статистики непосредственно после прохождения теста
После прохождения теста, необходимо нажать кнопку Посмотреть статистику (рис. 1.49). Далее появится таблица с результатами тестирования (рис. 1.50).
Рисунок 1.50 - Просмотр статистики (таблица)
1.7.4.2.1.2. Просмотр статистики
Для просмотра статистики, необходимо после запуска программы выбрать кнопку Статистика. В полях необходимо ввести требуемые данные, а именно Имя, Фамилия и Отчество (см. п. Выполнение функции обеспечения ввода личных данных пользователя, п.2). После чего, следует нажать Посмотреть статистику и появится таблица с результатами тестирования (рис. 1.50).
Если данные не будут введены, программный блок выдаст соответствующую ошибку.
1.7.4.2.6. Выполнение функции отображения и сохранения графика изменения темпа пользователя При просмотре статистики (см. п. Выполнение функции отображения личных данных и параметров) в таблице следует щелкнуть по выбранной строке, вследствие чего отобразиться график изменения темпа пользователя (рис. 1.51). Рисунок 1.51 - Просмотр статистики (таблица и график)
Для сохранения графика необходимо нажать кнопку Сохранить график. Далее откроется окно "Сохранить как" (рис. 1.52). Рисунок 1.52 - Сохранение графика
Далее следует ввести Имя файла (в примере введено имя: График), после чего следует нажать Сохранить. 1.7.4.3. Завершение работы программы
Выполнение указанной функции возможно любым из перечисленных ниже способов:
1. последовательным выбором пунктов меню Файл - Выход;
2. нажатием кнопки
1.7.5. Сообщения оператору
1.7.5.1. Ошибка сохранения файла
Категорически не рекомендуется вносить изменения в файлы User_Test.csv и User_Tempo.csv. Если требуются данные для обработки, то необходимо сохранить их в отдельный файл Microsoft Office Excel.
Если хотя бы один из файлов, в которые сохраняются данные пользователя (User_Test.csv и User_Tempo.csv), будет открыт, то при запуске теста или при сохранении данных может возникнуть следующая ошибка (рис. 1.53).
Рисунок 1.53 - Ошибка сохранения файла
Для сохранения данных следует закрыть файлы User_Test.csv и User_Tempo.csv и попытаться сохранить снова.
1.7.5.2. Ошибка при регистрации
Если пользователь заполнил не все, предъявленные ему поля, то в случае его дальнейших действий (начала теста или просмотра статистики) программный блок выдаст сообщение об ошибке (рис. 1.54).
Рисунок 1.54 - Ошибка при регистрации
Для успешного продолжения требуемого действия следует ввести необходимые для этого данные.
1.7.5.3. Сообщение при завершении работы во время теста
Если тестирование еще не закончено, а пользователь попытается завершить работу программного блока, то появиться следующие сообщение (рис. 1.55).
Рисунок 1.55 - Ошибка Сообщение при завершении работы
Если пользователь уверен, в том, что он хочет покинуть тестирование, то следует нажать Yes, в обратном случае - No.
2. Экологическая часть и безопасность жизнедеятельности
2.1. Исследование возможных опасных и вредных факторов, возникающих при работе с ЭВМ, и их воздействие на пользователей
Любой производственный процесс, в том числе и работа с вычислительной техникой, сопряжен с появлением опасных и вредных факторов.
Опасным называется фактор, воздействие которого на человека вызывает травму, то есть внезапное повреждение организма в результате воздействия внешних факторов. Вредным называется фактор, длительное воздействие которого на человека, приводит к профессиональным заболеваниям. [17]
Факторы различаются в зависимости от источника возникновения. 2.1.1. Исследование возможных опасных и вредных факторов, возникающих при работе с ЭВМ
Питание ЭВМ производится от сети 220В. Так как безопасным для человека напряжением является напряжение 40В, то при работе на ЭВМ опасным фактором является поражение электрическим током.
В дисплее ЭВМ высоковольтный блок строчной развертки и выходного строчного трансформатора вырабатывает высокое напряжение до 25кВ для второго анода электронно - лучевой трубки. А при напряжении от 5 до 300 кВ возникает рентгеновское излучение различной жесткости, которое является вредным фактором при работе с ПЭВМ (при 15 - 25 кВ возникает мягкое рентгеновское излучение). Развертка ЭЛТ создается напряжением с частотой:
* 85 Гц (кадровая развертка);
* 42 кГц (строчная развертка).
Следовательно, пользователь попадает в зону электромагнитного излучения низкой частоты, которое является вредным фактором. Во время работы компьютера дисплей создает ультрафиолетовое излучение, при повышении плотности которого > 10 Вт/м2, оно становиться для человека вредным фактором. Его воздействие особенно сказывается при длительной работе с компьютером. Во время работы компьютера вследствие явления статического электричества происходит электризация пыли и мелких частиц, которые притягивается к экрану. Вывод: При эксплуатации перечисленных элементов вычислительной техники могут возникнуть следующие опасные и вредные факторы:
* поражение электрическим током;
* рентгеновское излучение;
* электромагнитное излучение;
* ультрафиолетовое излучение;
* статическое электричество.
2.1.2. Анализ влияния опасных и вредных факторов на пользователя
2.1.2.1. Влияние электрического тока
Электрический ток, воздействуя на человека, приводит к травмам. Такими травмами являются:
* Общие травмы:
o судорожное сокращение мышц, без потери сознания;
o судорожное сокращение мышц, с потерей сознания;
o потеря сознания с нарушением работы органов дыхания и кровообращения;
o состояние клинической смерти;
* Местные травмы:
o электрические ожоги;
o электрический знак;
o электро-автольмия.
Проходя через тело человека, электрический ток оказывает следующие воздействия: * термическое (нагрев тканей и биологической среды);
* электролитическое (разложение крови и плазмы);
* биологическое (способность тока возбуждать и раздражать живые ткани организма);
* механическое (возникает опасность механического травмирования в результате судорожного сокращения мышц).
Наиболее опасным переменным током является ток 20 - 100 Гц. Так как компьютер питается от сети переменного тока частотой 50 Гц, то этот ток является опасным для человека. [18, 19]
2.1.2.2. Влияние рентгеновского излучения
В организме происходит:
* торможение функций кроветворных органов;
* нарушение нормальной свертываемости крови и т.д. 2.1.2.3. Влияние электромагнитных излучений низкой частоты
Электромагнитные поля с частотой 60 Гц и выше могут инициировать изменения в клетках животных (вплоть до нарушения синтеза ДНК). В отличие от рентгеновского излучения, электромагнитные волны обладают необычным свойством: опасность их воздействия при снижении интенсивности не уменьшается, мало того, некоторые поля действуют на клетки тела только при малых интенсивностях или на конкретных частотах. Оказывается переменное электромагнитное поле, совершающее колебания с частотой порядка 60 Гц, вовлекает в аналогичные колебания молекулы любого типа, независимо от того, находятся они в мозге человека или в его теле. Результатом этого является изменение активности ферментов и клеточного иммунитета, причем сходные процессы наблюдаются в организмах при возникновении опухолей.
2.1.2.4. Влияние ультрафиолетового излучения
Ультрафиолетовое излучение - электромагнитное излучение в области, которая примыкает к коротким волнам и лежит в диапазоне длин волн ~ 200 - 400 нм.
Различают следующие спектральные области:
* 200 - 280 нм - бактерицидная область спектра.
* 280 - 315 нм - Зрительная область спектра (самая вредная).
* 315 - 400 нм - Оздоровительная область спектра.
Синий люминофор экрана монитора вместе с ускоренными в электронно-лучевой трубке электронами являются источниками ультрафиолетового излучения. Воздействие ультрафиолетового излучения сказывается при длительной работе за компьютером. Основными источниками поражения являются глаза и кожа.
Энергетической характеристикой является плотность потока мощности [Вт/м2].
Биологический эффект воздействия определяется внесистемной единицей [эр]. 1 эр - это поток (280 - 315 нм), который соответствует потоку мощностью 1 Вт. Воздействие ультрафиолетового излучения сказывается при длительной работе за компьютером. Максимальная доза облучения:
* 7,5 мэр·ч/м2 за рабочую смену;
* 60 мэр·ч/ м2 в сутки.
При длительном воздействии и больших дозах могут быть следующие последствия:
* серьезные повреждения глаз (катаракта);
* рак кожи;
* кожно-биологический эффект (гибель клеток, мутация, канцерогенные накопления);
* фототоксичные реакции.
2.1.2.5. Влияние статического электричества
Результаты медицинских исследований показывают, что электризованная пыль может вызвать воспаление кожи, привести к появлению угрей и даже испортить контактные линзы. Кожные заболевания лица связаны с тем, что наэлектризованный экран дисплея притягивает частицы из взвешенной в воздухе пыли, так, что вблизи него "качество" воздуха ухудшается и оператор вынужден работать в более запыленной атмосфере. Таким же воздухом он и дышит.
Особенно стабильно электростатический эффект наблюдается у компьютеров, которые находятся в помещении с полами, покрытыми синтетическими коврами.
При повышении напряженности поля Е > 15 кВ/м, статическое электричество может вывести из строя компьютер. [22]
Вывод: Из анализа воздействий опасных и вредных факторов на организм человека следует необходимость защиты от них.
2.2. Способы защиты пользователей от воздействия на них опасных и вредных факторов
2.2.1. Методы и средства защиты от поражения электрическим током
В помещении вычислительного центра существует опасность прикосновения одновременно к предметам, имеющим соединения с землей, и металлическому корпусу электрооборудования. Как основной способ борьбы с опасностью поражения электрическим током (от поражения напряжением прикосновения) используется зануление. Зануление - это преднамеренное соединение нетоковедущих металлических частей, которые могут оказаться под напряжением в результате повреждения изоляции, с нулевым защитным проводником (применяется в трехфазных сетях с заземленной нейтралью в установках до 1000 вольт, см. рис. 2.1). [19]
Рисунок 2.1 - Защитное зануление Для защиты используется нулевой защитный провод. В сеть вставляется предохранитель (автомат). Принцип защиты пользователей при занулении заключается в отключении сети за счет тока короткого замыкания, который вызывает перегорание предохранителя и отключает сеть.
При нормальном режиме работы сети ток, текущий через человека, можно рассчитать по формуле 2.1.
Iч = Uф/(Rч+r0)(2.1)
где Iч - ток, протекающий через человека [А];
Uф - фазовое напряжение (Uф = 220 В), [В];
Rч - сопротивление тела человека (Rч = 1000 Ом), [Ом];
r0 - сопротивление заземлителя (сопротивление обуви ~ 10 Ом), [Ом];
Так как r0 << Rч - следовательно, сопротивление заземлителя можно в расчет не брать.
Получается, что практически все Uф применено к телу человека и, следовательно, получается по формуле 2.2:
Iч = Uф/Rч(2.2)
Iч = 220/1000 = 0,22 А
Допустимые значения приложенного напряжения и протекающего через человека тока соответственно равны 36 В и 0,006 А. Полученные же при расчете цифры горазда превосходят эти значения (220 В и 0,22 А).
Рассчитаем ток короткого замыкания (Iкз) по формуле 2.3 при срабатывании защитной схемы зануления и параметры предохранителя (Iном), используемого в схеме.
(2.3)
где Uф - фазное напряжение сети питания (Uф = 220 В), [В];
rТ - паспортная величина сопротивления обмотки трансформатора, (rТ = 0,312 Ом), [Ом].
Rобщ = r1 + r2 + r3(2.4)
где (2.5)
ρ - удельное сопротивление нулевого защитного проводника (для меди ρ = 0,0175 Ом·м), [Ом·м];
l - длина проводника, [м];
S - площадь поперечного сечения нулевого защитного проводника (S = 1 мм2), [мм2].
Возьмем l1 = 850 м, l2 = 150 м, l3 = 70 м;
r1 = 0,0175·850/1 = 14,875 Ом
r2 = 0,0175·150/1 =2,625 Ом
r3 = 0,0175·70/1 = 1,225 Ом
Rобщ = 14,875 Ом + 2,625 Ом + 1,225 Ом = 18,725 Ом
По величине Iкз определим, с каким Iном необходимо в цепь питания ЭВМ включать автомат.
, следовательно (2.6)
Где k - коэффициент, указывающий тип защитного устройства (в зависимости от типа автомата: k=3 для автомата с электромагнитным расщепителем).
Iном = 11,68 А / 3 = 3,9 А
Вывод: Для отключения ПЭВМ от сети в случае короткого замыкания или других неисправностей в цепь питания ПЭВМ необходимо ставить автомат с Iном = 4 А.
2.2.2. Методы и средства защиты от рентгеновского излучения
Существует 3 основных способа защиты от рентгеновского излучения:
* время (работа не более 4 часов);
* расстояние (не менее 50 см от экрана);
* экранирование.
Необходимо придерживаться строгого графика работы - время работы за компьютером не должно превышать половины рабочей смены (4 часа).
Для рентгеновского излучения - предельно допустимая доза для людей, которые постоянно или временно работают непосредственно с источником ионизирующих излучений не должна превышать D = 0,5 бэр/год в год.
Определим уровень мощности дозы на различных расстояниях от экрана монитора по формуле 2.7:
Рri = Р0·е-·r (2.7)
гдеР0 - мощность дозы излучения на расстоянии 5 см от экрана, мкР/ч; Prj - уровень мощности рентгеновского излучения на заданном расстоянии, мкР/ч;
r - расстояние от экрана, см;
- коэффициент ослабления воздухом рентгеновских лучей, см-1. Для расчета возьмем = 3,14·10-2 см-1.
Таблица 2.1 - Зависимость уровня мощности дозы от расстояния до источника
r, см 5 10 30 40 50 60 Рrj, мкР/ч 100 73 53 39 28 21 Принимая среднее расстояние между пользователем и монитором за 60 см и зная, что годовая доза рентгеновского излучения опасная для здоровья равна 0,5Р - можно рассчитать по формуле 2.8 реальную дозу радиации получаемую пользователем за год:
Dr = Di · n · n1 · n2 (2.8)
где Dr - доза радиации за год;
n - нормируемое ежедневное время работы за монитором равное 4ч; n1 - количество рабочие дней в неделю (5 дней); n2 - количество рабочих недель в году (в среднем 43 недели); Di - мощность дозы рентгеновского излучения на расстоянии 60 cм; Dr = 15,2 · 4 · 5 · 43 = 0,013Р (бэр).
0,013Р < 0,5Р (предельно допустимая доза 0,5Р значительно превосходит полученное значение дозы).
Вывод: Оператору рекомендуется находиться от монитора на расстоянии не менее 60 см.
2.2.3. Методы и средства защиты от ультрафиолетового излучения
Для защиты от ультрафиолетового излучения:
* защитный фильтр или специальные очки (толщина стекол 2мм, насыщенных свинцом);
* одежда из фланели и поплина;
* побелка стен и потолка (ослабляет на 45-50%).
* мощность люминисцентных ламп не должна превышать 40 Вт
2.2.4. Методы и средства защиты от электромагнитных полей низкой частоты
Защита от электромагнитных излучений осуществляется временем, расстоянием, экранированием:
* время работы - не более 4 часов;
* расстояние - не менее 50 см от источника;
* экранирование.
Относительно электромагнитных излучений низкой частоты можно отметить, что в современных мониторах нижний предел спектра смещен в сторону высоких частот посредством увеличения частоты кадровой развертки до 90 - 120Гц и значительно превышает наиболее опасную частоту - 60 Гц.
Чтобы уменьшить опасность надо:
* не работать с открытой ЭВМ;
* соблюдать расстояния между соседними ЭВМ (не < 1,5м)
* исключить пребывание сбоку от монитора (≥ 1,2 м).
2.2.5. Методы и средства защиты от статического электричества
Электростатические поля вызывают скопление пыли, попадающей на лицо и глаза оператора.
Норма: 15 кВ/м.
Защита от статического электричества и вызванных им явлений осуществляется следующими способами:
* наличие контурного заземления;
* использование нейтрализаторов статического электричества;
* скорость подвижного воздуха в помещении должна быть не более 0,2 м/с;
* отсутствие синтетических покрытий;
* ежедневная влажная уборка помещения вычислительного центра для уменьшения количества пыли;
* проветривание без присутствия пользователя. [21,22]
Вывод: Выбранные методы и способы защиты от опасных и вредных факторов обеспечивают защиту пользователей, работающих с вычислительной техникой.
2.3. Эргономические требования к рабочим местам пользователей
Выполнение эргономических рекомендаций по эксплуатации компьютеров позволяет значительно снизить вредные воздействия находящихся в эксплуатации ПЭВМ. В первую очередь безопасность при работе с ПЭВМ может быть обеспечена за счет рационального размещения компьютеров в помещениях, оптимальной с точки зрения эргономики организации рабочего дня пользователей, а также за счет применения средств повышения контраста изображения и защиты от бликов на экране, электромагнитных излучений и электростатического поля.
Рекомендации охватывают следующий круг вопросов:
* Требования к помещениям и оборудованию рабочих мест.
* Рекомендации по защите пользователей от излучений ПЭВМ.
2.3.1. Требования к помещениям, оборудованию рабочих мест и освещенности
Помещения должны иметь естественное и искусственное освещение. Желательна ориентация оконных проемов на север или северо-восток. Оконные проемы должны иметь регулируемые жалюзи или занавеси, позволяющие полностью закрывать оконные проемы. Занавеси следует выбирать одноцветные, гармонирующие с цветом стен, выполненные из плотной ткани и шириной в два раза больше ширины оконного проема. Для дополнительного звукопоглощения занавеси следует подвешивать в складку на расстоянии 15 20 см от стены с оконными проемами. [18, 23]
Рабочие места по отношению к световым проемам должны располагаться так, чтобы естественный свет падал сбоку, преимущественно - слева.
Для устранения бликов на экране, также как чрезмерного перепада освещенности в поле зрения, необходимо удалять экраны от яркого дневного света.
Рабочие места должны располагаться от стен с оконными проемами на расстоянии не менее 1 м. Освещенность на рабочем месте с ПЭВМ должна быть не менее 300 лк.
Поверхность пола в помещениях должна бать ровной, без выбоин, нескользкой, удобной для чистки и влажной уборки, обладать антистатическими свойствами. [20]
Рекомендуемый микроклимат в помещениях при работе с ПЭВМ:
* температура 19 21С;
* относительная влажность воздуха 55 62%.
Площадь на одно рабочее место должна составлять примерно 6 м2 (объем - не меньше 20м3).
Конструкция рабочего места пользователя ПЭВМ (при работе сидя) должна обеспечивать поддерживание оптимальной рабочей позы с такими эргономичными характеристиками: * ступня ног - на полу или на подставке для ног; * бедра - в горизонтальной плоскости; * предплечье - вертикально; * локти - под углом 70 - 90 к вертикальной плоскости; * запястья согнуты под углом не больше 20 относительно горизонтальной плоскости;
* наклон головы - 15 - 20 относительно вертикальной плоскости;
* монитор должен располагаться напротив глаз пользователя и на оптимальном расстоянии от них, но не ближе 60 см. [20,23,24]
2.3.2. Рекомендации по защите пользователей от излучений ПЭВМ
Если в помещении эксплуатируется более одного компьютера, то следует учесть, что на пользователя одного компьютера могут воздействовать излучения от других ПЭВМ, в первую очередь со стороны боковых и задних стенок дисплея. Учитывая, что от излучения со стороны экрана дисплея можно защититься применением специальных фильтров, необходимо, чтобы пользователь размещался от боковых и задних стенок других дисплеев на расстоянии не менее 1,5 м. [18]
На мониторы рекомендуется устанавливать защитные фильтры, обеспечивающие защиту от вредных воздействий монитора в электромагнитном спектре и позволяющие уменьшить блик от электронно-лучевой трубки, а также повысить читаемость символов. 2.4. Выводы
Соблюдение перечисленных методов и способов защиты от опасных и вредных факторов, а также соблюдение эргономических требований позволяют обеспечить полную безопасность пользователя при работе с вычислительной техникой.
3. Заключение
В результате проделанной работы мной был разработан программный блок тестирования пользователя на его способность к концентрации и переключению внимания. Учитывая требования:
* программный блок разработан по заданной методике; * программный блок отображает результаты испытуемого и график изменения темпа во время тестирования;
* график изменения темпа предъявления вопросов может быть сохранен в файл;
* результаты тестирования сохраняются в файлы CSV;
* программный блок был реализован под Windows;
* блок работает без инсталляции, дополнительных библиотек и без установки других программных средств.
В связи с поставленными задачами, мной был выбрал язык С++ для реализации программного блока (в качестве интегрированной среды разработки была взята среда Borland C++ Buider).
Для достижения поставленных целей был разработан максимально удобный пользовательский интерфейс. Для сокращения времени на сбор статистики результаты сохраняются в файлы CSV, которые можно редактировать в Microsoft Office Excel.
По результатам тестовых испытаний, программный блок прошел все проводимые проверки и работает корректно.
Программный блок тестирования был внедрен в научно-исследовательскую деятельность Института психологии, социологии и социальных отношений.
4. Список использованной литературы
1. Архангельский А.Я., Тагин М.А. Программирование в C++ Builder 6 и 2006.- М.: Бином, 2007.- 1181 с.
2. Культин Н.Б. Самоучитель C++ Builder.- СПб.: БХВ-Петербург, 2004.
3. Культин Н.Б. C++Builder в задачах и примерах. - СПб.: БХВ-Петербург, 2005
4. Кризис внимания. Кризис внимания в информационную эпоху. Внимание человека в современном мире. Перенасыщение информацией. Бытовой шум. Внимание, стрессы и депрессии.- М., http://www.effecton.ru/146.html
5. Внимание и цивилизация. Воздействие информационной цивилизации на развитие внимания. Самопрограммирование и внимание. Развитие внимания с помощью тестирования и тренировки. Активное внимание. Пассивное внимание.- М., http://www.effecton.ru/378.html
6. Свойства внимания. Основные свойства внимания, рассеянность, внимательность.- М., http://www.effecton.ru/264.html
7. Виды внимания Произвольное и непроизвольное внимание.- М., http://www.effecton.ru/263.html
8. Психологическое тестирование. Экспериментальный метод психодиагностики. Проведение психологических исследований.- М., http://www.effecton.ru/198.html
9. Компьютерная психодиагностика. Психодиагностика и компьютерные технологии.- М., http://www.effecton.ru/266.html
10. Внимание. Тесты. Развитие. Психологические тесты внимания и развитие внимания. Диагностика и упражнения для внимания.- М., http://www.effecton.ru/11.html
11. Тест "Бухгалтер". Психологическое тестирование переключения внимания. Тест Иоселиани.- М., http://www.effecton.ru/40.html
12. Психологические тесты. Управление персоналом, образование, личное развитие. Тесты. Внимание. Память. IQ-тесты. Effecton Studio. Эффектон.- М., http://www.effecton.ru/
13. ГОСТ 19.301-79 Программа и методика испытаний. Требования к содержанию и оформлению. - Введ. 01.01.81 - Группа Т55.
14. ГОСТ 19.505-79 Руководство оператора. Требования к содержанию и оформлению. - Введ. 01.01.80 - Группа Т55.
15. ГОСТ 19.201-78 Техническое задание. Требования к содержанию и оформлению. - Введ. 01.01.80 - Группа Т55.
16. ГОСТ 19.701-90 Схемы алгоритмов, программ данных и систем. - Введ. 01.01.92 - Группа Т5.
17. ГОСТ 12.0.003-86. Опасные и вредные производственные факторы.
18. Сибаров Ю. Г. и др. Охрана труда на ВЦ. М., 1989.
19. ГОСТ 12.1.030-81. Электробезопасность. Защитное заземление, зануление.
20. САНПиН-1340-03. Гигиенические требования к персональным ЭВМ и организации работы.
21. ГОСТ ССБТ 12.1.045-84. Электростатические поля. Допустимые условия на рабочем месте.
22. ГОСТ ССБТ 12.1.124-84. Средства защиты от статического электричества.
23. ФЗ РФ №181. 1999 г. "Об основах охраны труда в РФ".
24. Трудовой кодекс РФ
Приложение 1
1.1. Введение
Данная программа создается для решения задач психологических служб в образовании, управлении персоналом и личном использовании.
Таким образом, требуется создать программный блок, который бы тестировал пользователя на способность концентрации и переключения внимания. Методика проведения теста "Непрерывный счет" заключается в последовательном предъявлении испытуемому однозначных цифр от 0 до 9.
Цифры предъявляются в красном или зеленом изображении. Появление красной цифры означает вычитание из предшествующего результата данного числа, соответственно появление зеленой означает сложение. Первая цифра всегда зеленого цвета, и предшествующее число на начало теста принимается равным 0.
Цифры предъявляются в навязанном темпе, в случайном порядке с помощью генератора случайных чисел и высвечиваются в различных частях экрана, но с тем ограничением, что результат как сложения, так и вычитания с предшествующим числом находится в интервале от 0 до 9, т.е. не должен быть отрицательным или двузначным числом. Время предъявления цифры на начало теста задается настройкой параметров перед началом тестирования. Если в течение заданного периода поступает правильный ответ, то предъявляется следующее число красного или зеленого цвета в случайном порядке, а темп предъявления увеличивается на шаг, также предусмотренный настройкой. В случае ошибочного ответа на экране появляется надпись желтого цвета "ОШИБКА! НАЖМИТЕ "...". Высвечивание надписи осуществляется в темпе предшествующего задания, а темп предъявления следующей цифры снижается на шаг, также определяемый настройкой.
Таким образом, успешность или неуспешность выполнения испытуемым операций сложения или вычитания определяет нарастание или снижение темпа предъявления последующего задания. Программа позволит сократить время на проведение тестирования у нескольких пользователей одновременно и сократит время на сбор статистики.
1.1.1. Наименование программы
Наименование - "Непрерывный счет".
1.1.2. Краткая характеристика области применения
Данная программа создается для решения задач психологических служб в образовании, управлении персоналом и личном использовании.
1.2. Основания для разработки
Основанием для разработки программы является задание на дипломное проектирование.
1.3. Требования к программе
1.3.1. Требования к функциональным характеристикам
1.3.1.1. Требования к составу выполняемых функций
* предоставление инструкции;
* обеспечение ввода личных данных пользователя, требующихся для статистики;
* обеспечение ввода дополнительных настроек (таких как время решения задачи, стартовое время экспозиции числа, шаг изменения темпа);
* обеспечение режима тестирования;
* расчет параметров, требующихся для статистики;
* отображение личных данных и параметров в табличном виде после прохождения теста;
* отображение и сохранение графика изменения темпа пользователя после прохождения теста;
* сохранение личных данных пользователя и параметров в файлы;
1.3.1.2. Требования к организации входных данных
* имя;
* фамилия;
* отчество;
* возраст;
* группа;
* время решения задачи (мин) - время теста составляет от 1 до 60 мин;
* стартовое время экспозиции числа (с) - стартовое время предъявления числа изменяется в интервале от 1 до 10 с (с шагом изменения продолжительности равным 1 с);
* шаг изменения темпа (с) - время изменения темпа предъявления следующей цифры после правильного/ошибочного ответа может соответственно увеличиваться/уменьшаться от 0,05 до 0,5 с. 1.3.1.3. Требования к организации выходных данных
* имя;
* фамилия;
* отчество;
* возраст;
* группа;
* дата;
* время;
* время решения задачи;
* стартовое время экспозиции числа;
* шаг изменения темпа;
* сколько чисел предъявлено;
* сколько верных ответов;
* сколько ошибочных ответов;
* число запаздываний;
* среднее время ответа;
* максимальное время ответа;
* минимальное время ответа;
* балл по качеству (количество верных ответов/количество предъявленных чисел);
* номер в таблице темпа.
Помимо вышеперечисленного должно быть предусмотрено сохранение изменения темпа во время тестирования, и на основании этих данных должен быть отображен график изменения темпа испытуемого.
1.3.1.4. Управление программой
Управление программой осуществляется с помощью манипулятора типа мышь и клавиатуры.
1.3.2. Требования к надежности
Входные данные необходимо анализировать с точки зрения их корректности на этапе ввода. В случае ввода некорректных данных программа должна вывести сообщение о некорректности введенных данных и предложить их исправить, при этом, если пользователь не исправляет исходные данные, то программа не должна выполнять следующее действие.
1.3.3. Условия к эксплуатации
1.3.3.1. Требования к квалификации персонала
Для работы программного блока минимум требуется один конечный пользователь (оператор).
Конечный пользователь программного блока (оператор) должен обладать практическими навыками работы с графическим пользовательским интерфейсом операционной системы.
1.3.4. Требования к составу и параметрам технических средств
В состав технических средств должен входить IBM-совместимый персональный компьютер (ПЭВМ), включающий в себя:
* процессор Pentium-IV с тактовой частотой - 3,2 ГГц;
* оперативную память объемом 1 Гб;
1.3.5. Требования к информационной и программной совместимости
1.3.5.1. Требования к исходным кодам и языкам программирования
Исходные коды программы должны быть реализованы на языке C++. В качестве интегрированной среды разработки программы должна быть использована среда Borland C++ Buider.
Для обеспечения независимости блока тестирования от других программных средств необходимо данные сохранять в файлы, которые легко бы редактировались в MS Excel, в случае необходимости.
1.3.5.2. Требования к программным средствам, используемым программой
Системные программные средства, используемые программой, должны быть представлены лицензионной локализованной версией операционной системы. 1.4. Требования к программной документации
1.4.1. Предварительный состав программной документации
Состав программной документации должен включать в себя:
1. Руководство пользователя
2. Текст программы
1.5. Порядок контроля и приемки
Приемо-сдаточные испытания должны проводиться на объекте Заказчика. Контроль и приемка производятся в соответствии с программой и методикой испытаний.
Приложение 2
Расчет максимального и минимального времени ответа
Время ответа, по сути, это время экспозиции числа (время предъявления вопросов). Следует рассчитать изменение темпа на протяжении всего тестирования. После запаздывания темп не меняется, поэтому данные о запаздывании я решила в таблицах не учитывать. Таким образом, сначала производится расчет времени экспозиции числа поочередно после правильного ответа, затем после ошибочного, затем вновь после правильного и т.д. Для ускорения работы, считать будем время экспозиции числа сразу после нескольких правильных ответов, а не после каждого. Аналогично с ошибочными ответами.
Из полученных данных надо выбрать максимальное и минимальное время ответа. * Выбор максимального времени ответа производится из времени экспозиции числа после ошибочных ответов на каждом этапе и стартового времени экспозиции числа.
* Выбор минимального времени ответа производится из времени экспозиции числа после правильных ответов на каждом этапе и стартового времени экспозиции числа.
1. Расчет по следующим настройкам:
Время решения задачи: 1 мин.
Стартовое время экспозиции числа: 3 сек.
Шаг изменения темпа: 0,05 сек.
В таблице 2.1 представлены результаты прохождения тестирования.
Таблица 2.1 - Результаты тестирования
Правильные ответыЗапаздываниеОшибочные ответы2400 Расчет, производился в MS Excel, представлен в таблице 2.2.
Таблица 2.2 - Результаты расчета
Правильные ответыВремя экспозиции числа после правильных ответов (c)Ошибочные ответыВремя экспозиции числа после ошибочных ответов (c)241,803 Из рассчитанных данных и стартового времени экспозиции числа имеем:
* максимальное время ответа равно 3 с
* минимальное время ответа равно 1,8 с
2. Расчет по следующим настройкам:
Время решения задачи: 2 мин.
Стартовое время экспозиции числа: 2 сек.
Шаг изменения темпа: 0,15 сек.
В таблице 2.3 представлены результаты прохождения тестирования.
Таблица 2.3 - Результаты тестирования
Правильные ответыЗапаздываниеОшибочные ответы0029 Расчет, производился в MS Excel, представлен в таблице 2.4.
Таблица 2.4 - Результаты расчета
Правильные ответыВремя экспозиции числа после правильных ответов (c)Ошибочные ответыВремя экспозиции числа после ошибочных ответов (c)02296,35 Из рассчитанных данных и стартового времени экспозиции числа имеем:
* максимальное время ответа равно 6,35 с
* минимальное время ответа равно 2 с
3. Расчет по следующим настройкам:
Время решения задачи: 3 мин.
Стартовое время экспозиции числа: 1 сек.
Шаг изменения темпа: 0,4 сек.
В таблице 2.5 представлены результаты прохождения тестирования.
Таблица 2.5 - Результаты тестирования
Правильные ответыЗапаздываниеОшибочные ответы01790 В случае, если во время тестирования испытуемый не дал ответа, то темп на протяжении тестирования не менялся. Значит, максимальное и минимальное время ответа будет равняться времени решения задачи.
Из рассчитанных данных и стартового времени экспозиции числа имеем:
* максимальное время ответа равно 180 с
* минимальное время ответа равно 180 с
4. Расчет по следующим настройкам:
Время решения задачи: 1 мин.
Стартовое время экспозиции числа: 5 сек.
Шаг изменения темпа: 0,5 сек.
В таблице 2.6 представлены результаты прохождения тестирования.
Таблица 2.6 - Результаты тестирования
Правильные ответыЗапаздываниеОшибочные ответы8111112110155 Расчет, производился в MS Excel, представлен в таблице 2.7.
Таблица 2.7 - Результаты расчета
Правильные ответыВремя экспозиции числа после правильных ответов (c)Ошибочные ответыВремя экспозиции числа после ошибочных ответов(c)81,011,511,011,520,511,001,053,5 Из рассчитанных данных и стартового времени экспозиции числа имеем:
* максимальное время ответа равно 5 с
* минимальное время ответа равно 0,5 с
5. Расчет по следующим настройкам:
Время решения задачи: 2 мин.
Стартовое время экспозиции числа: 3 сек.
Шаг изменения темпа: 0,10 сек.
В таблице 2.8 представлены результаты прохождения тестирования.
Таблица 2.8 - Результаты тестирования
Правильные ответыЗапаздываниеОшибочные ответы51110011118110110821013012112012110110131111411011011100 Расчет, производился в MS Excel, представлен в таблице 2.8.
Таблица 2.8 - Результаты расчета
Правильные ответыВремя экспозиции числа после правильных ответов (c)Ошибочные ответыВремя экспозиции числа после ошибочных ответов (c)52,512,6101,611,711,611,780,911,001,011,101,121,311,211,331,011,120,911,020,810,920,710,800,810,900,911,010,911,040,610,700,710,800,810,910,800,8 Из рассчитанных данных и стартового времени экспозиции числа имеем:
* максимальное время ответа равно 3 с
* минимальное время ответа равно 0,6 с
6. Расчет по следующим настройкам:
Время решения задачи: 3 мин.
Стартовое время экспозиции числа: 1 сек.
Шаг изменения темпа: 0,25 сек.
В таблице 2.10 представлены результаты прохождения тестирования.
Таблица 2.10 - Результаты тестирования
Правильные ответыЗапаздываниеОшибочные ответы1110012006081404050 Расчет, производился в MS Excel, представлен в таблице 2.11.
Таблица 2.11 - Результаты расчета
Правильные ответыВремя экспозиции числа после правильных ответов (c)Ошибочные ответыВремя экспозиции числа после ошибочных ответов (c)10,7511,0001,00124,0004,0065,5005,5015,7544,7545,75 Из рассчитанных данных и стартового времени экспозиции числа имеем:
* максимальное время ответа равно 5,75 с
* минимальное время ответа равно 0,75 с
7. Расчет по следующим настройкам:
Время решения задачи: 5 мин.
Стартовое время экспозиции числа: 10 сек.
Шаг изменения темпа: 0,4 сек.
В таблице 2.12 представлены результаты прохождения тестирования.
Таблица 2.12 - Результаты тестирования
Правильные ответыЗапаздываниеОшибочные ответы40111131605917108 Расчет, производился в MS Excel, представлен в таблице 2.13.
Таблица 2.13 - Результаты расчета
Правильные ответыВремя экспозиции числа после правильных ответов (c)Ошибочные ответыВремя экспозиции числа после ошибочных ответов (c)48,418,8114,414,862,454,490,873,613,286,4 Из рассчитанных данных и стартового времени экспозиции числа имеем:
* максимальное время ответа равно 10 с
* минимальное время ответа равно 0,8 с
8. Расчет по следующим настройкам:
Время решения задачи: 60 мин.
Стартовое время экспозиции числа: 3 сек.
Шаг изменения темпа: 0,5 сек.
В таблице 2.14 представлены результаты прохождения тестирования.
Таблица 2.14 - Результаты тестирования
Правильные ответыЗапаздываниеОшибочные ответы005061407061913850412060119901811301392108201201560411101140111051085941048741303111197512011701101543989101 Расчет, производился в MS Excel, представлен в таблице 2.15.
Таблица 2.15 - Результаты расчета
Правильные ответыВремя экспозиции числа после правильных ответов (c)Ошибочные ответыВремя экспозиции числа после ошибочных ответов (c)0 3,05 5,50 5,51 6,04 4,07 7,50 7,51 8,09 3,58 7,55 5,04 7,012 1,06 4,00 4,09 8,59 4,01 4,58 0,513 7,00 7,0911,521 1,08 5,02 4,01210,0010,0613,0013,0113,511 8,01 8,514 1,511 7,01 6,55 9,01 8,5812,5510,0412,0111,5413,58 9,5411,513 5,03 6,51 6,01915,5712,0112,5211,5112,017 3,511 9,00 9,0411,03 9,5813,59 9,01 9,5 Из рассчитанных данных и стартового времени экспозиции числа имеем:
* максимальное время ответа равно 15,5 с
* минимальное время ответа равно 0,5 с
Приложение 3
Текст программы
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Program.h"
#include "Instructions.h"
#include "Property.h"
#include "About.h"
#include <math.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int GetString(int f, AnsiString *st);
int GetLine(int f, AnsiString *st);
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
int some_res; //результат сложения/вычитания в тестировании
int sign; //знак-число
int DeltaT; //время темпа
long AllTime; //все время тестирования
int AllTime_temp, time_numeral_temp;//переменные для сохранения в файл
double delta_temp;
int how_much_sign = 0; //сколько показано цифр
int how_much_right = 0; //сколько правильно
int how_much_wrong = 0; //сколько ошибочно
int how_much_answered = 0; //правильно+ошибочно
int DelayCount = -1;//количество запаздываний
/* среднее время ответа =
= (время тестирования - стартовое время экспозиции)
/ число предъявленных ответов */
float AvrT; //среднее время ответа
int SumT;//общее время ответа
float MinT;//минимальное время ответа - инициируем как общее время теста
float MaxT = -1;//максимальное время ответа - инициируем как -1
int CurT;//среднее время ответа
const MaxAnsCount = 7500;
float TimeIntevalsArray[MaxAnsCount];//массив
float point_quality; //балл по качеству
bool right_wrong; //флаг, проверяющий нажание прав. кнопки после ошибки
bool end_test; //флаг, проверяющий окончание теста
bool KeyWasPressedFlag = false; //флаг нажатия кнопки
bool TestStarted = false;//начат ли тест
bool SuccessfulySave = false;//успешно ли сохранение
bool key_press;//была ли нажата клавиша
int f; // дескриптор файла
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//НАЧАЛО программного блока
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Form1->Height = 600;
Form1->Width = 800;
Form1->Caption = "Тест "Непрерывный счет"";
Form1->Position = poDesktopCenter;
//Button_Begin_test->Enabled = false;
Image->Height = 530;
Image->Width = 777;
Image->Visible = true;
Edit_Name->Visible = false;
Edit_Surname->Visible = false;
Edit_SurSurname->Visible = false;
Edit_Age->Visible = false;
Edit_Group->Visible = false;
DateTimePicker_Date->Visible = false;
DateTimePicker_Time->Visible = false;
Label_Name->Visible = false;
Label_Surname->Visible = false;
Label_SurSurname->Visible = false;
Label_Age->Visible = false;
Label_Group->Visible = false;
Label_Date->Visible = false;
Label_Time->Visible = false;
Button_Add_User->Visible = false;
Button_Begin_test->Visible = false;
Button_Read_User->Visible = false;
GroupBox_Reg->Visible = false;
Button_Save_Graph->Visible = false;
Button_Add_User->Visible = false;
StringGrid_User->Visible = false;
Chart1->Visible = false;
//DateTimePicker_Date->Date = Now();
//DateTimePicker_Time->Time = Now();
Label_Date->Visible = false;
Label_Time->Visible = false;
Button_instr->Visible = true;
Button_Statistika->Visible = true;
Button_Test->Visible = true;
}
//---------------------------------------------------------------------------
//функции округления (до десятых)
double round(double d)
{
char b[50];
return floor(atof(_gcvt(d,2,b))*10+.5)/10;
}
//(до сотых)
double round2(double d)
{
char b[50];
return floor(atof(_gcvt(d,3,b))*100+.5)/100;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//ИНСТРУКЦИЯ программного блока (в отдельном окне - меню)
void __fastcall TForm1::N2Click(TObject *Sender)
{
Form2->Visible=true;
Form2->Caption="Инструкция";
Form2->BorderStyle = bsSingle;
Form2->Position = poDesktopCenter;
Form2->Width = 465;
Form2->Height = 320;
Form2->Label_instr->Top = 50;
Form2->Label_instr->Left = 20;
Form2->Label_instr->Width = 400;
Form2->Label_instr->Height = 300;
Form2->Label_instr->WordWrap = true;
Form2->Label_instr->Align = alClient;
Form2->Label_instr->Font->Name = "Arial";
Form2->Label_instr->Font->Size = 12;
Form2->Label_instr->Caption = " На экране появится число, которое вам следует запомнить и набрать это число на клавиатуре. Затем оно исчезнет и появится другое число. Если это число зеленого цвета, то его нужно прибавить к исходному. Если это число красного цвета, то его нужно вычесть из исходного. Полученный результат нужно запомнить - это будет исходное число для следующей операции; к нему надо будет прибавить следующее число зеленого цвета и так далее.\n\r В случае ошибки на экране появится правильный ответ - его следует запомнить как исходное число для последующих операций.\n\r Все вычисления проводятся в уме, на клавиатуре набирается только результат вычислений.";
//Form2->Label_instr->Caption = "тест \n\r новая строка";
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//НАСТРОЙКА программного блока
void __fastcall TForm1::N3Click(TObject *Sender)
{
Form3->Visible=true;
Form3->Caption="Настройка";
Form3->BorderStyle = bsSingle;
Form3->Position = poDesktopCenter;
//Label
Form3->Label_time_test->Font->Name = "Arial";
Form3->Label_time_test->Font->Size = 12;
Form3->Label_time_test->Caption = "Время решения задачи (мин):";
Form3->Label_time_numeral->Font->Name = "Arial";
Form3->Label_time_numeral->Font->Size = 12;
Form3->Label_time_numeral->Caption = "Стартовое время экспозиции числа (сек):";
Form3->Label_time_temp->Font->Name = "Arial";
Form3->Label_time_temp->Font->Size = 12;
Form3->Label_time_temp->Caption = "Шаг изменения темпа (сек):";
//ListBox
Form3->ListBox_time_test->Font->Name = "Arial";
Form3->ListBox_time_test->Font->Size = 12;
Form3->ListBox_time_numeral->Font->Name = "Arial";
Form3->ListBox_time_numeral->Font->Size = 12;
Form3->ListBox_time_temp->Font->Name = "Arial";
Form3->ListBox_time_temp->Font->Size = 12;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//ЗАКРЫТИЕ программного блока
void __fastcall TForm1::N5Click(TObject *Sender)
{
Close ();
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//О программном блоке
void __fastcall TForm1::N7Click(TObject *Sender)
{
Form4->Visible = true;
Form4->Caption = "О программном блоке";
Form4->Position = poDesktopCenter;
Form4->BorderStyle = bsSingle;
Form4->Width = 335;
Form4->Height = 256;
Form4->Label_about_progr->WordWrap = true;
Form4->Label_about_progr->Align = alClient;
Form4->Label_about_progr->Font->Name = "Arial";
Form4->Label_about_progr->Font->Size = 10;
Form4->Label_about_progr->Caption = " Программный блок "Непрерывный счет"\n\r разработан, как дипломный проект, по заказу\n\r Московского Городского Педагогического Института,\n\r Кафедра социологии и истории психологии.\n\r _______________________________________\n\r Московский Государственный Институт\n\r Электроники и Математики\n\r (Технический университет),\n\r Кафедра "Вычислительная техника".\n\r\n\r Руководитель дипломного проекта: Т.Н. Байбикова\n\r Разработчик программного блока: А.И. Медведева\n\r Программный блок "Непрерывный счет", 2009";
}
//-------------------------------------------------------------------------
//---------------------------------------------------------------------------
//сохранение в файл
bool SaveToFile(AnsiString FileName, AnsiString InStr)
{
bool TmpRes = false;
// открыть для записи или создать файл User_Test.txt
if ( FileExists(FileName) )
f = FileOpen(FileName,fmOpenWrite);
else
f = FileCreate(FileName);
if ( f != -1 )
{
// файл открыт для записи
FileSeek(f,0,2); // установить указатель на конец файла
FileWrite(f,InStr.c_str(),InStr.Length());//запись данных в файл
FileClose(f);//закрыть файл
TmpRes = true;
}
else
{
// ошибка доступа к файлу: ни открыть, ни создать не получилось
//ShowMessage("Oшибка доступа к файлу: ни открыть, ни создать не получилось");
TmpRes = false;
}
return TmpRes;
}
//-------------------------------------------------------------------------
bool TestSaveToFile(AnsiString FileName, AnsiString InStr)
{
bool Tmp = false;
// открыть для записи или создать файл User_Test.txt
if ( FileExists("User_Test.csv") )
f = FileOpen("User_Test.csv",fmOpenWrite);
else
f = FileCreate("User_Test.csv");
if ( f != -1 )
{
FileClose(f);//закрыть файл
Tmp = true;
}
else
{
Tmp = false;
}
return Tmp;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button_Add_UserClick(TObject *Sender)
{
AnsiString st,TmpStr;
//AnsiString CurTs;
/* не равно ли MaxT == -1
ни разу не нажал ни на одну кнопку
надо приравнять максимальное время ответа
к MaxT = времени тестирования, которое в таком случае сохранено в MinT */
if(MaxT == -1)
{
MaxT = MinT;
}
if (TestSaveToFile("User_Test.csv", st) == true)
{
//посчитаем № строки в том самом файле, что бы сохранить № этой строчки
//в файле с остальной информацией о тестировании
int TheCurTsRowNumber=0;
int h = FileOpen("User_Tempo.csv",fmOpenRead);
while(GetLine(h,&TmpStr)!=0)
{
TheCurTsRowNumber++;
}
FileClose(h);
// файл можно открыть в режиме fmCreate, тогда, если
// файл существует, он будет открыт для записи,
// если файла нет, то он будет создан
st = Edit_Name->Text + ";"
+ Edit_Surname->Text + ";"
+ Edit_SurSurname->Text + ";"
+ Edit_Age->Text + ";"
+ Edit_Group->Text + ";"
+ DateToStr(DateTimePicker_Date->Date) + ";"
+ TimeToStr(DateTimePicker_Time->Time) + ";"
+ AllTime_temp + ";"
+ time_numeral_temp + ";"
+ delta_temp + ";"
+ how_much_sign + ";"
+ how_much_right + ";"
+ how_much_wrong + ";"
+ DelayCount + ";"
+ round2(AvrT) + ";"
+ (float)MaxT/1000 + ";"
+ (float)MinT/1000 + ";"
+ round2(point_quality) + ";"
+ TheCurTsRowNumber + "\r\n";
SuccessfulySave = SuccessfulySave && SaveToFile("User_Test.csv", st);
Button_Read_User->Enabled = SuccessfulySave;
Button_Read_User->Visible = SuccessfulySave;
Button_Add_User->Visible = !SuccessfulySave;
Button_Add_User->Enabled = !SuccessfulySave;
}
else
{
ShowMessage("Oшибка доступа к файлу: ни открыть, ни создать не получилось");
Button_Add_User->Visible = true;
Button_Add_User->Enabled = true;
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//НАЧАЛО ТЕСТА программного блока
void __fastcall TForm1::Button_Begin_testClick(TObject *Sender)
{
DateTimePicker_Date->Date = Now();
DateTimePicker_Time->Time = Now();
// Инициализируем все параметры
if (Form3->ListBox_time_numeral->ItemIndex < 0)
{
//Timer_time_numeral->Interval = StrToInt(Form3->ListBox_time_numeral->Items->Strings[0])*1000;
//time_numeral_temp = StrToInt(Form3->ListBox_time_numeral->Items->Strings[0]);
Timer_time_numeral->Interval = 3000;
time_numeral_temp = 3;
}
else
{
Timer_time_numeral->Interval = StrToInt(Form3->ListBox_time_numeral->Items->Strings[Form3->ListBox_time_numeral->ItemIndex])*1000;
time_numeral_temp = StrToInt(Form3->ListBox_time_numeral->Items->Strings[Form3->ListBox_time_numeral->ItemIndex]);
}
if (Form3->ListBox_time_temp->ItemIndex < 0)
{
//DeltaT = (int)((Form3->ListBox_time_temp->Items->Strings[0].ToDouble())*1000);
DeltaT = 50;
delta_temp = 0.05;
}
else
{
DeltaT = (int)((Form3->ListBox_time_temp->Items->Strings[Form3->ListBox_time_temp->ItemIndex].ToDouble())*1000);
delta_temp = (Form3->ListBox_time_temp->Items->Strings[Form3->ListBox_time_temp->ItemIndex].ToDouble());
}
if (Form3->ListBox_time_test->ItemIndex < 0)
{
//AllTime = ((long)(StrToInt(Form3->ListBox_time_test->Items->Strings[0])))*60*1000;
//AllTime_temp = StrToInt(Form3->ListBox_time_test->Items->Strings[0]);
AllTime = 60000;
AllTime_temp = 1;
}
else
{
AllTime = ((long)(StrToInt(Form3->ListBox_time_test->Items->Strings[Form3->ListBox_time_test->ItemIndex])))*60*1000;
AllTime_temp = StrToInt(Form3->ListBox_time_test->Items->Strings[Form3->ListBox_time_test->ItemIndex]);
}
MinT = AllTime;
//MaxT = time_numeral_temp;
/* суммарное время ответов = общее время теста - первоначальный интревал
потом это время разделим на число ответов и получим среднее время ответа */
SumT = (AllTime - (time_numeral_temp*1000));
if (Edit_Name->Text == "")
ShowMessage(("Ошибка! Вы не ввели имя пользователя."));
else if (Edit_Surname->Text == "")
ShowMessage(("Ошибка! Вы не ввели фамилию пользователя."));
else if (Edit_SurSurname->Text == "")
ShowMessage(("Ошибка! Вы не ввели отчество пользователя."));
else if (Edit_SurSurname->Text == "")
ShowMessage(("Ошибка! Вы не ввели отчество пользователя."));
else if (Edit_Age->Text == "")
ShowMessage(("Ошибка! Вы не ввели возраст пользователя."));
else if (Edit_Group->Text == "")
ShowMessage(("Ошибка! Вы не ввели группу пользователя."));
else
{
TestStarted = true;
end_test = false; //сейчас начало теста
Button_instr->Visible = false;
Button_Statistika->Visible = false;
Button_Test->Visible = false;
//сделать невидимыми поля для регистрции
Edit_Name->Visible = false;
Edit_Surname->Visible = false;
Edit_SurSurname->Visible = false;
Edit_Age->Visible = false;
Edit_Group->Visible = false;
DateTimePicker_Date->Visible = false;
DateTimePicker_Time->Visible = false;
Label_Name->Visible = false;
Label_Surname->Visible = false;
Label_SurSurname->Visible = false;
Label_Age->Visible = false;
Label_Group->Visible = false;
Label_Date->Visible = false;
Label_Time->Visible = false;
Button_Add_User->Visible = false;
Button_Begin_test->Visible = false;
Button_Read_User->Visible = false;
GroupBox_Reg->Visible = false;
Form1->Color = clBlack;
//Label_numeral->Top = 170;
//Label_numeral->Left = 300;
Label_numeral->Font->Name="Arial";
Label_numeral->Font->Size=60;
Label_numeral->Caption = "";
Label_numeral->Visible = true;
Timer_time_numeral->Enabled = true;
some_res = 0;
sign = 1;
randomize();
Form1->SetFocus();
N4->Enabled = false;
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//таймер
void __fastcall TForm1::Timer_time_numeralTimer(TObject *Sender)
{
int position_top, position_left, position_rand;
int numeral;
if (end_test == false)//если тест не закончен
{
if(KeyWasPressedFlag == false)//если ни одна клавиша не нажата - задержка
{
DelayCount++;
}
KeyWasPressedFlag = false;
AllTime = AllTime - Timer_time_numeral->Interval;
if (AllTime <= 0)//время тестирования истекло?
{
TestStarted = false;
Timer_time_numeral->Enabled = false;
Label_error->Font->Color = RGB(255, 240,60);
Label_error->Visible = true;
Label_error->Caption = "Тест завершен";
Label_error->Top = (int)(Form1->Height - Label_error->Height) / 2;
Label_error->Left = (int)(Form1->Width - Label_error->Width) / 2;
end_test = true; //конец теста
// среднее время ответа =
// = SumT суммарн. временя ответов / правильных+неправильных ответов
if (how_much_answered != 0)
{
AvrT = ( (float)SumT / (float)how_much_answered) / 1000;
}
else
{
AvrT = (float)SumT/1000;
}
// балл по качеству =
//= кол-во верных ответов / кол-во предъявленных чисел
point_quality = (float)how_much_right / (float)how_much_sign;
how_much_sign = how_much_right + how_much_wrong + DelayCount;
//сохраним строчку с временем реакции
SuccessfulySave = SaveToFile("User_Tempo.csv", "\r\n");
Button_Add_User->Click();
N4->Enabled = true;
}
else //иначе - тест незакончен
{
if (sign == 1)
{
Label_numeral->Font->Color = RGB(0,130,0);
numeral = random (9 - some_res);
some_res = some_res + numeral;
}
else
{
Label_numeral->Font->Color = RGB(230,0,0);
numeral = random(some_res);
some_res = some_res - numeral;
}
Label_numeral->Caption = IntToStr(numeral); //вывод цифры
randomize();
position_top = random(Form1->Height - 2*Label_numeral->Height);
randomize();
position_left= random(Form1->Width - 2*Label_numeral->Width);
Label_numeral->Top = position_top;
Label_numeral->Left = position_left;
right_wrong = false;
key_press = true;//можно отвечать
how_much_sign++;//сколько предъявлено
sign = sign * (-1);
CurT = Timer_time_numeral->Interval;
AnsiString TmpStr = FloatToStr((float) CurT / 1000)+";";
SaveToFile("User_Tempo.csv",TmpStr); //сохранение темпа
}
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//нажатие клавиши
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
int KeyZ = (int)Key;
int TheDeltaT = 0;
if (end_test == false)//если тест незакончен
{
if (key_press == true)//если можно отвечать
{
KeyWasPressedFlag = true;
if ((KeyZ >= 48) && (KeyZ <= 57))//если нажата цифра
{
KeyZ = KeyZ - 48;
CurT = Timer_time_numeral->Interval;
if (KeyZ != some_res)//дана ошибка
{
Timer_time_numeral->Enabled = false;
Label_error->Font->Color = RGB(255, 240,60);
Label_error->Visible = true;
Label_error->Caption = "Ошибка! Нажмите " + IntToStr(some_res);
Label_error->Top = (int)(Form1->Height - Label_error->Height) / 2;
Label_error->Left = (int)(Form1->Width - Label_error->Width) / 2;
how_much_wrong++;//сколько неправильных ответов
right_wrong = true;
TheDeltaT = DeltaT;
}
else //дан правильный ответ
{
key_press = false;//отключ. KeyPress
if (Timer_time_numeral->Interval <= DeltaT)
{
Label_error->Caption = "!";
}
if (right_wrong == false)//если прав. ответ дан не после ошибки
{
how_much_right++;//сколько правильных овтетов
TheDeltaT = (-1)*DeltaT;
}
else
{
TheDeltaT = 0;
}
Timer_time_numeral->Enabled = true;
Label_error->Caption = "";
}
Timer_time_numeral->Interval = CurT + TheDeltaT;
//изменение темпа после ответа
//счет макс. времени ответа
if (CurT > MaxT)
{
MaxT = CurT;
}
else
{
MaxT = MaxT;
}
//счет мин. времени ответа
if (CurT < MinT)
{
MinT = CurT;
}
else
{
MinT = MinT;
}
//на сколько отвечено
how_much_answered = how_much_right + how_much_wrong;
}
}
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//ПРОСМОТР СТАТИСТИКИ программного блока
void __fastcall TForm1::Button_Read_UserClick(TObject *Sender)
{
Label_numeral->Visible = false;
Label_error->Visible = false;
if (Edit_Name->Text == "")
ShowMessage(("Ошибка! Вы не ввели имя пользователя."));
else if (Edit_Surname->Text == "")
ShowMessage(("Ошибка! Вы не ввели фамилию пользователя."));
else if (Edit_SurSurname->Text == "")
ShowMessage(("Ошибка! Вы не ввели отчество пользователя."));
else
{
GroupBox_Reg->Visible = false;
Button_instr->Visible = false;
Button_Statistika->Visible = false;
Button_Test->Visible = false;
StringGrid_User->Visible = true;
StringGrid_User->ColCount = 19;
// заголовки столбцов
StringGrid_User->Cells[0][0] = "Имя";
StringGrid_User->Cells[1][0] = "Фамилия";
StringGrid_User->Cells[2][0] = "Отчество";
StringGrid_User->Cells[3][0] = "Возраст";
StringGrid_User->Cells[4][0] = "Группа";
StringGrid_User->Cells[5][0] = "Дата";
StringGrid_User->Cells[6][0] = "Время";
StringGrid_User->Cells[7][0] = "Время решения задачи";
StringGrid_User->Cells[8][0] = "Стартовое время экспозиции числа";
StringGrid_User->Cells[9][0] = "Шаг изменения темпа";
StringGrid_User->Cells[10][0] = "Сколько чисел предъявлено";
StringGrid_User->Cells[11][0] = "Сколько верных ответов";
StringGrid_User->Cells[12][0] = "Сколько ошибочных ответов";
StringGrid_User->Cells[13][0] = "Число запаздываний";
StringGrid_User->Cells[14][0] = "Среднее время ответа";
StringGrid_User->Cells[15][0] = "Максимальное время ответа";
StringGrid_User->Cells[16][0] = "Минимальное время ответа";
StringGrid_User->Cells[17][0] = "Балл по качеству";
StringGrid_User->Cells[18][0] = "Номер в таблице темпа";
// ширина столбцов
StringGrid_User->ColWidths[0] = 140;
StringGrid_User->ColWidths[1] = 140;
StringGrid_User->ColWidths[2] = 140;
StringGrid_User->ColWidths[3] = 60;
StringGrid_User->ColWidths[4] = 60;
StringGrid_User->ColWidths[5] = 70;
StringGrid_User->ColWidths[6] = 60;
StringGrid_User->ColWidths[7] = 145;
StringGrid_User->ColWidths[8] = 190;
StringGrid_User->ColWidths[9] = 130;
StringGrid_User->ColWidths[10] = 155;
StringGrid_User->ColWidths[11] = 140;
StringGrid_User->ColWidths[12] = 155;
StringGrid_User->ColWidths[13] = 120;
StringGrid_User->ColWidths[14] = 125;
StringGrid_User->ColWidths[15] = 165;
StringGrid_User->ColWidths[16] = 155;
StringGrid_User->ColWidths[17] = 100;
StringGrid_User->ColWidths[18] = 135;
//сделать невидимыми поля для регистрции
Edit_Name->Visible = false;
Edit_Surname->Visible = false;
Edit_SurSurname->Visible = false;
Edit_Age->Visible = false;
Edit_Group->Visible = false;
DateTimePicker_Date->Visible = false;
DateTimePicker_Time->Visible = false;
Label_Name->Visible = false;
Label_Surname->Visible = false;
Label_SurSurname->Visible = false;
Label_Age->Visible = false;
Label_Group->Visible = false;
Label_Date->Visible = false;
Label_Time->Visible = false;
Button_Add_User->Visible = false;
//поменять цвет формы
Form1->Color = clBtnFace;
//чтение из файла User_Test.csv статистики
int h; // дескриптор файла
h = FileOpen("User_Test.csv",fmOpenRead);
if ( h == -1)
{
ShowMessage("Файл данных User_Test.csv не найден.");
return;
}
// Обработка файла
AnsiString st; //строка, прочитанная из файла
int ls, g, i = 1;//длина строки, кол-во символов до конца строки, счетчик
AnsiString buf_sursurname; //отчество
AnsiString buf_surname; //фамилия
AnsiString buf;//имя
StringGrid_User->RowCount = 0;//очистеть таблицу
do {
ls = GetString(h,&st); // кол-во символов у имени
if (ls != 0)
{
buf = st;
ls = GetString(h,&st); // кол-во символов у фамилии
buf_surname = st;
ls = GetString(h,&st); // кол-во символов у отчества
buf_sursurname = st;
if ((Edit_Name->Text == buf)&&(Edit_Surname->Text == buf_surname)
&&(Edit_SurSurname->Text == buf_sursurname))
//если имя,фамилия,отчество совпадают в соотв. полях в файле
{
//вывод в таблицу значений
StringGrid_User->RowCount++;
StringGrid_User->Cells[0][i] = Edit_Name->Text;
StringGrid_User->Cells[1][i] = Edit_Surname->Text;
StringGrid_User->Cells[2][i] = Edit_SurSurname->Text;
StringGrid_User->Cells[3][i] = st.SubString(1,GetString(h,&st));
StringGrid_User->Cells[4][i] = st.SubString(1,GetString(h,&st));
StringGrid_User->Cells[5][i] = st.SubString(1,GetString(h,&st));
StringGrid_User->Cells[6][i] = st.SubString(1,GetString(h,&st));
StringGrid_User->Cells[7][i] = st.SubString(1,GetString(h,&st));
StringGrid_User->Cells[8][i] = st.SubString(1,GetString(h,&st));
StringGrid_User->Cells[9][i] = st.SubString(1,GetString(h,&st));
StringGrid_User->Cells[10][i] = st.SubString(1,GetString(h,&st));
StringGrid_User->Cells[11][i] = st.SubString(1,GetString(h,&st));
StringGrid_User->Cells[12][i] = st.SubString(1,GetString(h,&st));
StringGrid_User->Cells[13][i] = st.SubString(1,GetString(h,&st));
StringGrid_User->Cells[14][i] = st.SubString(1,GetString(h,&st));
StringGrid_User->Cells[15][i] = st.SubString(1,GetString(h,&st));
StringGrid_User->Cells[16][i] = st.SubString(1,GetString(h,&st));
StringGrid_User->Cells[17][i] = st.SubString(1,GetString(h,&st));
StringGrid_User->Cells[18][i] = st.SubString(1,GetLine(h,&st));
i++;
StringGrid_User->FixedRows = 1;
}
else
g = GetLine(h,&st);
}
} while (ls != 0);
FileClose(h);
Button_Begin_test->Visible = false;
Button_Read_User->Visible = false;
}//else
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Функция GetString читает из файла строку символов
// от текущей позиции до первой точки с запятой.
// значение функции - кол-во прочитанных символов
int GetString(int f, AnsiString *st)
{
unsigned char buf[256]; // строка (буфер)
unsigned char *p = buf; // указатель на строку
int n; // кол-во прочитанных байт (значение ф-и FileRead)
int len = 0; // длина строки
// удалить ведущие пробелы
do
n = FileRead(f, p, 1);
while ((n != 0) && (*p == ' '));
while (( n != 0 ) && ( *p != ';'))
{
if ( *p == '\r')
{
n = FileRead(f, p, 1); // прочитать '\n'
break;
}
len++;
p++;
n = FileRead(f, p, 1);
}
*p = '\0';
if ( len !=0 )
st->printf("%s", buf);
return len;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Функция GetLine читает из файла строку символов
// от текущей позиции до символа "новая строка".
// значение функции - кол-во прочитанных символов
int GetLine(int f, AnsiString *st)
{
unsigned char buf[256]; // строка (буфер)
unsigned char *p = buf; // указатель на строку
int n; // кол-во прочитанных байт (значение ф-и FileRead)
int len = 0; // длина строки
n = FileRead(f, p, 1);
while ( n != 0 )
{
if ( *p == '\r')
{
n = FileRead(f, p, 1); // прочитать '\n'
break;
}
len++;
p++;
n = FileRead(f, p, 1);
}
*p = '\0';
if ( len !=0)
st->printf("%s", buf);
return len;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//НАЧАЛО программного блока
void __fastcall TForm1::N4Click(TObject *Sender)
{
//отображение заставки
Image->Height = 530;
Image->Width = 777;
Image->Visible = true;
Edit_Name->Visible = false;
Edit_Surname->Visible = false;
Edit_SurSurname->Visible = false;
Edit_Age->Visible = false;
Edit_Group->Visible = false;
DateTimePicker_Date->Visible = false;
DateTimePicker_Time->Visible = false;
Label_Name->Visible = false;
Label_Surname->Visible = false;
Label_SurSurname->Visible = false;
Label_Age->Visible = false;
Label_Group->Visible = false;
Label_Date->Visible = false;
Label_Time->Visible = false;
Button_Add_User->Visible = false;
Button_Begin_test->Visible = false;
Button_Read_User->Visible = false;
GroupBox_Reg->Visible = false;
Button_Save_Graph->Visible = false;
Button_Add_User->Visible = false;
StringGrid_User->Visible = false;
Chart1->Visible = false;
//DateTimePicker_Date->Date = Now();
//DateTimePicker_Time->Time = Now();
Label_Date->Visible = false;
Label_Time->Visible = false;
Button_instr->Visible = true;
Button_Statistika->Visible = true;
Button_Test->Visible = true;
Label_instr->Visible = false;
//поменять цвет формы
Form1->Color = clBtnFace;
how_much_sign = 0;
how_much_right = 0;
how_much_wrong = 0;
how_much_answered = 0;
AvrT = 0.00;
DelayCount = -1;
MaxT = -1;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//отображение графика по клику StringGrid
void __fastcall TForm1::StringGrid_UserClick(TObject *Sender)
{
int TheSelectedRow = StringGrid_User->Row;
float OneValue;
float MaxValue = -1;
int i = 0;
int j = 1;
float SumT = 0;
AnsiString st,TmpStr;
/*в последней колонке строки номер TheSelectedRow находится № строки в
файле User_Tempo.cvs в котором хранится то, что надо показать в графике*/
if(TheSelectedRow != 0)
{
int TheChartRow = StrToInt(StringGrid_User->Cells[18][TheSelectedRow]);
Chart1->Visible = true;
Button_Save_Graph->Visible = true;
Series1->Clear();
int h = FileOpen("User_Tempo.csv", fmOpenRead);
int i = 0;
while((j < TheChartRow)&&(GetLine(h,&TmpStr) != 0))
{
j++;
}
while(GetString(h,&st) != 0)
{
OneValue = StrToFloat(st);
if (OneValue > MaxValue)
{
MaxValue = OneValue;
}
else
{
MaxValue = MaxValue;
}
SumT = SumT + OneValue;
st = (AnsiString) round(SumT);
Series1->Add(OneValue,st,clRed);
i++;
};
FileClose(h);
Chart1->LeftAxis->Minimum = 0;
Chart1->LeftAxis->Maximum = (MaxValue+0.5);
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//ЗАВЕРШЕНИЕ программного блока (незапланированный во время тестирования)
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if(TestStarted)
{
AnsiString CloseMsg = "Вы уверены, что хотите покинуть тестирование";
TMsgDlgBtn Res;
Res = MessageDlg(CloseMsg,mtWarning,TMsgDlgButtons() << mbNo << mbYes,0);
if(Res == mrNo)
{
Action = caNone;
}
else
{
SaveToFile("User_Tempo.csv","\r\n");
}
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Chart1->LeftAxis->Minimum = -1;
Chart1->LeftAxis->Maximum = 10;
Chart1->Width = 650;
Chart1->Height = 250;
StringGrid_User->Height = 200;
StringGrid_User->Width = 690;
Label_error->Top = 400;
Label_error->Left = 250;
Label_error->Font->Name="Arial";
Label_error->Font->Size=24;
Label_error->Visible = false;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//сохранение графика
void __fastcall TForm1::Button_Save_GraphClick(TObject *Sender)
{
if (SavePictureDialog1->Execute())
{
Chart1->SaveToBitmapFile(SavePictureDialog1->FileName);
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//СТАТИСТИКА программного блока (поля для ввода для поиска)
void __fastcall TForm1::Button_StatistikaClick(TObject *Sender)
{
//сделать видимыми и пустыми поля для регистрции
GroupBox_Reg->Visible = true;
Edit_Name->Visible = true;
Edit_Name->Text = "";
Edit_Surname->Visible = true;
Edit_Surname->Text = "";
Edit_SurSurname->Visible = true;
Edit_SurSurname->Text = "";
Edit_Age->Visible = false;
Edit_Age->Text = "";
Edit_Group->Visible = false;
Edit_Group->Text = "";
DateTimePicker_Date->Visible = false;
DateTimePicker_Time->Visible = false;
Label_Name->Visible = true;
Label_Surname->Visible = true;
Label_SurSurname->Visible = true;
Label_Age->Visible = false;
Label_Group->Visible = false;
Label_Date->Visible = false;
Label_Time->Visible = false;
//сделать видимыми кнопки
Button_Begin_test->Visible = false;
Button_Read_User->Visible = true;
Button_Add_User->Visible = false;
//Button_Add_User->Enabled = true;
StringGrid_User->Visible = false;
Chart1->Visible = false;
Label_numeral->Visible = false;
Label_error->Visible = false;
Timer_time_numeral->Enabled = false;
Button_instr->Visible = true;
Button_Statistika->Visible = false;
Button_Test->Visible = true;
Label_instr->Visible = false;
//поменять цвет формы
Form1->Color = clBtnFace;
Image->Visible = false;
how_much_sign = 0;
how_much_right = 0;
how_much_wrong = 0;
how_much_answered = 0;
AvrT = 0.00;
DelayCount = -1;
MaxT = -1;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//ТЕСТ программного блока (регистрация)
void __fastcall TForm1::Button_TestClick(TObject *Sender)
{
//сделать видимыми и пустыми поля для регистрции
GroupBox_Reg->Visible = true;
Edit_Name->Visible = true;
Edit_Name->Text = "";
Edit_Surname->Visible = true;
Edit_Surname->Text = "";
Edit_SurSurname->Visible = true;
Edit_SurSurname->Text = "";
Edit_Age->Visible = true;
Edit_Age->Text = "";
Edit_Group->Visible = true;
Edit_Group->Text = "";
DateTimePicker_Date->Visible = false;
DateTimePicker_Time->Visible = false;
Label_Name->Visible = true;
Label_Surname->Visible = true;
Label_SurSurname->Visible = true;
Label_Age->Visible = true;
Label_Group->Visible = true;
Label_Date->Visible = false;
Label_Time->Visible = false;
//сделать видимыми кнопки
Button_Begin_test->Visible = true;
Button_Read_User->Visible = false;
Button_Add_User->Visible = false;
//Button_Add_User->Enabled = true;
StringGrid_User->Visible = false;
Chart1->Visible = false;
Label_numeral->Visible = false;
Label_error->Visible = false;
Timer_time_numeral->Enabled = false;
Button_instr->Visible = true;
Button_Statistika->Visible = true;
Button_Test->Visible = false;
Label_instr->Visible = false;
//поменять цвет формы
Form1->Color = clBtnFace;
Image->Visible = false;
how_much_sign = 0;
how_much_right = 0;
how_much_wrong = 0;
how_much_answered = 0;
AvrT = 0.00;
DelayCount = -1;
MaxT = -1;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//ИНСТРУКЦИЯ программного блока
void __fastcall TForm1::Button_instrClick(TObject *Sender)
{
//сделать видимыми и пустыми поля для регистрции
GroupBox_Reg->Visible = false;
Edit_Name->Visible = false;
Edit_Name->Text = "";
Edit_Surname->Visible = false;
Edit_Surname->Text = "";
Edit_SurSurname->Visible = false;
Edit_SurSurname->Text = "";
Edit_Age->Visible = false;
Edit_Age->Text = "";
Edit_Group->Visible = false;
Edit_Group->Text = "";
DateTimePicker_Date->Visible = false;
DateTimePicker_Time->Visible = false;
Label_Name->Visible = false;
Label_Surname->Visible = false;
Label_SurSurname->Visible = false;
Label_Age->Visible = false;
Label_Group->Visible = false;
Label_Date->Visible = false;
Label_Time->Visible = false;
//сделать видимыми кнопки
Button_Begin_test->Visible = false;
Button_Read_User->Visible = false;
Button_Add_User->Visible = false;
//Button_Add_User->Enabled = true;
StringGrid_User->Visible = false;
Chart1->Visible = false;
Label_numeral->Visible = false;
Label_error->Visible = false;
Timer_time_numeral->Enabled = false;
//поменять цвет формы
Form1->Color = clBtnFace;
Image->Visible = false;
Label_instr->Visible = false;
Button_instr->Visible = false;
Button_Statistika->Visible = true;
Button_Test->Visible = true;
Label_instr->WordWrap = true;
Label_instr->Align = alClient;
Label_instr->Font->Name = "Arial";
Label_instr->Font->Size = 12;
Label_instr->Visible = true;
Label_instr->Caption = "\n\r \n\r ИНСТРУКЦИЯ:\n\r На экране появится число, которое вам следует запомнить и набрать это число на клавиатуре. Затем оно исчезнет и появится другое число. Если это число зеленого цвета, то его нужно прибавить к исходному. Если это число красного цвета, то его нужно вычесть из исходного. Полученный результат нужно запомнить - это будет исходное число для следующей операции; к нему надо будет прибавить следующее число зеленого цвета и так далее.\n\r В случае ошибки на экране появится правильный ответ - его следует запомнить как исходное число для последующих операций.\n\r Все вычисления проводятся в уме, на клавиатуре набирается только результат вычислений.";
}
//---------------------------------------------------------------------------
147
Документ
Категория
Рефераты
Просмотров
106
Размер файла
3 386 Кб
Теги
пояснительная, записка
1/--страниц
Пожаловаться на содержимое документа