Разработка школьного комплекса по физике

Анализ предметной области. Физика в школьной программе. Компьютерные средства обучения. Разработка учебного комплекса. Тестирование корректной работы тестов. Обеспечение взаимодействие системы с базой данных. Создание графического интерфейса приложения.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 14.12.2019
Размер файла 2,0 M

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

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

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

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

ВВЕДЕНИЕ

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

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

Дипломная работа состоит из четырех разделов.

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

Во втором разделе производится разработка приложения.

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

В четвертом разделе происходит разработка документации.

1. АНАЛИТИЧЕСКИЙ ОБЗОР

графический интерфейс физика школьный

1.1 Анализ предметной области

1.1.1 Физика в школьной программе

Физика - обязательный предмет в любой школьной программе. Ознакомление с данной дисциплиной начинается в 7 классе.

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

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

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

Ниже представлены главы из учебника по физике, которые проходят ученики 9 класса:

? законы взаимодействия и движения тел;

? механические колебания и волны, звук;

? электромагнитное поле;

? строение атома и атомного ядра, использование энергии атомных ядер;

? строение и эволюция вселенной.

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

? обучающемуся работать в удобном для него темпе;

? сократить время, затрачиваемое учителем на проверку заданий;

? отслеживать успеваемость по предмету;

? избавить ученика от необходимости приносить на урок учебник и задачник, так как все учебные материалы доступны на ПК.

1.1.2 Компьютерные средства обучения

В наше время существует огромное количество различных компьютерных средств обучения (КСО).

Основные педагогические задачи, решаемые с поддержкой КСО:

1. Начальное знакомство с ПО, освоение её базисных определений и концепций.

2. Базовая подготовка на разных уровнях глубины и детальности.

3. Выработка умений и способностей постановления стандартных фактических проблем в этой ПО.

4. Выработка умений рассмотрения и принятия заключений в необычных (нетиповых) проблематичных моментах.

2. Развитие возможностей к конкретным типам деятельности.

3. Проведение учебно-экспериментальных исследований с моделями исследуемых объектов, действий и сферы работы.

4. Восстановление знаний, умений и способностей (для редко встречающихся ситуаций, задач и технологических операций).

5. Контроль и расценивание степеней познаний и умений.

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

Основные педагогические задачи, решаемые с поддержкой КСО:

1. Начальное знакомство с ПО, освоение её базисных определений и концепций.

2. Базовая подготовка на разных уровнях глубины и детальности.

3. Выработка умений и способностей постановления стандартных фактических проблем в этой ПО.

4. Выработка умений рассмотрения и принятия заключений в необычных (нетиповых) проблематичных моментах.

5. Развитие возможностей к конкретным типам деятельности.

6. Проведение учебно-экспериментальных исследований с моделями исследуемых объектов, действий и сферы работы.

7. Восстановление знаний, умений и способностей (для редко встречающихся ситуаций, задач и технологических операций).

8. Контроль и расценивание степеней познаний и умений.

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

Классификацию КСО можно проводить по разным основаниям:

? по языковым средствам;

? по типу ЭВМ;

? по механизму программирования и по типу предметной области знаний;

? по функционально-методическим возможностям.

Вариант классификации ПО представлен на рисунке 1.1.

Рисунок 1.1 - Программное обеспечение образовательного процесса

В зависимости от решаемых педагогических задач КСО подразделяются на четыре класса:

? средства теоретической и технологической подготовки;

? средства практической подготовки;

? вспомогательные средства;

? комплексные средства.

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

Соответствие между выделенными видами КСО и решаемыми с их помощью педагогическими задачами отражено в таблице 1.1 [1].

Таблица 1.1 - Педагогические задачи

Виды КСО

Номера решаемых задач

Компьютерный учебник

1, 2, 8, (5, 7)

Компьютерная обучающая система

2, 8, (1, 5, 7)

Компьютерная система контроля знаний

8

Компьютерный задачник

3, 8, (4, 5, 6, 7)

Компьютерный тренажер

3, 4, 5, 8, (6, 7)

Компьютерный лабораторный практикум

5, 6

Компьютерный справочник

7, (2, 3)

Мультимедийное учебное занятие

1, 2, 3

Компьютерный учебный курс

1, 2, 3, 8, (4, 5, 6)

Компьютерный восстановительный курс

3, 7, 8

Классификация КСО представлена на рисунке 1.2.

Рисунок 1.2 - Классификация КСО

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

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

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

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

Электронный учебник может работать в четырех основных режимах:

? обучение без проверки;

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

? тестовый контроль, предназначенный для итогового контроля знаний с выставлением оценки;

? самостоятельное выполнение лабораторных или практических работ [2].

1.2 Обзор аналогов

Во время работы над дипломным проектом был рассмотрен ряд электронных учебников. В их числе «Электронное приложение к учебнику Перышкина А.В. Физика. 7 класс», «Электронное приложение к учебнику Пурышевой Н.C. Физика. 9 класс», Naobumium.info.

1.2.1 Электронное приложение к учебнику Перышкина А.В.

Рисунок 1.3 - Электронное приложение к учебнику Перышкина А.В. Физика, 7 класс

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

1. Подготовка к уроку.

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

