Разработка электронной системы обучения и тестирования для новых и действующих сотрудников строительной организации ТД "ЦентрСМ"

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

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

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

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

3. tema - список тем тестов

ID

Integer

PK

Идентификатор записи

ID_DISC

Integer

FK

Идентификатор дисциплины

NAME

String(30)

+

Наименование темы

4. hard - список сложностей тестов

ID

Integer

PK

Идентификатор записи

NAME

String(10)

+

Наименование сложности

K

Number

Коэффициент сложности

5. tests - список лекций и тестов

ID

Integer

PK

Идентификатор записи

ID_TESTS

Integer

FK

Идентификатор теста

NAME

String(254)

+

Текст вопроса

NAVIGATION

Logical

+

Признак разрешения навигации

RANDOM

Logical

+

Признак случайной выдачи вопросов

SHOWRESULT

Logical

+

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

ONLYANSW

Logical

+

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

ALWAYSJ

Logical

+

Признак обязательной записи результатов теста в журнал

ALLRIGHT

Logical

+

Признак правильности всех ответов

OPROS

Logical

+

Признак теста-опроса

6. quest - список вопросов

ID

Integer

PK

Идентификатор записи

ID_TESTS

Integer

FK

Идентификатор теста

PICT

Blob

+

Картинка вопроса

7. answer - список ответов

ID

Integer

PK

Идентификатор записи

ID_QUEST

Integer

FK

Идентификатор вопроса

NAME

String(254)

+

Текст ответа

VES

Number

+

Вес ответа

1. jornal - журнал результатов прохождения тестов

ID

Integer

PK

Идентификатор записи

IDUSER

Integer

FK

Идентификатор пользователя

IDTEST

Integer

FK

Идентификатор теста

COUNTQ

Integer

+

Количество вопросов в тесте

TEND

Time

+

Время окончания прохождения теста

2. inter - интерпретация результатов прохождения тестов

ID

Integer

PK

Идентификатор записи

IDUSER

Integer

FK

Идентификатор пользователя

IDTEST

Integer

FK

Идентификатор теста

MINRES

Double

Нижняя граница диапазона результатов

MAXRES

Double

Верхняя граница диапазона результатов

INTER

Memo

Текстовая интерпретация результата теста, попавшего в диапазон

10. Materials - список учебных материалов

ID

Integer

PK

Идентификатор записи

Name

String (254)

Наименование материала

Comment

String (254)

+

Описание материала

TypeMaterial

String (25)

+

Тип учебного материала

FilePath

String (254)

Путь к файлу с содержимым учебного материала

TEG

String (254)

+

Список тэгов учебного материала

11. LinkMaterial - связь учебных материалов с лекциями

ID

Integer

PK

Идентификатор записи

ID_Test

Integer

FK

Идентификатор лекции

ID_Material

Integer

FK

Идентификатор материала

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

Рисунок 3.2. Связи между таблицами базы данных.

Доступ к таблицам базы данных производится из программы при помощи системы работы с базами данных фирмы Borland BDE. Непосредственное обращение производится при помощи псевдонима базы данных (алиаса) с именем TEST. Данный алиас должен быть создан перед первым запуском программы утилитой BDE Administrator и иметь следующие характеристики:

Type - STANDART;

DEFAULT DRIVER - PARADOX;

ENABLED BCD - FALSE;

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

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

4. Описание разработки системы обучения и тестирования

4.1 Обоснование выбора средств разработки

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

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

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

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

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

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

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

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

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

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

C++ Builder использует библиотеку визуальных компонентов VCL (Visual Component Library - VCL), которая состоит из готовых к употреблению визуальных и не визуальных объектов и оболочек. Она позволяет с минимальными затратами создавать приложения, в то же время предоставляя определенную степень независимости от библиотеки VCL.

Язык программирования C++ и его реализация в виде среды разработки C++ Builder имеют широкие возможности по повторному использованию кода. Именно этот подход мы и собираемся использовать в данном дипломном проекте.

