Разработка информационной системы "Библиотека" с использованием клиент-серверной технологии
Разработка базы данных для информационной системы "Библиотека". Системный анализ, инфологическое, даталогическое и физическое проектирование. Программирование бизнес-логики, разработка клиентского приложения. Создание web-приложения, web-доступ.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 15.09.2014 |
Размер файла | 3,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Федеральное агентство по образованию
Белгородский государственный университет
Факультет компьютерных наук и телекоммуникаций
Кафедра математического и программного обеспечения информационных систем
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
К КУРСОВОЙ РАБОТЕ
по дисциплине: "Базы данных".
на тему: "Разработка информационной системы "Библиотека" с использованием клиент-серверной технологии".
Студент: Н.Ю. Калашникова
Руководитель курсовой работы: В.М. Михелев
г. Белгород 2009
План
- Введение
- 1. СУБД Firebird
- 2. Разработка базы данных для ИС "Библиотека"
- 2.1 Системный анализ
- 2.2 Инфологическое проектирование
- 2.3 Даталогическое проектирование
- 2.4 Физическое проектирование
- 2.5 Программирование бизнес-логики
- 3. Разработка клиентского приложения
- 4. Создание Web приложения. Web-доступ
- Заключение
- Список используемых источников
- Приложения
Введение
В данной курсовой работе для автоматизации работы библиотеки разрабатывается информационная база данных, содержащая информацию о имеющихся книгах, книжных отделах, а также о сотрудниках библиотеки и информацию о читателях.
Сама база данных содержит шесть таблиц. При помощи приложения и web интерфейса пользователь может просматривать записи в БД и осуществлять все необхидимые действия для ведения базы.
Проект состоит из теоретической и практической частей. В первой части рассматривается реляционная система управления базами данных Firebird, во второй детально описываются этапы проектирования информационной системы: разработка базы данных, создание клиентского приложения, создание веб-приложения.
Целью данной курсовой работы является:
· Углубление теоретических и практических знаний в области баз данных и систем управления базами данных;
К задачам курсовой работы можно отнести следующее:
· Разработка базы данных в РСУБД Firebird;
· Создание приложения, основанного на клиент-серверной технологии;
· Создание веб-приложения.
Курсовая работа написана на 57 листах. Из них 28 листа - основной текст курсовой работы, 29 листов содержат полный код программ и вынесены в приложения. Курсовая работа содержит 15 рисунков, 3 таблицы.
информационная система приложение клиентский
1. СУБД Firebird
Общие сведения
Firebird является программным обеспечением для платформы клиент-сервер, разработанным специально для использования в локальных и глобальных компьютерных сетях. Соответственно, его ядро состоит из двух основных программ: сервер базы данных, который выполняется на сетевом хост-компьютере, и клиентская библиотека, через которую пользователи с удаленных рабочих станций соединяются и общаются с базой данных, управляемой сервером.
Firebird - серьезный программный продукт, созданный для установки в малых и больших сетях, он также обладает некоторыми полезными возможностями для автономных конфигураций. Его небольшой размер дает возможность одиночным разработчикам легко выполнять большие производственные разработки в домашнем офисе.
Firebird - это мощная, компактная реляционная система управления базами данных (РСУБД) с архитектурой клиент-сервер. Она может выполняться на разнообразных серверных и клиентских платформах, включая Windows, Linux и на некоторых других платформах UNIX, включая FreeBSD и Mac OS X. Это РСУБД промышленного применения, чьи возможности имеют высокий уровень соответствия стандартам SQL, при этом она реализует некоторые мощные расширения языка процедурного программирования конкретного производителя.
Опишем функции которые должны выполнять будущие приложения (Windows и Web): "Магазин строительных материалов"
Windows - приложение:
· Программа должна быть легка и удобна в использовании
· Иметь приятный интерфейс
· Содержать в себе как можно полную информацию об учебных заведениях
· Функция удаления записей
· Функция сортировки
· Функция добавления записи
· Фильтрация записей
· Поиск записей
· Отчеты на основе информации в БД
Web - приложение:
· Сайт должен быть легок и удобен в использовании
· Иметь приятный интерфейс
· Содержать в себе как можно полную информацию о товарах
· Позволять пользователю заносить дополнительную информацию, а так же удалять и изменять ошибочную информацию об учебных заведениях
2. Разработка базы данных для ИС "Библиотека"
2.1 Системный анализ
БД представляет структуру и совокупность организации, отношений, правил и процессов. Перед проектироваем структур и правил базы данных, необходимо провести системный анализ проблемы. Следует особенно подчеркнуть важность скрупулезного описания и анализа. Анализ логических данных является итеративным процессом детализации и поиска сути во множестве входных данных, задач и выходных данных, которые должны быть реализованы в базе данных.
В рамках данного курсового проекта разрабатывается база данных "Библиотека", которая станет основой для будущей информационной системы. Первым этапом проектирования БД является системный анализ, в ходе которого были выделены следующие ключевые объекты предметной области: читатель, книги, выдача книг. Между данными объектами существуют реальные связи, обеспечивающие полноту и целостность данных. Планируется, что в данной системе будут храниться все необходимые данные о структуре библиотеки и собственно о книгах.
После выполнения системного анализа можно приступать к следующему пункту проектирования - инфологическому проектированию.
2.2 Инфологическое проектирование
Для хранения информации в базе данных, нам необходимо разработать структуру БД. Определить какие таблицы (сущности) она в себя будет включать, какие поля (атрибуты) будут включать в себя таблицы. Для логического проектирования БД, мы будем использовать CASE средство ERwin. Цель инфологического моделирования - обеспечение наиболее естественных для человека способов сбора и представления той информации, которую предполагается хранить в создаваемой базе данных. Поэтому инфологическую модель данных пытаются строить по аналогии с естественным языком (последний не может быть использован в чистом виде из-за сложности компьютерной обработки текстов и неоднозначности любого естественного языка). Основными конструктивными элементами инфологических моделей являются сущности, связи между ними и их свойства. Стандартом при инфологическом моделировании БД, является модель "сущность - связь", ER - модель. Основой ER модели служат базовые понятия, соответствующие некоторому классу однотипных объектов. Сущность имеет уникальное имя в пределах моделированной системы, также в системе должны быть ключи. Объект которому соответствует понятие сущность имеет свой набор атрибутов - это характеристики определяющие свойства данной сущности.
Разрабатывая данную базу данных, можно выделить следующие сущности: типы товаров, товары, клиенты, производители, продавци, сделки. Каждая сущностей имеет собственные атрибуты. На основе этих данных строим следующую инфологическую модель (рис 1).
Рисунок 1. Инфологическая модель БД
Рисунок 2. Физическая модель БД
Получившаяся система является корректной т.к. содержит не избыточную информацию и приведена к 3 нормальной форме.
2.3 Даталогическое проектирование
Даталогическое проектирование позволяет разработать схемы БД, которые адекватно моделируют предметные области объектов и отражают связи с ними. Важной частью даталогического проектирования является нормализация разделение групп элементов данных с целью установления основных отношений, уменьшения избыточности и объединения связанных элементов данных в структуры, которыми можно эффективно манипулировать. Использование ненормализованных БД может привести к нарушению целостность базы данных.
Целью данного этапа проектирования БД является приведение базы данных "Библиотека" к третьей нормальной форме. Для того чтобы это сделать, необходимо последовательно привести базу данных от первой нормальной формы к третьей. Сначала приведем БД к первой нормальной форме, делая значения всех атрибутов во всех столбцах атомарными. Далее определяем первичные ключи и зависящие от них не ключевые поля. Затем создаем отдельную таблицу для каждого первичного ключа и перемещаем в неё этот ключ вместе с зависимыми не ключевыми полями. Теперь база данных находится во второй нормальной форме. Последним, что необходимо сделать для перевода БД в третью нормальную форму - определение зависимых полей и создание новой таблицы для каждого из таких полей. Тем самым, все поля в таблицах, приведенных к третьей нормальной форме, будут независимыми.
Выполнив операции по нормализации БД, приступаем к выполнению физического проектирования базы данных.
2.4 Физическое проектирование
После даталогического проектирования запускаем приложение администрирования баз данных Firebird IBExpert и, используя функции заложенные в этом программном средстве, создаем и регистрируем в системе новую базу данных Firebird "Библиотека". Создание базы данных инсталлирует инфраструктуру, необходимую для начала создания объектов. Первичным объектом для постоянного хранения данных в базе данных является таблица.
Приступая к созданию таблиц, предполагается, что уже выполнен анализ данных и подготовлена модель, а также имеется совершенно четкое представление о структурах главных таблиц и их взаимоотношениях. Исходя из данных, полученных при выполнении инфологического и даталогического проектирования, спроектировал таблицы и поля базы данных. Определяем ключевые поля и поля Not null (см. Таблица 1).
В данной базе данных для определения типов данных столбцов таблиц используются домены (см. Таблица 2). Домены в Firebird схожи с концепцией "типы данных, определенные пользователем". Хотя и невозможно создать новый тип данных, но можно задать набор атрибутов с одним из существующих типов данных и присвоить ему идентификатор домена. После этого можно использовать домен как параметр типа данных для определения столбцов любой таблицы. Преимущества инкапсуляции определения данных очевидны, так как в Firebird отсутствует логический, денежный и некоторые другие типы данных, но, используя домены, можно создать замену этим типам данных.
Таблица 1. ER - модель БД.
Имя таблицы |
Имя поля |
Тип |
Длина |
Десятичная часть |
Имя домена |
|
bibliotekor |
Nomer_bibliotekorya |
SMALLINT |
D_INDEXTYPE |
|||
Nomer_otdela |
SMALLINT |
D_INDEXTYPE |
||||
Fio_bibliotekorya |
VARCHAR |
45 |
D_NAME |
|||
chitatel |
Nomer_chitatelya |
SMALLINT |
D_INDEXTYPE |
|||
Familiya_4itatelya |
VARCHAR |
45 |
D_NAME |
|||
Imya_chitatelya |
VARCHAR |
45 |
D_NAME |
|||
adres |
VARCHAR |
40 |
D_ADRES |
|||
telefon |
VARCHAR |
15 |
D_TEL |
|||
Knigi |
Nomer_knigi |
SMALLINT |
D_INDEXTYPE |
|||
Nomer_otdela |
SMALLINT |
D_INDEXTYPE |
||||
nazvanie_knigi |
VARCHAR |
45 |
D_NAME |
|||
kol_vo_stranic |
SMALLINT |
D_INDEXTYPE |
||||
avtor |
VARCHAR |
45 |
D_NAME |
|||
id |
SMALLINT |
D_INDEXTYPE |
||||
New_table |
Nomer_knigi |
SMALLINT |
D_INDEXTYPE |
|||
Nomer_otdela |
SMALLINT |
D_INDEXTYPE |
||||
nazvanie_knigi |
VARCHAR |
45 |
D_NAME |
|||
kol_vo_stranic |
SMALLINT |
D_INDEXTYPE |
||||
avtor |
VARCHAR |
45 |
D_NAME |
|||
izmen |
VARCHAR |
45 |
D_NAME |
|||
data_tr |
DATE |
D_DATETYPE |
||||
otdel_knig |
nazvanie_otdela |
VARCHAR |
45 |
D_NAME |
||
Nomer_otdela |
SMALLINT |
D_INDEXTYPE |
||||
kol_vo_knig |
SMALLINT |
D_INDEXTYPE |
||||
telefon |
VARCHAR |
D_TEL |
||||
nomer_bibliotekorya |
SMALLINT |
D_INDEXTYPE |
||||
Vida4a_knig |
Nomer_zapisi |
SMALLINT |
D_INDEXTYPE |
|||
Nomer_knigi |
SMALLINT |
D_INDEXTYPE |
||||
Nomer_bibliotekorya |
SMALLINT |
D_INDEXTYPE |
||||
Nomer_4itatelya |
SMALLINT |
D_INDEXTYPE |
||||
data_vyda4i_knigi |
DATE |
D_DATETYPE |
||||
data_vozvrata_knigi |
DATE |
D_DATETYPE |
Таблица 2. Список доменов.
Имя домена |
Тип |
Длинна |
Ограничения |
|
D_INDEXTYPE |
SMALLINT |
VALUE>0 |
||
D_NAME |
VARCHAR |
45 |
||
D_ADRES |
VARCHAR |
40 |
||
D_TEL |
VARCHAR |
15 |
||
D_DATETYPE |
DATE |
VALUE<='TODAY' |
Теперь, когда проработаны все теоретические аспекты создания базы данных, можно приступать к программированию доменов и таблиц. Для этого, запустив IBExpert, загружаем SQL редактор и выбираем меню Tools->SQL Editor.
В появившемся окне пишем скрипт для создания домена D_NAME:
CREATE DOMAIN D_NAME AS
VARCHAR (45) CHARACTER SET WIN1251
NOT NULL
COLLATE WIN1251
Подобным образом создал домены D_INDEXTYPE, D_ADRES, D_DATETYPE, D_TEL. (см. Приложение 1).
Создав домены, приступаем к созданию таблиц. Всего в БД будет создано шесть таблиц. Таблицы имеют связи, реализуемые с помощью первичных и вторичных ключевых полей. Кроме связей эти поля также влияют на целостность данных.
Средствами IBExpert создаем таблицу chitatel и указываем ключевые поля, в этой таблице будут храниться данные о типах мебели:
CREATE TABLE CHITATEL (
FAMILIYA_CHITATELYA D_NAME /* D_NAME = VARCHAR (45) NOT NULL */,
IMYA_CHITATELYA D_NAME /* D_NAME = VARCHAR (45) NOT NULL */,
OTCHESTVO D_NAME /* D_NAME = VARCHAR (45) NOT NULL */,
ULICA D_NAME /* D_NAME = VARCHAR (45) NOT NULL */,
NOMER_DOMA D_INDEXTYPE /* D_INDEXTYPE = INTEGER NOT NULL */,
TELEFON D_TEL /* D_TEL = VARCHAR (15) */,
NOMER_CHITATELYA D_INDEXTYPE NOT NULL /* D_INDEXTYPE = INTEGER NOT NULL */
);
-Задание первичного ключа
ALTER TABLE CHITATEL ADD PRIMARY KEY (NOMER_CHITATELYA);
Используя комбинацию генератора с триггером, реализуем автоинкрементное поле для таблицы chitatel
-Создание генератора
CREATE GENERATOR GEN_ID_ CHITATEL;
-Создание триггера
CREATE OR ALTER TRIGGER CHITATEL_BI0 FOR CHITATEL
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
begin
IF (NEW. nomer_chitatelya is null) then
NEW. nomer_chitatelya=gen_id (gen_chitatel,1);
end
Подобным образом создаем остальные таблицы. Задаем для этих таблиц ключевые поля, вторичные ключи, разрабатываем генераторы и триггеры (см. Приложение 1).
2.5 Программирование бизнес-логики
В курсовом проекте клиентское приложение для информационной системы "Библиотека" будет придерживаться концепции "тонкого клиента". То есть, вся бизнес - логика должна быть реализована на сервере базы данных Firebird. РСУБД предоставляет широкий выбор вариантов программирования бизнес - логики позволяя написать просмотры, хранимые процедуры, триггеры, исключения. Средствами IBExpert создаем все необходимые просмотры (см. Листинг 1). Далее приступаем к созданию хранимых процедур на ввод, изменение и удаление данных для каждой таблицы. Кроме этого необходимо создать хранимые процедуры на выборку данных для составления отчетов.
В IBExpert загрузил SQL редактор, выбрав меню Tools->SQL Editor. В появившемся окне написал скрипт для создания процедур на ввод, изменение и удаление данных таблицы сhitatel:
-Процедура на удаление данных из таблицы chitatel
CREATE OR ALTER PROCEDURE DEL_CHIT (
n_chitat integer)
as
BEGIN
DELETE FROM chitatel
WHERE (nomer_CHITATELYA =: n_CHITAT);
END^
Затем создаем процедуру на добавление или изменение записи.
CREATE OR ALTER PROCEDURE ADD_CHIT (
familiya varchar (20),
name varchar (15),
otchestvo varchar (15),
ulica varchar (21),
n_doma smallint,
tel varchar (10))
as
begin
INSERT INTO chitatel (chitatel. familiya_chitatelya,chitatel. imya_chitatelya,chitatel. otchestvo,
chitatel. ulica,chitatel. nomer_doma,chitatel. telefon)
VALUES (: familiya,: name,: otchestvo,: ulica,: n_doma,: tel);
suspend;
end^
CREATE OR ALTER PROCEDURE RED_CHITATEL (
familiya varchar (20),
name varchar (10),
otchestvo varchar (14),
ulica varchar (20),
n_doma smallint,
tel varchar (10),
n_chit integer)
as
BEGIN
UPDATE chitatel
SET nomer_chitatelya=: n_chit,
nomer_doma =: n_doma,
familiya_chitatelya =: familiya,
imya_chitatelya =: name,
otchestvo=: otchestvo,
ULICA=: ulica,
telefon=: tel
WHERE (nomer_chitatelya =: n_chit);
when sqlcode - 530 do
exception key_ne_ice;
end^
Полный список хранимых процедур представлен в таблице 3.
Таблица 3. Название и назначение процедур
Название процедуры |
Назначение |
|
Add_chit |
Добавление записи в таблице читатели |
|
Add_biblio |
Добавление записи в таблице библиотекари |
|
Add_vyda4 |
Добавление записи в таблице выдача книг |
|
Add_otdel |
Добавление записи в таблице отделы книг |
|
Add_knig |
Добавление записи в таблице книги |
|
Del_chit |
Удаление записи в таблице читатели |
|
Del _knig |
Удаление записи в таблице книги |
|
Del _otdel |
Удаление записи в таблице отделы книг |
|
Del _bibl |
Удаление записи в таблице библиотекари |
|
Del _vyda4a |
Удаление записи в таблице выдача книг |
|
Red_chitatel |
Изменение записи в таблице читатели |
|
Reg _otdel |
Изменение записи в таблице отделы книг |
|
Reg _knig |
Изменение записи в таблице книги |
|
Reg _bibl |
Изменение записи в таблице библиотекари |
|
Reg _vyda4 |
Изменение записи в таблице выдача книг |
3. Разработка клиентского приложения
Часть разработанного интерфейса и выполнение различных действий при работе с БД будем рассматривать на примере таблицы "Читатель" так как, интерфейс остальных таблиц а так же действия над ними практически одинаковые.
1. Выполняем команду File->New->Other и выбираем значок Data Module на вкладке New.
2. В созданный модуль DB переносим компоненты IBDatabase1 и IBTransaction1.
3. Настраиваем свойства DatabaseName, DefaultTransaction для компонента IBDatabase1 и свойство DefaultDatabase для компонента IBTransaction1.
4. В созданный модуль FBDataModule переносим наборы данных TIBQuery. Формируем запросы ко всем главным таблицам, просмотрам, процедурам настроив свойство Query->SQL.
5. В тот же контейнер переносим компонентs TIBDataSource
6. Связываем источники данных с запросами и таблицами в свойстве DataSet.
7. Добавляем в модуль данных компонент IBStoredProc1 (рис.3) для реализации хранимых процедур, настроив свойства Database и Transaction
Рисунок 3. Наполнение модуля DB.
Данный DataModule не будет являться единственным. Приложение будет состоять из множества форм, к которым соответственно будут подключены различные DataModule.
Следующим этапом является размещение визуальных компонентов с последующею их настройкой и обработкой событий.
8. Переносим на главную форму требуемые компоненты
9. Перетаскиваем на каждую форму необходимое количество компонентов DBGrid, для представления записей таблиц и свойством DataSource соединяем их с источником данных, а заголовки столбцов таблиц переименовываем в соответствующие названия полей.
10. Перетаскиваем необходимое количество других визуальных компонентов: TButton, TLabel, TEdit,
Рисунок 4. Внешний вид приложения и поиск.
16. Далее аналогичным образом создаем остальные формы, подключаем заголовочные файлы и в обработчиках событий кнопок.
17. Добавление реализуем через созданную ранее хранимую процедуру на добавление: ADD_CHIT, для этого поместим на DataModule2 компонент IBStoredProc3 и настроим у него следующие свойства:
DataBase=IBDatabase1; StoredProcName= ADD_CHIT.
Рисунок.5. Форма для таблицы читатели.
Для реализации фильтрации, поместим на форму два компонента Edit (для задания диапазона фильтрации данных) и компонент Button чтобы подать запрос для фильтрации
18. Для генерации отчетов добавляем на главную форму соответствующие кнопки и пишем необходимый код в обработчике событий (см. Приложение 2).
Для формирования отчетов также будут выделены отдельные формы.
Рисунок 6. отчет
19. Командой Run->Run компилируем, собираем и запускаем приложение.
Полный листинг программы представлен в Приложении 2.
4. Создание Web приложения. Web-доступ
Web приложение в технологии "Клиент-Сервер" представляет собой некий интерфейс между пользователем и базой данных, расположенной на сервере и состоящей под управлением какой-либо СУБД. Такие приложения отличаются от приложений Windows тем, что пользователю не требуется наличие никаких установленных дополнительно на компьютере программ, кроме Web-браузера. Все действия, которые требует выполнить такое приложение, выполняются непосредственно на сервере. Кроме того, приложение Windows является уже откомпилированным файлом, а Web-приложение интерпретируются сервером в момент обращения пользователя к данному приложению.
Для создания такого приложения будет использован язык программирования PHP - интерпретируемый, скриптовый язык программирования, созданный для генерации HTML-страниц на Web-сервере и работы с базами данных. А так же язык гипертекстовой разметки HTML для создания интерфейса приложения.
Итак, приложение будет содержать главную интерфейсную страницу с заголовком, меню и частью, куда будет загружаться контент.
Остальные страницы будут полностью написаны на PHP: страницы с добавлением данных в таблицы, удалением данных в таблицы и редактированием данных. Также будет реализован поиск по базе данных.
В результате приложение будет иметь следующую карту страниц:
Рисунок 7. Схема созданного Web-приложения
Листинги Web-приложения представлены в приложении "Созданное Web-приложение".
Доступ к приложению: http://172.23.30.98: 8080/ftp/1406124/apache/index.html
Рисунок 8. Главная страница
Рисунок.9. Таблица Читатели и редактирование
Рисунок.10. Результат редактирования
Рисунок.11. Удаление
Рисунок.12. Результат удаления
Рисунок.13. Поиск
Рисунок.14. Результаты поиска
Рисунок.14. Сортировка
Рисунок.15. Результаты сортировки
Заключение
В результате выполнения курсовой работы нами было создано два клиентских приложения "Библиотека", это Windows и web - приложения. Были достигнуты все поставленные цели и задачи: Углублены теоретические и практические знания в области баз данных и систем управления базами данных. Пользователям предоставляется широкая возможность одновременной работы в обоих приложениях с одной базой данных.
Работа над курсовым проектом позволила приобрести навыки создания информационных систем, основанных на клиент - серверной технологии с использованием РСУБД Firebird. База данных для информационной системы создана в среде РСУБД Firebird и разработана с помощью утилиты IBExpert.
Разработанная информационная система обладает всей необходимой для работы функциональностью и вполне может стать основой в деятельности библиотеки, т.к. web интерфейс является очень удобным приложением для работы с БД.
Список используемых источников
1. А.Я. Архангельский, "Программирование в C++ Builder 6". - М.: "БИНОМ", 2003 г.
2. Бори Х., "FIREBIRD. Руководство разработчика баз данных". - С-Пб.: "БХВ", 2006 г., 2-е издание.
3. Шамис В., "Borland C++ Builder 6.0". - С - Пб.: "Питер", 2005 г.
4. Похомов Б.И. C\C++ и Borland C++ Builder для студента. СПб.: БХВ-Петербург, 2006. - 448с.
5. Хомоненко А.Д., Ададуров С.Е. Работа с базами данных в C++ Builder. - СПб.: БХВ-Петербург, 2006. - 496 с: ил.
6. http://www.ibase.ru
Приложения
Приложение 1. SQL код создания БД
Создание таблиц
Читатель
/*** Tables ***/
/************************************************************/
CREATE TABLE CHITATEL (
FAMILIYA_CHITATELYA D_NAME /* D_NAME = VARCHAR (45) NOT NULL */,
IMYA_CHITATELYA D_NAME /* D_NAME = VARCHAR (45) NOT NULL */,
OTCHESTVO D_NAME /* D_NAME = VARCHAR (45) NOT NULL */,
ULICA D_NAME /* D_NAME = VARCHAR (45) NOT NULL */,
NOMER_DOMA D_INDEXTYPE /* D_INDEXTYPE = INTEGER NOT NULL */,
TELEFON D_TEL /* D_TEL = VARCHAR (15) */,
NOMER_CHITATELYA D_INDEXTYPE NOT NULL /* D_INDEXTYPE = INTEGER NOT NULL */
);
/************************************************************/
/*** Primary Keys ***/
/************************************************************/
ALTER TABLE CHITATEL ADD PRIMARY KEY (NOMER_CHITATELYA);
/***********************************************************/
/*** Indices ***/
/************************************************************/
CREATE INDEX FAMILIYA_CHITATELYA ON CHITATEL (FAMILIYA_CHITATELYA);
CREATE INDEX ULICA ON CHITATEL (ULICA);
/************************************************************/
/*** Triggers for tables ***/
/************************************************************/
/* Trigger: CHITATEL_BI0 */
CREATE OR ALTER TRIGGER CHITATEL_BI0 FOR CHITATEL
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
begin
IF (NEW. nomer_chitatelya is null) then
NEW. nomer_chitatelya=gen_id (gen_chitatel,1);
end
^
SET TERM; ^
/* Fields descriptions */
COMMENT ON COLUMN CHITATEL. NOMER_DOMA IS
'VALUE>0';
/************************************************************/
/*** Privileges ***/
/************************************************************/
Библиотекарь
CREATE TABLE BIBLIOTEKOR (
NOMER_BIBLIOTEKORYA D_INDEXTYPE NOT NULL /* D_INDEXTYPE = INTEGER NOT NULL */,
NOMER_OTDELA D_INDEXTYPE /* D_INDEXTYPE = INTEGER NOT NULL */,
FAMILIYA_BIBLIOTEKORYA D_NAME /* D_NAME = VARCHAR (45) NOT NULL */,
NAME_BIBLIOTEKORYA D_NAME /* D_NAME = VARCHAR (45) NOT NULL */
);
/************************************************************/
/*** Primary Keys ***/
/************************************************************/
ALTER TABLE BIBLIOTEKOR ADD CONSTRAINT PK_BIBLIOTEKOR PRIMARY KEY (NOMER_BIBLIOTEKORYA);
/************************************************************/
/*** Foreign Keys ***/
/************************************************************/
ALTER TABLE BIBLIOTEKOR ADD CONSTRAINT FK_BIBLIOTEKOR_1 FOREIGN KEY (NOMER_OTDELA) REFERENCES OTDEL_KNIG (NOMER_OTDELA);
/**********************************************************/
/*** Indices ***/
/************************************************************/
CREATE INDEX FAM ON BIBLIOTEKOR (FAMILIYA_BIBLIOTEKORYA);
/************************************************************/
/*** Triggers ***/
/************************************************************/
SET TERM ^;
/************************************************************/
/*** Triggers for tables ***/
/***********************************************************/
/* Trigger: BIBLIOTEKOR_BI0 */
CREATE OR ALTER TRIGGER BIBLIOTEKOR_BI0 FOR BIBLIOTEKOR
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
begin
IF (NEW. nomer_bibliotekorya is null) then
NEW. nomer_bibliotekorya=gen_id (gen_bibliotekar,1);
end
^
SET TERM; ^
/* Fields descriptions */
COMMENT ON COLUMN BIBLIOTEKOR. NOMER_BIBLIOTEKORYA IS
'VALUE>0';
COMMENT ON COLUMN BIBLIOTEKOR. NOMER_OTDELA IS
'VALUE>0';
Книги
CREATE TABLE KNIGI (
NOMER_KNIGI D_INDEXTYPE NOT NULL /* D_INDEXTYPE = INTEGER NOT NULL */,
NOMER_OTDELA D_INDEXTYPE /* D_INDEXTYPE = INTEGER NOT NULL */,
NAZVANIE_KNIGI D_NAME /* D_NAME = VARCHAR (45) NOT NULL */,
KOL_VO_STRANIC D_INDEXTYPE /* D_INDEXTYPE = INTEGER NOT NULL */,
AVTOR D_NAME /* D_NAME = VARCHAR (45) NOT NULL */
);
/************************************************************/
/*** Primary Keys ***/
/************************************************************/
ALTER TABLE KNIGI ADD CONSTRAINT PK_KNIGI PRIMARY KEY (NOMER_KNIGI);
/***********************************************************/
/*** Foreign Keys ***/
/************************************************************/
ALTER TABLE KNIGI ADD CONSTRAINT FK_KNIGI_1 FOREIGN KEY (NOMER_OTDELA) REFERENCES OTDEL_KNIG (NOMER_OTDELA);
/************************************************************/
/*** Indices ***/
/************************************************************/
CREATE INDEX "_KNIGA" ON KNIGI (NAZVANIE_KNIGI);
/************************************************************/
/*** Triggers ***/
/************************************************************/
SET TERM ^;
/************************************************************/
/*** Triggers for tables ***/
/************************************************************/
/* Trigger: KNIGI_BI0 */
CREATE OR ALTER TRIGGER KNIGI_BI0 FOR KNIGI
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
begin
IF (NEW. nomer_knigi is null) then
NEW. nomer_knigi=gen_id (gen_knigi,1);
end
^
/* Trigger: KNIGI_HIST_BI0 */
CREATE OR ALTER TRIGGER KNIGI_HIST_BI0 FOR KNIGI
ACTIVE BEFORE INSERT POSITION 0
AS
declare variable nomer_knigi_tr smallint;
declare variable nomer_otdela_tr smallint;
declare variable nazvanie_knigi_tr varchar (45);
declare variable kol_vo_stranic_tr smallint;
declare variable avtor_tr varchar (45);
declare variable IZMEN_TR varchar (45);
declare variable DATA_TR date;
begin
DATA_TR=current_date;
if (inserting) then
begin
DATA_TR=current_date;
nomer_knigi_tr=new. nomer_knigi;
IZMEN_TR='добавление';
nomer_otdela_tr=new. nomer_otdela;
nazvanie_knigi_tr=new. nazvanie_knigi;
kol_vo_stranic_tr=new. kol_vo_stranic;
avtor_tr=new. avtor;
end
end
^
SET TERM; ^
/* Fields descriptions */
COMMENT ON COLUMN KNIGI. NOMER_KNIGI IS
'VALUE>0';
COMMENT ON COLUMN KNIGI. NOMER_OTDELA IS
'VALUE>0';
COMMENT ON COLUMN KNIGI. KOL_VO_STRANIC IS
'VALUE>0';
Исторя
CREATE TABLE NEW_TABLE (
ID SMALLINT NOT NULL,
NOMER_KNIGI SMALLINT,
NOMER_OTDELA SMALLINT,
NAZVANIE_KNIGI VARCHAR (45),
KOL_VO_STRANIC SMALLINT,
AVTOR VARCHAR (45),
IZMEN VARCHAR (45),
DATA_TR DATE
);
/************************************************************/
/*** Primary Keys ***/
/************************************************************/
ALTER TABLE NEW_TABLE ADD CONSTRAINT PK_NEW_TABLE_1 PRIMARY KEY (ID);
Отдел книг
CREATE TABLE OTDEL_KNIG (
NAZVANIE_OTDELA D_NAME /* D_NAME = VARCHAR (45) NOT NULL */,
NOMER_OTDELA D_INDEXTYPE NOT NULL /* D_INDEXTYPE = INTEGER NOT NULL */,
KOL_VO_KNIG D_INDEXTYPE /* D_INDEXTYPE = INTEGER NOT NULL */,
TELEFON D_TEL /* D_TEL = VARCHAR (15) */,
NOMER_BIBLIOTEKORYA D_INDEXTYPE /* D_INDEXTYPE = INTEGER NOT NULL */
);
/************************************************************/
/*** Primary Keys ***/
/************************************************************/
ALTER TABLE OTDEL_KNIG ADD CONSTRAINT PK_OTDEL_KNIG PRIMARY KEY (NOMER_OTDELA);
/************************************************************/
/*** Indices ***/
/************************************************************/
CREATE INDEX NAZV ON OTDEL_KNIG (NAZVANIE_OTDELA);
/************************************************************/
/*** Triggers ***/
/*************************************************************
SET TERM ^;
/************************************************************/
/*** Triggers for tables ***/
/************************************************************/
/* Trigger: OTDEL_BI0 */
CREATE OR ALTER TRIGGER OTDEL_BI0 FOR OTDEL_KNIG
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
begin
IF (NEW. nomer_otdela is null) then
NEW. nomer_otdela=gen_id (gen_otdel_knig,1);
end
^
SET TERM; ^
/* Fields descriptions */
COMMENT ON COLUMN OTDEL_KNIG. NOMER_OTDELA IS
'VALUE>0';
COMMENT ON COLUMN OTDEL_KNIG. KOL_VO_KNIG IS
'VALUE>0';
COMMENT ON COLUMN OTDEL_KNIG. NOMER_BIBLIOTEKORYA IS
'VALUE>0';
Выдача книг
CREATE TABLE VIDA4A_KNIG (
NOMER_ZAPISI D_INDEXTYPE NOT NULL /* D_INDEXTYPE = INTEGER NOT NULL */,
NOMER_KNIGI D_INDEXTYPE /* D_INDEXTYPE = INTEGER NOT NULL */,
NOMER_BIBLIOTEKORYA D_INDEXTYPE /* D_INDEXTYPE = INTEGER NOT NULL */,
NOMER_CHITATELYA D_INDEXTYPE /* D_INDEXTYPE = INTEGER NOT NULL */,
DATA_VYDA4I_KNIGI D_DATETYPE /* D_DATETYPE = DATE NOT NULL */,
DATA_VOZVRATA_KNIGI D_DATETYPE /* D_DATETYPE = DATE NOT NULL */
);
/************************************************************/
/*** Primary Keys ***/
/************************************************************/
ALTER TABLE VIDA4A_KNIG ADD CONSTRAINT PK_VIDA4A_KNIG PRIMARY KEY (NOMER_ZAPISI);
/**********************************************************/
/*** Foreign Keys ***/
/************************************************************/
ALTER TABLE VIDA4A_KNIG ADD CONSTRAINT FK_VIDA4A_KNIG_1 FOREIGN KEY (NOMER_KNIGI) REFERENCES KNIGI (NOMER_KNIGI);
ALTER TABLE VIDA4A_KNIG ADD CONSTRAINT FK_VIDA4A_KNIG_2 FOREIGN KEY (NOMER_BIBLIOTEKORYA) REFERENCES BIBLIOTEKOR (NOMER_BIBLIOTEKORYA);
/************************************************************/
/*** Triggers ***/
/************************************************************/
SET TERM ^;
/************************************************************/
/*** Triggers for tables ***/
/************************************************************/
/* Trigger: VYDACHA_KNIG_BI0 */
CREATE OR ALTER TRIGGER VYDACHA_KNIG_BI0 FOR VIDA4A_KNIG
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
begin
IF (NEW. nomer_zapisi is null) then
NEW. nomer_zapisi=gen_id (gen_vida4a_knig,1);
end^
SET TERM; ^
/* Fields descriptions */
COMMENT ON COLUMN VIDA4A_KNIG. NOMER_ZAPISI IS
'VALUE>0';
COMMENT ON COLUMN VIDA4A_KNIG. NOMER_KNIGI IS
'VALUE>0';
COMMENT ON COLUMN VIDA4A_KNIG. NOMER_BIBLIOTEKORYA IS
'VALUE>0';
COMMENT ON COLUMN VIDA4A_KNIG. NOMER_CHITATELYA IS
'VALUE>0';
Представления
/* View: KNIGI_VIEW */
CREATE VIEW KNIGI_VIEW (
NOMER_KNIGI,
NOMER_OTDELA,
NAZVANIE_KNIGI,
KOL_VO_STRANIC,
AVTOR)
AS
select knigi. nomer_knigi,otdel_knig. nomer_otdela,knigi. nazvanie_knigi,knigi. kol_vo_stranic,knigi. avtor
from knigi,otdel_knig
where knigi. nomer_otdela=otdel_knig. nomer_otdela
;
/* View: VOZVRAT_VIEW */
CREATE VIEW VOZVRAT_VIEW (
FAMILIYA_CHITATELYA,
IMYA_CHITATELYA,
OTCHESTVO,
NOMER_CHITATELYA,
NOMER_KNIGI,
NAZVANIE_KNIGI,
DATA_VOZVRATA_KNIGI)
AS
select chitatel. familiya_chitatelya,chitatel. imya_chitatelya,chitatel. otchestvo,
vida4a_knig. nomer_chitatelya,vida4a_knig. nomer_knigi,knigi. nazvanie_knigi,
vida4a_knig. data_vozvrata_knigi
from chitatel,vida4a_knig,knigi
where chitatel. nomer_chitatelya=vida4a_knig. nomer_chitatelya and knigi. nomer_knigi=vida4a_knig. nomer_knigi
;
Хранимые процедуры Редактирование и удаление данных
begin
INSERT INTO chitatel (chitatel. familiya_chitatelya,chitatel. imya_chitatelya,chitatel. otchestvo,
chitatel. ulica,chitatel. nomer_doma,chitatel. telefon)
VALUES (: familiya,: name,: otchestvo,: ulica,: n_doma,: tel);
suspend;
end
begin
INSERT INTO bibliotekor (bibliotekor. nomer_otdela,
bibliotekor. familiya_bibliotekorya,
bibliotekor. name_bibliotekorya)
VALUES (: n_otdel,: familiya,: name);
suspend;
end
begin
insert into vida4a_knig (nomer_knigi,nomer_chitatelya,
nomer_bibliotekorya,data_vyda4i_knigi,data_vozvrata_knigi)
values (: n_knigi,: n_biblio,: n_4itatelya,: data_vyd,: data_vozv);
suspend;
end
begin
insert into otdel_knig (otdel_knig. nazvanie_otdela,otdel_knig. kol_vo_knig,
otdel_knig. TELEFON,otdel_knig. nomer_bibliotekorya)
values (: nazvanie,: kol_knig,: telefon,: n_biblio);
suspend;
end
BEGIN
INSERT INTO knigi (knigi. nomer_otdela,knigi. nazvanie_knigi, knigi. kol_vo_stranic,knigi. avtor)
VALUES (: n_otdela,: new_nazvanie,: kol_vo_stranic,: avtor);
suspend;
end
BEGIN
DELETE FROM vida4a_knig
WHERE (nomer_zapisi =: n_zapisi);
END
BEGIN
DELETE FROM otdel_knig
WHERE (nomer_otdela =: n_otdela);
END
BEGIN
DELETE FROM knigi
WHERE (nomer_knigi =: n_knigi);
END
BEGIN
DELETE FROM bibliotekor
WHERE (nomer_bibliotekorya =: n_biblio);
END
BEGIN
DELETE FROM chitatel
WHERE (nomer_CHITATELYA =: n_CHITAT);
END
BEGIN
UPDATE chitatel
SET nomer_chitatelya=: n_chit,
nomer_doma =: n_doma,
familiya_chitatelya =: familiya,
imya_chitatelya =: name,
otchestvo=: otchestvo,
ULICA=: ulica,
telefon=: tel
WHERE (nomer_chitatelya =: n_chit);
when sqlcode - 530 do
exception key_ne_ice;
end
BEGIN
UPDATE bibliotekor
SET nomer_bibliotekorya =: n_biblio,
nomer_otdela =: n_otdela, familiya_bibliotekorya =: familiya,
name_bibliotekorya=: name
WHERE (nomer_bibliotekorya =: n_biblio);
End
BEGIN
UPDATE vida4a_knig
SET nomer_zapisi=: n_zapisi,
nomer_knigi =: n_knigi,
nomer_chitatelya =: n_chit,
nomer_bibliotekorya =: n_biblio,
data_vyda4i_knigi=: data_vyd,
data_vozvrata_knigi=: data_vozvr
WHERE (nomer_zapisi =: n_zapisi);
when sqlcode - 530 do
exception key_ne_ice;
end
BEGIN
UPDATE otdel_knig
SET nazvanie_otdela=: name_ot,
nomer_otdela =: n_otel,
kol_vo_knig =: kol_knig,
nomer_bibliotekorya =: n_biblio,
telefon=: tel
WHERE (nomer_otdela =: n_otel);
when sqlcode - 530 do
exception key_ne_ice;
end
BEGIN
if (: KOL_VO_STRANIC<=0) then exception stranicy;
else
BEGIN
UPDATE knigi
SET nomer_knigi =: n_knigi,
nomer_otdela =: n_otdela, nazvanie_knigi =: new_nazvanie,
kol_vo_stranic =: kol_vo_stranic,
avtor =: avtor
WHERE (nomer_knigi =: N_KNIGI);
when sqlcode - 530 do
exception key_ne_ice;
end
END
Домены
CREATE DOMAIN D_ADRES AS
VARCHAR (40) CHARACTER SET WIN1251
NOT NULL
COLLATE WIN1251;
CREATE DOMAIN D_DATETYPE AS
DATE
NOT NULL;
CREATE DOMAIN D_INDEXTYPE AS
INTEGER
NOT NULL;
COMMENT ON DOMAIN D_INDEXTYPE IS
'VALUE>0';
CREATE DOMAIN D_NAME AS
VARCHAR (45) CHARACTER SET WIN1251
NOT NULL
COLLATE WIN1251;
CREATE DOMAIN D_TEL AS
VARCHAR (15) CHARACTER SET WIN1251
COLLATE WIN1251;
Приложение 2. Листинг клиентского приложения
// ---------------------------------------------------------------------------
#include <vcl. h>
#pragma hdrstop
#include "Unit1. h"
#include "Unit2. h"
#include "Unit3. h"
// ---------------------------------------------------------------------------
#pragma package (smart_init)
#pragma resource "*. dfm"
TForm1 *Form1;
// ---------------------------------------------------------------------------
__fastcall TForm1:: TForm1 (TComponent* Owner)
: TForm (Owner)
{
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Edit1Change (TObject *Sender)
{
if (RadioButton1->Checked==true)
{Set<TLocateOption,0,1> flags;
flags << loPartialKey;
if (! DataModule2->IBTable2->IsEmpty ())
DataModule2->IBTable2->Locate ("nomer_knigi", Edit1->Text, flags); }
if (RadioButton2->Checked==true)
{Set<TLocateOption,0,1> flags;
flags << loPartialKey;
if (! DataModule2->IBTable2->IsEmpty ())
DataModule2->IBTable2->Locate ("nazvanie_knigi", Edit1->Text, flags); }
if (RadioButton3->Checked==true)
{Set<TLocateOption,0,1> flags;
flags << loPartialKey;
if (! DataModule2->IBTable2->IsEmpty ())
DataModule2->IBTable2->Locate ("avtor", Edit1->Text, flags); }
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button1Click (TObject *Sender)
{
DataModule2->IBStoredProc1->ParamByName ("familiya") - >AsString=Edit2->Text;
DataModule2->IBStoredProc1->ParamByName ("name") - >AsString=Edit3->Text;
DataModule2->IBStoredProc1->ParamByName ("otchestvo") - >AsString=Edit4->Text;
DataModule2->IBStoredProc1->ParamByName ("ulica") - >AsString=Edit5->Text;
DataModule2->IBStoredProc1->ParamByName ("n_doma") - >AsString=Edit6->Text;
DataModule2->IBStoredProc1->ParamByName ("tel") - >AsString=Edit7->Text;
DataModule2->IBStoredProc1->ParamByName ("n_chit") - >AsString=Edit10->Text;
DataModule2->IBStoredProc1->Prepare ();
DataModule2->IBStoredProc1->ExecProc ();
DataModule2->IBTable3->Active=false;
DataModule2->IBTable3->Active=true;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button2Click (TObject *Sender)
{
DataModule2->IBStoredProc2->ParamByName ("familiya") - >AsString=Edit2->Text;
DataModule2->IBStoredProc2->ParamByName ("name") - >AsString=Edit3->Text;
DataModule2->IBStoredProc2->ParamByName ("otchestvo") - >AsString=Edit4->Text;
DataModule2->IBStoredProc2->ParamByName ("ulica") - >AsString=Edit5->Text;
DataModule2->IBStoredProc2->ParamByName ("n_doma") - >AsString=Edit6->Text;
DataModule2->IBStoredProc2->ParamByName ("tel") - >AsString=Edit7->Text;
DataModule2->IBStoredProc2->Prepare ();
DataModule2->IBStoredProc2->ExecProc ();
DataModule2->IBTable3->Active=false;
DataModule2->IBTable3->Active=true;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button3Click (TObject *Sender)
{
DataModule2->IBStoredProc3->ParamByName ("n_CHITAT") - >AsString=Edit8->Text;
DataModule2->IBStoredProc3->Prepare ();
DataModule2->IBStoredProc3->ExecProc ();
DataModule2->IBTable3->Active=false;
DataModule2->IBTable3->Active=true;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button5Click (TObject *Sender)
{
DataModule2->IBTable3->Active=false;
DataModule2->IBTable3->Filtered=false;
DataModule2->IBTable3->Filter="NOMER_CHITATELYA='"+Edit9->Text+"'";
DataModule2->IBTable3->Active=true;
DataModule2->IBTable3->Filtered=true;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button4Click (TObject *Sender)
{
DataModule2->IBTable3->Filtered=false;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button6Click (TObject *Sender)
{
if (RadioButton4->Checked==true)
{DataModule2->IBTable3->IndexName="RDB$PRIMARY1"; }
else if (RadioButton5->Checked==true)
{DataModule2->IBTable3->IndexName="familiya_chitatelya"; }
else if (RadioButton6->Checked==true)
{DataModule2->IBTable3->IndexName="ulica"; }
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button7Click (TObject *Sender)
{
DataModule2->IBStoredProc4->ParamByName ("n_biblio") - >AsString=Edit11->Text;
DataModule2->IBStoredProc4->ParamByName ("n_otdela") - >AsString=Edit12->Text;
DataModule2->IBStoredProc4->ParamByName ("familiya") - >AsString=Edit13->Text;
DataModule2->IBStoredProc4->ParamByName ("name") - >AsString=Edit14->Text;
DataModule2->IBStoredProc4->Prepare ();
DataModule2->IBStoredProc4->ExecProc ();
DataModule2->IBTable4->Active=false;
DataModule2->IBTable4->Active=true;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button8Click (TObject *Sender)
{
DataModule2->IBStoredProc5->ParamByName ("n_biblio") - >AsString=Edit11->Text;
DataModule2->IBStoredProc5->ParamByName ("n_otdel") - >AsString=Edit12->Text;
DataModule2->IBStoredProc5->ParamByName ("familiya") - >AsString=Edit13->Text;
DataModule2->IBStoredProc5->ParamByName ("name") - >AsString=Edit14->Text;
DataModule2->IBStoredProc5->Prepare ();
DataModule2->IBStoredProc5->ExecProc ();
DataModule2->IBTable4->Active=false;
DataModule2->IBTable4->Active=true;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button9Click (TObject *Sender)
{
DataModule2->IBStoredProc6->ParamByName ("n_biblio") - >AsString=Edit15->Text;
DataModule2->IBStoredProc6->Prepare ();
DataModule2->IBStoredProc6->ExecProc ();
DataModule2->IBTable4->Active=false;
DataModule2->IBTable4->Active=true;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button10Click (TObject *Sender)
{
DataModule2->IBTable4->Active=false;
DataModule2->IBTable4->Filtered=false;
DataModule2->IBTable4->Filter="Nomer_BIBLIOtekorya='"+Edit16->Text+"'";
DataModule2->IBTable4->Active=true;
DataModule2->IBTable4->Filtered=true;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button12Click (TObject *Sender)
{
if (RadioButton7->Checked==true)
{DataModule2->IBTable4->IndexName="pk_bibliotekor"; }
else if (RadioButton8->Checked==true)
{DataModule2->IBTable4->IndexName="fam"; }
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button11Click (TObject *Sender)
{
DataModule2->IBTable4->Filtered=false;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button13Click (TObject *Sender)
{
DataModule2->IBStoredProc7->ParamByName ("n_knigi") - >AsString=Edit17->Text;
DataModule2->IBStoredProc7->ParamByName ("n_otdela") - >AsString=Edit18->Text;
DataModule2->IBStoredProc7->ParamByName ("new_nazvanie") - >AsString=Edit19->Text;
DataModule2->IBStoredProc7->ParamByName ("kol_vo_stranic") - >AsString=Edit20->Text;
DataModule2->IBStoredProc7->ParamByName ("avtor") - >AsString=Edit21->Text;
DataModule2->IBStoredProc7->Prepare ();
DataModule2->IBStoredProc7->ExecProc ();
DataModule2->IBTable5->Active=false;
DataModule2->IBTable5->Active=true;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button14Click (TObject *Sender)
{
DataModule2->IBStoredProc8->ParamByName ("n_otdela") - >AsString=Edit18->Text;
DataModule2->IBStoredProc8->ParamByName ("new_nazvanie") - >AsString=Edit19->Text;
DataModule2->IBStoredProc8->ParamByName ("kol_vo_stranic") - >AsString=Edit20->Text;
DataModule2->IBStoredProc8->ParamByName ("avtor") - >AsString=Edit21->Text;
DataModule2->IBStoredProc8->Prepare ();
DataModule2->IBStoredProc8->ExecProc ();
DataModule2->IBTable5->Active=false;
DataModule2->IBTable5->Active=true;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button15Click (TObject *Sender)
{
DataModule2->IBStoredProc9->ParamByName ("n_knigi") - >AsString=Edit22->Text;
DataModule2->IBStoredProc9->Prepare ();
DataModule2->IBStoredProc9->ExecProc ();
DataModule2->IBTable5->Active=false;
DataModule2->IBTable5->Active=true;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button16Click (TObject *Sender)
{
Подобные документы
Системный анализ предметной области. Выбор инструментальных средств для создания программного обеспечения. Программирование на стороне SQL-сервера. Создание клиентского Win-приложения, пользовательский интерфейс. Физическое проектирование базы данных.
курсовая работа [3,7 M], добавлен 20.11.2013Проектирование физической и логической моделей удаленной базы данных для АЗС. Разработка базы данных в СУБД Firebird с помощью утилиты IBExpert. Создание клиентского приложения для Windows с использованием клиент-серверной технологии в среде C++ Builder.
курсовая работа [3,9 M], добавлен 18.01.2017Архитектура "клиент-сервер". Системный анализ базы данных "Газета объявлений", ее инфологическое и физическое проектирование. Программирование на стороне SQL-сервера. Разработка клиентской части в Borland C++ Builder 6.0 и с помощью Web-технологий.
курсовая работа [1,3 M], добавлен 07.07.2013Проектирование и разработка базы данных в РСУБД Firebird. Последовательность создания приложения, основанного на клиент-серверной технологии и работающего в операционной системе Windows. Хранимые процедуры и триггеры. Доступ к сети и транзакции.
курсовая работа [2,6 M], добавлен 27.07.2013Разработка модуля регистрации абонентов для информационной системы предприятия "Библиотека". Структура базы данных. Взаимодействие клиентов с БД и клиентов друг с другом. Форма регистрации, сохранение данных. Основные сущности данного приложения.
курсовая работа [991,4 K], добавлен 18.06.2015Реляционные базы данных как часть корпоративных информационных систем, их построение по принципам клиент-серверной технологии. Основные характеристики СУБД Firebird. Проектирование базы данных для информационной системы "Компьютерные комплектующие".
курсовая работа [1,9 M], добавлен 28.07.2013Выявление информационных объектов баз данных и требований целостности к данным. Построение результирующей ER диаграммы. Даталогическое проектирование и разработка сценариев работы информационной системы. Выбор средства реализации клиентского приложения.
курсовая работа [2,7 M], добавлен 28.08.2012Анализ предметной области разрабатываемой информационной системы "Библиотека". Проектирование базы данных в среде MS Access. Физическая реализация данной информационной системы средствами Delphi 7 и MS Access 2003. Области применения технологии BDE.
курсовая работа [2,4 M], добавлен 12.01.2016Анализ входной информации и процессов, уровня автоматизации на предприятии. Выявление объекта и задачи автоматизации. Разработка концепции построения информационной модели информационной системы. Разработка структуры базы данных и клиентского приложения.
дипломная работа [2,0 M], добавлен 22.11.2015Разработка структуры информационной системы с использованием СУБД MS Access. Моделирование бизнес-процессов с помощью IDEF0-диаграмм. Проектирование приложения в среде Delphi. Физическая реализация структуры базы данных. Создание интерфейса системы.
отчет по практике [3,4 M], добавлен 07.01.2015