2. Проведение урока.

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

3. Практические занятия.

Закрепление знаний или «тренинг», который традиционно велся с помощью плакатов, тетради, мела и доски, может проводиться с использованием информационных объектов. Для использования в ходе закрепления понятий очень интересны интерактивные модели.

4. Домашние задания.

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

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

1.2.2 Электронное приложение к учебнику Пурышевой Н.C.

Рисунок 1.4 - Электронное приложение к учебнику Пурышевой Н.C. Физика. 9 класс

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

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

1.2.3 Naobumium.info

Рисунок 1.5 - Глава «Введение в математику» онлайн учебника Naobumium.info

Naobumium.info [3] представляет собой онлайн учебник по различным школьным дисциплинам. Одна из страниц сайте представлена на рисунке 1.5.

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

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

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

2. РАЗРАБОТКА УЧЕБНОГО КОМПЛЕКСА

2.1 Разработка требований

Необходимо разработать обучающий комплекс по физике для учеников 9 класса средней общеобразовательной школы, основывающийся на учебнике «Физика. 9 класс» (автор: А.В. Перышкин).

Требуемая функциональность:

1. Выбор материала (темы) для обучения;

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

2. Проверка знаний обучающегося с помощью тестирования;

Обязательная составляющая учебника - набор тестов. Включает в себя задания для работы на уроке.

3. Контроль знаний;

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

4. Мониторинг;

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

5. Хранение информации об учениках;

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

6. Наличие инструкции пользователя;

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

Потребительские требования:

1. Содержание графического материала в теоретической части комплекса;

2. Возможность быстро освоить программу любыми пользователями;

3. Надежность;

4. Удобство интерфейса.

Диаграмма вариантов использования представлена на рисунке 2.1.

Рисунок 2.1 - Диаграмма use-case

2.2 Разработка структуры системы

Структура данной системы определяется исходя из требований, представленных в пункте 2.1.

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

Структура системы представлена на рисунке 2.2.

Рисунок 2.2 - Структура системы

1. Инструкция пользователя.

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

2. Пользовательский интерфейс - дает возможность пользователю работать с системой

3. Модуль работы с базой данных - обеспечивает взаимодействие системы с базой данных.

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

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

6. Модуль заданий - производит обработку тестирования.

7. Справочный материал - литература необходимая для решения заданий.

2.2 Анализ и выбор средств разработки

Для реализации системы могут быть подходящими следующие языки: С++, Java, C#.

C# - язык программирования, совмещающий объектно-ориентированные и контекстно-ориентированные концепции. Разработан в 1998--2001 годах группой инженеров под руководством Андерсa Хейлсбергa в компании Microsoft как основной язык разработки приложений для Microsoft .NET. Компилятор с языком C# входит в стандартную установку для .NET, поэтому программы на нём можно создавать даже без инструментов, как например Visual Studio.

C# представитель языков с C-подобным синтаксисом, из всего семейства наиболее похож на C++ и Java. Имеет строгую статическую типизацию, поддерживает полиморфизм, перегрузку операторов, указатели на функции-члены классов, атрибуты, события и т.д. Переняв многое от своих предшественников С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов или вывода типов [4].

Средой разработки была выбрана Microsoft Visual Studio.

Microsoft Visual Studio - продукт компании Microsoft, включающих интегрированную среду разработки программного обеспечения и ряд других средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Windows, Windows Mobile, Windows CE, .NET Framework, Xbox, Windows Phone .NET Compact Framework и Silverlight.

Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных [5].

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

Окно Microsoft Visual Stduio представлено на рисунке 2.3.

Рисунок 2.3 - Microsoft Visual Studio

Для создания БД системы стоял выбор между Oracle и Microsoft SQL Server.

Microsoft SQL Server -- система управления реляционными базами данных, созданная компанией Microsoft. Основной язык запросов -- Transact-SQL, создан совместно Microsoft и Sybase. Transact-SQL является реализацией стандарта ANSI/ISO по структурированному языку запросов с расширениями.

Средством разработки для работы с базой данных было выбрано SQL Server Management Studio (SSMS)

SSMS -- утилита из Microsoft SQL Server 2005 и более новых выпусков для настройки, управления и администрирования всех компонентов Microsoft SQL Server. Программа состоит из графической программы, которая работает с объектами и настройками сервера и скриптового редактора.

Главным инструментом SQL Server Management Studio является Object Explorer, который позволяет пользователю просматривать, извлекать объекты сервера, а также полностью ими управлять.

С помощью SSMS удобно создавать таблицы, связи между ними, а также представлять таблицы и связи в виде диаграммы, создавать пользователей, имеющих доступ к БД, тестировать запросы перед добавлением их в код

Основным преимуществом Microsoft SQL Server перед Oracle является хорошая совместимость с Visual Studio, а также некоторый опыт в работе с данным инструментом.

Окно входа SSMS представлено на рисунке 2.4.

Рисунок 2.4 - Microsoft SQL Server Management Studio

2.3 Разработка алгоритмов

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

? основной алгоритм работы системы (рисунок 2.5);

Рисунок 2.5 - Блок-схема работы комплекса

? алгоритм авторизации (рисунок 2.6);