Работа с базами данных в программе построена при помощи системы работы с базами данных фирмы Borland BDE. Эта система позволяет обращаться к данным независимо от их физической организации при помощи псевдонимов баз данных. Непосредственная работа с таблицами базы данных в программе ведется при помощи универсального языка запросов SQL. Использование этого языка, совместно с системой алиасов BDE, позволяет разработчику полностью абстрагироваться от физического расположения базы данных и от типа базы данных (Paradox, MS SQL Server, MySQL, …). Универсальность этого языка, независимость от типа базы данных и ее расположения, позволяют использовать для разрабатываемой системы любую базу данных, в том числе и серверную без каких-либо изменений исходного кода приложения.

Для создания структуры таблиц базы данных была использована программа Database Desktop, входящая в комплект поставки C++ Builder. Эта программа позволяет в удобной форме создавать и редактировать как структуру таблиц, так и данные.

Пояснительная записка к дипломному проекту создавалась в текстовом процессоре Microsoft Word. Для редактирования графических изображений использовался графический редактор Paint.

Для бесперебойной работы операционной системы могут понадобиться дополнительные сервисные пакеты программного обеспечения, такие как The Norton Utilities - диагностика компьютера ипакет антивирусных программ AVP (или любой другой).

4.2 Общие сведения о программной реализации системы

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

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

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

4.3 Структура классов

Для реализации задачи разработки приложения обучения и тестирования знаний студентов была разработана структура классов, аккумулирующая в себе все необходимые свойства и функции для выполнения задачи. Разработанная структура классов соответствует их аналогам в предметной области: лекции-тесту, вопросу и ответу. Объявление и реализация классов выполнены в модуле Ctest.сpp.

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

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

class TQuestion

{

public:

//характеристики вопроса

int ID; // ID вопроса из БД

AnsiString Name; // имя вопроса

TPicture* Pic; // кртинка вопроса

int Tip;// тип ответов на вопросы 0-неизвестно 1-текст 2- радиокнопка 3 - флажок

// ответы

TList* Answers; // список ответов

int CountA; // количество ответов вопроса

double Result; // результат вопроса

AnsiString UserAnswer; // данный пользователем ответ в поле ввода

__fastcall TQuestion(int, AnsiString, TPicture*, int);

__fastcall ~TQuestion();

int __fastcall LoadAnswers(TQuery*); // загрузить ответы из БД

TAnswer* __fastcall GetAnswer(int); // вернуть ответ с порядковым номером

TAnswer* __fastcall GetCorrectAnswer(); // вернуть правильный ответ

bool __fastcall HasAnswer(); // был дан ответ

int __fastcall Type(); // тип вопроса: 1 - строка, 2 - радиокнопки, 3 - флажки

}; // TQuestion

Отдельно остановимся на списке ответов. Список ответов в классе TQuestion представлен свойством Answers, имеющем тип динамический список (класс TList). При заполнении этого списка в него помещаются динамически созданные объекты класса TAnswer. В дальнейшем обращение к свойству Answers происходит как к списку объектов класса TAnswer, используя его свойства.

Для реализации работы с объектом вопроса в классе TQuestion предусмотрены методы:

l конструктор TQuestion - предназначен для выделения памяти под динамически создаваемые объекты и первоначальное заполнение параметров объекта класса;

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

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

l GetAnswer - предназначен для получения доступа к объекту типа TAnswer по его порядковому номеру в списке;

l GetCorrectAnswer - предназначен для получения доступа к объекту типа TAnswer с максимальным весом.

