Разработка и тестирование автоматизированной системы контроля успеваемости студентов

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

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

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

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

queryString = @"UPDATE grades

SET grade = " + kostil + @"

WHERE studID = " + dt.Rows[i]["ID"] +

@" and lesID=" + idLes;

В этом коде переменная kostil содержит в себе оценку, idLes - номер идентификатора занятия, а dt.Rows[i][“ID”] содержит идентификатор студента.

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

8.3Разработка базы данных

Проектирование базы данных было подробно описано в главе 7. Благодаря графической оболочке MySQL Workbench для MySQL все SQL запросы на создание таблиц формируются автоматически. В оболочке нужно лишь задать имена столбцов, их тип и несколько параметров, таких как первичный ключ или автоматическое проставление ID. Здесь же есть возможность указать столбцы, являющиеся внешними ключами к другим таблицам. Пример лишь одного SQL запроса на создание таблицы, который генерирует MySQL Workbench, приведён ниже.

CREATE TABLE `grades` (

`lesID` int(4) NOT NULL,

`studID` int(4) NOT NULL,

`grade` decimal(4,2) DEFAULT NULL,

`date` date DEFAULT NULL,

`teachID` int(4) DEFAULT NULL,

`weigth` decimal(2,1) DEFAULT NULL,

KEY `IDstud_idx` (`studID`),

KEY `IDteach_idx` (`teachID`),

KEY `IDless_idx` (`lesID`),

CONSTRAINT `IDless` FOREIGN KEY (`lesID`) REFERENCES `lessons` (`lesId`) ON DELETE NO ACTION ON UPDATE NO ACTION,

CONSTRAINT `IDstud` FOREIGN KEY (`studID`) REFERENCES `students` (`studId`) ON DELETE NO ACTION ON UPDATE NO ACTION,

CONSTRAINT `IDteach` FOREIGN KEY (`teachID`) REFERENCES `teachers` (`teachId`) ON DELETE NO ACTION ON UPDATE NO ACTION

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

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

Следующим шагом, который необходимо выполнить для больших баз данных, является разработка триггеров. Триггеры выполняются до или после операций над таблицами, к которым они приписаны, а их использование повышает скорость работы СУБД над данными. В основном триггеры помогают обеспечивать целостность базы данных, чем ускоряют работу администратора базы данных. Например, если из родительской таблицы удалить строку, то перед этим из дочерней таблицы, где находится внешний ключ на родительскую, необходимо удалить все данные, относящиеся к удалённой строке. Если этого не будет сделано, то СУБД выдаёт ошибку и просит сначала удалить все внешние ключи на данную строку. В разрабатываемой системе подобные триггеры необходимы для таблиц «Курс», «Преподаватель» и «Занятие», которые могут меняться чаще всего. Пример создания триггеров для таблицы «Курс»:

CREATE DEFINER=`root`@`localhost` TRIGGER `sysmp`.`kurs_BEFORE_DELETE` BEFORE DELETE ON `kurs` FOR EACH ROW

BEGIN

delete from kurs_group where OLD.kursId = idkurs;

delete from kurs_year where OLD.kursId = idKurs;

delete from formula where OLD.kursId = kursID;

delete from lessons where OLD.kursId = kursID;

delete from kurs_teach where OLD.kursId = idkursKT;

END

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

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

CREATE DEFINER=`root`@`localhost` TRIGGER `sysmp`.`lessons_AFTER_INSERT` AFTER INSERT ON `lessons` FOR EACH ROW

BEGIN

declare c int;

declare n int;

declare ni cursor for SELECT COUNT(*) FROM students where new.grID = `students`.`group`;

declare i cursor for select studId from students where new.grID = `students`.`group`;

open ni;

fetch ni into n;

close ni;

SET @j = 0;

open i;

while @j < n do

fetch i into c;

insert into grades(lesID, studID) value (new.lesId, c);

set @j = @j + 1;

end while;

close i;

END

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

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

8.4Разработка клиентского приложения

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

· начальное окно выбора учебного года, курса и группы;

· окно отображения оценок;

· окно проставления или изменения оценок по определённому занятию;

· окно добавления новых занятий, их удаления и изменения;

· окно добавления, изменения и удаления новых курсов.

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

Рис. 6. Начальное окно выбора учебного года, курса и группы

На данном рисунке представлено пять элементов управления:

- три выпадающих списка;

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

- верхнее меню, в котором скрывается кнопка «Управление курсами».

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

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

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

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

Рис. 7. Окно отображения оценок

Следующим по важности окном является форма отображения оценок, которая изображена на рис. 7.

На данной форме находятся следующие элементы управления:

- DataGridView, отображающее студентов, их оценки и итоги;

- выпадающие списки выбора модуля и занятия;

- кнопка перехода к редактированию выбранного занятия;

- кнопка перехода к управлению занятиями;

- кнопка экспорта данных в Excel;

- нижняя информационная строка с актуальной датой и временем;

- верхнее меню с кнопкой справки.

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

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

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

После занесения всех занятий в таблицу, создаётся столбец «Qн» для накопленной оценки. Составляется SQL-запрос для получения информации из таблицы «Формулы», где хранятся веса для каждого типа занятия. В след за этими действиями для каждого студента по каждому типу занятий производятся расчёты, описанные в главе 7, пункт 7.1. Здесь же необходимо отметить, что для тех типов занятий, для которых предусматривается deadline, создаётся дополнительный SQL-запрос на выборку дат deadline и коэффициентов понижения для данного занятия. Дата сдачи сравнивается поочерёдно со датами deadlines, вследствие чего выбирается необходимый коэффициент, на который умножается оценка. Если работа сдана вовремя, но никаких понижений полученного студентом балла не производится. В итоге, в столбец Qн включается окончательно рассчитанный балл.

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

Последним шагом построения таблицы является добавления столбца «Qи», который предназначается для хранения результирующих за модуль оценок, и расчёт этой самой итоговой оценки для каждого студента. При наличии экзамена в модуле, оценка за экзамен умножается на соответствующий вес, накопленная оценка умножается на (10 - вес экзамена). Их сумма, предварительно округлённая, заносится в колонку итога. Если же экзамен для данного модуля не предусмотрен, то в колонку «Итог» переносятся округлённые накопленные оценки за модуль. Итоговый результат не предназначен для хранения в базе данных, поскольку всегда высчитывается в клиентском приложении, то есть с использованием средств устройства пользователя.

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

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

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

Кнопка «Управление занятиями» вызывает окно добавления занятий, которое будет описано ниже.

Кнопка «Экспорт» вызывает функцию переноса данных по выбранному модулю для всех групп, проходящих курс, в файл формата .xlsx, который связан с приложением Office Excel. Для работы данной функции необходимо наличие приложения Microsoft Office Excel версии 2003 версии или выше.

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

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

В следующем окне, которое будет рассмотрено, происходит редактирование оценок (рис. 10). Переход осуществляется с окна представления оценок.

На представленном на рис. 10 окне имеются следующие элементы управления:

- таблица DataGridView для отображения Ф.И.О. студентов, даты сдачи и оценки;

- кнопка сохранения результатов;

- нижняя полоса состояния.

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

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

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

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

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

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

- тип занятия;

- дату проведения занятия;

- вес занятия, иначе говоря его относительную максимальную оценку;

- дату и вес до трёх deadlines, если таковые относятся к занятию.

Нижняя строка состояния ничем не отличается от той, что была показана в окне представления оценок.

Окно добавления новых занятий, их удаления и изменения представлено на рис. 11. Для простоты оно называется «Управления занятиями» и открывается из формы представления оценок. Данное окно относится исключительно к выбранному ранее модулю. Это позволяет автоматически использовать для обработки данных формулы текущего модуля. При этом сохраняется целостность данных.

Данное окно содержит следующие элементы управления:

- группа radio button для выбора типа занятия;

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

- поле для ввода названия занятия;

- поле для ввода веса, то есть относительной максимальной оценки за занятие;

- три календаря для выбора даты deadline;

- три поля ввода для процентов понижения оценки;

- кнопка добавления нового занятия в базу данных;

- выпадающий список выбора существующих занятий;

- кнопка для удаления занятия, выбранного из выпадающего списка;

- кнопка для редактирования занятия, выбранного из выпадающего списка;

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

Группа radio button обеспечивает выбор типа занятия для нового или редактируемого занятия. Возможность выбора типов занятия зависит от того, какие типы были отведены для данного учебного курса в данном модуле. Эта информация извлекается из таблицы базы данных «Формула». При этом обеспечивается целостность информации, хранимой в базе данных. От выбора определённого типа (как это описано в главе 7, пунктом 7.2) зависит доступность назначения дат deadline и установка значения понижающего коэффициента, который будет применён к полученной оценке в случае сдачи задания позже намеченного срока.

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

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

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

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

Если все данные верны, то составляется SQL-запрос на добавление новой записи в таблицу «Занятия». При этом вычисление ID для нового занятия производится здесь же с целью экономии возможных значений первичного ключа.

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

После выполнения всех запросов к СУБД на добавление, форма очищается от введённых данных, а список существующих занятий обновляется.

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

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

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

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

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

Следующее окно имеет аналогичное назначение, но работает с целыми курсами. Окно добавления, изменения и удаления новых курсов представлено на рис. 12. Для удобства данное окно будет называться «Управление курсами».

Рис. 12. Окно управления курсами

Это окно содержит следующие элементы управления:

- поле ввода названия курса;

- выпадающий список выбора учебного года;

- список выбора модулей;

- список выбора групп;

- хранилище элементов определения формул;

- текстовые поля для ввода весов занятий и экзамена;

- check box для указания наличия экзамена;

- кнопку сохранения курса;

- выпадающие списки для выбора учебного года и соответствующих учебных курсов;

- кнопку удаления курса;

- кнопку изменения курса;

- кнопку обновления информации о курсе.

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

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

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

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

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

При использовании кнопки «Сохранить курс» начинается проверка данных, введённых и назначенных пользователем. При этом последовательно выполняются следующие действия:

- проверка на пустое название курса;

- проверка на существующее имя курса в выбранном году;

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

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

- проверка на равенство суммы всех полей весов, относящихся к накопленной оценке, для каждого модуля десяти баллам;

- наличие хотя бы одного экзамена.

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

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

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

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

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

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

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

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

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

Описание всех пяти окон завершено. Остальные файлы формируются средой разработки Microsoft Visual Studio 2010 Express автоматически, что позволяет сосредоточиться непосредственно на основной работе по разработке необходимого функционала, описанного выше.

8. Тестирование прикладного программного обеспечения

8.1Общие сведения о тестировании

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

Будет проведено два вида тестирования программного обеспечения:

- тестирование реакции интерфейса на корректные данные или действия;

- тестирование системы на правильность выполнения расчёта накопленной и итоговой оценок.

8.2 Тестирование интерфейса

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

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

Рис. 13. Тестирование стартового окна

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

Рис. 14. Проверка реакции на пустую группу

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

Рис. 15. Проверка на наличие занятий для редактирования

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

Рис. 16. Выход оценки за границы допустимого диапазона данных

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

Рис. 17. Проверка на пустоту полей названия и веса нового занятия

Если введено уже существующее название, то выводится сообщение об ошибке, что представлено на рис. 18. Там же продемонстрировано, что ошибка веса исчезает из окна сообщений, если вес оказывается в не пустым.

Рис. 18. Проверка на существование имени нового занятия

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

Рис. 19. Проверка на существование занятий для удаления или изменения

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

Рис. 20. Проверка на попытку удалить экзамен

В окне управления курсами присутствуют все проверки на допустимость входных данных, которые были перечислены в описании работы данного окна. Если есть хотя бы одна ошибка, то при нажатии на кнопку добавления курса выводится перечень ошибок. Стоит учесть, что часть проверок меняется в зависимости от наличия хотя бы одного модуля. Примеры представлены на рис. 21 и рис. 22. Схожие проверки проводятся для кнопки обновления курса, за исключением проверки на наличие такого же названия курса.

Рис. 21. Проверка на допустимость входных данных окна управления курсами (без модулей)

Рис. 22. Проверка допустимости входных данных окна управления курсами (с модулями)

На рис. 23 представлено окно сообщения об ошибке, которое выводится при пустом списке учебных курсов при нажатии на кнопки удаления или редактирования.

Рис. 23. Проверка на наличие хоть одного курса в году

8.3Тестирование работы алгоритма вычисления оценок

Для тестирования процесса расчёта оценок будет специально создан учебный курс с двумя модулями, один из которых будет включать экзамен, а другой - нет. В каждом модуле будет по одному типу занятия, который будет иметь deadlines, и два типа занятия без deadlines. Первый модуль будет без экзамена, в его состав будут входить лабораторные работы, практические и лекционные занятия с весами 0.5, 0.3 и 0.2 соответственно. Изначально введём лишь одну лабораторную работу с весом 10 и одной датой deadline через 2 недели после начала с коэффициентом понижения 40%, для которой оценки не проставлены. Результат представлен на рис. 24.

Рис. 23. Проверка правильности выполнения вычислений, одна пустая лабораторная работа

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

Рис. 25. Проверка правильности вычислений, заполнена одна лабораторная работа

Видно, что у двух студентов при одной лабораторной работе с весом в 0,5 и относительной оценкой 10 в накопленной оценке и итоге получается 5 баллов. У студента Борисова оценка получена после первого deadline, от его оценки остаётся 60%, то есть 6. 6*0,5 = 3 балла, что и посчитала программа. Для оценки 8 расчёты тоже верны. На следующем шаге добавим ещё одну лабораторную работу с теми же параметрами. Оценок проставлено не будет. Результат перерасчёта оценок представлен на рис. 26.

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

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

Теперь первым четырём студентам будет поставлено по 10 баллов, третьему с понижением оценки из-за deadline. Последний получит ровно 8 баллов. Результат вычислений изображён на рис. 27.

Рис. 27. Проверка правильности вычислений с двумя проставленными лабораторными работами

В данном примере за две лабораторные работы, сданные на максимальный балл, первые два студента получили 5 баллов, то есть максимум. Далее были получены оценки за лабораторные, сданные после даты deadline, но на максимальную оценку. Здесь же видно округление оценок. Далее добавим одно практическое занятие с весом 10, оценок проставлено не будет. Результат представлен на рис. 28.

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

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

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

Следующим шагом будет проставление всем студентам оценок, равным высшему баллу. Полученные баллы видны на рис. 29.

Рис. 28. Проверка правильности вычислений с заполненным практическим занятием

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

Добавим лекционное занятие с максимальной оценкой 5, первым трём студентам поставим максимальный балл, остальным проставим 4 балла. При этом студенту Германову за первую лабораторную проставим 10 баллов. Результат расчётов отображён на рис. 30.

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

Следует отметить, что лекционное занятие ЛЗ1 отображено перед практическим занятием, хоть оно и добавлено оно позже. Это происходит в силу сортировки столбцов сначала по типу занятия, а после по дате проведения. Результаты верны, первые два студента получили максимальные оценки, оценки остальных студентов ниже и вычислены в соответствии с формулой для оценивания результатов.

Для второго модуля проставим вес экзамена равным 0,6 и воссоздадим условия, похожие на прошлый модуль, только для каждого типа занятия будет создано по одному занятию. При этом оценки за экзамен проставлено не будет. Результат представлен на рис. 31.

Рис. 31. Проверка правильности вычислений с пустым экзаменом

Первый студент получил максимальную оценку, получив за все виды работ высшие баллы, накопительная оценка у него максимальна. Поскольку экзамен весит 0,6, то от накопительной в итоговую оценку идёт лишь 0,4, а от десяти баллов это 4. Всё верно. Для остальных студентов при проверке расчётов тоже всё сходится. На следующем шаге необходимо добавить студентам оценки студентам за экзамен. Первый, третий и четвёртый студенты получат максимальный балл, остальные получат оценку 8. Результаты расчётов для данного случая приведены на рис. 32.

Рис. 32. Проверка правильности вычислений с заполненным экзаменом

Результаты, полученные программой, верны.

Было произведено достаточное количество тестов для проверки вычислений, которые проводит программа. На этом этап тестирования считается выполненным.

Заключение

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

- собраны и приняты полезные сведения о системе оценивания знаний в национальном исследовательском университете «Высшая школа экономики»;

- получен опыт работы с информацией и различными имеющимися данными при поиске необходимой литературы и источников;

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

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

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

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

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

- учёт в модулях с экзаменом результатов предыдущих модулей без экзамена;

- расширение части автоматизации в работе с журналом: учёт проставления оценок автоматом, автоматическое формирование названия занятия и прочее;

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

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

- создание web-сайта для студентов с целью отображения их оценок;

- создание мобильного приложения;

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

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

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

Список использованных источников

1. «Положение об организации промежуточной аттестации и текущего контроля успеваемости студентов национального исследовательского университета "Высшая школа экономики"» М., 2014-2016. URL: https://www.hse.ru/data/2015/05/21/1097329693/Formi_sroki_kontrolya_19.08.2014.pdf (Дата обращения 9.04.2016).

2. Трещев И.А. Разработка автоматизированной системы контроля успеваемости студентов ВУЗа // Интернет-журнал "Мир науки". 2014. Т. 2. № 3.

3. Кешиков К. А. Информатизация системы управления процедурой оценки знаний и учётом текущей успеваемости в ВУЗе в контексте электронного государства // Евразийский Союз Учёных. 2015. № 8. С. 83-86.

4. Копелиович Д. И. Автоматизированная система мониторинга успеваемости студентов университета с применением технологии OLAP // Проблемы и перспективы развития образования в России. 2011. № 11. С. 152-156.

5. Харченко И. С., Красулин А. В. Применение информационной системы мониторинга успеваемости студентов для оценки качество профессионального образования в ОМГУПС // Омский научный вестник. № 4. С. 5-8.

6. Журин Ю.В., Ерохина Е.А. Универсальная автоматизированная рабочая ведомость преподавателя // Научно-техническая конференция студентов, аспирантов и молодых специалистов НИУ ВШЭ. Материалы конференции. М.: МИЭМ НИУ ВШЭ, 2014. С.152-153.

Размещено на Allbest.ru


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

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