Рисунок 2.6 - Блок-схема алгоритм авторизации

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

? алгоритм вывода списка тестов;

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

? алгоритм вывода результатов прохождения теста обучающимися (для учителя) (рисунок 2.7);

Рисунок 2.7 - Блок-схема вывода результатов прохождения теста

? алгоритм вывода информации о тесте (название, количество вопросов, результат, оценка);

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

? алгоритм вывода задания теста;

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

? алгоритм прохождения теста (рисунок 2.8).

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

Рисунок 2.8 - Блок-схема прохождения теста

2.4 Разработка учебного комплекса

1. Самое первое, что видит пользователь при открытии приложения - это форма авторизации (рисунок 2.9), которая содержит поля ввода логина и пароля. Чтобы начать работу с системой пользователь должен ввести корректные данные.

Рисунок 2.9 - Форма авторизации

На форме располагается:

1. Поле для ввода логина;

2. Поле для ввода пароля;

3. Кнопка для входа в систему;

4. Кнопка для закрытия формы.

После ввода корректных данных ученик попадает на форму ученика (рисунок 2.10), а учитель попадает на форму учителя (рисунок 2.11) соответственно

Рисунок 2.10 - Форма ученика

На основной форме ученика располагаются следующие блоки и кнопки:

1. Информация о статусе пользователя (ученик, учитель);

2. Блок информации о пользователе (ФИО);

3. Блок выбора учебного материала (обучающие ролики, тесты);

4. Блок с кнопками выбора тестов или обучающих роликов (в зависимости от выбранной категории в блоке №3);

5. Кнопка для открытия учебника;

6. Кнопка для открытия инструкции;

7. Блок с информацией о выбранном тесте или проигрыватель для обучающих роликов (в зависимости от выбранной категории в блоке №3);

8. Кнопка закрытия формы.

Рисунок 2.11 - Форма учителя

На основной форме учителя располагаются следующие блоки и кнопки:

1. Информация о статусе пользователя (ученик, учитель);

2. Блок информации о пользователе (ФИО);

3. Блок выбора тестов;

4. Кнопка для открытия учебника;

5. Блок (таблица) с информацией об учениках (ФИО, результат, оценка);

6. Кнопка закрытия формы.

На форме прохождения теста (рисунок 2.12) располагаются следующие элементы:

1. Информация о тесте (название);

2. Блок вопроса и выбора ответа на него;

3. Кнопка для перехода к предыдущему вопросу;

4. Кнопка для перехода к следующему вопросу;

5. Кнопка закрытия формы.

Рисунок 2.12 - Форма прохождение теста

В базе данных находятся следующие таблицы и поля:

1. logins

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

? id - ключевое поле таблицы;

? login - логин пользователя;

? password - пароль пользователя;

? first_name - имя пользователя;

? second_name - фамилия пользователя;

? surname - отчество пользователя;

? id_role - идентификационный номер роли, является внешним ключом для таблицы roles.

Таблица logins представлена на рисунке 2.13.

Рисунок 2.13 - Таблица logins

2. results

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

? id - идентификационный номер результата;

? id_pupil - идентификационный номер ученика, является внешним ключом для таблицы логины;

? id_test - идентификационный номер теста, является внешний ключом для таблицы тесты;

? result - результат.

Таблица result представлена на рисунке 2.14.

Рисунок 2.14 - Таблица results

3. roles

Эта таблица представляет собой справочник ролей и имеет следующие поля:

? id - идентификационный номер роли;

? name - название роли.

Таблица roles представлена на рисунке 2.15.

Рисунок 2.15 - Таблица roles

4. tasks

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

? id - идентификационный номер задания;

? task - содержимое задания;

? answers - ответы задания;

? id_test - идентификационный номер теста, является внешним ключом к таблице tests;

? answer - правильный ответ.

Таблица tasks представлена на рисунке 2.16.

Рисунок 2.16 - Таблица tasks

5. tests

В этой таблице хранятся данные о тестах, такие как идентификационный номер теста и название теста. Она имеет следующие поля:

? id - идентификационный номер теста;

? name - название теста.

Таблица tests представлена на рисунке 2.17.

Рисунок 2.17 - Таблица tests

Получившаяся схема базы данных представлена на рисунке 2.18.

Форма входа.

Исходя из требований к системе необходимо создавать профиль пользователя. Так как все пользователи известны заранее и их логины, и пароли занесены в базу данных, то для удобной работы с системой необходима форма авторизации (рисунок 2.19)

Опираясь на приведенные в пункте 2.4 элементы, реализуем окно входа в систему.

Рисунок 2.18 - Схема базы данных

Рисунок 2.19 - Окно авторизации

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

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

Рисунок 2.20 - Сообщение о неверных данных

Форма ученика

Вся дальнейшая деятельность ученика будет протекать в данном окне.

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

Рабочая область представлена на рисунке 2.21.

Рисунок 2.21 - Рабочая область

В левой части окна располагается меню.

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

Кнопка «Пройти» открывает соответствующее окно с тестом (рисунок 2.22), в котором и происходит основное действие.

Рисунок 2.22 - Форма прохождение теста