Класс TTest представляет из себя совокупность свойств и методов для программной реализации объекта предметной области «Тест». Тест в предметной области характеризуется такими параметрами как идентификатор в базе данных, наименование теста, сложность теста, ограничение по времени и параметры теста. В программной реализации к представлению данного объекта добавлены такие свойства как полное наименование теста, дата и время начала прохождения теста (свойство BeginDate), дата и время окончания прохождения теста (свойство EndDate), порядковый номер текущего вопроса в тесте (свойство CurrentQ), количество вопросов, на которые пользователь дал ответ (свойство CountQA), количетсво вопросов, на которые пользователь дал правильный ответ, т.е. ответ с весом, отличным от нуля (свойство CorrectA), вычисленный результат прохождения теста (свойство Res). Отдельно остановимся на свойстве Questions, представляющий из себя динамический список типа TList. При заполнении значений этого списка в него помещаются динамически созданные объекты класса TQuestion. В дальнейшем при обращении к объектам динамического списка Questions используются свойства и методы класса TQuestion. Таким образом, объекты динамического списка представляют из себя вопросы теста, а сам список - список вопросов теста.

Для реализации работы с объектом предметной области «Тест» в программной реализации класса TTest предусмотрены следующие методы:

l конструктор TTest - предназначен для выделения памяти для динамически создаваемых объектов, прежде всего для списка вопросов, а также для первоначального заполнения значений свойств объекта;

l деструктор ~TTest - предназначен для освобождения памяти из под динамически создаваемых объектов;

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

l LoadQuests - предназначен для загрузки из базы данных списка вопросов;

l GetQuest - предназначен для получения из списка вопросов объекта класса TQuestion по его порядковому номеру.

Отметим отдельно, что класс TTest инкапсулирует в себе все необходимые свойства и методы для загрузки теста вместе со списком вопросов и ответов из базы данных. Таким образом, объекту класса TTest не требуется визуального представления ни для своего отображения, ни для обращения к базе данных. Для обращения к базе данных предназначены свойства раздела private QueryTmp и QueryTmp1 типа TQuery из библиотеки VCL, которые и реализуют обращение к базе данных при помощи SQL-запросов.

Ниже приведен фрагмент кода, содержащий в себе объявление класса Ttest.

class TTest

{

private:

TQuery* QueryTmp; // рабочая лошадка

TQuery* QueryTmp1; // рабочая лошадка

int __fastcall CheckTextAnswer(AnsiString, AnsiString); // сравнить две текстовых строки

public:

// характеристики теста

int ID; // ID из базы данных

int TimeLimit; // лимит времени в минутах

bool Navigation; // разрешить навигацию

bool AllRight; // все ответы теста правильные

bool Random; // случайный выбор вопросов

bool ShowResult; // отображать результаты

bool Opros; // признак тест-опрос

bool OnlyAnswered; // учитывать при подсчете результата только отвеченные вопросы

bool AlwaysJ; // в любом случае записать результаты теста

AnsiString Name; // имя теста

AnsiString FullName; // полное имя теста

TDateTime Begin; // дата и время начала теста

TDateTime End; // дата и время окончания

// вопросы

TList* Questions; // список вопросов теста

int CountQ; // количество вопросов теста

int CurrentQ; // порядковый номер текущего вопроса

int CorrectA; // кол-во правильных ответов

int CountQA; // кол-во ответов на которые даны ответы

double Result; // балл теста

TList* RandomList; // список порядковых номеров случайно заданных вопросов

__fastcall TTest(int); // конструктор

__fastcall ~TTest(); // деструктор - очистка памяти

int __fastcall LoadFromBD(); // загрузить тест из базы данных

int __fastcall LoadQuests(); // загрузить вопросы теста из БД

TQuestion* __fastcall GetQuest(int); // вернуть вопрос

void __fastcall IncCurrentQ(int); // увеличить номер текущего вопроса

void __fastcall AddRandom(); // занести в список уже заданных случайно вопросов

bool __fastcall LastQuest(); // проверить что текущйи вопрос в тесте - последний

double __fastcall Compute(); // рассчитать результаты теста

// экспорт

bool __fastcall Export(AnsiString); // экспотрировать тест и все что с ним связано

void __fastcall DropTable(AnsiString); // удалить таблицу

bool __fastcall CreatTableTest(AnsiString); // создать структуру таблицы тестов

bool __fastcall CreatTableTema(AnsiString); // создать структуру таблицы тем

bool __fastcall CreatTableDisc(AnsiString); // создать структуру таблицы дисциплин

bool __fastcall CreatTableQuest(AnsiString); // создать структуру таблицы вопросов

bool __fastcall CreatTableAnswer(AnsiString); // создать структуру таблицы ответов

bool __fastcall CreatTableInter(AnsiString); // создать структуру таблицы интрепритации

int __fastcall ExportTableTest(AnsiString, int*); // выгрузить таблицу тестов

int __fastcall ExportTableTema(AnsiString, int); // выгрузить таблицу тем

bool __fastcall ExportTableDisc(AnsiString, int); // выгрузить таблицу дисциплин

bool __fastcall ExportTableQuest(AnsiString, int); // выгрузить таблицу вопросов

bool __fastcall ExportTableAnswer(AnsiString, int); // выгрузить таблицу ответов

bool __fastcall ExportTableInter(AnsiString, int, int, int); // выгрузить таблицу интрепритации

bool __fastcall Import(AnsiString, int); // импорт содержимого теста - вопросов и ответов

bool __fastcall ImportAnswers(AnsiString, int, int); // импорт ответов

bool __fastcall Delete(); // удалить тест

}; // TTest

