Файл: С каждым днём компьютер всё больше и больше внедряется в нашу деятельность и находит применение в любой её области.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 05.12.2023

Просмотров: 196

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

Атрибуты первичного ключа родительской сущности по умолчанию мигрируют со своими именами[13].

Из произведенного анализа принципа построения диаграммы «сущность-связь» можно выделить следующую последовательность действий:

  • определить корневые сущности;

  • определить атрибуты сущностей;

  • установить связи между корневыми сущностями.

В разделе 2 подробно описаны сущности разрабатываемой базы данных и определены связи между ними. Таким образом, на основании этой информации в соответствии с вышеизложенными правилами разработаем структуру базы данных в среде Erwin. Результат разработки представлен в Приложении В.
4 Разработка алгоритмов и программного обеспечения
Программное обеспечение для подготовки приложений к диплому представляет собой программное средство для пользователей различной степени квалификации и подготовки в области работы на ПК, следовательно удобство использования программы должно быть соответствующим. Именно поэтому при разработке системы основное внимание следует уделить дружественности интерфейса, обеспечению минимального ввода данных и, как следствие, снижению возможности ошибок пользователя.
4.1 Описание процесса разработки структуры программного приложения
На основании анализа технического задания в качестве программной реализации программного обеспечения выбрана технология ADO.

Механизм доступа к данным через ADO и многочисленные объекты и интерфейсы реализованы в VCL Delphi в виде набора компонентов, расположенных на странице ADO (рисунок 4.1).

Рисунок 4.1 – Палитра компонент ADO
Набор свойств и методов компонентов ADO обеспечивает реализацию всех необходимых приложению БД функций. Способы использования компонентов ADO немногим отличаются от стандартных компонентов VCL доступа к данным. Однако при необходимости разработчик может использовать все возможности интерфейсов ADO, обращаясь к ним через совокупность объектов ADO[14].

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


Компоненты доступа к данным ADO могут использовать два варианта подключения к хранилищу данных. Это стандартный метод ADO и стандартный метод Delphi.

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

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

База данных может быть указана двумя способами через файл в формате Microsoft Data Link, расширение UDL, либо прямым заданием параметров соединения. Окно этого свойства представлено на рисунке 4.2.


Рисунок 4.2 – Окно выбора указания базы данных

 

При выборе «Use Connection String» и нажатии на кнопку «Build…» появляется стандартный диалог выбора файла. В этом окне выбирается тип базы данных, местоположение базы и параметры соединения.

На первой закладке выбирается тип базы данных или Provider, в терминах ADO (рисунок 4.3).



Рисунок 4.3 – Закладка «Поставщик данных» окна

«Свойства связи с данными»
Базы MS Access доступны как через «Microsoft Jet OLE DB Provider», так и через «Microsoft OLE DB Provider for ODBC». «Microsoft Jet OLE DB Provider» обеспечивает соединение с данными СУБД Access при помощи технологии DАО.

«Microsoft OLE DB Provider for ODBC drivers» обеспечивает доступ к данным, которые уже "прописаны" при помощи драйверов ODBC. Однако реальное использование такого соединения представляется проблематичным – драйверы ODBC крайне медлительны. Поэтому при выборе провайдера остановимся на первом варианте, т.е. на «Microsoft Jet OLE DB Provider»[15].

Следующая закладка зависит от выбранного типа базы, однако для всех типов есть кнопка «Проверить подключение», позволяющая проверить правильность и полноту параметров. Для «Microsoft Jet OLE DB Provider» окно страницы представлено на рисунке 4.4. Флажок «Пустой пароль» подавляет диалог ввода идентификатора и пароля пользователя при установлении соединения, если поле пароля пустое. Флажок «Разрешить сохранение пароля» сохраняет пароль в строке параметров соединения. Если он не отмечен, то введенный пароль будет использоваться при выполнении тестового соединения.





Рисунок 4.4 – Закладка «подключение» окна «Свойства связи с данными» 
На закладке «Дополнительно» (рисунок 4.5) расположены дополнительные параметры, с помощью которых устанавливается уровень доступа к файлу базы данных, таймаут сетевого соединения (то есть время через которое связь будет считаться потерянной, если сервер не отвечает) и уровень глубины проверки секретности соединения.



 Рисунок 4.5 – Закладка «Дополнительно» окна «Свойства связи с данными» 

На закладке «Все» (рисунок 4.6) можно отредактировать все параметры с предыдущих страниц и параметры зависящие от провайдера, но не вошедшие на страницу «Подключение». Редактирование осуществляется в виде параметр – значение, причем в текстовой форме, никаких диалогов нет.