Пользователь не получит возможности перейти к следующему заданию пока не ответит на текущее.

Поскольку задания в системе реализованы в виде тестов, требующих выбрать только один вариант ответа, на форме расположены компоненты radiobutton, которые позволяют это реализовать.

После ответа на последний вопрос появляется окно с результатом (рисунок 2.23). При закрытии окна с результатом ученик снова попадает на основную форму.

Рисунок 2.23 - Форма результат прохождение теста

Если же пользователь является преподавателем, то при в воде логина и пароля он попадает на форму учителя представленную на рисунке 2.24

Рисунок 2.24 - Основная форма учителя

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

Результаты тестирования учеников представлены на рисунке 2.25.

Рисунок 2.25 - Основная форма учителя

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

3. ТЕСТИРОВАНИЕ

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

3.1 Функциональное тестирование

Функциональное тестирование рассматривает заранее указанное поведение и основывается на анализе спецификаций функциональности компонента или системы в целом.

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

Преимущества функционального тестирования:

? имитирует фактическое использование системы.

Недостатки функционального тестирования:

? возможность упущения логических ошибок в программном обеспечении;

? вероятность избыточного тестирования [6].

Тестирование проводилось по следующим функциям:

1. Авторизация пользователя;

2. Функционирование всех кнопок основного окна ученика;

3. Функционирование всех кнопок основного окна учителя;

4. Проверка знаний обучающегося с помощью тестирования;

5. Проверка правильности выставления оценки.

3.1.1 Тестирование формы авторизации

Шаги:

1. Открыть приложение.

2. Ввести исходные данные.

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

Таблица 3.1 - Результаты тестирования формы авторизации

Исходные данные

Ожидаемый результат

Полученный результат

логин - testpupil, пароль - 12345678

Вход в систему под учеником

+

логин - testteacher, пароль - 87654321

Вход в систему под учителем

+

логин - testpupil, пароль - 87654321

Сообщение об ошибке

+

логин - testteacher, пароль - 12345678

Сообщение об ошибке

+

логин - randomuser, пароль - 12345678

Сообщение об ошибке

+

Вывод: форма авторизации работает корректно.

3.1.2 Тестирование формы ученика

Результаты тестирования формы ученика представлены в таблице 3.2.

Таблица 3.2 - Результаты тестирования формы ученика

Исходные данные

Ожидаемый результат

Полученный результат

Нажатие на кнопку «Учебник»

Открытие нового окна с учебником по физике

+

Нажатие на кнопку «Инструкция»

Открытие нового окна с инструкцией и информацией о приложении

+

Нажатие на кнопку «Механические явления»

Получение информации о тесте и результатах его прохождения

+

Вывод: форма ученика работает корректно.

3.1.3 Тестирование формы учителя

Результаты тестирования формы учителя представлены в таблице 3.3.

Таблица 3.3 - Результаты тестирования формы учителя

Исходные данные

Ожидаемый результат

Полученный результат

Нажатие на кнопку «Учебник»

Открытие нового окна с учебником по физике

+

Нажатие на кнопку «Инструкция»

Открытие нового окна с инструкцией и информацией о приложении

+

Нажатие на кнопку «Механические явления»

Получение информации об учениках и результатах их тестирования

+

Вывод: форма учителя работает корректно.

3.1.4 Тестирование корректной работы тестов

1. Прохождение теста по теме «Механические явления».

Результаты представлены в таблице 3.4.

2. Не выбран вариант ответа

Шаги:

1. Открыть приложение.

2. Войти под учетной записью ученика.

3. Выбрать главу Механические явления.

4. Нажать кнопку «Пройти».

Ожидаемый результат: кнопка «Следующий вопрос» не активна.

Полученный результат: соответствует ожидаемому.

3. Оценка 2.

Шаги:

1. Открыть приложение.

2. Войти под учётной записью ученика.

3. Выбрать Механические явления.

4. Нажать кнопку «Пройти».

5. Выбрать заданные в таблице 3.5 варианты ответов.

Таблица 3.4 - Результаты прохождения заданий по теме «Механические явления»

Выбранный ответ

Верный ответ

Результат

1

1

верно

3

3

верно

3

3

верно

2

1

неверно

4

4

верно

1

4

неверно

3

3

верно

1

1

верно

2

3

неверно

4

3

неверно

2

2

верно

2

3

неверно

1

1

верно

4

4

верно

4

4

верно

Ожидаемый результат: в окне учителя в таблице с результатами данного теста (Механические явления) в графе «Оценка» стоит значение «2».

Полученный результат: соответствует ожидаемому, представленному на рисунке 3.1.

Таблица 3.5 - Варианты ответов на оценку 2

Выбранный ответ

Верный ответ

4

1

4

3

4

3

4

1

1

4

1

4

4

3

4

1

4

3

4

3

4

2

4

3

4

1

1

4

1

4

Рисунок 3.1 - Тестирование на оценку «2»

4. Оценка 3.

Шаги:

1. Открыть приложение.

2. Войти под любой учётной записью ученика.

3. Выбрать Механические явления.

4. Нажать кнопку «Пройти».

5. Выбрать варианты ответов, заданные в таблице 3.6.

Ожидаемый результат: в окне учителя в таблице с результатами данного теста (Механические явления) в графе «Оценка» стоит значение «3»

Полученный результат: соответствует ожидаемому, представленному на рисунке 3.2.

Таблица 3.6 - Варианты ответов на оценку 3

Выбранный ответ

Верный ответ

1

1

3

3

3

3

1

1

4

4

4

4

3

3

1

1

3

3

3

3

4

2

4

3

4

1

1

4

1

4

Рисунок 3.2 - Тестирование на оценку «3»

5. Оценка 4.

Шаги:

1. Открыть приложение;

2. Войти под любой учётной записью ученика;

3. Выбрать Механические явления;

4. Нажать кнопку «Пройти»;

5. Выбрать заданные в таблице 3.7 варианты ответов;

Ожидаемый результат: в окне учителя в таблице с результатами данного теста (Механические явления) в графе «Оценка» стоит значение «4»

Полученный результат: соответствует ожидаемому, представленному на рисунке 3.3.

Рисунок 3.3 - Тестирование на оценку «4»

Таблица 3.7 - Варианты ответов на оценку 4

Выбранный ответ

Верный ответ

1

1

3

3

3

3

1

1

4

4

4

4

3

3

1

1

3

3

3

3

4

2

4

3

4

1

4

4

4

4

6. Оценка 5

Шаги:

1. Открыть приложение.

2. Войти под любой учётной записью ученика.

3. Выбрать Механические явления.

4. Нажать кнопку «Пройти».

5. Выбрать варианты ответов, заданные в таблице 3.8.

Ожидаемый результат: в окне учителя в таблице с результатами данного теста (Механические явления) в графе «Оценка» стоит значение «5»

Полученный результат: соответствует ожидаемому, представленному на рисунке 3.4.

Таблица 3.8 - Варианты ответов на оценку 5

Выбранный ответ

Верный ответ

4

1

4

3

4

3

4

1

4

4

4

4

4

3

4

1

4

3

4

3

4

2

4

3

4

1

4

4

4

4

Рисунок 3.4 - Тестирование на оценку «5»

4. РАЗРАБОТКА ДОКУМЕНТАЦИИ

Документация к учебному комплексу подразумевает под собой инструкцию ученика и инструкцию учителя.

4.1 Инструкция ученика

При открытии программы перед пользователем появится форма авторизации, в которую пользователь вводит свой логин и пароль, а после нажимает кнопку «Авторизоваться». При вводе неправильных данных после нажатия появится сообщение об ошибке. В таком случае пользователю следует ввести данные верно. При правильно введённых данных перед пользователем появится форма ученика, в которой показано его ФИО, представлен выбор тестов, возможность открыть учебник и инструкцию. При нажатии на кнопку учебника перед пользователем откроется форма с учебником. При её закрытии пользователь вернётся в форму ученика. При нажатии на кнопку инструкции перед пользователем откроется форма с инструкцией. При её закрытии пользователь также вернётся в форму ученика. Если пользователь выберет тест из списка, то есть нажмёт на кнопку с названием теста, то перед ним появится информация о тесте и результат по этому тесту пользователя, а также кнопка «Пройти» для прохождения теста. При нажатии на кнопку «Пройти» перед пользователем открывается форма с тестом, в которой показывается первое задание. Пользователь выбирает вариант ответа и переходит к следующему вопросу. После последнего вопроса выводится окно с результатом. При закрытии этого окна пользователь возвращается в форму ученика.

4.2 Информация учителя

При открытии программы перед пользователем появится форма авторизации, в которую пользователь вводит свой логин и пароль, а после нажимает кнопку «Авторизоваться». При вводе неправильных данных после нажатия появится сообщение об ошибке. В таком случае пользователю следует ввести данные верно. При правильно введённых данных перед пользователем появится форма учителя, в которой показано его ФИО, представлен выбор тестов, возможность открыть учебник и инструкцию. При нажатии на кнопку учебника перед пользователем откроется форма с учебником. При её закрытии пользователь вернётся в форму учителя. При нажатии на кнопку инструкции перед пользователем откроется форма с инструкцией. При её закрытии пользователь также вернётся в форму учителя. Если пользователь выберет тест из списка, то есть нажмёт на кнопку с названием теста, то перед ним появится таблица с результатами учеников, включающая следующую информацию: ФИО ученика, результат прохождения теста в виде количества правильных ответов от количества заданий и оценка.

ЗАКЛЮЧЕНИЕ

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

ПРИЛОЖЕНИЕ 1

Исходный код программы

BookForm.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.IO;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Physics

{

public partial class BookForm : Form

{

public BookForm()

{

InitializeComponent();

}

private void BookForm_Load(Object sender, EventArgs e)

{

String path = Path.Combine(Environment.CurrentDirectory, "physics.pdf");

Uri uri = new Uri(path, UriKind.Absolute);

webBrowser1.Navigate(uri);

webBrowser1.Navigate(uri);

}

}

}

InstructionForm.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Physics

{

public partial class InstructionForm : Form

{

public InstructionForm(Boolean isPupil)

{

InitializeComponent();

label1.Text = isPupil

}

}

}

LoginForm.cs

using System;

using System.Data;