4.4 Визуальное представление данных

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

l FMain - главная форма приложения;

l FReg - форма регистрации пользователя;

l FAdm - форма администрирования списка лекций-тестов;

l FDisc - форма ведения списка дисциплин;

l FTema - форма ведения списка тем;

l FTests - форма ведения списка лекций-тестов;

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

l FQuestAnswer - форма ведения списка вопросов и ответов на них;

l FormTest - форма прохождения теста;

l FormResult - форма отображения результата прохождения теста;

l FormStatistic - форма отображения статистики прохождения тестов;

l FormPrintResult - форма печати результатов прохождения одного теста;

l FormPrintStatistic - форма печати результатов анализа статистики прохождения тестов;

l FUsers - форма ведения списка пользователей;

l FInter - форма назначения интерпретации для теста.

Опишем каждую форму, ее назначение и программную реализацию более подробно.

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

l заголовок;

l строка главного меню;

l панель кнопок быстрого доступа;

l рабочая область;

l строка состояния.

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

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

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

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

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

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

Рисунок 4.1 Форма регистрации пользователя

Форма FAdm предназначена для реализации такого интерфейсного решения, когда список дисциплин, тем и лекций-тестов отображаются в одном окне. Это обеспечивает очень удобную навигацию по спискам и соотнесение списков к элементам другого списка. Для реализации этой идеи в форме размещаются три компонента класса TDBGrid в каждом из которых отображается список дисциплин, тем и лекций-тестов соответственно. Данные в компонентах DBGrid загружаются из соответствующих таблиц базы данных при помощи SQL-запросов. Причем эти SQL-запросы составлены таким образом, что отображают только ту выборку данных, которые удовлетворяют текущему элементу в списке-родителе. Т.е. в списке тем отображаются только темы, принадлежащие дисциплине, выбранной в данный момент пользователем в списке дисциплин, а в списке лекций-тестов - только те лекции-тесты, которые принадлежат выбранной в данной момент теме. Такая структура обеспечивает кроме удобства отображения и однозначное сопоставление темы дисциплине, а лекции-теста теме. Обращение к таблицам базы данных производится при помощи компонентов TQuery.

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

Рисунок 4.2 Форма администрирования тестов.

Форма FDisc вызывается из формы FAdm и предоставляет пользователю возможность редактирования списка дисциплин. Форма имеет компонент DBGrid в который при помощи SQL-запроса, выполненного в компоненте Tquery, выводится список дисциплин. Органы управления формы предоставляют пользователю возможность добавления и удаления записей в список дисциплин. Дисциплина для пользователя характеризуется только наименованием, поэтому для редактирования предлагается только это поле. При удалении записи из списка дисциплин осуществляется контроль ссылочной целостности на уровне связей базы данных. Внешний вид формы приведен на рисунке 4.3.

