Смекни!
smekni.com

Создание информационной системы Учебные планы Вычитка часов (стр. 3 из 4)

Несмотря на расхождения между последними версиями InterBase и Firebird, они оба наследуют все те положительные черты исходной СУБД InterBase, которые обеспечили высокую популярность этого сервера. Более того, здоровая конкуренция между этими серверами по возможностям SQL, производительности и другим параметрам гарантируют пользователям той или иной СУБД интенсивное развитие выбранного ими сервера. Небольшой объем дистрибутива, простой и быстрый процесс установки с моментальной готовностью к работе, минимальные требования к оборудованию, широкий спектр компонент и драйверов для разнообразных сред разработки, возможность обслуживания больших баз данных и большого числа пользователей, а также архитектура многоверсионности, упрощающая логику приложений – все это востребовано как начинающими, так и опытными разработчиками.

Постановка задачи

Приложение призвано обеспечить интерфейс пользователя и СУБД и должно удовлетворять следующим требованиям:

· содержательное название.

· ясные и понятные инструкции.

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

· легко узнаваемые названия полей.

· согласованная терминология и сокращения.

· согласованное использование цветов.

· визуальное выделение пространств и границ полей ввода данных.

· удобные средства перемещения курсора.

· средства исправления отдельных ошибочных символов и целых полей.

· средства вывода сообщений об ошибках при вводе недопустимых значений.

· особое выделение необязательных для ввода полей.

· средства вывода пояснительных сообщений с описанием полей.

· средства вывода сообщения об окончании заполнения формы.

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

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

Для обеспечения связи набора данных с визуальными компонентами отображения данных используется специальный компонент DataSource. Его роль заключается в управлении потоками данных между набором данных и связанными с ним компонентами отображения данных. Этот компонент обеспечивает передачу данных в визуальные компоненты и возврат результатов редактирования в набор данных, отвечает за изменение состояния визуальных компонентов при изменении состояния набора данных, передает сигналы управления от пользователя (визуальных компонентов) в набор данных. Компонент DataSource расположен на странице DataAccess палитры компонентов. С каждым компонентом доступа к данным может быть связан как минимум один компонент DataSource. В его обязанности входит соединение набора данных с визуальными компонентами отображения данных. Компонент DataSource обеспечивает передачу в эти компоненты текущих значений полей из набора данных и возврат в него сделанных изменений.

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

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

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

Реализация проекта

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


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

Все невизуальные компоненты: IBDatabase, IBTransaction, IBDataset, DataSource вынесены в специальный контейнер DataModule:

Для выборки данных, их изменения, удаления и вставки в TIBDataSet используется набор свойств, представляющих собой SQL-запросы для манипулирования данными, – это SelectSQL, DeleteSQL, InsertSQL и ModifySQL.

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

В свойстве SelectSQL указывается запрос на выборку данных (SELECT… FROM…), которые будут доступны для просмотра и, в зависимости от содержимого остальных запросов, для редактирования, удаления и т.д.

В свойствах DeleteSQL, InsertSQL и ModifySQL указываются соответствующие запросы, которые будут вызываться автоматически самим компонентом при вызове методов Delete, Insert и Edit для удаления, вставки и редактирования записей.

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

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

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

Компоненты IBDataSetGroups и IBDataSetUP, а также IBDataSetUP и IBDataSetZanнаходятся с отношении главный-подчиненный (master-detail). Этот режим обеспечивает отбор записей подчиненной таблицы в зависимости от значения ключевого поля текущей записи главной таблицы.

На следующем рисунке представлено окно редактирования текста запроса на выборку компонента IBDataSetUP. Для реализации master-detail используется свойство IBDataSetUP. DataSource:= DataSourceGroups и условие отбора по значению текущей группы:


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

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



На формах расположены компоненты редактирования полей текущей записи, т.н. db-aware компоненты. Все они связаны с соответствующими наборами данных, расположенными на главной форме приложения. Внесение изменений при помощи этих компонентов автоматически переводит набор данных в состояние Edit. При добавлении новой записи необходимо перевести набор данных в состояние Insert, вызвав соответствующий метод.

Руководство пользователя

Для работы информационной системы необходимо наличие файла приложения UP.EXE и файла базы данных UP.GDB. Кроме того, на машине пользователя должен быть установлен SQL-сервер Firebird.

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

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

Приложение позволяет пользователю:

· добавлять, изменять, удалять учебные группы

· добавлять, изменять, удалять предметы

· добавлять, изменять, удалять учебные планы

· редактировать сведения о проведенных занятиях

В таблице УЧЕБНЫЕ ПЛАНЫ пользователь видит планы только той группы, которая является текущей в таблице ГРУППЫ, а в таблице ЗАНЯТИЯ – только те занятия, которые проведены по текущему плану в таблице УЧЕБНЫЕ ПЛАНЫ.

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

При модификации таблицы ЗАНЯТИЯ, изменения автоматически отражаются в таблице УЧЕБНЫЕ ПЛАНЫ.

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