using System.Data.SqlClient;

using System.Windows.Forms;

namespace Physics

{

public partial class LoginForm : Form

{

public LoginForm()

{

InitializeComponent();

}

private void LoginButton_Click(Object sender, EventArgs e)

{

String login = loginTextBox.Text;

if (String.IsNullOrWhiteSpace(login))

{

MessageBox.Show("Не введён логин.");

loginTextBox.Focus();

return;

}

String password = passwordTextBox.Text;

if (String.IsNullOrWhiteSpace(password))

{

MessageBox.Show("Не введён пароль.");

passwordTextBox.Focus();

return;

}

DataTable logins = new DataTable();

DataTable roles = new DataTable();

SqlCommand loginsCommand = new SqlCommand($"SELECT id, id_role FROM logins WHERE login = '{login}' AND password = '{password}'", SqlHelper.Connection);

logins.Load(loginsCommand.ExecuteReader());

if (logins.Rows.Count == 0)

{

MessageBox.Show("Пользователь не найден или введены неверные данные.");

loginTextBox.Focus();

return;

}

SqlCommand rolesCommand = new SqlCommand($"SELECT name FROM roles WHERE id = {logins.Rows[0].ItemArray[1]}", SqlHelper.Connection);

String role = (String)rolesCommand.ExecuteScalar();

Int32 id = (Int32)logins.Rows[0].ItemArray[0];

switch (role)

{

case "Учитель":

HideAndShow(new TeacherForm(id));

break;

case "Ученик":

HideAndShow(new PupilForm(id));

break;

}

}

private void HideAndShow(Form form)

{

Hide();

form.FormClosed += (s, e) => Close();

form.Show();

}

private void PasswordTextBox_KeyDown(Object sender, KeyEventArgs e)

{

if (e.KeyCode == Keys.Enter)

{

LoginButton_Click(sender, e);

}

}

}

}

PupilForm.cs

using System;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.IO;

using System.Collections.Generic;

namespace Physics

{

public partial class PupilForm : Form

{

private Int32 id;

private Int32 taskCount;

private Int32 result;

DataTable tests;

public PupilForm(Int32 id)

{

InitializeComponent();

this.id = id;

}

private void BookButton_Click(Object sender, EventArgs e)

{

BookForm bookForm = new BookForm();

Hide();

bookForm.FormClosed += (s, ea) => Show();

bookForm.Show();

}

private void InstructionButton_Click(Object sender, EventArgs e)

{

InstructionForm bookForm = new InstructionForm(true);

Hide();

bookForm.FormClosed += (s, ea) => Show();

bookForm.Show();

}

private async void PupilForm_Load(Object sender, EventArgs e)

{

SuspendLayout();

await LoadTests();

await LoadVideos();

ResumeLayout();

}

private async Task LoadTests()

{

SqlCommand command = new SqlCommand("SELECT first_name, second_name, surname FROM logins WHERE id=" + id, SqlHelper.Connection);

DataTable table = new DataTable();

table.Load(await command.ExecuteReaderAsync());

String firstName = (String)table.Rows[0].ItemArray[0];

String secondName = (String)table.Rows[0].ItemArray[1];

String surname = table.Rows[0].ItemArray[2] is DBNull ? null : (String)table.Rows[0].ItemArray[2];

fioLabel.Text = $"{secondName} {firstName}" + (surname is null ? "" : (" " + surname));

command = new SqlCommand("SELECT id, name FROM tests", SqlHelper.Connection);

tests = new DataTable();

tests.Load(await command.ExecuteReaderAsync());

for (Int32 i = 0; i < tests.Rows.Count; i++)

{

Button button = new Button

{

Location = new Point(10, 10 + 60 * i),

Size = new Size(240, 60),

Text = (String)tests.Rows[i].ItemArray[1],

Tag = (Int32)tests.Rows[i].ItemArray[0]

};

button.Click += LoadTest;

testsPanel.Controls.Add(button);

}

}

private async Task LoadVideos()

{

List<String> fileNames = new List<String>();

List<String> videoLabels = new List<String>();

using (StreamReader reader = new StreamReader("videos.txt"))

{

while(!reader.EndOfStream)

{

fileNames.Add(await reader.ReadLineAsync());

videoLabels.Add(await reader.ReadLineAsync());

}

}

for (Int32 i = 0; i < videoLabels.Count; i++)

{

Button button = new Button

{

Location = new Point(10, 10 + 60 * i),

Size = new Size(240, 60),

Text = videoLabels[i],

Tag = fileNames[i]

};

button.Click += LoadVideo;

videosPanel.Controls.Add(button);

}

}

private async void LoadTest(Object sender, EventArgs e)

{

Int32 idTest = (Int32)((Button)sender).Tag;

startTestButton.Tag = idTest;

SqlCommand command = new SqlCommand($"SELECT (SELECT name FROM tests WHERE id = {idTest}) AS name, (SELECT result FROM results WHERE id_pupil = {id} AND id_test = {idTest}) AS result, (SELECT COUNT(id) FROM tasks WHERE id_test = {idTest})", SqlHelper.Connection);

DataTable resultTable = new DataTable();

resultTable.Load(await command.ExecuteReaderAsync());

if (resultTable.Rows.Count != 0)

{

DataRow row = resultTable.Rows[0];

String name = (String)row.ItemArray[0];

Int32? result = row.ItemArray[1] is DBNull ? (Int32?)null : (Int32)row.ItemArray[1];

Int32 taskCount = (Int32)row.ItemArray[2];

testLabel.Text = name;

taskCountLabel.Text = taskCount.ToString();

if (result == null)

{

resultLabel.Text = "---";

markLabel.Text = "---";

}

else

{

this.result = result.Value;

this.taskCount = taskCount;

resultLabel.Text = $"{result.Value} из {taskCount}";

Single rate = (Single)result.Value / taskCount;

markLabel.Text = rate >= 0.9 ? "5" : rate >= 0.76 ? "4" : rate >= 0.61 ? "3" : "2";

}

videoInfoPanel.Visible = false;

testInfoPanel.Visible = true;

axWindowsMediaPlayer1.Ctlcontrols.pause();

}

else

{

testInfoPanel.Visible = false;

}

}

private void LoadVideo(Object sender, EventArgs e)

{

Button button = (sender as Button);

String fileName = button.Tag as String;

String filePath = Path.Combine("videos", fileName);

if (axWindowsMediaPlayer1.URL != new FileInfo(filePath).FullName)

{

videoNameLabel.Text = button.Text;

axWindowsMediaPlayer1.URL = new FileInfo(filePath).FullName;

}

testInfoPanel.Visible = false;

videoInfoPanel.Visible = true;

}

private void StartTestButton_Click(Object sender, EventArgs e)

{

TestForm testForm = new TestForm(id, (Int32)startTestButton.Tag);

Hide();

testForm.FormClosed += (s, ea) =>

{

Show();

if (testForm.IsResultUpdated)

{

result = testForm.Result;

resultLabel.Text = $"{result} из {taskCount}";

Single rate = (Single)result / taskCount;

markLabel.Text = rate >= 0.9 ? "5" : rate >= 0.76 ? "4" : rate >= 0.61 ? "3" : "2";

}

};

testForm.Show();

}

private void SelectTestsButton_Click(Object sender, EventArgs e)

{

selectTestsButton.Enabled = false;

selectVideosButton.Enabled = true;

videosPanel.Visible = false;

testsPanel.Visible = true;

}

private void SelectVideosButton_Click(Object sender, EventArgs e)

{

selectVideosButton.Enabled = false;

selectTestsButton.Enabled = true;

testsPanel.Visible = false;

videosPanel.Visible = true;

}

}

}