Рисунок 4.3 Форма редактирования дисциплин

Форма FTema аналогично форме FDisc вызывается из формы FAdm и предназначена для редактирования списка тем. При помощи SQL-запроса в компонент DBGrid выводится существующий список тем. Органы управления формы предлагают пользователю возможности для добавления, удаления и редактирования записей списка. Все операции с базой данных производятся при помощи SQL-запросов. Для редактирования предлагается только поле наименования темы - единственное информационное поле соответствующей таблицы базы данных. Отметим, что добавление и редактирование записей в таблице тем происходит в строгом подчинении текущей дисциплине в списке дисциплин формы FAdm т.е. поле ID_DISC записей таблицы tema всегда заполнено соответствующим значением. При удалении записи проверяется ссылочная целостность на уровне связей базы данных.

Форма FTests также вызывается из формы FAdm и предназначена для редактирования параметров теста. Как и в случае с формой редактирования списка тем FTema в компоненте DBGrid при помощи SQL-запроса отображается список тестов. В полях ввода отображаются параметры теста, запись которого является текущей в данный момент в списке тестов: наименование теста, сложность теста и лимит времени в минутах на прохождение теста. При помощи соответствующих кнопок выполняются SQL-запросы на добавление, удавление и редактирование записей в таблице базы данных. Как и в случае списка тем, список отображаемых и редактируемых тестов связан с темой-родителем в списке тем. При удалении теста из списка тестов проверяется ссылочная целостность на уровне связей базы данных.

Рисунок 4.4. Форма задания параметров теста

Форма FQuestAnswer предназначена для редактирования структуры теста и вызывается из формы FAdm при нажатии соответствующей кнопки командной панели списка тестов. Структура теста состоит из вопросов теста и ответов на каждый вопрос. Таким образом, редактирование структуры теста сводится к редактированию соответствующих списков. Форма имеет два компонента DBGrid, в первом из которых выводится список вопросов, связанный с текущим тестом, а во втором выводится список ответов, связанный с текущим вопросом. Чтение записей из таблиц базы данных, а также осуществление связей меду таблицами выполняется при помощи SQL-запросов. В форме для каждого списка предусмотрена панель для ввода и редактирования параметров текущей записи. Для вопроса это текст вопроса, а для ответа- текст ответа и его вес. Внесение изменений в базу данных производиться после нажатия пользователем кнопок «Добавить» или «Изменить». При этом создаются и выполняются соответствующие SQL-запросы. Также можно удалить ответ из списка ответов вопроса или вопрос из списка вопросов теста. При удалении проверяется ссылочная целостность базы данных. Кроме того, для вопроса на отдельной закладке предусмотрена возможность назначения для вопроса картинки. При нажатии на кнопку «Добавить картинку» вызывается стандартный диалог выбора и просмотра графического файла, после выбора в котором интересующего файла графическое изображение из него записывается в базу данных. По кнопке «Убрать картинку» из соответствующей записи базы данных удаляется графическое изображение. Для вывода изображения картинки вопроса предназначен компонент TImage размещенный на панели-контейнере TPanel. При выводе изображения форма рассчитывает размер и местоположение компонента TImage относительно компонента-контейнера TPanel таким образом, чтобы изображение в компоненте TImage было пропорциональным, но при этом занимало максимальную площадь компонента-контейнера. Алгоритм, реализующий расчет размеров и координат компонента TImage выполнен в методе ComputeImage формы. Схема алгоритма расчета размеров области приведена на рисунке 7. Внешний вид формы приведен на рисунке 4.5.

Рисунок 4.5 Форма вопросов и ответов

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

Форма FormMater предназначена как для редактирования списка учебных материалов, так и для их просмотра. Разграничение доступа определяется правами пользователя, вошедшего в систему. Разграничение выполняется путем установки доступности (Enabled) органов управления, отвечающих за редактирование списка учебных материалов.