Рисунок 4.6 – Закладка «Все» окна «Свойства связи с данными»
В компоненте TADOConnection есть свойства Provider, DefaultDatabase и Mode которые являются альтернативным методом задания частей строки параметров соединения – провайдера, базы данных (например, пути до базы MS Access) и режима совместного использования файлов базы данных. Эти значение этих свойств автоматически включаются в строку соединения, если были заданы до активизации компонента и автоматически выставляются после соединения[16].

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

function MakeConnectionString(Path: string): widestring.

При этом предполагается хранение последней версии строки с местоположением источника данных в файле DBPath.ini.

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

На странице ADO палитры компонентов Delphi, кроме компонентов соединения есть стандартные компоненты, инкапсулирующие набор данных и адаптированные для работы с хранилищем данных ADO. Это компоненты:


  • TADODataSet – универсальный набор данных;

  • TАDOTаblе – таблица БД;

  • TADOQuery – запрос SQL;

  • TADOStoredProc – хранимая процедура.

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

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

Компонент TАDOTаblе обеспечивает использование в приложениях Delphi таблиц баз данных, подключенных через провайдеры OLE DB. Компонент TADOTable используется в тех случаях, когда необходимо работать с одной таблицей в базе данных. Имя таблицы БД задается свойством TableName.     Связь друг с другом компонентов TADOTable, работающих с разными таблицами, одна из которых главная, а другая – вспомогательная, осуществляется с помощью свойств MasterSource и MasterFields.

Компонент TADOQuery служит для определения SQL-операторов, позволяющих осуществить доступ к одной или нескольким таблицам в базе данных. Содержание набора определяется SQL-операторами и состоянием БД. Свойство SQL (TStrings) используется для указания одного или нескольких SQL-операторов, которые следует выполнить. В операторах могут использоваться параметры, идентификаторы которых помечаются знаком «:». Изменение параметра осуществляется изменением свойства Value по индексу в коллекции объектов Parameters. Изменение параметров возможно только при закрытом запросе.     Основной метод TADOQuery – это метод ExecSQL, используемый для выполнения SQL-запроса, хранящегося в свойстве SQL.

Компонент TADOStoredProc предназначен для выполнения хранимых процедур базы данных.  Компонент TADOStoredProc имеет свойство ProcedureName (WideString), служащее для указания хранимой процедуры для запуска. Параметры процедуры определяются свойством Parameters и задаются так же, как и параметры TADOQuery[17].

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

Для доступа к данным и работы с ними воспользуемся компонентами TADOQuery и TАDOTаblе.


Для визуализации данных будем работать со следующими компонентами палитры компонент DataControls:

  • TDBGrid – позволяет отображать наборов данных в сетке;

  • TDBEdit – позволяет отображать содержимого поля таблицы;

  • TDBImage – позволяет приложению использовать изображения, которые хранятся в полях типа BLOB.

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

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

Для отображения названия группы на форме воспользуемся следующими компонентами:

  • TADOQuery с палитры компонент ADO;

  • TDataSource с палитры компонент Data Access;

  • TDBGrid c палитры компонент Data Controls.

Выбранные компоненты поместим в специальный «контейнер» DataModule (ADOQuery1, DataSource1, DBGrid1).

В инспекторе объектов присвоим новые имена:

  • ADOQuery1=qrGoups;

  • DataSource1=dsGroups.

Связываем компоненты, устанавливая свойство DBGrid1 DataSource на компонент dsGroups, свойство DataSet компонента dsGroups на qrGoups. Теперь нам необходимо указать базу данных. Делается это в свойстве Connection (выбираем ConnectDB).

После этого в свойстве SQL qrGoups создадим запрос на выборку:

SELECT

Groups.*,

Specialities.SpecCode,

Specialities.SpecName,

Specialisations.SpecialName,

Qualifications.QualificName

FROM Qualifications INNER JOIN (Specialisations INNER JOIN

(Specialities INNER JOIN Groups ON Specialities.SpecId =

Groups.SpecId) ON Specialisations.SpecialNameId =

Specialities.SpecialisationNameId) ON

Qualifications.QualificId = Specialities.QualificId. 

Активизируем qrGoups, установив свойство Active в True.

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

SELECT

Students.*,

LastDocuments.LastDocName,

GiveOutDocs.GiveOutDocName

FROM LastDocuments INNER JOIN (GiveOutDocs INNER JOIN Students

ON GiveOutDocs.GiveOutDocNameId = Students.GiveOutDocNameId)

ON LastDocuments.LastDocId = Students.LastDocId

ORDER BY StudentSurname.

Приложение должно предусмотреть возможность просмотра списка студентов выбранной группы, т.е. каждый раз при выборе определённой группы в он мог видеть список студентов этой группы. Это достигается посредством «связанных курсоров». Таблицы следует связать по полю GroupId, которое содержит каждая таблица. Для этого требуется для qrStudents в инспекторе объектов свойство DataSours установить в qrGroups, а в свойстве SQL в конец запроса следует добавить строчку: