Разработка информационной системы "Газета объявлений" с использованием клиент-серверной технологии

Архитектура "клиент-сервер". Системный анализ базы данных "Газета объявлений", ее инфологическое и физическое проектирование. Программирование на стороне SQL-сервера. Разработка клиентской части в Borland C++ Builder 6.0 и с помощью Web-технологий.

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

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

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

Размещено на http://www.allbest.ru/

Введение

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

обеспечивать получение общих или детализированных отчетов по итогам работы;

позволять легко определять тенденции изменения важнейших показателей;

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

выполнять точный и полный анализ данных.

Данный проект направлен на разработку информационной системы "Газета объявлений" с использованием клиент-серверной технологии. В настоящее время фактическим стандартом для многопользовательских СУБД стала архитектура "клиент-сервер", при которой предполагается, что часть функций прикладной программы будет реализована в программе-клиенте, а другая - в программе-сервере, причем для их взаимодействия будет определен некоторый протокол. Взаимодействие «клиент-сервер» осуществляется следующим образом: клиентская часть приложения формирует запрос к серверу баз данных, на котором выполняются все команды, а результат исполнения запроса отправляется клиенту для просмотра и использования.

В данной курсовой работе будет спроектирована и разработана удаленная БД по технологии «Клиент-сервер». Она будет спроектирована и создана в СУБД Firebird 2.1 с использованием утилиты IBExpert, а также - в C++Builder 6.0 с помощью технологии доступа к данным InterBaseExpress и РНР.

Цели:

1. Знакомство с СУБД Firebird и утилитой IBExpert;

2. Проектирование базы данных;

3. Приобретение навыков создания web-приложений для и win-приложений для доступа к БД.

Задачи:

4. Выбор сущностей для БД и определение связей между ними - проектирование БД;

5. Создание БД с помощью утилиты IBExpert;

6. Создание web-приложения;

7. Создание win-приложения.

1. Средства проектирования и разработки удаленной БД

1.1 Архитектура "клиент-сервер"

В настоящее время фактическим стандартом для многопользовательских СУБД, стала архитектура "клиент-сервер".

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

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

1.2 СУБД FireBird, основанная на технологии доступа к распределенным БД InterBase

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

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

1.3 IBExpert

IBExpert - инструмент для разработки Firebird баз данных на основе технологии InterBase. IBExpert позволяет осуществить данное проектирование с заметной легкостью, быстротой, надежностью и удобством для разработчика. IBExpert включает много инструментов и особенностей кодирования: визуальные редакторы для всех типов Базы данных, SQL-редакторы и сценарии, отладчик для хранимых процедур, генераторов и триггеров, исключения, роли, домены и многое другое.

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

1.4 C++ Builder - средство разработки клиентской части и серверных Web-приложений

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

Все приложения СУБД, создаваемые в среде C++ Builder, являются клиентами в архитектуре программного взаимодействия клиент/сервер. Клиент выдает запросы к серверу базы данных на получение или передачу информации. Сервер обрабатывает запросы от множества клиентов одновременно, координируя доступ к данным и их обновление. Все приложения СУБД, создаваемые в среде C++Builder, основаны на компонентах пользовательского интерфейса с некоторой базой данных, которые предоставляют удивительно легкие в использовании средства разработки специальных приложений. Удачно спроектированное приложение всегда обеспечивает простоту просмотра и редактирования данных пользователем, независимо от сложности структуры используемой модели данных.

2. Проектирование и создание БД «Газета объявлений»

2.1 Системный анализ

Первым этапом проектирования базы данных является ее системный анализ, или подробное описание информационных объектов предметной области.

В данной курсовой работе осуществляется разработка БД, которая называется «Газета объявлений». Перед началом разработки данной предметной области осуществлялся сбор информации, необходимый для полного и подробного описания объектов, из которых предполагалось построение и создание базы данных. Данная БД состоит из 7-ти взаимосвязанных таблиц «Адреса», «Бланк», «Менеджер», «Покупатель», «Производитель», «Товар» и «Заказ».

2.2 Инфологическое проектирование

1. Проектирование инфологической модели заключается в формализованном описании объектов предметной области с помощью семантической модели Entity-Relationship (Сущность-Связь).

Рис. 1. Логическая модель

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