Основным визуальным элементом формы является компонент DBGrid, в котором отображается список учебных материалов. Список извлекается из базы данных при помощи SQL-запроса к таблицам Materials и LinkMaterial. Дополнительным условием на запрос накладывается ограничение на вывод «только своих» учебных материалов для той лекции, для которой была открыта форма, или всех учебных материалов. Изменение данного условия производится нажатием кнопки «Только закрепленные». Если форма была изначально открыта для просмотра списка всех учебных материалов, то кнопка недоступна. Форма хранит идентификатор лекции, для которой она была вызвана и все операции закрепления/открепления производит именно с этой лекцией.

Еще одним отбором, который можно сделать в списке, является отбор по тегам. Для этого в SQL-запрос добавляется еще одно условие Where, накладывающее условие отбора по полю TEG таблицы Materials. Включение/отключение такого отбора выполняется кнопкой.

В нижней части формы находится группа органов управления для ввода и редактирования параметров материала: наименования, описания, пути к файлу, типа и списка тэгов. Все эти параметры отображаются и редактируются каждый в своем компоненте TEdit. Выбор файла материала производится при помощи компонента TOpenDialog. Эти компоненты связаны со списком материалов: при перемещении по списку компоненты заполняются значениями текущей записи списка. Происходит это в обработчике события AfterScroll компонента доступа к данным TQuery.

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

Первая подгруппа кнопок - это кнопки добавления, редактирования и удаления записей в таблице materials базы данных. Значения полей таблицы берутся из компонентов TEdit. Все операции выполняются при помощи SQL-запросов Insert, Update и Delete.

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

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

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

Форма предоставляет возможность предварительного просмотра, а также вызова приложения Windows для простора ( а если необходимо и редактирования) файла, связанного с текущим материалом в списке материалов. Для предварительного просмотра и вызова приложения используется механизм OLE версии 2. Этот механизм позволяет программисту разрабатывать особые приложения - составные документы, которые динамически связаны между собой.

Для реализации механизма OLE в форму вставлен компонент палитры компонентов Borland C++ Builder, который называется OLEContainer. При активизации этого компонента ему передается полный путь к файлу, в котором находится выбранный для просмотра файл учебного материала. OLEContainer загружает приложение, связанное с данным файлом. Далее пользователь имеет возможность работать в этом автономном приложении используя весь его функционал, в том числе для редактирования файла в случае необходимости. Права на редактирование файла задаются владельцем файла и настраиваются администратором файл-сервера, на котором предпочтительно должны храниться все файлы учебных материалов. Связь конкретного приложения с каким-либо файлом определяется настройками операционной системы. Информация об этой связи хранится в системном реестре Windows. Обычно приложение Windows записывает в реестр информацию о своей связи с конкретным типом файлов при своей инсталляции на данном компьютере, однако она может быть изменена путем редактирования в любой утилите редактирования реестра, например стандартной утилитой Windows regedit.exe. Естественно, что для запуска приложения связанного с типом файла оно должно быть корректно установлено на данном компьютере.

Внешний вид формы FormMater представлен на Рисунок 4.6.

Рисунок 4.6. Форма FormMater

Форма FormTest вызывается из формы FAdm при нажатии на кнопку «Начать прохождение теста» в командной панели списка тестов. Данная форма предназначена для прохождения выбранного теста сотрудником и фиксации результатов его прохождения в базе данных.

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

Рисунок 4.7 Схема алгоритма расчета параметров изображения.

Как уже говорилось, класс TTest инкапсулирует в себе все необходимые свойства и методы для работы с объектом предметной области «Тест». Происходит считывание из базы данных параметров теста и формирование списка вопросов и ответов, которые представляют из себя списки объектов классов TQuestion и TAnswer. Далее вся работа с тестом происходит через объект класса TTest.

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

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

