Методы сбора информации для адаптивной обучающей системы
Разработка метода сбора информации, позволяющего собирать информацию о когнитивных и компетентностных характеристиках обучаемого в короткие сроки. Алгоритм построения и корректировки обучения. Методы сбора информации с помощью комплексных тестов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 10.07.2017 |
Размер файла | 2,7 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Ряд проблем построения базы данных в АдОС связано с хранением тестовых материалов и результатов тестирования, так как кроме тестов учебных достижений необходимо обеспечить наличие психологических тестов и опросников для выявления пожеланий и настроений обучаемого. Задача еще более усложняется, если применять комплексные тесты. Применение комплексных тестов требует множественной оценки (и уровень знаний, и психо-эмоциональное состояние обучаемого) и результаты тестирования должны быть отражены в соответствующих таблицах базы данных [19].
Таким образом, в базе данных можно выделить три группы таблиц: информация о пользователях, учебные материалы, тестовые материалы
К первой группе относятся таблицы «учетные записи пользователей», «пользователи» (users) и «характеристики». Таблица с учетными записями содержит логины и пароли обучаемых, которые обеспечивают им вход в систему (авторизацию). В таблице «пользователи» хранится информация об обучаемом, которую получают при его регистрации: фамилия, имя и отчество обучаемого, почтовый адрес, номер телефона, пароль, курс, статус, идентификатор траектории. Статус «особый» студент ставится при наличии у него каких-либо заслуг, показывающих повышенные по сравнению с остальными возможности при изучении указанного курса: закончил с красным аттестатом школу, участвует и занимает хорошие места на олимпиадах и т.п. Наличие статуса «особый» позволяет изначально выбирать более сложный вариант индивидуальной траектории. Также в этой таблице должна храниться и постоянно обновляться информация, составляющая психологическую модель обучаемого: уровень внимания, интеллекта, преобладающий вид памяти и другие. Таблица «характеристики» является справочником, в котором перечисляются контролируемые характеристики обучаемых.
Группа учебные материалы включает таблицы «учебные материалы», «справочник дисциплин», «темы», «траектории обучения». Таблица «учебные материалы» содержит ссылки на файлы с учебными материалами, привязанные к темам. Учебные материалы структурированы. Каждый файл содержит одну элементарную учебную единицу, обозначенную трехсимвольным индексом: первый символ показывает группу, второй - № единицы, третий - уровень сложности. Номер единицы привязан к теме, поэтому десяти цифр будет достаточно. Число уровней сложности также ограничено. Имеется три группы учебных единиц. Обозначим их: G - базовые, A - альтернативные, D -дополнительные. Тогда траекторию обучения можно представить в виде строки. Например базовая траектория (обязательная, для студентов, претендующих на удовлетворительную оценку) выглядит следующим образом: G11G21G31G41G51G61. Траектория 3-го уровня сложности - G13G23G33 D31D32D33G43G53D51G63 помимо основных единиц 3-го уровня сложности включает также дополнительные. Таблица «траектории обучения» содержит название траектории, признак базовой траектории, а также границы траектории. Каждая траектория привязана к теме и дисциплине.
Группа тестовые материалы включает таблицы с вопросами (текст вопроса, сложность, идентификаторы темы и изображения), с ответами (текст ответа, признак правильности, идентификатор вопроса, которому ответ относится), с результатами тестирования и с изображениями для тестовых заданий.
Для реализации базы данных используется выбранная СУБД MySQL. Также для удобства создания таблиц и создания запросов будет использоваться Aqua Data Studio.
Созданные таблицы имеют третью нормальную форму. Если база данных приведена ко второй нормальной форме и каждый не ключевой столбец независим друг от друга. Данные требования соблюдены.
Для создания информации о студенте и создании учебных материалов в приложениях преподавателя и обучаемого были использованы следующие таблицы: таблица с вопросами, таблица с ответами, таблица с учетными записями пользователя, таблица с характеристиками, таблица с текстом для теоретического материала, таблица со справочником дисциплин, таблица с траекториями обучения, таблица с пользователями, таблица с результатами по тестированию, таблица с изображениями для тестовых заданий и учебных материалов.
Таблица с вопросами содержит текст вопроса, сложность, идентификаторы темы и изображения. Таблица с ответами содержит текст ответа, признак правильности, идентификатор вопроса, которому ответ относится. Таблица с характеристиками содержит информацию о характеристике. В таблице с пользователями хранится информация об обучаемом, т.е. фамилия, имя и отчество обучаемого, почтовый адрес, номер телефона, логин и пароль. Таблица с учетными записями содержит логин и пароль обучаемого, по которому может обучаемый входить в систему. Таблица с траекториями содержит название траектории, признак базовой траектории, а также границы траектории. Таблица с результатами обучения содержит информацию о пройденном тестировании.
Информация, созданная в таблицах с вопросами, ответами и изображениями необходимо для тестовых заданий в приложении обучаемого. Информация, созданная в таблицах с текстом для теоретического изучения, с изображениями и характеристиками необходима для отображения данной учебного материала для обучаемого в ходе тестирования. Таблица с учетными записями пользователя и таблица с пользователями необходимы для регистрации и авторизации обучаемого в системе. Справочник с дисциплинами нужен для изучения учебного материала с определенной темой по дисциплине. Таблица с результатами необходима для сохранения истории обучения. Таблица с траекториями необходима для задания базовой траектории обучаемого, а также для корректировки в ходе обучения.
Таблицы для создания тестовых заданий, учебных материалов, а также задания базовой траектории заполняет преподаватель в своем приложении для преподавателя.
В настоящее время база данных АдОС реализована в соответствии со схемой, представленной на рисунке 3.2. Главное достоинство MySQL - ее простота. Как следствие - высочайшая скорость выполнения SQL-запросов и необходимость явного программирования основных правил поддержки целостности и непротиворечивости данных на уровне сервера приложений.
Рисунок 3.2 - Схема базы данных АдОС
3.2.2 Создание таблиц
Для хранения информации в БД были созданы следующие таблицы:
1. Таблица с вопросами: questions
2. Таблица с ответами: answers
3. Таблица с пользователями: users
4. Таблица с учетными записями пользователей: accounts
5. Таблица с учебным материалом: materials
6. Таблица с результатами: questions_users, answers_users
7. Таблица, хранящая информацию о траекториях: traectorys
8. Таблица с дисциплинами и темами: themes
9. Таблица с изображениями для тестов и учебных материалов: pictures
10. Таблица с характеристиками: characteristics
11. Таблица связка между таблицами вопросов и характеристиками: questions_characteristics
Запросы для создания таблиц в базе данных представлены в приложении 2.
3.2.3 Разработка SQL-запросов для работы в приложениях преподавателя и обучаемого
Для работы приложений преподавателя и обучаемого был напсано запросы. Написаны запросы для извлечения информации из таблиц, которая в дальнейшем используется, запросы на вставку значений в таблицы БД.
SQL-запросы , используемые для реализации адаптивной обучающей системы представлены в приложении 3.
Тестирование показало работоспособность созданной базы данных и основные направления ее развития. В дальнейшем БД АдОС будет совершенствоваться. Будут усовершенствованы таблицы, приведены все к третей нормальной форме, будут проведены работы с таблицами хранения истории прохождения тестирования студентами. Планируется создание отдельной таблицы «архив», решение проблем, связанных с комплексными тестами, работы по оптимизации запросов.
3.3 Разработка интерфейса
Основной целью при проектировании пользовательского интерфейса является создание эргономичного интерфейса, чтобы отобразить информацию настолько эффективно насколько это возможно для человеческого восприятия и структурировать отображение на дисплее таким образом, чтобы привлечь внимание к наиболее важным единицам информации. Необходимо минимизировать общую информацию на экране и представить только то, что является необходимым для пользователя. В разрабатываемой программной системе применен комплексный подход к созданию интерфейса. В ней используется кнопки для переходов, формы, меню.
Проектируемый интерфейс основан на следующих принципах:
1. Естественность (интуитивность) - работа с системой не вызывает затруднений в поиске того или иного функционала.
2. Неизбыточность. Пользователь вводит только минимальную информацию для работы или управления системой. Для предотвращений ошибок процесс ввода минимизирован (например, вместо полей ввода использованы выпадающие списки).
3. Непосредственный доступ к системе помощи. В процессе работы система обеспечивает пользователя необходимыми инструкциями.
При входе в систему обучаемый попадает на окно выбора темы, который бы он хотел изучить в настоящее время, после выбора темы он попадает на форму изучения материала, на которой представлен теоретический материал по выбранной теме и навигационные кнопки. С формы изучения материала обучающий может перейти к контрольному комплексному тесту или завершить, выйти из системы. При возникновении вопросов при работе с программой пользователь из любого окна может попасть на форму помощи. Иерархия форм работы обучаемого представлена на рисунке 3.3.
Рисунок 3.3. - Иерархия форм приложения обучаемого.
На рисунке 3.4. представлена иерархия форм работы приложения преподавателя.
Рисунок 3.4. - Иерархия форм приложения преподавателя.
Из рисунка видно, что на каждой странице преподавательского приложения отображается главное меню, через которое он может попасть либо на форму редактирования контента, либо на форму просмотра данных. Также как и в части обучаемого с каждой страницы преподавателей может попасть на окно помощи при работе с программой.
Далее будут приведены примеры форм приложения обучаемого
1. Форма прохождения тестирования представлена на рисунке 3.5.
Рисунок 3.5. - Форма прохождения тестирования
2. Форма для добавления учебного материала представлена на рисунке 3.6.
Рисунок 3.6. - Форма учебного материала
Примеры форм приложения преподавателя.
3. Форма для добавления вопроса в систему представлена на рисунке 3.7.
Рисунок 3.7. - Форма создания вопроса
3.4 Реализация модулей
Для реализации приложений преподавателя и обучаемого используется Visual Studio C#. В Visual Studio для реализации модулей используются: форма Windows Forms, ADO.NET. ADO.NET - это набор классов, предоставляющих службы доступа к данным программистам, которые используют платформу .NET Framework. ADO.NET имеет богатый набор компонентов для создания распределенных приложений, совместно использующих данные. Это неотъемлемая часть платформы .NET Framework, которая предоставляет доступ к реляционным данным, XML-данным и данным приложений. ADO.NET удовлетворяет различные потребности разработчиков, включая создание клиентских приложений баз данных, а также бизнес-объектов среднего уровня, используемых приложениями, средствами, языками и браузерам.
Реализация приложения администратора и преподавателя
В приложение преподавателя и администратора входят модуль создания тестовых заданий, модуль создания контента, модуль задания базовой траектории.
Основными функциями приложения администратора и преподавателя являются создание и редактирование набора дисциплин, создание комплексных тестовых заданий для теста, добавление учебных материалов для адаптивной обучающей системы, а также задание базовой траектории.
На рисунке 3.8. представлена работа с формой добавления дисциплин и тем.
Рисунок 3.8 - Форма добавления дисциплин и тем.
При переходе с главной формы по кнопке “Создание вопросов” открывается форма создания вопросов для тестирования.
На рисунке 3.9. представлена форма создания вопросов для тестов.
Рисунок 3.9 - Форма создания вопросов.
При переходе с главной формы по кнопке “Создать ответы на вопросы” открывается форме, создание ответов к соответствующему вопросу для тестирования. На форме с ответами есть возможность перейти к просмотру вопросов.
На рисунке 3.10 представлена форма создания ответов.
Рисунок 3.10 - Форма создания ответов на вопросы.
В модуль создания контента входит создание учебного материала с различным уровнем сложности.
При переходе с главной формы по кнопке “Добавление теоретического материала” открывается форме, где можно добавить учебный материал с различным уровнем сложности.
На рисунке 3.11 представлена форма добавления учебного материала.
Рисунке 3.11 - Форма добавления учебного материала.
В модуль задания базовой траектории входит создание траекторий с различным уровнем сложности, а также задание базовой траектории.
При переходе с главной формы по кнопке “Создание траекторий” открывается форма, на которой добавить траектории обучения, а также задать базовую траекторию обучения.
На рисунке 3.12 представлена форма создания траекторий обучения.
.
Рис.3.12. - Форма создания траекторий обучения.
3.3.1 Реализация приложения обучаемого
В приложение обучаемого входят модуль авторизации и аутентификации, модуль обучения.
В модуль авторизации и аутентификации входит формы регистрации обучаемого в системе и форма входа по логину и паролю обучаемого в систему.
При нажатии на форме приветствия кнопки “Регистрация” происходит переход к форме регистрации обучаемого. На рис.3.13. представлена форма регистрации обучаемого.
При нажатии на форме приветствия кнопки “Вход в систему” происходит переход к форме, на которой необходимо ввести логин и пароль. На рис.3.14. представлена форма ввода логина и пароля для входа в систему.
Рис.3.13. - Форма регистрации обучаемого.
Рис.3.14. - Форма входа по логину и паролю в систему.
Модуль обучения представляет собой прохождения тестирования в системе.
На рис.3.15. представлена форма тестирования обучаемого.
Рис.3.15. - Форма тестирования обучаемого.
Пользователю будет предоставлена программа AdOS. В данную программу входит: приложение обучаемого AdOS, заполненная база данных учебными материалами, контрольными комплексными тестами.
3.5 Тестирование
Проведем апробацию метода сбора информации с помощью комплексных тестов.
Сначала открывается форма для регистрации в АдОС или вход обучаемого по логину и паролю. На рисунке 3.16 представлена данная форма.
Рисунок 3.16 - Главная форма
Далее, если выбираем регистрацию, переходим на форму заполнения коммуникативных данных обучаемого. На рисунке 3.17 представлена данная форма.
Рисунок 3.17 - Форма регистрации
Следующий шаг возможность выбора прохождения психологического теста или переход к выбору дисциплины (тогда в этом случае не будет чета психологической составляющей). На рисунке 3.18 представлена данная форма.
Рисунок 3.18 - Выбор обучения
При нажатии на кнопку «Пройти адаптивное обучение» переходим тесту на определение когнитивных характеристик. На рисунке 3.19 представлена данная форма.
Рисунок 3.19 - Психологический тест
По нажатию на кнопку «Завершить тестирование» опеределяется уровень сложности и переходим к выбору дисциплины. На рисунке 3.20 представлена данная форма.
Рисунок 3.20 - Выбор дисциплины
После выбора дисциплины изучаем УМ. На рисунке 3.21 представлена данная форма.
Рисунок 3.21 - Форма изучения УМ
После завершения изучения УМ переходим к комплексному тесту по дисциплине. На рисунке 3.22 представлена данная форма.
Рисунок 3.22 - Комплексный тест
Далее после завершения комплексного теста, если нужно изменения уровня сложности, то меняется уровень сложности и снова проходим обучении по выбранной дисциплине. По итогам итоговый тест и вывод результатов. На рисунке 3.23 представлена данная форма.
Рисунок 3.23 - Результаты тестирования
1. Разработана структура адаптивной обучающей системы, в состав которой входит модуль определения психолого-когнитивных характеристик с применением комплексных тестов.
2. Осуществлена программная реализация адаптивной обучающей системы, в которой построение индивидуальной траектории обучения осуществляется, в том числе, и с помощью комплексных тестов.
3. Проведен анализ экспериментальных данных. По результатам эксперимента, проведенного на доработанной системе, можно сказать, что метод сбора информации с помощью комплексных тестов реализован АдОС.
ЗАКЛЮЧЕНИЕ
Основные научные и практические результаты состоят в следующем:
1. Проведен анализ АдОС, моделей обучения и методов сбора информации, необходимых для их построения.
2. Разработан метод сбора информации для адаптивной обучающей системы с помощью комплексных тестов.
3. Проведены экспериментальные исследования метода с целью определения корреляции полученных с его помощью данных с традиционными способами получения когнитивных характеристик.
4. Разработан алгоритм сбора информации об обучаемом, который основан на предложенном методе комплексных тестов.
5. Разработан алгоритм построения и корректировки траектории обучения в соответствии с компетентностными и когнитивными характеристиками обучаемого.
6. Реализован метод комплексных тестов в АдОС.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Краткий психологический словарь / сост. Л.А. Карпенко; под общ. ред. А.В. Петровского, М.Г. Ярошевского. - М.: Политиздат, 1985. - 431 с.
2. Богорев В.В. Психолого-педагогические основы системы адаптивного обучения / Наука и школа. - 2001. - № 2. - С. 12-15.
3. Сущность и организационные особенности адаптивной системы обучения. [Электронный ресурс] Режим доступа: http://si-sv.com/publ/1/14-1-0-149
4. Классификация компьютерных средств обучения.[Электронный ресурс] Режим доступа: http://txtb.ru/89/54.html
5. Что такое адаптивное обучение. [Электронный ресурс] Режим доступа: http://www.edutainme.ru/post/chto-takoe-adaptivnoe-obuchenie/
6. Mathgarden. [Электронный ресурс] Режим доступа: http://www.mathsgarden.com/
7. Модели и алгоритмы обучающих систем. [Электронный ресурс] Режим доступа: http://studopedia.org/11-4356.html
8. Модель обучаемого. [Электронный ресурс] Режим доступа: https://sites.google.com/site/adaptivnyeobucausiesistemy/model-obucaemogo
9. Сергушичева А.П. Интеллектуальный агент обучаемого для системы дистанционного обеспечения / Труды межд. науч.-мет. конф. «Инф-я инженерная образования» ИНФОРИНО-2012 - М Изд.дом МЭЧ,2012. - с 499-502
10. Методы сбора информации. [Электронный ресурс] Режим доступа: http://internet-advance.ru/issledovanie-i-izmerenie-rynka/metody-sbora-informatsii-pri-provedenii-reklamnyh-issledovanij/
11. Рожина Е.Н. Методы и алгоритмы сбора информации об обучаемом в адаптивной обучающей системе / Е.Н.Рожина Труды межд. науч.-практ. конференции «Информатизация инженерного образования» ИНФОРИНО-2016/ Е.Н.Рожина - М Изд. дом МЭИ, 2016.- с 621 - 622.
12. Рожина Е.Н. Разработка адаптивной обучающей системы с применением комплексных тестов / Е.Н.Рожина Международная конференция «Современные информационные технологии в образовании» - Троицк 2016. - с 194 - 195.
13. Рожина Е.Н. Модуль тестирования для адаптивной обучающей системы / Е.Н.Рожина XII Международная научно-практическая конференция: «Научные открытия 2016» - Москва, 2016 г. - c 950 -953.
14. Рожина Е.Н. Разработка адаптивной обучающей системы с применением комплексных тестов / Е.Н.Рожина IV Всероссийской НПК "Коммуникативные и образовательные возможности современных технологий"- Москва, 2016 г. - c 143 -147.
15. Рожина Е.Н. Разработка адаптивной обучающей системы с применением комплексных тестов / Е.Н.Рожина IV Международная научно практическая конференция «Современные тенденции развития науки и производства» - Кемерово, 2016- С.154 - С.155
16. Сергушичева А.П. Алгоритм формирования комплексных тестов ДЛЯ АДАПТИВНОЙ ОБУЧАЮЩЕЙ СИСТЕМЫ / А.П. Сергушичева, Е.Н.Рожина Вузовская наука - региону: Материалы двенадцатой всероссийской научно-технической конференции - Вологда: ВоГТУ, 2015.- С 103 - 106.
17. Рожина Е.Н. Разработка адаптивной обучающей системы с применением комплексных тестов / Е.Н.Рожина XV Международная научно-практическая конференция «Научные исследования современных ученых» - Москва, 2016 г. - С. 541 - с.542.
18. Рожина Е.Н. Структура адаптивной обучающей системы / Е.Н.Рожина XVII Международной молодежной научной конференции «СЕВЕРГЕОЭКОТЕХ-2016» - Ухта, 2016. - c 194 - 197.
19. Сергушичева А.П. База данных для адаптивной обучающей системы - Вузовская наука - региону / А.П. Сергушичева, Е.Н.Рожина Материалы всероссийской научно-технической конференции - Вологда: ВоГТУ, 2016.- С 132 - 134.
- ПРИЛОЖЕНИЕ 1
Листинг программы
Основные функции приложения администратора.
1. Добавление вопросов в приложение.
namespace prepodavatel
{public partial class Form2 : Form
{MySqlConnection conn = new MySqlConnection("server = localhost; user = elena; database = elena; password = ds12199118; port = 3306");
MySqlCommand command;
string imgLoc = "";
public Form2()
{InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
// TODO: данная строка кода позволяет загрузить данные в таблицу "elenaDataSet.themes". При необходимости она может быть перемещена или удалена.
this.themesTableAdapter.Fill(this.elenaDataSet.themes);
// TODO: данная строка кода позволяет загрузить данные в таблицу "elenaDataSet.pictures". При необходимости она может быть перемещена или удалена.
this.picturesTableAdapter.Fill(this.elenaDataSet.pictures);
comboBox1.Text = " ";
comboBox2.Text = " ";
}private void button1_Click(object sender, EventArgs e)
{try
{OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "JPG Files (*.jpg)|*.jpg";
dlg.Title = "Select questions picture";
if (dlg.ShowDialog() == DialogResult.OK)
imgLoc = dlg.FileName.ToString();
pictureBox1.ImageLocation = imgLoc;
}catch (Exception ex)
{MessageBox.Show(ex.Message);
}private void button2_Click(object sender, EventArgs e)
{
try
{
byte[] img = null;
FileStream fs = new FileStream(imgLoc, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
img = br.ReadBytes((int)fs.Length);
string sql = "INSERT INTO pictures (image) VALUES(@img)";
if (conn.State != ConnectionState.Open)
conn.Open();
command = new MySqlCommand(sql, conn);
command.Parameters.Add(new MySqlParameter("@img", img));
int x = command.ExecuteNonQuery();
conn.Close();
MessageBox.Show(x.ToString() + " record(s) saved.");
// textBox1.Text = "";
pictureBox1.Image = null;
}
catch (Exception ex)
{
conn.Close();
MessageBox.Show(ex.Message);
}
}
private void button3_Click(object sender, EventArgs e)
{
string sql = "INSERT INTO questions (question_zagolovok, question_telo, id_themes, id_image, weight) VALUES('" + textBox2.Text + "','" + textBox3.Text + "','" + comboBox1.Text + "','" + comboBox2.Text + "', '" + textBox4.Text + "')";
if (conn.State != ConnectionState.Open)
conn.Open();
command = new MySqlCommand(sql, conn);
// command.Parameters.Add(new MySqlParameter("@img", img));
int x = command.ExecuteNonQuery();
conn.Close();
MessageBox.Show(x.ToString() + " record(s) saved.");
textBox2.Text = "";
textBox3.Text = "";
textBox4.Text = "";
comboBox1.Text = "";
comboBox2.Text = "";
}
private void button4_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void button5_Click(object sender, EventArgs e)
{
try
{
string sql = "SELECT image FROM pictures WHERE id_image="+comboBox2.Text+"";
if (conn.State != ConnectionState.Open)
conn.Open();
command = new MySqlCommand(sql, conn);
MySqlDataReader reader = command.ExecuteReader();
reader.Read();
if (reader.HasRows)
{
byte[] img = (byte[])(reader[0]);
if (img == null)
pictureBox1.Image = null;
else
{
MemoryStream ms = new MemoryStream(img);
pictureBox1.Image = Image.FromStream(ms);
}
}
else
{
MessageBox.Show("This is does not exit.");
}
conn.Close();
}
catch (Exception ex)
{
conn.Close();
MessageBox.Show(ex.Message);
}
}
}
}
2. Создание ответов на вопросы
namespace prepodavatel
{
public partial class Form4 : Form
{
MySqlConnection conn = new MySqlConnection("server = localhost; user = elena; database = elena; password = ds12199118; port = 3306");
MySqlCommand command;
public Form4()
{
InitializeComponent();
}
private void Form4_Load(object sender, EventArgs e)
{
// TODO: данная строка кода позволяет загрузить данные в таблицу "elenaDataSet.characteristics". При необходимости она может быть перемещена или удалена.
this.characteristicsTableAdapter.Fill(this.elenaDataSet.characteristics);
// TODO: данная строка кода позволяет загрузить данные в таблицу "elenaDataSet.questions". При необходимости она может быть перемещена или удалена.
this.questionsTableAdapter.Fill(this.elenaDataSet.questions);
}
private void button1_Click(object sender, EventArgs e)
{
MySqlConnection conn = new MySqlConnection();
conn.ConnectionString = "server = localhost; user = elena; database = elena; password = ds12199118; port = 3306";
conn.Open();
string sql = "INSERT INTO answer ( answer, priznak,id_questions) VALUES( '" + textBox1.Text + "','" + textBox2.Text + "','" + comboBox1.SelectedValue + "')";
if (conn.State != ConnectionState.Open)
conn.Open();
command = new MySqlCommand(sql, conn);
int x = command.ExecuteNonQuery();
conn.Close();
MessageBox.Show(x.ToString() + " record(s) saved.");
textBox1.Text = "";
textBox2.Text = "";
}
}
}
3. Создание справочника дисциплин
public partial class Form3 : Form
{
MySqlConnection conn = new MySqlConnection("server = localhost; user = elena; database = elena; password = ds12199118; port = 3306");
MySqlCommand command;
public Form3()
{
InitializeComponent();
}
private void Form3_Load(object sender, EventArgs e)
{
// TODO: данная строка кода позволяет загрузить данные в таблицу "elenaDataSet1.themes". При необходимости она может быть перемещена или удалена.
this.themesTableAdapter.Fill(this.elenaDataSet1.themes);
// TODO: данная строка кода позволяет загрузить данные в таблицу "elenaDataSet.themes". При необходимости она может быть перемещена или удалена.
this.themesTableAdapter.Fill(this.elenaDataSet.themes);
}
private void button1_Click(object sender, EventArgs e)
{
try
{
string sql = "INSERT INTO themes ( theme) VALUES('" + textBox2.Text + "')";
if (conn.State != ConnectionState.Open)
conn.Open();
command = new MySqlCommand(sql, conn);
int x = command.ExecuteNonQuery();
conn.Close();
MessageBox.Show(x.ToString() + " record(s) saved.");
//textBox1.Text = "";
textBox2.Text = "";
}
catch (MySqlException ex)
{
MessageBox.Show(ex.Message);
}
}
private void button3_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void button2_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
this.Hide();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
textBox2.Text = (comboBox1.SelectedItem as DataRowView).Row["parent_id"].ToString();
}
private void label3_Click(object sender, EventArgs e)
{
}
private void button4_Click(object sender, EventArgs e)
{MySqlConnection conn = new MySqlConnection();
conn.ConnectionString = "server = localhost; user = elena; database = elena; password = ds12199118; port = 3306";
conn.Open();
string sql = "INSERT INTO themes ( theme, parent_id) VALUES( '" + textBox1.Text + "','" + comboBox1.SelectedValue + "')";
if (conn.State != ConnectionState.Open)
conn.Open();
command = new MySqlCommand(sql, conn);
int x = command.ExecuteNonQuery();
conn.Close();
MessageBox.Show(x.ToString() + " record(s) saved.");
textBox1.Text = "";
}
4. Добавление учебных материалов в приложение
ublic partial class material : Form
{
public material()
{
InitializeComponent();
}
private void material_Load(object sender, EventArgs e)
{
this.themesTableAdapter.Fill(this.elenaDataSet.themes);
}
private void button1_Click(object sender, EventArgs e)
{
MySqlConnection conn = new MySqlConnection();
MySqlCommand command;
conn.ConnectionString = "server = localhost; user = elena; database = elena; password = ds12199118; port = 3306";
conn.Open();
string sql = "INSERT INTO material ( content, weight,id_themes) VALUES( '" + textBox1.Text + "','" + textBox2.Text + "','" + comboBox1.SelectedValue + "')";
if (conn.State != ConnectionState.Open)
conn.Open();
command = new MySqlCommand(sql, conn);
int x = command.ExecuteNonQuery();
conn.Close();
MessageBox.Show(x.ToString() + " record(s) saved.");
textBox1.Text = "";
textBox2.Text = "";
}
}
5. Добавление траекторий в приложение, задание базовой траектории
namespace prepodavatel
{
public partial class traectorys : Form
{
MySqlConnection conn = new MySqlConnection("server = localhost; user = elena; database = elena; password = ds12199118; port = 3306");
MySqlCommand command;
public traectorys()
{
InitializeComponent();
}
private void traectorys_Load(object sender, EventArgs e)
{
// TODO: данная строка кода позволяет загрузить данные в таблицу "elenaDataSet.themes". При необходимости она может быть перемещена или удалена.
this.themesTableAdapter.Fill(this.elenaDataSet.themes);
// TODO: данная строка кода позволяет загрузить данные в таблицу "elenaDataSet.traectorys". При необходимости она может быть перемещена или удалена.
this.traectorysTableAdapter.Fill(this.elenaDataSet.traectorys);
}
private void button1_Click(object sender, EventArgs e)
{
string sql = "INSERT INTO traectorys ( name, start, end, id_themes) VALUES('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + comboBox1.SelectedValue + "')";
if (conn.State != ConnectionState.Open)
conn.Open();
command = new MySqlCommand(sql, conn);
int x = command.ExecuteNonQuery();
conn.Close();
MessageBox.Show(x.ToString() + " record(s) saved.");
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
comboBox1.SelectedValue = "";
}
private void button3_Click(object sender, EventArgs e)
{
}
}
Основные функции в приложении обучаемого.
1. Регистрация и авторизация обучаемого в системе
namespace forma2
{
public partial class Form3 : Form
{
// private peremen p = new peremen();
// private int userId;
private int themeId = 1;
private string res;
MySqlConnection conn = new MySqlConnection("server = localhost; user = elena; database = elena; password = ds12199118; port = 3306");
MySqlCommand command;
public Form3(int themeId, int userId)
{
InitializeComponent();
this.themeId = themeId;
}
private void Form3_Load(object sender, EventArgs e)
{
this.usersTableAdapter.Fill(this.elenaDataSet.users);
}
private void button1_Click(object sender, EventArgs e)
{
string sql = "INSERT INTO users (familia_users, ima_users, otchestvo_users, pochta, phone, login_id) VALUES('" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "', '" + textBox6.Text + "', '" + textBox7.Text + "')";
if (conn.State != ConnectionState.Open)
conn.Open();
command = new MySqlCommand(sql, conn);
int x = command.ExecuteNonQuery();
MessageBox.Show(x.ToString() + " Регистрация прошла успешно");
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = "select * from users where users.login_id = @loginId";
cmd.Parameters.AddWithValue("@loginId", MySqlDbType.Int32).Value = Convert.ToInt32(textBox7.Text.TrimEnd());
using (MySqlDataAdapter dataAdapter = new MySqlDataAdapter(cmd))
{
dataAdapter.SelectCommand.Connection = conn;
dataAdapter.SelectCommand = cmd;
DataTable table = new DataTable();
dataAdapter.Fill(table);
users u = new users();
u.setId((int)table.Rows[0]["id_users"]);
int userId = u.getId();
Form7 f7 = new Form7(userId, res);
f7.Show();
this.Hide();
Form4 f4 = new Form4(userId, res);
}
}
private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
2. Отображение иерархического справочника дисциплин и выбор дисциплины обучаемым для прохождеия тестирования
MySqlConnection conn = new MySqlConnection("server = localhost; user = elena; database = elena; password = ds12199118; port = 3306");
MySqlCommand command;
private List<traectorys> traectorys = new List<traectorys>();
private int userId;
private int start;
private int end;
private string res;
private bool psih;
public Form4(int userId, string res)
{
InitializeComponent();
this.userId = userId;
conn.Open();
using (var cmd = new MySqlCommand("SELECT id_themes, theme, parent_id FROM themes ORDER BY parent_id ASC", conn))
{
using (var dr = cmd.ExecuteReader())
{
var nodes = new Dictionary<int, TreeNode>();
while (dr.Read())
{
int id_themes = dr.GetInt32(0);
int? parentId = dr.IsDBNull(2) ? null : (int?)dr.GetInt32(2);
// string code = dr.GetString(2);
string name = dr.GetString(1);
var node = new TreeNode(name);
TreeNode parent;
if (parentId == null)
treeView1.Nodes.Add(node); // Добавление ноды в контрол TreeView
else
if (nodes.TryGetValue(parentId.Value, out parent))
{
parent.Nodes.Add(node);
node.Tag = id_themes;
}
nodes.Add(id_themes, node);
}
}
}
}
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
MessageBox.Show(e.Node.Text);
}
private void Form4_Load(object sender, EventArgs e)
{
this.themesTableAdapter.Fill(this.elenaDataSet.themes);
}
private void button1_Click(object sender, EventArgs e)
{
if (treeView1.SelectedNode.Tag != null)
GlobalVariable.id_theme = (int)treeView1.SelectedNode.Tag;
}
3. Формирование траектории обучения
if (treeView1.SelectedNode.Tag != null)
GlobalVariable.id_theme = (int)treeView1.SelectedNode.Tag;
string queryString = "select count(case percents.RIGHT_ANSWER when '1' then 1 else null end)/ count(percents.questions)*100 'res' from( select qu.id_questions questions, count(case au.priznak when '1' then 1 else null end) = count(au.priznak) AND count(au.priznak) = count(case a.priznak when '1' then 1 else null end) RIGHT_ANSWER from question_user qu left join answer a on qu.id_questions = a.id_questions left join answer_user au on a.id_answer = au.id_answer where qu.id_themes=IdThemes and qu.id_users=@IdUsers group by qu.id_questions) percents";
MySqlDataAdapter adapter2 = new MySqlDataAdapter(queryString, conn);
adapter2.SelectCommand.Parameters.AddWithValue("@IdThemes", GlobalVariable.id_theme);
adapter2.SelectCommand.Parameters.AddWithValue("@IdUsers", userId);
try
{
MySqlCommand command = new MySqlCommand(queryString, conn);
//conn.Open();
var res = command.ExecuteScalar().ToString();
string sql1;
string sql2;
if (!"".Equals(res))
{
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = "select * from traectorys where traectorys.id_themes=@themesID and @res between traectorys.start and traectorys.end order by end asc ";
cmd.Parameters.AddWithValue("@id_theme", GlobalVariable.id_theme);
cmd.Parameters.AddWithValue("@res", res);
using (MySqlDataAdapter dataAdapter1 = new MySqlDataAdapter(cmd))
{
dataAdapter1.SelectCommand.Connection = conn;
dataAdapter1.SelectCommand = cmd;
DataTable table = new DataTable();
dataAdapter1.Fill(table);
traectorys = new List<traectorys>();
for (int i = 0; i < table.Rows.Count; i++)
{
traectorys t = new traectorys();
t.setStart((int)table.Rows[0]["start"]);
t.setEnd((int)table.Rows[0]["end"]);
int start = t.getStart();
int end = t.getEnd();
int res1 = Int32.Parse(res.ToString());
if (res1 > 50)
{
}
Form6 f6 = new Form6(GlobalVariable.id_theme, userId, res);
f6.Show();
this.Hide();
}
}}
else
{
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = "select * from traectorys where traectorys.id_themes = @id_theme and traectorys.priznak=@priznaki";
cmd.Parameters.AddWithValue("@id_theme", GlobalVariable.id_theme);
cmd.Parameters.AddWithValue("@priznaki", 1);
using (MySqlDataAdapter dataAdapter = new MySqlDataAdapter(cmd))
{
dataAdapter.SelectCommand.Connection = conn;
dataAdapter.SelectCommand = cmd;
DataTable table = new DataTable();
dataAdapter.Fill(table);
traectorys = new List<traectorys>();
for (int i = 0; i < table.Rows.Count; i++)
{
traectorys t = new traectorys();
t.setStart((int)table.Rows[0]["start"]);
t.setEnd((int)table.Rows[0]["end"]);
int start = t.getStart();
int end = t.getEnd();
/* if (Int32.TryParse(res.ToString(), out res1))
{
}*/
Form5 f5 = new Form5(GlobalVariable.id_theme, userId, res, start, end, psih);
f5.Show();
this.Hide();
}
}
}
}
catch (MySqlException ex)
{
MessageBox.Show(ex.Message);
}
}
4. Построение тестирования, отображение формы с вопросами и соответствующими ответами, а также в зависимости от уровня сложности, темы и какое тестирование будет проходить обучаемый (психологический тест, входной тест, контрольный комплексный тест)
public Form5(int id_theme, int userId, string res, int start, int end, bool psih)
{
InitializeComponent();
this.userId = userId;
// this.themesId = themeId;
this.start = start;
this.end = end;
this.psih = psih;
this.res = res;
conn.Open();
try
{
Question q = new Question();
if (psih == true)
{
MySqlDataAdapter adapterq = new MySqlDataAdapter("select * from questions where questions.priznakpsih = @priznakpsih order by rand() limit 10", conn);
adapterq.SelectCommand.Parameters.AddWithValue("@priznakpsih", 1);
adapterq.FillSchema(elenaDataSet, SchemaType.Source, "questions");
adapterq.Fill(elenaDataSet, "questions");
DataTable questionsTableq;
questionsTableq = elenaDataSet.Tables["questions"];
questions = new List<Question>();
for (int i = 0; i < questionsTableq.Rows.Count; i++)
{
// Question q = new Question();
q.setId((int)questionsTableq.Rows[i][0]);
q.setName((string)questionsTableq.Rows[i][1]);
q.setQuestion((string)questionsTableq.Rows[i][2]);
q.setIdTheme((int)questionsTableq.Rows[i][3]);
q.setIdImage((int)questionsTableq.Rows[i][4]);
q.setWeight((int)questionsTableq.Rows[i][5]);
q.setRight1((bool)questionsTableq.Rows[i][6]);
questions.Add(q);
}
MySqlDataAdapter adaptera = new MySqlDataAdapter("SELECT * FROM answer where answer.id_questions= @qId", conn);
adaptera.SelectCommand.Parameters.Clear();
adaptera.SelectCommand.Parameters.AddWithValue("@qId", q.getId());
adaptera.FillSchema(elenaDataSet, SchemaType.Source, "answer");
adaptera.Fill(elenaDataSet, "answer");
DataTable answersTable;
answersTable = elenaDataSet.Tables["answer"];
List<Answer> answers = new List<Answer>();
for (int j = 0; j < answersTable.Rows.Count; j++)
{
Answer a = new Answer();
a.setIda((int)answersTable.Rows[j][0]);
a.setAnswer((string)answersTable.Rows[j][1]);
a.setRight((bool)answersTable.Rows[j][2]);
// a.setCharacter((int)answersTable.Rows[j][3]);
answers.Add(a);
}
answersTable.Clear();
q.setAnswers(answers);
}
else
{
MySqlDataAdapter adapter = new MySqlDataAdapter("select q.* from questions q join questions_characteristics qc on q.id_questions = qc.questions_id_questions where qc.characteristics_id_characte=1 and q.id_themes= @themesId and q.weight >= @min and q.weight<= @max order by rand()", conn);
adapter.SelectCommand.Parameters.AddWithValue("@themesId", id_theme);
adapter.SelectCommand.Parameters.AddWithValue("@min", start);
adapter.SelectCommand.Parameters.AddWithValue("@max", end);
MySqlCommandBuilder builder = new MySqlCommandBuilder(adapter);
// DataSet elenaDataSet = new DataSet("elenaDataSet");
adapter.FillSchema(elenaDataSet, SchemaType.Source, "questions");
adapter.Fill(elenaDataSet, "questions");
DataTable questionsTable;
questionsTable = elenaDataSet.Tables["questions"];
questions = new List<Question>();
for (int i = 0; i < questionsTable.Rows.Count; i++)
{
// Question q = new Question();
q.setId((int)questionsTable.Rows[i][0]);
q.setName((string)questionsTable.Rows[i][1]);
q.setQuestion((string)questionsTable.Rows[i][2]);
q.setIdTheme((int)questionsTable.Rows[i][3]);
q.setIdImage((int)questionsTable.Rows[i][4]);
q.setWeight((int)questionsTable.Rows[i][5]);
Convert.ToBoolean(questionsTable.Rows[i][6]);
q.setRight1((bool)questionsTable.Rows[i][6]);
questions.Add(q);
}
MySqlDataAdapter adaptera = new MySqlDataAdapter("SELECT * FROM answer where answer.id_questions= @qId", conn);
adaptera.SelectCommand.Parameters.Clear();
adaptera.SelectCommand.Parameters.AddWithValue("@qId", q.getId());
adaptera.FillSchema(elenaDataSet, SchemaType.Source, "answer");
adaptera.Fill(elenaDataSet, "answer");
DataTable answersTable;
answersTable = elenaDataSet.Tables["answer"];
List<Answer> answers = new List<Answer>();
for (int j = 0; j < answersTable.Rows.Count; j++)
{
Answer a = new Answer();
a.setIda((int)answersTable.Rows[j][0]);
a.setAnswer((string)answersTable.Rows[j][1]);
a.setRight((bool)answersTable.Rows[j][2]);
// a.setCharacter((int)answersTable.Rows[j][3]);
answers.Add(a);
}
answersTable.Clear();
q.setAnswers(answers);
}
label1.Text = questions[currentQuestion].getQuestion();
string sql = "SELECT image FROM pictures WHERE id_image=" + questions[currentQuestion].getIdImage();
if (conn.State != ConnectionState.Open)
conn.Open();
command = new MySqlCommand(sql, conn);
MySqlDataReader reader = command.ExecuteReader();
reader.Read();
if (reader.HasRows)
{
byte[] img = (byte[])(reader[0]);
if (img == null)
pictureBox1.Image = null;
else
{
MemoryStream ms = new MemoryStream(img);
pictureBox1.Image = Image.FromStream(ms);
conn.Close();
}
}
}
catch (DriveNotFoundException e)
{
Console.WriteLine(e.Message);
} сбор информация обучение тест
List<Answer> list = questions[currentQuestion].getAnswers();
for (int i = 0; i < list.Count; i++)
{
CheckBox checkBox = new CheckBox();
checkBox.Appearance = Appearance.Normal;
checkBox.AutoCheck = true;
checkBox.Location = new Point(30, 30 + i * 30);
checkBox.Name = list[i].getIda().ToString();
checkBox.Text = list[i].getAnswer();
addBox(checkBox);
}}
private CheckBox addBox(CheckBox box)
{
checkBoxes.Add(box);
this.Controls.Add(box);
return box;
}
private void removeBoxes()
{
foreach (CheckBox checkBox in checkBoxes)
{
this.Controls.Remove(checkBox);
checkBox.Dispose();
}
checkBoxes.Clear();
}
private void button2_Click(object sender, EventArgs e)
{
currentQuestion++;
if (currentQuestion < questions.Count)
{
label1.Text = questions[currentQuestion].getQuestion();
List<Answer> list = questions[currentQuestion].getAnswers();
removeBoxes();
for (int i = 0; i < list.Count; i++)
{
CheckBox checkBox = new CheckBox();
checkBox.Appearance = Appearance.Normal;
checkBox.AutoCheck = true;
checkBox.Location = new Point(30, 30 + i * 30);
checkBox.Name = list[i].getIda().ToString();
checkBox.Text = list[i].getAnswer();
addBox(checkBox);
}
}
}
private void button3_Click(object sender, EventArgs e)
{
currentQuestion--;
if (currentQuestion >= 0)
{
label1.Text = questions[currentQuestion].getQuestion();
List<Answer> list = questions[currentQuestion].getAnswers();
removeBoxes();
for (int i = 0; i < list.Count; i++)
{
CheckBox checkBox = new CheckBox();
checkBox.Appearance = Appearance.Normal;
checkBox.AutoCheck = true;
checkBox.Location = new Point(30, 30 + i * 30);
checkBox.Name = list[i].getIda().ToString();
checkBox.Text = list[i].getAnswer();
addBox(checkBox);
}
}
}
5. Получение результата тестирования обучаемого
try
{
conn.Open();
string sql = "INSERT INTO question_user (id_questions, weight, id_users, id_themes) VALUES(@id_questions, @weight, @id_users, @id_themes)";
MySqlCommand command = new MySqlCommand(sql, conn);
command.Parameters.Clear();
command.Parameters.Add("@id_questions", MySqlDbType.Text).Value = questions[currentQuestion].getId();
command.Parameters.Add("@weight", MySqlDbType.Text).Value = questions[currentQuestion].getWeight();
command.Parameters.Add("@id_users", MySqlDbType.Text).Value = userId;
command.Parameters.Add("@id_themes", MySqlDbType.Text).Value = questions[currentQuestion].getIdTheme();
command.CommandType = CommandType.Text;
command.ExecuteNonQuery();
List<Answer> answers = questions[currentQuestion].getAnswers();
string sql2 = "INSERT INTO answer_user (id_answer, answer, priznak, id_questions) VALUES (@id_answer2, @answer2, @priznak2, @id_questions2)";
foreach (Answer ans in answers)
{
MySqlCommand command2 = new MySqlCommand(sql2, conn);
command2.Parameters.Clear();
command2.Parameters.Add("@id_answer2", MySqlDbType.Text).Value = ans.getIda();
command2.Parameters.Add("@answer2", MySqlDbType.Text).Value = ans.getAnswer();
command2.Parameters.Add("@priznak2", MySqlDbType.Byte).Value = ans.isRight();
command2.Parameters.Add("@id_questions2", MySqlDbType.Text).Value = questions[currentQuestion].getId();
// command2.Parameters.Add("@id_characteristics2", MySqlDbType.Text).Value = ans.getCharacter();
command2.CommandType = CommandType.Text;
command2.ExecuteNonQuery();
}
conn.Close();
MessageBox.Show(" record(s) saved.");
}
catch (MySqlException ex)
{
MessageBox.Show(ex.Message);
}
}
private void button4_Click(object sender, EventArgs e)
{
// MySqlConnection conn = new MySqlConnection("server = localhost; user = elena; database = elena; password = ds12199118; port = 3306");
string queryString = "select count(case percents.RIGHT_ANSWER when '1' then 1 else null end)/ count(percents.questions)*100 'res' from( select qu.id_questions questions, count(case au.priznak when '1' then 1 else null end) = count(au.priznak) AND count(au.priznak) = count(case a.priznak when '1' then 1 else null end) RIGHT_ANSWER from question_user qu left join answer a on qu.id_questions = a.id_questions left join answer_user au on a.id_answer = au.id_answer where qu.id_themes=1 and qu.id_users=1 group by qu.id_questions) percents";
try
{
MySqlCommand command = new MySqlCommand(queryString, conn);
command.Parameters.AddWithValue("@themesID", themesId);
command.Parameters.AddWithValue("@userID", userId);
// conn.Open();
MessageBox.Show (command.ExecuteScalar().ToString());
}
catch (MySqlException ex)
{
MessageBox.Show(ex.Message);
}
}
private void button5_Click(object sender, EventArgs e)
{
DialogResult res1 = new DialogResult();
res1 = MessageBox.Show("Вы хотите продолжить тестирование по следующей теме"," Изучение следующей темы",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
if (res1 == DialogResult.Yes)
{
Form4 f4 = new Form4(userId, res);
f4.Show();
this.Hide();
}
else
{ Application.Exit(); }
}} }
6. Получение формы с учебным материалом в зависимости от уровня сложности и выбранной темы для тестирования.
public partial class Form6 : Form
{
private List<material> materials = new List<material>();
MySqlConnection conn = new MySqlConnection("server = localhost; user = elena; database = elena; password = ds12199118; port = 3306");
MySqlCommand command;
private int userId;
private int themeId;
private string res;
private int start;
private int end;
private bool psih;
int currentMaterial = 0;
public Form6(int id_theme, int userId, string res)
{
InitializeComponent();
this.userId = userId;
conn.Open();
MySqlDataAdapter adapter1 = new MySqlDataAdapter("select * from traectorys where traectorys.id_themes=@themesID and @res between traectorys.start and traectorys.end", conn);
adapter1.SelectCommand.Parameters.AddWithValue("@themesID", themeId);
adapter1.SelectCommand.Parameters.AddWithValue("@res", res);
MySqlCommandBuilder builder1 = new MySqlCommandBuilder(adapter1);
DataSet elenaDataSet = new DataSet("elenaDataSet");
adapter1.FillSchema(elenaDataSet, SchemaType.Source, "traectorys");
adapter1.Fill(elenaDataSet, "traectorys");
DataTable traectoryTable;
traectoryTable = elenaDataSet.Tables["traectorys"];
traectorys t = new traectorys();
t.setId((int)traectoryTable.Rows[0][0]);
t.setName((string)traectoryTable.Rows[0][1]);
t.setStart((int)traectoryTable.Rows[0][2]);
t.setEnd((int)traectoryTable.Rows[0][3]);
t.setIdthemes((int)traectoryTable.Rows[0][4]);
MySqlDataAdapter adapter = new MySqlDataAdapter("select m.* from material m where m.id_themes= @themesId and m.weight >= @min and m.weight<= @max", conn);
adapter.SelectCommand.Parameters.AddWithValue("@themesId", themeId);
adapter.SelectCommand.Parameters.AddWithValue("@min", t.getStart());
adapter.SelectCommand.Parameters.AddWithValue("@max", t.getEnd());
MySqlCommandBuilder builder = new MySqlCommandBuilder(adapter);
adapter.FillSchema(elenaDataSet, SchemaType.Source, "material");
adapter.Fill(elenaDataSet, "material");
DataTable materialTable;
materialTable = elenaDataSet.Tables["material"];
materials = new List<material>();
for (int j = 0; j < materialTable.Rows.Count; j++)
{
material m = new material();
m.setId((int)materialTable.Rows[j][0]);
m.setContent((string)materialTable.Rows[j][1]);
m.setWeight((int)materialTable.Rows[j][2]);
m.setIdthemes((int)materialTable.Rows[j][3]);
materials.Add(m);
}
label1.Text = materials[currentMaterial].getContent();
}
private void button1_Click(object sender, EventArgs e)
{
currentMaterial++;
if (currentMaterial < materials.Count)
{
label1.Text = materials[currentMaterial].getContent();
}
}
private void button2_Click(object sender, EventArgs e)
{
currentMaterial--;
if (currentMaterial >= 0)
{
label1.Text = materials[currentMaterial].getContent();
}
}
private void button3_Click(object sender, EventArgs e)
{
Form5 f5 = new Form5(GlobalVariable.id_theme, userId, res, start, end, psih);
f5.Show();
this.Hide();
}
}
}
7. Форма перехода к адаптивному обучению или к выбору дисциплины (в данном случае не будет произведен учет психологической характеристики)
public partial class Form7 : Form
{
private int userId;
private int start;
private int end;
private string res;
MySqlConnection conn = new MySqlConnection("server = localhost; user = elena; database = elena; password = ds12199118; port = 3306");
private List<Question> questions = new List<Question>();
public Form7(int userId, string res)
{
InitializeComponent();
this.userId = userId;
}
private void Form7_Load(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
Form4 f4 = new Form4(userId, res);
f4.Show();
this.Hide();
}
private void button1_Click(object sender, EventArgs e)
{
string queryString = "select count(case percents.RIGHT_ANSWER when '1' then 1 else null end)/ count(percents.questions)*100 'res' from( select qu.id_questions questions, count(case au.priznak when '1' then 1 else null end) = count(au.priznak) AND count(au.priznak) = count(case a.priznak when '1' then 1 else null end) RIGHT_ANSWER from question_user qu left join answer a on qu.id_questions = a.id_questions left join answer_user au on a.id_answer = au.id_answer left join questions on a.id_questions = questions.id_questions where qu.id_users=600 and questions.priznakpsih=@priznakpsih group by qu.id_questions) percents";
MySqlCommand cmd1 = new MySqlCommand(queryString, conn);
cmd1.Parameters.AddWithValue("@IdUsers", userId);
cmd1.Parameters.AddWithValue("@priznakpsih", 1);
conn.Open();
// MySqlCommand cmd1 = new MySqlCommand(queryString, conn);
var res = cmd1.ExecuteScalar().ToString();
try
{
//conn.Open();
// var res = cmd1.ExecuteScalar().ToString();
string sql1;
string sql2;
if (!"".Equals(res))
{
DataSet elenaDataSet = new DataSet("elenaDataSet");
Form4 f4 = new Form4(userId, res);
f4.Show();
this.Hide();
}
else
{
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = "select * from questions where questions.priznakpsih = @priznakpsih order by rand() limit 10";
cmd.Parameters.AddWithValue("@priznakpsih", 1);
using (MySqlDataAdapter dataAdapter = new MySqlDataAdapter(cmd))
{
dataAdapter.SelectCommand.Connection = conn;
dataAdapter.SelectCommand = cmd;
DataTable table = new DataTable();
dataAdapter.Fill(table);
questions = new List<Question>();
for (int i = 0; i < table.Rows.Count; i++)
{
Question q = new Question();
q.setRight1((bool)table.Rows[0]["priznakpsih"]);
bool psih = q.isRight1();
Form5 f5 = new Form5(GlobalVariable.id_theme, userId, res, start, end, psih);
...Подобные документы
Технология сбора информации традиционными методами. Правила сбора оффлайновой информации. Технические средства сбора информации. Операции для быстрого восстановления данных в системах хранения. Технологический процесс и процедуры обработки информации.
курсовая работа [304,5 K], добавлен 02.04.2013Способы передачи данных и методы фазирования. Передача алфавитно-цифровой информации. Разработка кодирующего и декодирующего устройства. Расчет среднего времени запаздывания информации. Разработка структурных схем и алгоритмов функционирования СПД.
курсовая работа [2,0 M], добавлен 21.12.2012Обзор контроллеров и модулей ввода-вывода отечественных и зарубежных фирм. Разработка системы АСТРК-СХК нового поколения. Возможные области применения OPC-серверов в АСУ предприятия. Оценка эффективности разработки системы удаленного сбора информации.
дипломная работа [4,5 M], добавлен 07.09.2013Проектирование схемы сбора информации со ста двадцати восьми датчиков на основе микроконтроллера. Разработка листинга программы для контроллера, обрабатывающей поступающие данные с накоплением их во Flash-памяти с учетом точного времени и текущей даты.
курсовая работа [891,8 K], добавлен 24.12.2012Разработка устройства последовательного сбора и обработки информации с последующим выводом. Выбор элементной базы. Расчет характеристик элементов функциональной схемы. Определение разрядности АЦП и количества бит, передаваемых в информационном кадре.
курсовая работа [160,9 K], добавлен 05.05.2013Особенности управляющих микроконтроллеров. Разработка контроллера для реализации комплекса сбора информации, рассчитанного на фиксирование данных в оперативно-запоминающем устройстве и одновременную передачу её по GSM-каналу в виде SMS-сообщения.
курсовая работа [1019,3 K], добавлен 26.12.2012Архитектура микроконтроллера PIC16F876 фирмы Microchip и построение на его основе микропроцессорной системы логического анализатора. Построение устройств сбора и обработки информации. Кросс-компилятор HI-TECH С for Microchip PIC v7.85. Листинг программы.
контрольная работа [137,4 K], добавлен 24.12.2012Принцип действия устройства сбора информации на базе микроконтроллера МК51: индикация, "рабочий режим" и передача данных персонального компьютера. Алгоритм начального опроса датчиков. Электрическая принципиальная схема устройства, текст программы.
курсовая работа [102,5 K], добавлен 21.10.2012Средства поиска информации в сети Интернет. Основные требования и методика поиска информации. Структура и характеристика поисковых сервисов. Глобальные поисковые машины WWW (World Wide Web). Планирование поиска и сбора информации в сети Интернет.
реферат [32,2 K], добавлен 02.11.2010Разработка программы для сбора и анализа информации об автобусах на парковке. Назначение и область применения. Алгоритм в словесной форме. Состав технических и программных средств. Разработка приложения в среде визуального программирования C++Builder 6.
курсовая работа [1,5 M], добавлен 06.09.2014Запись результатов измерений в память микроконтроллера. Определение времени измерения и расчет погрешностей системы. Обоснование алгоритма сбора измерительной информации и метода ее обработки. Разработка временных диаграмм, отражающих работу системы.
курсовая работа [1,6 M], добавлен 18.11.2011Создание системы сбора пространственных и атрибутивных данных как один из важнейших этапов ведения кадастрового учета. Требования к информационной системе, исходная информация по кадастровому учету объектов недвижимости. Необходимые программные средства.
курсовая работа [4,5 M], добавлен 17.07.2013Анализ модели информационно-телекоммуникационной системы предприятия. Виды угроз информационной безопасности. Цели и задачи защиты информации на предприятии. Разработка процедур контроля системы управления защитой информации в корпоративной сети.
дипломная работа [3,6 M], добавлен 30.06.2011Порядок сбора данных с помощью программного обеспечения "ПРОЛОГ". Языки программирования VBA и HTML, их характерные особенности. Web-сервера Apache, принцип работы серверной системы. Реализация сбора данных и разработка сайта с показаниями приборов.
дипломная работа [4,4 M], добавлен 24.09.2014Методы обеспечения целостности информации в системах стационарных и подвижных объектов. Определение оптимальных характеристик корректирующего кода, разработка кодирующего устройства; технические системы сбора телеметрической информации и охраны объектов.
дипломная работа [3,8 M], добавлен 01.07.2011Вычислительная сеть для сбора информации о потреблении электроэнергии от предприятий. Топология сети. Определение потока информации от предприятий и ЦДП. Необходимое оборудование. Сеть на базе оптоволокна, на базе xDSL модемов, на базе радиосвязи.
курсовая работа [268,6 K], добавлен 02.10.2008Сущность метода зонного сжатия буквенной информации. Описание классов, определяющих место хранения символов и алфавита. Реализация асимметричного алгоритма RSA. Логика построения шифра и структура ключевой информации в криптографическом алгоритме ГОСТ.
контрольная работа [3,2 M], добавлен 30.11.2013Аналоговое и цифровое представление информации. Понятие, классификация и характеристика методов сжатия данных: алгоритмы одно- и двухпараметрической адаптации, линейной экстра- и интерполяции. Кодирование информации и вычисление циклического кода.
курсовая работа [157,4 K], добавлен 07.12.2012Описание разработанных программных модулей системы автоматизированного документооборота. Характеристика базы данных, нормативно-справочной, входной и выходной оперативной информации. Организация технологии сбора, передачи, обработки и выдачи информации.
дипломная работа [4,7 M], добавлен 16.02.2013Информатика - наука об информации, технических средствах ее сбора, хранения, обработки, передачи. Носители информации, память. Носители информации вещество и поле. Процесс сообщения. Целенаправленная передача информации. Непрерывное и дискретное знания.
автореферат [667,1 K], добавлен 08.06.2008