2.3 Физическое проектирование БД

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

Рис. 2. Физическая модель

2.4 Программирование на стороне SQL-сервера

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

Сервер БД представляет собой достаточно сложный программный комплекс. В данной работе будет использоваться сервер СУБД Firebird 2.1, разработанный в рамках Open Source-проекта. Для создания баз данных и разработки бизнес-правил на стороне сервера SQL будет использоваться утилита IBExpert.

Все 7 таблиц БД были созданы с помощью следующих определенных последовательных действий:

1. Создание доменов;

2. Создание таблиц и атрибутов полей (тип и длина);

3. Определение ограничений (PK и FK) для связи таблиц;

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

5. Создание дополнительных индексов для упрощения поиска и сортировки данных, а также для уменьшения времени этих операций;

6. Занесение данных в таблицу;

7. Разработка бизнес-логики:

8. создание просмотров (представлений) для выборки данных из нескольких таблиц;

9. создание хранимых процедур (с обработкой исключений) для работы с приложениями на сервере и решения поставленной задачи в предметной области.

Создание базы данных выглядит следующим образом:

Рис. 3. Создание БД в IBExpert

Для логически правильной работы БД и правильного преобразования типов свойств заданных объектов были созданы домены:

Рис. 4. Список доменов

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

Рис. 5. Таблица «Категории»

Далее приведем SQL код при помощи которого мы определим внешние ключи во всех таблицах (SQL код можно просмотреть в приложении):

Рис. 6. Приведение внешних ключей

После того как созданы домены и таблицы тоже, можно в БД определить индексы, система автоматически создает индексы по первичным и внешним ключам но можно добавить и свои по надобности как при помощи утилиты IBExpert.

Рис. 7. Создание индексов

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

Рис. 8. Создание генераторов

В утилите IBExpert создание триггеров выглядит следующим образом:

Рис. 9. Создание триггера для таблицы Категории

Заполненная таблица выглядит следующим образом:

Рис. 10. Пример заполнения таблицы

Чтобы создать представление в утилите IBExpert в SQL редакторе введу следующий sql-код.

Рис. 11. Создание представлений

Всего в базе данных 19 хранимых процедур. Приведем примеры некоторых из них.

Создадим процедуру на удаление, на примере удаления записи в таблице «Категория». Процедура будет называться DELETE_KAT. Создается в редакторе утилиты IBExpert.

Рис. 12. Процедура удаления

Рис. 13. Удалим запись под номером 8

Рис. 14. Удаление

Далее создадим процедуру на обновление информации, рассмотрим это на примере создания такой процедуры также для таблицы «Категория», эта процедура будет называться UPDATE_KAT.

Рис. 15. Создание процедура обновления

Рис. 16. Выполнение процедуры

Рис. 17. Запись изменена

В своей базе данных у меня будет 2 исключительных ситуации. Коды для их создания следующие:

1. CREATE EXCEPTION IMPOSSIBLE_TASK' введите от 1 до 8';

2. CREATE EXCEPTION NO_SOST_ZAKAZA'доступно только 1,2,3 или 4';

Рис. 18. Ввожу без фамилии

Рис. 19. Сообщение об ошибке

2.5 Разработка клиентской части в Borland C++ Builder 6.0

клиент сервер газета объявление

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

· IBDatabase - для осуществления соединения с базой данных;

· IBTransaction - для работы с транзакциями;

· IBQuery - для связи визуальных компонент, а также поиска, выборки и фильтрации данных в таблицах БД;

· IBTable - для сортировки по индексированным полям таблиц БД;

· IBStoredProc - для выполнения хранимых процедур;

· QuickRep, QRSubDetail, QRLabel, QRDBText, QRBand, QRSysData - для правильного создания, удобного просмотра и печати отчета по данным из таблиц БД;

· Button - для навигации и для некоторых других действий;

· Label - для надписей;

· LabeledEdit - для ввода информации, добавления, удаления, изменения;

· PageControl - для структурирования информации;

· DataSource - для управления взаимодействием между компонентами визуализации данных и компонентами управления данными;

· DBGrid - для визуализации данных таблиц и данных запросов;

· И другие

Создадим новый проект, затем создадим DataModule, на котором будем размещать все невидимые компоненты для доступа и работы с БД.