В панели текущего вопроса отображается текст и картинка текущего вопроса. Номер текущего вопроса - это свойство класса TTest, которое в методе ShowModal принимает значение ноль и далее меняется в зависимости от навигации по тесту. Текущий вопрос берется из объекта TTest при помощи метода GetQuest. Заметим, что если в текущем вопросе нет картинки, то поле для нее не отображается и вся панель текущего вопроса занята текстом вопроса. Для вывода изображения картинки вопроса предназначен компонент TImage размещенный на панеле-контейнере TPanel. При выводе изображения вызывается метод ComputeImage формы FQuestAnswer, который рассчитывает размер и местоположение компонента TImage относительно компонента-контейнера TPanel таким образом, чтобы изображение в компоненте TImage было пропорциональным, но при этом занимало максимальную площадь компонента-контейнера.

Панель ответов предназначена для вывода ответов на текущий вопрос. Она представляет из себя компонент TScrollBox в котором динамически создаются компоненты TradioButton или TCheckBox (в зависимости от типа ответа вопроса), текст которых заполняется текстом ответов. Таким образом, пользователю предоставляется возможность выбрать вариант ответа предложенный ему из нескольких возможных. Возможность вертикальной прокрутки объектов в компоненте TScrollBox обеспечивают отображение любого количества ответов. В создаваемых динамически компонентах TRadioButton и TCheckBox запоминается порядковый номер ответа и при ответе на вопрос именно этот номер фиксируется как выбранный пользователем вариант ответа. Если тип ответа вопроса установлен как «текст», то динамические объекты TRadioButton и TCheckBox не создаются, а вместо этого становится видимым поле ввода, в которое пользователю предлагается ввести свой вариант ответа. Введенный ответ фиксируется как данный пользователем ответ при нажатии на кнопку «Ответить».

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

Для фиксации ответа на вопрос предназначена кнопка «Ответить». При ее нажатии в текущий вопрос теста (объект класса TQuestion списка вопросов Questions объекта класса TTest) записывается порядковый номер ответа, выбранный пользователем при помощи радиокнопок, либо сам текст ответа, введенный пользователем в поле ввода. Результат ответа на вопрос не вычисляется.

Для навигации по тесту предназначена кнопки «Вперед» и «Назад», при нажатии на которые увеличивается или уменьшается на единицу номер текущего вопроса и вызывается функция его отображения. Кроме того, на панели навигации динамически создаются кнопки-объекты класса TSpeedButton, каждая из которых соответствует вопросу. При нажатии на какую-либо из кнопок порядковый номер вопроса объекта TTest принимает соответствующее значение, происходит отображение текущего вопроса, а свойство Down кнопки становится равное True, что визуально представляется как «вдавленная» кнопка.

Для завершения прохождения теста по желанию пользователя на панели навигации находится кнопка «Завершить» при нажатии на которую вызывается метод Close формы.

Завершение теста происходит либо по желанию пользователя при нажатии на кнопку «Завершить», либо по срабатыванию таймера лимита времени. В любом случае вызывается метод Close формы. Пользователь может и любым другим способом, принятым в Windows-приложениях закрыть окно формы FormTest. Фиксация результатов теста происходит в обработчике события закрытия формы.

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

Рисунок 4.8 Форма прохождения теста.

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

В программе предусмотрена возможность печати результатов теста. Если в главном меню программы выбрать пункт «Печать» при активном окне прохождения теста (форма FormTest), то если в данный момент в ней отображаются результаты теста, то будет вызвана форма FormPrintResult, в которой размещен компонент TQuickReport. Перед вызовом этой формы происходит заполнение его органов отображения значениями параметров теста и его результатами, после чего вызывается метод PreView компонента TQuickReport, отображающем предварительный просмотр печатной формы результатов теста.

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

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

l диапазон дат прохождения тестов;

l пользователь;

l тест;

После нажатия кнопки «Сформировать» формируется SQL-запрос на выборку записей из базы данных результатов прохождения тестов, соответствующих заданным условиям. Записи результирующей выборки выводятся в компонент DBGrid в панели результатов для анализа пользователем пройденных тестов.