SQLHelper.cs

using System;

using System.Data.SqlClient;

using System.IO;

namespace Physics

{

public static class SqlHelper

{

private static readonly String connectionString;

public static readonly SqlConnection Connection;

static SqlHelper()

{

String dataSource;

String initialCatalog;

String userId;

String password;

using (StreamReader reader = new StreamReader("db.config"))

{

dataSource = reader.ReadLine();

initialCatalog = reader.ReadLine();

userId = reader.ReadLine();

password = reader.ReadLine();

}

connectionString = $"Data Source={dataSource};Initial Catalog={initialCatalog};Persist Security Info=True;User ID={userId};Password={password}";

Connection = new SqlConnection(connectionString);

Connection.Open();

}

}

}

TeacherForm.cs

using System;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Windows.Forms;

namespace Physics

{

public partial class TeacherForm : Form

{

private Int32 id;

private DataTable tests;

public TeacherForm(Int32 id)

{

InitializeComponent();

this.id = id;

}

private void BookButton_Click(Object sender, EventArgs e)

{

BookForm bookForm = new BookForm();

Hide();

bookForm.FormClosed += (s, ea) => Show();

bookForm.Show();

}

private void InstructionButton_Click(Object sender, EventArgs e)

{

InstructionForm bookForm = new InstructionForm(false);

Hide();

bookForm.FormClosed += (s, ea) => Show();

bookForm.Show();

}

private async void TeacherForm_Load(Object sender, EventArgs e)

{

SuspendLayout();

SqlCommand command = new SqlCommand("SELECT first_name, second_name, surname FROM logins WHERE id=" + id, SqlHelper.Connection);

DataTable table = new DataTable();

table.Load(await command.ExecuteReaderAsync());

String firstName = (String)table.Rows[0].ItemArray[0];

String secondName = (String)table.Rows[0].ItemArray[1];

String surname = table.Rows[0].ItemArray[2] is DBNull ? null : (String)table.Rows[0].ItemArray[2];

fioLabel.Text = $"{secondName} {firstName}" + (surname is null ? "" : (" " + surname));

command = new SqlCommand("SELECT id, name FROM tests", SqlHelper.Connection);

tests = new DataTable();

tests.Load(await command.ExecuteReaderAsync());

for (Int32 i = 0; i < tests.Rows.Count; i++)

{

Button button = new Button

{

Location = new Point(10, 10 + 40 * i),

Size = new Size(240, 40),

Text = (String)tests.Rows[i].ItemArray[1],

Tag = (Int32)tests.Rows[i].ItemArray[0]

};

button.Click += LoadTestResults;

testButtonPanel.Controls.Add(button);

}

ResumeLayout();

}

private async void LoadTestResults(Object sender, EventArgs e)

{

Button button = sender as Button;

Int32 id = (Int32)button.Tag;

SqlCommand command = new SqlCommand("SELECT first_name, second_name, surname, result " +

"FROM logins " +

"INNER JOIN roles ON roles.id = logins.id_role " +

"LEFT JOIN results ON results.id_pupil = logins.id " +

"WHERE roles.name = 'Ученик' AND id_test = " + id + " " +

"UNION " +

"SELECT first_name, second_name, surname, null " +

"FROM logins " +

"INNER JOIN roles ON roles.id = logins.id_role " +

"WHERE roles.name = 'Ученик' AND logins.id NOT IN(SELECT id_pupil FROM results WHERE id_test = " + id + ")", SqlHelper.Connection);

DataTable results = new DataTable();

results.Load(await command.ExecuteReaderAsync());

DataTable correctResults = new DataTable();

correctResults.Columns.Add(new DataColumn("ФИО"));

correctResults.Columns.Add(new DataColumn("Результат"));

correctResults.Columns.Add(new DataColumn("Оценка"));

Int32 taskCount = (Int32)new SqlCommand($"SELECT COUNT(tasks.id) FROM tasks WHERE id_test = {id}", SqlHelper.Connection).ExecuteScalar();

foreach (DataRow row in results.Rows)

{

String firstName = (String)row.ItemArray[0];

String secondName = (String)row.ItemArray[1];

String surname = row.ItemArray[2] is DBNull ? null : (String)row.ItemArray[2];

String fio = $"{secondName} {firstName}" + (surname is null ? "" : (" " + surname));

if(row.ItemArray[3] is DBNull)

{

correctResults.Rows.Add(fio, "---", "---");

}

else

{

Int32 result = (Int32)row.ItemArray[3];

Single rate = (Single)result / taskCount;

String mark = rate >= 0.9 ? "5" : rate >= 0.76 ? "4" : rate >= 0.61 ? "3" : "2";

correctResults.Rows.Add(fio, $"{result} из {taskCount}", mark);

}

}

dataGridView1.DataSource = correctResults;

dataGridView1.Columns[1].MinimumWidth = 120;

dataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

}

}

}