Рис. 20. Контейнер DataModule

Рис. 21. Подключение к БД, компонента DataBase

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

Главная вид формы Windows-приложения.

Рис. 22. Главная форма Windows-приложения.

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

DataModule2->IBTable2->Active=false;

DataModule2->IBStoredProc4->ParamByName("FAMILIA")->AsString=Edit7->Text;

DataModule2->IBStoredProc4->ParamByName("NAME")->AsString=Edit8->Text;

DataModule2->IBStoredProc4->ParamByName("OTCHESTVO")->AsString=Edit9->Text;

DataModule2->IBStoredProc4->Prepare();

DataModule2->IBStoredProc4->ExecProc();

DataModule2->IBTable2->Active=true;

Рис. 23. Добавление записи

После нажатия на кнопку ADD мы убедились, что данные успешно внесены.

Далее обновим добавленную запись. Код, отвечающий за обновление записи следующий :

DataModule2->IBTable2->Active=false;

DataModule2->IBStoredProc5->ParamByName("ID_KLIENTA")->Value=Edit10->Text;

DataModule2->IBStoredProc5->ParamByName("FAMILIA")->AsString=Edit11->Text;

DataModule2->IBStoredProc5->ParamByName("NAME")->AsString=Edit12->Text;

DataModule2->IBStoredProc5->ParamByName("OTCHESTVO")->AsString=Edit13->Text;

DataModule2->IBStoredProc5->Prepare();

DataModule2->IBStoredProc5->ExecProc();

DataModule2->IBTable2->Active=true;

Рис. 24. Обновление записи

Последним этапом работы с таблицей удалим запись с ID=33. Код, который будет производить удаление записи :

DataModule2->IBTable2->Active=false;

DataModule2->IBStoredProc6->ParamByName("ID_KLIENTA")->Value=Edit14->Text;

DataModule2->IBStoredProc6->Prepare();

DataModule2->IBStoredProc6->ExecProc();

DataModule2->IBTable2->Active=true;

Рис. 25. Удаление записи

Далее реализуем поиск по таблице. Введем название города и нажмем кнопку “Поиск”. В обработчик кнопки напишем следующий код :

TLocateOptions LO;

DataModule2->IBTable2->Locate("FAMILIA", Edit44->Text, LO<< loPartialKey<<loCaseInsensitive);

Рис. 26. Поиск

Фильтр применим к полю №клиента. Код для фильтрации будет следующим:

DataModule2->IBTable2->Active=false;

DataModule2->IBTable2->Filtered=false;

DataModule2->IBTable2->Filter="ID_KLIENTA="+Edit45->Text;

DataModule2->IBTable2->Filtered=true;

DataModule2->IBTable2->Active=true;

Рис. 27. Фильтр

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

Рис. 28. Макет отчета

Работа отчета представлена на рисунке 29.

Рис. 29. Работа отчета

2.6 Разработка клиентской части с помощью Web-технологий

С помощью стандартного языка разметки документов в Интернет - html, создаем web-приложение, которое начинается с главной страницы (index.html).

С помощью php будет осуществляться связь с БД. На рисунке 30 изображена главная страница web-приложения. С помощью php будет осуществляться связь с БД.

Для осуществления доступа к базе данных Firebird в языке PHP существует специальный набор функций. Чтобы подключиться к БД в PHP необходимо разместить следующий программный код:

$dbhost="D:\SVETOVOY.FDB ";

$dbusname="SYSDBA";

$dbpswrd="masterkey";

$db=ibase_pconnect($dbhost,$dbusname,$dbpswrd);

if(!$db){echo 'Ошибка соединения с базой данных!'; exit;}

Приведем пример работы web-приложения на примере таблицы Клиенты. Для отображения всех записей в таблице используем запрос:

$query = "select * from klient";

$result = ibase_query($query);

Далее, после добавления, выводится отчет о том, что данные добавлены. Код для добавления записи в таблицу:

$familia=$_POST['familia'];

$imya=$_POST['imya'];

$otchestvo=$_POST['otchestvo'];

$query = "EXECUTE PROCEDURE ADD_KLIENT('".$familia."','".$imya."','".$otchestvo."')";

$it=ibase_trans();

echo '<br>';