На панели команд располагаются кнопки «Сформировать», «Расшифровать» и «Закрыть», а также общий результат выборки тестов.

При выборе в главном меню пункта «Печать» из формы FormStatistic вызывается форма FormPrintStatistic. Она имеет в себе компонент TQuickReport, в котором формируется печатная форма статистики. Перед вызовом формы все компоненты, располагающиеся на компоненте TQuickReport заполняются соответствующими значениями и происходит вызов метода PreView, вызывающему окно предварительного просмотра печатной формы. Внешний вид формы приведен на рисунке 10.

Рисунок 4.9 Форма статистики.

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

Рисунок 4.10 Форма списка пользователей.

4.5 Вызов и загрузка

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

Перед первым запуском программы необходимо создать алиас базы данных с именем TEST при помощи программы BDEAdministrator. Данная программа находится в панели управления Windows и устанавливается вместе с системой BDE. Сама же система BDE входит в комплект поставки системы разработки C++ Builder/Delphi и ставится с этой системой по умолчанию. Если же программа устанавливается на компьютер, на котором отсутствует система разработки, необходимо установить систему BDE отдельно, либо с диска установки Borland C++ Builder/Delphi, выбрав в списке устанавливаемых компонент только систему BDE. Сама база данных (файлы таблиц и индексов) также должны быть скопированы на жесткий диск компьютера перед первым запуском программы в отдельный каталог с установочного диска программы. На этот и должен быть настроен алиас TEST.

5. Руководство системного программиста

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

Type - STANDART;

DEFAULT DRIVER - PARADOX;

ENABLE BCD - FALSE;

PATH - путь к каталогу с таблицами базы данных.

Программное обеспечение проекта состоит из одного файла CSM.exe. Проект скомпилирован и скомпонован в системе программирования Borland C++ Builder таким образом, что все необходимые компоненты и библиотеки включены в исполняемый exe-файл. Такой способ компоновки имеет существенный недостаток, заключающийся в том, что exe-файл получается большого размера, который в несколько раз превосходит exe-файл при раздельной компоновке. Но преимущество такого способа компоновки заключается в том, что для работы программы не требуется никаких дополнительных файлов, что значительно упрощает установку, поддержку программы и ее перенос на другой компьютер.

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

В последние годы одной из самых больших проблем эксплуатирования информационных систем стала проблема борьбы с компьютерными вирусами. Особенно эта проблема актуальна для информационных систем, работающих в сети, тем более в сети имеющей выход в глобальную сеть Интернет. Компьютерные вирусы способны разрушать данные и программы, хранящиеся на жестком диске компьютера, вносить изменения в данные и даже вызывать физические повреждения аппаратной части компьютера. Для борьбы с вирусами созданы много программ, одной из самых известных и действенных является Antiviral Toolkit Pro фирмы Kaspersky Lab. Данная программа работает как в режиме монитора, выполняясь как фоновый процесс Windows и отслеживая возможные вирусные атаки в ходе работы других приложений, так и в режиме сканера, проверяя выбранные логические диски на предмет наличия на них тел вирусов и пораженных файлов. Для предотвращения возможных заражений базы данных или программ разработанной информационной системы, а также системных файлов и программ Windows рекомендуется постоянная работа антивирусной программы в режиме монитора. Также необходимо периодически, не реже одного раза в сутки (желательно в нерабочее время) запускать антивирусную программу в режиме сканера.


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

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

    курсовая работа [750,2 K], добавлен 24.03.2014

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

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

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

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

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

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

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

    курсовая работа [409,9 K], добавлен 29.04.2015

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

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

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

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

  • Разработка модели системы тестирования пользователей с применением технологии "клиент-сервер". Требования к программному изделию и документации. SADT диаграмма системы тестирования до и после автоматизации. Настройка SQL-сервера и установка программы.

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

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

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

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

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

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