TestForm.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.IO;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Xml;

namespace Physics

{

public partial class TestForm : Form

{

private Int32 idLogin;

private Int32 idTest;

private DataTable tasks;

private Int32 currentTask;

private String[] answers;

private String[] correctAnswers;

private List<Control> taskControls;

public Boolean IsResultUpdated { private set; get; }

public Int32 Result { private set; get; }

public TestForm(Int32 idLogin, Int32 idTest)

{

InitializeComponent();

this.idLogin = idLogin;

this.idTest = idTest;

IsResultUpdated = false;

}

private async void TestForm_Load(Object sender, EventArgs e)

{

Text = (String)new SqlCommand($"SELECT name FROM tests WHERE id = {idTest}", SqlHelper.Connection).ExecuteScalar();

SqlCommand command = new SqlCommand("SELECT tasks.task, tasks.answers, tasks.answer FROM tasks WHERE tasks.id_test = " + idTest, SqlHelper.Connection);

tasks = new DataTable();

tasks.Load(await command.ExecuteReaderAsync());

answers = new String[tasks.Rows.Count];

correctAnswers = new String[tasks.Rows.Count];

taskControls = new List<Control>();

if (tasks.Rows.Count == 0)

{

MessageBox.Show("В тесте нет заданий, поэтому форма теста сейчас закроется.");

Close();

return;

}

PresentTask();

}

private void OnValueChanged(Object sender, EventArgs e)

{

if (sender is RadioButton radioButton && radioButton.Checked)

{

answers[currentTask] = radioButton.Text;

buttonNext.Enabled = true;

}

}

private void OnButtonPreviousClick(Object sender, EventArgs e)

{

buttonNext.Enabled = true;

buttonPrevious.Enabled = currentTask > 1;

currentTask--;

PresentTask();

}

private Int32 GetResult()

{

Int32 result = 0;

for (Int32 i = 0; i < answers.Length; i++)

{

if (answers[i] == correctAnswers[i])

{

result++;

}

}

return result;

}

private Int32? GetLastResult()

{

SqlCommand command = new SqlCommand($"SELECT result FROM results WHERE id_pupil = {idLogin} AND id_test = {idTest}", SqlHelper.Connection);

Object result = command.ExecuteScalar();

return result == null ? (Int32?)null : (Int32)result;


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

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

    курсовая работа [3,3 M], добавлен 05.06.2011

  • Разработка плана здания с помощью графического редактора AutoCAD. Описание предметной области и схемы модели данных. Разработка приложения, позволяющего работать с базой с помощью диалогового окна Windows. Программный код формы, прописывание кодов.

    курсовая работа [2,2 M], добавлен 30.07.2010

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

    курсовая работа [953,3 K], добавлен 01.09.2016

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

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

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

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

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

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

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

    курсовая работа [303,7 K], добавлен 27.02.2009

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

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

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

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

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

    курсовая работа [352,0 K], добавлен 24.08.2016

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