$result=ibase_query($query);

$ic=ibase_commit();

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

Следующим этапом обновим запись с id=34.

За обновление записи отвечает следующий код:

$id_klienta=$_POST['id_klienta'];

$familia=$_POST['familia'];

$imya=$_POST['imya'];

$otchestvo=$_POST['otchestvo'];

$query = "EXECUTE PROCEDURE UPDATE_KLIENT('".$id_klienta."','".$familia."','".$imya."','".$otchestvo."')";

$it=ibase_trans();

echo '<br>';

$result=ibase_query($query);

$ic=ibase_commit();

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

$id_klienta=$_POST['id_klienta'];

$query = "EXECUTE PROCEDURE DELETE_KLIENT('".$id_klienta."')";

$it=ibase_trans();

echo '<br>';

$result=ibase_query($query);

$ic=ibase_commit();

Далее сделаем фильтр. SQL код будет такой:

$query = "select * from klient where id_klienta=".$id_klienta."";$result = ibase_query($query);

Заключение

В настоящее время фактическим стандартом для многопользовательских СУБД, стала архитектура "клиент-сервер", при которой предполагается, что прикладные программы, реализованные в ее рамках, будут иметь распределенный характер. Иными словами, часть функций прикладной программы будет реализована в программе-клиенте, другая - в программе-сервере, причем для их взаимодействия будет определен некоторый протокол.

В данной курсовой работе была спроектирована и разработана удаленная БД по технологии «Клиент-сервер». Программирование на стороне сервера было осуществлено в СУБД FireBird 2.0 с использованием утилиты IBExpert, а клиентское приложение в C++Builder с помощью технологии доступа к данным InterBaseExpress (IBX) и с помощью Web-технологий.

В процессе написания курсовой работы, мною была осуществлена задача по проектированию и созданию удаленной базы данных в выбранной предметной области. Была проведена работа по освоению и изучению сведений о СУБД FireBird 2.0, утилиты IBExpert, компонентах IBX, C++Builder и Web-технологий.

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

1. А. Хомоненко, С. Ададуров «Работа с базами данных в C++Builder»

2. Петров В.Н. Информационные системы. - СПб.: Питер, 2002

3. Шамис В., «Borland C++ Builder 6.0». - С - Пб.: «Питер», 2005 г

4. В. М. Михелев «Базы данных и СУБД». - Белгород, 2007 г.

5. Атре Ш. Структурный подход к организации баз данных. - М.: Финансы и статистика, 1983. - 320 с.

Приложение

Код создания Windows-приложения

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn1Click(TObject *Sender)

{

QuickRep1->Preview();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn2Click(TObject *Sender)

{

DataModule2->IBTable1->Active=false;

DataModule2->IBStoredProc1->ParamByName("ID_TIPA")->Value=Edit1->Text;

DataModule2->IBStoredProc1->ParamByName("NAZVANIE")->AsString=Edit2->Text;

DataModule2->IBStoredProc1->Prepare();

DataModule2->IBStoredProc1->ExecProc();

DataModule2->IBTable1->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn3Click(TObject *Sender)

{

DataModule2->IBTable1->Active=false;

DataModule2->IBStoredProc2->ParamByName("ID_KATEGORII")->Value=Edit3->Text;

DataModule2->IBStoredProc2->ParamByName("NAZVANIE")->AsString=Edit5->Text;

DataModule2->IBStoredProc2->Prepare();

DataModule2->IBStoredProc2->ExecProc();

DataModule2->IBTable1->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn4Click(TObject *Sender)

{

DataModule2->IBTable1->Active=false;

DataModule2->IBStoredProc3->ParamByName("ID_KATEGORII")->Value=Edit6->Text;

DataModule2->IBStoredProc3->Prepare();

DataModule2->IBStoredProc3->ExecProc();

DataModule2->IBTable1->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn5Click(TObject *Sender)

{

DataModule2->IBTable2->Active=false;

DataModule2->IBStoredProc4->ParamByName("FAMILIA")->AsString=Edit7->Text;

DataModule2->IBStoredProc4->ParamByName("NAME")->AsString=Edit8->Text;

DataModule2->IBStoredProc4->ParamByName("OTCHESTVO")->AsString=Edit9->Text;

DataModule2->IBStoredProc4->Prepare();

DataModule2->IBStoredProc4->ExecProc();

DataModule2->IBTable2->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn6Click(TObject *Sender)

{

DataModule2->IBTable2->Active=false;

DataModule2->IBStoredProc5->ParamByName("ID_KLIENTA")->Value=Edit10->Text;

DataModule2->IBStoredProc5->ParamByName("FAMILIA")->AsString=Edit11->Text;

DataModule2->IBStoredProc5->ParamByName("NAME")->AsString=Edit12->Text;

DataModule2->IBStoredProc5->ParamByName("OTCHESTVO")->AsString=Edit13->Text;

DataModule2->IBStoredProc5->Prepare();

DataModule2->IBStoredProc5->ExecProc();

DataModule2->IBTable2->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn7Click(TObject *Sender)

{

DataModule2->IBTable2->Active=false;

DataModule2->IBStoredProc6->ParamByName("ID_KLIENTA")->Value=Edit14->Text;

DataModule2->IBStoredProc6->Prepare();

DataModule2->IBStoredProc6->ExecProc();

DataModule2->IBTable2->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn8Click(TObject *Sender)

{

DataModule2->IBTable3->Active=false;

DataModule2->IBStoredProc7->ParamByName("ID_ZAKAZA")->Value=Edit15->Text;

DataModule2->IBStoredProc7->ParamByName("ID_KATEGORII")->Value=Edit16->Text;

DataModule2->IBStoredProc7->ParamByName("TEXT_OBIAVLENIA")->AsString=Edit17->Text;

DataModule2->IBStoredProc7->ParamByName("TELEFON")->AsString=Edit18->Text;

DataModule2->IBStoredProc7->Prepare();

DataModule2->IBStoredProc7->ExecProc();

DataModule2->IBTable3->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn9Click(TObject *Sender)

{

DataModule2->IBTable3->Active=false;

DataModule2->IBStoredProc8->ParamByName("ID_OBIAVLENIA")->Value=Edit19->Text;

DataModule2->IBStoredProc8->ParamByName("ID_ZAKAZA")->Value=Edit20->Text;

DataModule2->IBStoredProc8->ParamByName("ID_KATEGORII")->Value=Edit21->Text;

DataModule2->IBStoredProc8->ParamByName("TEXT_OBIAVLENIA")->AsString=Edit22->Text;

DataModule2->IBStoredProc8->ParamByName("TELEFON")->AsString=Edit23->Text;

DataModule2->IBStoredProc8->Prepare();

DataModule2->IBStoredProc8->ExecProc();

DataModule2->IBTable3->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn10Click(TObject *Sender)

{

DataModule2->IBTable3->Active=false;

DataModule2->IBStoredProc9->ParamByName("ID_OBIAVLENIA")->Value=Edit24->Text;

DataModule2->IBStoredProc9->Prepare();

DataModule2->IBStoredProc9->ExecProc();

DataModule2->IBTable3->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn11Click(TObject *Sender)

{

DataModule2->IBTable4->Active=false;

DataModule2->IBStoredProc10->ParamByName("FAMILIA")->AsString=Edit25->Text;

DataModule2->IBStoredProc10->ParamByName("NAME")->AsString=Edit26->Text;

DataModule2->IBStoredProc10->ParamByName("OTCHESTVO")->AsString=Edit27->Text;

DataModule2->IBStoredProc10->Prepare();

DataModule2->IBStoredProc10->ExecProc();

DataModule2->IBTable4->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn12Click(TObject *Sender)

{

DataModule2->IBTable2->Active=false;

DataModule2->IBStoredProc11->ParamByName("ID_REDAKTORA")->Value=Edit28->Text;

DataModule2->IBStoredProc11->ParamByName("FAMILIA")->AsString=Edit29->Text;

DataModule2->IBStoredProc11->ParamByName("NAME")->AsString=Edit30->Text;

DataModule2->IBStoredProc11->ParamByName("OTCHESTVO")->AsString=Edit31->Text;

DataModule2->IBStoredProc11->Prepare();

DataModule2->IBStoredProc11->ExecProc();

DataModule2->IBTable2->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn13Click(TObject *Sender)

{

DataModule2->IBTable4->Active=false;

DataModule2->IBStoredProc12->ParamByName("ID_OBIAVLENIA")->Value=Edit32->Text;

DataModule2->IBStoredProc12->Prepare();

DataModule2->IBStoredProc12->ExecProc();

DataModule2->IBTable4->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn14Click(TObject *Sender)

{

DataModule2->IBTable5->Active=false;

DataModule2->IBStoredProc13->ParamByName("ID_KLIENTA")->Value=Edit33->Text;

DataModule2->IBStoredProc13->ParamByName("ID_REDAKTORA")->Value=Edit34->Text;

DataModule2->IBStoredProc13->ParamByName("ID_SOST_ZAKAZA")->Value=Edit35->Text;

DataModule2->IBStoredProc13->ParamByName("DATA_ZAKAZA")->AsString=Edit36->Text;

DataModule2->IBStoredProc13->Prepare();

DataModule2->IBStoredProc13->ExecProc();

DataModule2->IBTable5->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn15Click(TObject *Sender)

{

DataModule2->IBTable5->Active=false;

DataModule2->IBStoredProc14->ParamByName("ID_ZAKAZA")->Value=Edit37->Text;

DataModule2->IBStoredProc14->ParamByName("ID_KLIENTA")->Value=Edit38->Text;

DataModule2->IBStoredProc14->ParamByName("ID_REDAKTORA")->Value=Edit39->Text;

DataModule2->IBStoredProc14->ParamByName("ID_SOST_ZAKAZA")->Value=Edit40->Text;

DataModule2->IBStoredProc14->ParamByName("DATA_ZAKAZA")->AsString=Edit41->Text;

DataModule2->IBStoredProc14->Prepare();

DataModule2->IBStoredProc14->ExecProc();

DataModule2->IBTable5->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn16Click(TObject *Sender)

{

DataModule2->IBTable5->Active=false;

DataModule2->IBStoredProc15->ParamByName("ID_ZAKAZA")->Value=Edit42->Text;

DataModule2->IBStoredProc15->Prepare();

DataModule2->IBStoredProc15->ExecProc();

DataModule2->IBTable5->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::DBGrid1TitleClick(TColumn *Column)

{

DataModule2->IBTable1->Active = false;

DataModule2->IBTable1->IndexFieldNames = Column->FieldName;

DataModule2->IBTable1->Active = true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::DBGrid2TitleClick(TColumn *Column)

{

DataModule2->IBTable2->Active = false;

DataModule2->IBTable2->IndexFieldNames = Column->FieldName;

DataModule2->IBTable2->Active = true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::DBGrid3TitleClick(TColumn *Column)

{

DataModule2->IBTable3->Active = false;

DataModule2->IBTable3->IndexFieldNames = Column->FieldName;

DataModule2->IBTable3->Active = true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::DBGrid4TitleClick(TColumn *Column)

{

DataModule2->IBTable4->Active = false;

DataModule2->IBTable4->IndexFieldNames = Column->FieldName;

DataModule2->IBTable4->Active = true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::DBGrid5TitleClick(TColumn *Column)

{

DataModule2->IBTable5->Active = false;

DataModule2->IBTable5->IndexFieldNames = Column->FieldName;

DataModule2->IBTable5->Active = true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn17Click(TObject *Sender)

{

TLocateOptions LO;

DataModule2->IBTable1->Locate("NAZVANIE", Edit4->Text, LO<<loPartialKey<<loCaseInsensitive);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn19Click(TObject *Sender)

{

TLocateOptions LO;

DataModule2->IBTable2->Locate("FAMILIA", Edit44->Text, LO<<loPartialKey<<loCaseInsensitive);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn21Click(TObject *Sender)

{

TLocateOptions LO;

DataModule2->IBTable3->Locate("TEXT_OBIAVLENIA", Edit46->Text, LO<<loPartialKey<<loCaseInsensitive);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn23Click(TObject *Sender)

{

TLocateOptions LO;

DataModule2->IBTable4->Locate("FAMILIA", Edit48->Text, LO<<loPartialKey<<loCaseInsensitive);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn18Click(TObject *Sender)

{

DataModule2->IBTable1->Active=false;

DataModule2->IBTable1->Filtered=false;

DataModule2->IBTable1->Filter="ID_TIPA="+Edit43->Text;

DataModule2->IBTable1->Filtered=true;

DataModule2->IBTable1->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn20Click(TObject *Sender)

{

DataModule2->IBTable2->Active=false;

DataModule2->IBTable2->Filtered=false;

DataModule2->IBTable2->Filter="ID_KLIENTA="+Edit45->Text;

DataModule2->IBTable2->Filtered=true;

DataModule2->IBTable2->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn22Click(TObject *Sender)

{

DataModule2->IBTable3->Active=false;

DataModule2->IBTable3->Filtered=false;

DataModule2->IBTable3->Filter="ID_ZAKAZA="+Edit47->Text;

DataModule2->IBTable3->Filtered=true;

DataModule2->IBTable3->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn24Click(TObject *Sender)

{

DataModule2->IBTable4->Active=false;

DataModule2->IBTable4->Filtered=false;

DataModule2->IBTable4->Filter="ID_REDAKTORA="+Edit49->Text;

DataModule2->IBTable4->Filtered=true;

DataModule2->IBTable4->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn26Click(TObject *Sender)

{

DataModule2->IBTable5->Active=false;

DataModule2->IBTable5->Filtered=false;

DataModule2->IBTable5->Filter="ID_ZAKAZA="+Edit51->Text;

DataModule2->IBTable5->Filtered=true;

DataModule2->IBTable5->Active=true;

}

//---------------------------------------------------------------------------

Код создания веб-приложения

//добавление

<html>

<head>

<title></title>

</head>

<body bgcolor=lightgrey>

<?php

$host='D:\SVETOVOY.FDB';

$usname = 'SYSDBA';

$pswrd = 'masterkey';

$db = ibase_pconnect($host, $usname, $pswrd);

if (!$db)

{

echo 'Ошибка соединения с базой данных';

exit;

}

?>

<?php

$id_tipa=$_POST['id_tipa'];

$nazvanie=$_POST['nazvanie'];

$query = "EXECUTE PROCEDURE ADD_KAT ('".$id_tipa."','".$nazvanie."')";

$it=ibase_trans();

echo '<br>';

$result=ibase_query($query);

$ic=ibase_commit();

if ($result) echo 'Данные внесены в таблицу.<br><br><br>';

echo '<script>document.location.href = "kateg.php"; </script>';

?>

</body>

</html>

// удаление:

<html>

<head>

<title></title>

</head>

<body bgcolor=lightgrey>

<?php

$host='D:\SVETOVOY.FDB';

$usname = 'SYSDBA';

$pswrd = 'masterkey';

$db = ibase_pconnect($host, $usname, $pswrd);

if (!$db)

{

echo 'Ошибка соединения с базой данных';

exit;

}

?>

<?php

$id_kategorii=$_POST['id_kategorii'];

$query = "EXECUTE PROCEDURE DELETE_KAT('".$id_kategorii."')";

$it=ibase_trans();

echo '<br>';

$result=ibase_query($query);

$ic=ibase_commit();

if ($result) echo 'Данные обновлены<br><br><br>';

echo '<script>document.location.href = "kateg.php"; </script>';

?>

</body>

</html>

//фильтр

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<title></title>

</head>

<body bgcolor=lightgrey>

<p align="center"><b><font size="5">Категории</font></b><br>

<?php

$host='D:\SVETOVOY.FDB';

$usname = 'SYSDBA';

$pswrd = 'masterkey';

$db = ibase_pconnect($host, $usname, $pswrd);

if (!$db)

{

echo 'Ошибка соединения с базой данных';

exit;

}

?>

<?php

$id_kategorii=$_POST['id_kategorii'];

$query = "select * from kategoria where id_kategorii=".$id_kategorii."";

$result = ibase_query($query);

echo '<table border = 1>';

echo '<tr><th bgcolor = \"#CCCCFF\">№категории</th>'.

'<th bgcolor = \"#CCCCFF\">№типа</th>'.

'<th bgcolor = \"#CCCCFF\">Название</th>'.

'<tr>';

$i = 0;

while ($row = ibase_fetch_row($result))

{ $i++;

echo "<tr><td>$row[0]</td>

<td>".$row[1]."</td>

<td>".$row[2]."</td>

</tr>";

}

echo "</table>";

ibase_free_result($result);

?>

<a href=sort_kat.php>Сортировать</a><br>

&nbsp;</p>

<form method="POST" action="filter_kat.php" >

<input type="text" name="id_kategorii" size="20" value="№категории" >&nbsp;

<input type="submit" value="Фильтр" name="send"></p></form><hr>

<form method="POST" action="add_kat.php" >

<p><input type="text" name="id_tipa" size="20" value="№типа">

<input type="text" name="nazvanie" size="20" value="Название"> &nbsp;&nbsp;&nbsp;

<input type="submit" value="Добавить" name="send"></p>

</form>

<form method="POST" action="up_kat.php" >

<p><input type="text" name="id_kategorii" size="20" value= "№категории">&nbsp;

<input type="text" name="nazvanie" size="20" value="Название" >&nbsp;&nbsp;&nbsp;

<input type="submit" value="Обновить" name="send"></p>

</form>

<form method="POST" action="del_adresa.php" method=post>

<input type="text" name="id_kategorii" size="20" value="№категории">

<input type="submit" value="Удалить" name="send"></p>

</form>

</body>

</html>

// изменение

<html>

<head>

<title></title>

</head>

<body bgcolor=lightgrey>

<?php

$host='D:\SVETOVOY.FDB';

$usname = 'SYSDBA';

$pswrd = 'masterkey';

$db = ibase_pconnect($host, $usname, $pswrd);

if (!$db)

{

echo 'Ошибка соединения с базой данных';

exit;

}

?>

<?php

$id_kategorii=$_POST['id_kategorii'];

$nazvanie=$_POST['nazvanie'];

$query = "EXECUTE PROCEDURE UPDATE_KAT('".$id_kategorii."','". $nazvanie."')";

$it=ibase_trans();

echo '<br>';

$result=ibase_query($query);

$ic=ibase_commit();

if ($result) echo 'Данные обновлены<br><br><br>';

echo '<script>document.location.href = "kateg.php"; </script>';

?>

</body>

</html>

// сортировка

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<title>Лаб 6</title>

</head>

<body bgcolor=lightgrey>

<p align="center"><b><font size="5">Категории: отсортировано по названию</font></b><br><br>

<?php

$host='D:\SVETOVOY.FDB';

$usname = 'SYSDBA';

$pswrd = 'masterkey';

$db = ibase_pconnect($host, $usname, $pswrd);

if (!$db)

{

echo 'Ошибка соединения с базой данных';

exit;

}

?>

<?php

$query = "select * from kategoria order by nazvanie";

$result = ibase_query($query);

echo '<table border = 1>';

echo '<tr><th bgcolor = \"#CCCCFF\">№категории</th>'.

'<th bgcolor = \"#CCCCFF\">№типа</th>'.

'<th bgcolor = \"#CCCCFF\">Название</th>'.

'<tr>';

$i = 0;

while ($row = ibase_fetch_row($result))

{ $i++;

echo "<tr><td>$row[0]</td>

<td>".$row[1]."</td>

<td>".$row[2]."</td>

</tr>";

}

echo "</table>";

ibase_free_result($result);

?>

<a href=sort_kat.php>Сортировать</a><br>

&nbsp;</p>

<form method="POST" action="filter_kat.php" >

<input type="text" name="id_kategorii" size="20" value="№категории">&nbsp;

<input type="submit" value="Фильтр" name="send"></p></form><hr>

<form method="POST" action="add_kat.php" >

<p><input type="text" name="id_tipa" size="20" value="№типа">

<input type="text" name="nazvanie" size="20" value="Название">&nbsp;&nbsp;&nbsp;

<input type="submit" value="Добавить" name="send"></p>

</form>

<form method="POST" action="up_kat.php" >

<p><input type="text" name="id_kategorii" size="20" value="№категории">&nbsp;

<input type="text" name="nazvanie" size="20" value="Название">&nbsp;&nbsp;&nbsp;

<input type="submit" value="Обновить" name="send"></p>

</form>

<form method="POST" action="del_adresa.php" method=post>

<input type="text" name="id_kategorii" size="20" value="№категории">

<input type="submit" value="Удалить" name="send"></p>

</form>

</body>

</html>

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


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

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