Информационная система транспортной компании в архитектуре клиент-сервер
Изучение основных средств, предоставляемых средой MS SQL SERVER 2012. Программа создания базы данных и серверной части информационной системы средствами языка программирования C++ в среде С++ Builder. Пользовательский интерфейс клиентского приложения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 14.02.2016 |
Размер файла | 1,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Информационная система транспортной компании в архитектуре клиент-сервер
Пояснительная записка к курсовому проекту по дисциплине
"Базы данных"
Реферат
Пояснительная записка
ADO, C++, MS SQL SERVER 2012, C++ Builder, БАЗА ДАННЫХ,ТАБЛИЦЫ, ЗАПРОСЫ, ПРЕДМЕТНАЯ ОБЛАСТЬ, ПРЕДСТАВЛЕНИЯ, ТРИГГЕРЫ, ХРАНИМЫЕ ПРОЦЕДУРЫ, ИНФОРМАЦИОННАЯ СИСТЕМ, КЛИЕНТ, СЕРВЕР.
Объектом разработки является информационная система, созданная с использованием средств, предоставляемых современными СУБД реляционного типа.
Цель работы - разработка программного обеспечения для информационной системы транспортной компании в архитектуре клиент - сервер.
Полученные результаты: в процессе разработки проводилось изучение основных средств, предоставляемых средой MS SQL SERVER 2012, и на основе их использования разработана и отлажена программа создания базы данных и серверной части информационной системы. Средствами языка программирования C++ в среде С++ Builder разработано программное обеспечение для информационной системы транспортной компании в архитектуре клиент-сервер.
Графическая часть включает в себя диаграмму базы данных.
Содержание
- Введение
- 1. Информационная система транспортной компании в архитектуре клиент - сервер
- 1.1 Анализ предметной области
- 1.2 Анализ информационных задач и круга пользователей системы
- 1.3 Выработка требований и ограничений
- 1.4 Разработка проекта базы данных
- 1.5 Программная реализация проекта базы данных
- 1.6 Запросы
- 1.7 Представления
- 1.8 Серверная часть информационной системы
- 1.9 Запросы клиентского приложения к базе данных
- 1.10 Пользовательский интерфейс клиентского приложения
- Заключение
- Список использованной литературы
- Приложения
- Введение
- Система баз данных-- это компьютеризированная система хранения записей, т.е. компьютеризированная система, основное назначение которой - хранить информацию, предоставляя пользователям средства ее извлечения и модификации. К информации может относиться все, что заслуживает внимания отдельного пользователя или организации, использующей систему, иначе говоря, все необходимое для текущей работы данного пользователя или предприятия. клиентский приложение builder server
- Основными составляющими информационных систем, построенных на основе баз данных, являются файлы БД, СУБД и программное обеспечение (клиентские приложения), позволяющие пользователю манипулировать информацией и совершать необходимые для решения его задач действия.
- 1. Информационная система транспортной компании в архитектуре клиент - сервер
- В процессе выполнения курсового проекта должно быть разработано и реализовано клиент - серверное приложение для базы данных транспортной компании.
- Пользовательский интерфейс должен быть как можно более удобным для конечного пользователя. Серверная часть должна содержать в себе таблицы, представления, хранимые процедуры, триггеры и быть разработана на языке Transact SQL. Помимо этого должны быть представлены: структура базы данных и результаты работы программы. В качестве языка разработки была выбрана среда С++ Builder, поскольку она обладает компонентами, позволяющими работать с базами данных.
- 1.1 Анализ предметной области
- Предметной областью данного проекта является транспортная компания. В качестве объектов этой области можно выделить заказчика, груз, автомобиль. Каждый из объектов содержит в себе некие характеристики (см. Рис xyz) и представляет собой таблицу базы данных.
1. Заказчики - код заказчика, Ф.И.О., название организации, адрес, телефон;
2. Грузы - код груза, наименование, код вида автомобиля для транспортировки;
3. Автомобили - код автомобиля, код марки, код вида автомобиля, регистрационный номер, номер кузова, номер двигателя, год выпуска, дата последнего ТО;
Взаимосвязь этих объектов происходит в таблице "Рейсы", характеристиками которой являются код рейса, код автомобиля, код заказчика, откуда, куда, дата отправления, дата прибытия, код груза, цена, отметка об оплате, отметка о возврате.
- 1.2 Анализ информационных задач и круга пользователей системы
- В качестве пользователя системы был выбран менеджер. Его информационные задачи: регистрировать рейсы. Он добавляет записи в таблицу "Рейсы".
- 1.3 Выработка требований и ограничений
- При разработке клиентского приложения необходимо определить ряд ограничений, для потенциального пользователя. В данной работе пользователем выступает менеджер транспортной компании. Он может управлять рейсами и пользоваться дополнительными табличками для внесения полной информации о рейсе.
На данные наложены ограничения, позволяющие уменьшить вероятность внесения не верной информации. Например: формат телефонного номера "+7(***)-***-**-**", где вместо "*" цифры от 0 до 9. Данные текстового типа ограничены по длине: адрес - 50 символов, ФИО - 40, номер кузова - 17.
- 1.4 Разработка проекта базы данных
- .
- Их взаимосвязь также можно проиллюстрировать схемой БД (см. рис 1).
Рис 1. Схема БД.
- 1.5 Программная реализация проекта базы данных
- Для создания базы данных была использована команда CREATE DATABASE Transport, для создания таблиц CREATE TABLE, где Transport - имя БД. Например, создание таблицы "Грузы" будет иметь вид:
- CREATE TABLE Gruzy
- (
- Kod_gruza TINYINT PRIMARY KEY CHECK (Kod_gruza>0 AND Kod_gruza<200),
- NAME_gruz VARCHAR(20) NOT NULL,
- Kod_vida_gruza_F TINYINT FOREIGN KEY REFERENCES Vidy_gruzov(Kod_vida_gruza) CHECK (Kod_vida_gruza_F>0 AND Kod_vida_gruza_F<200) NOT NULL
- )
- Для управления таблицами существуют команды: ALTER TABLE имя_БД и DROP TABLE имя_БД. Первая производит модификацию таблицы, а вторая выполняет ее удаление. Например, добавим в таблицу поле вес, после чего модифицируем его, а затем удалим.
- Добавление поля.
- ALTER TABLE Gruzy
- ADD Ves INT NOT NULL
- Модификация поля.
- ALTER TABLE Gruzy
- ADD CONSTRAINT Ves CHECK ves > 0 AND ves < 5000)
- Удаление поля.
- ALTER TABLE Gruzy
- DROP COLUMN Ves
- Для заполнения таблицы используется команда INSERT.
- Insert Into [Gruzy] Values (1,'Кран',1)
Подробный код см. приложение xyz и приложение xyz.
- 1.6 Запросы
- Запросы на выборку данных относят к двум группам: простые и сложные. В простых запросах выборка идет из одной таблицы, а в сложных может быть задействовано сразу несколько таблиц. Сложные запросы можно реализовать методом вложенных запросов и методом объединения таблиц. В данном проекте используются вложенные запросы.
- Пример простого запроса.
- 1. По Дате отправки рейса определить цены оплаченных рейсов.
- SELECT Data_otpravki AS [Дата отправки], Cost AS "Цена" FROM Reisy WHERE Data_otpravki BETWEEN getdate()-30 AND getdate()
- Примеры сложных запросов:
- 2. По Грузу определить вид автомобиля для перевозки.
- SELECT NAME_vid_avto AS "Вид автомобиля" FROM Gruzy,Vidy_gruzov, Vidy_avto WHERE Gruzy.Kod_vida_gruza_F=Vidy_gruzov.Kod_vida_gruza AND Vidy_gruzov.Kod_vida_avto_F=Vidy_avto.Kod_vida_avto AND Gruzy.NAME_gruz='Танк'
- 3. По Адресу отправки определить название организации.
- SELECT NAME_organization AS "Название организации", Kuda AS [Адрес] FROM Zakazchiki, Reisy WHERE Reisy.Kod_zakazchika_F=Zakazchiki.Kod_zakazchika AND Reisy.Kuda LIKE 'г. Заречный%'
- Полный перечень разработанных запросов и результаты их работы см. приложение Г.
- 1.7 Представления
- Представление (VIEW) - тип таблицы, чье содержание выбирается из других таблиц с помощью выполнения запроса. Поскольку значения в этих таблицах меняются, то автоматически, их значения могут быть показаны представлением. Помимо всего, представления способны маскировать от конечного пользователя, как столбцы, так и строки.
- Данная работа содержит 2 представления.
- Представление ViewReisy используется для более удобного отображения перечня товаров, имеющихся на складе. Оно объединяет в себе данные из четырех таблиц - это "Рейсы", "Заказчики", "Автомобили" и "Грузы" (см. Рис 2).
- CREATE VIEW ViewReisy AS
- SELECT [Kod_reisa] AS [Код рейса]
- ,[Reg_nomer] AS [Номер автомобиля]
- ,[FIO] AS [Заказчик]
- ,[Otkuda] AS [Откуда]
- ,[Kuda] AS [Куда]
- ,[Data_otpravki] AS [Дата отправки]
- ,[Data_pribytiya] AS [Дата прибытия]
- ,[NAME_gruz] AS [Груз]
- ,[Cost] AS [Цена]
- ,[Kod_avto_F] AS [Код автомобиля]
- ,[Kod_zakazchika_F] AS [Код заказчика]
- ,[Kod_gruza_F] AS [Код груза]
- ,[Otmetka_ob_oplate] AS [Отметка об оплате]
- ,[Otmetka_o_vozvrate] AS [Отметка о возврате]
- FROM [Reisy],[Zakazchiki],[Avto],[Gruzy]
- WHERE Reisy.Kod_zakazchika_F=Zakazchiki.Kod_zakazchika
- AND Reisy.Kod_avto_F=Avto.Kod_avto
- AND Reisy.Kod_gruza_F=Gruzy.Kod_gruza;
Рис 2. Представление ViewReisy.
Представление ViewZakazchiki используется для скрытия структуры бд и для реализации более удобной формы работы (см. Рис 3).
CREATE VIEW ViewZakazchiki AS
SELECT [Kod_zakazchika] AS [Код заказчика]
,[FIO] AS [Заказчик]
,[NAME_organization] AS [Название организации]
,[Adress] AS [Адрес]
,[Telephone] AS [Телефон]
,[Profit] AS [Прибыль]
FROM [Zakazchiki]
Рис 3. Представление ViewZakazchiki.
- 1.8 Серверная часть информационной системы
- Серверная часть информационной системы может содержать в себе бизнес логику, а именно пользовательские функции, хранимые процедуры, триггеры, которые могут облегчить клиентское приложение и его сопровождение, но замедлить работу сервера при большом количестве пользователей и поступающих запросов.
Хранимые процедуры
Данный курсовой проект содержит 5 хранимых процедур.
1. DefaultSizeReisy - используется в клиенте для задания ширины столбов по умолчанию.
CREATE PROCEDURE DefaultSizeReisy
@st0 INT OUTPUT,@st1 INT OUTPUT,@st2 INT OUTPUT,@st3 INT OUTPUT,
@st4 INT OUTPUT,@st5 INT OUTPUT,@st6 INT OUTPUT,@st7 INT OUTPUT,
@st8 INT OUTPUT,@st9 INT OUTPUT,@st10 INT OUTPUT,@st11 INT OUTPUT,
@st12 INT OUTPUT,@st13 INT OUTPUT
AS
SELECT
@st0=60, @st1=100, @st2=180, @st3=130, @st4=130, @st5=90, @st6=90, @st7=100,
@st8=60, @st9=0, @st10=0, @st11=0, @st12=0, @st13=0;
2. SelectReisy - используется для выборки данных из представления ViewReisy.
CREATE PROCEDURE SelectReisy
AS
SELECT * FROM ViewReisy;
3. SearchReisy - для поиска в представления ViewReisy.
CREATE PROCEDURE SearchReisy
@Kod_reisa VARCHAR,@Reg_nomer VARCHAR(9)=''
,@FIO VARCHAR(40)='',@Otkuda VARCHAR(50)=''
,@Kuda VARCHAR(50)='',@Data_otpravki VARCHAR(10)=''
,@Data_pribytiya VARCHAR(10)='',@NAME_gruz VARCHAR(20)=''
,@Cost VARCHAR(10)=''
AS
SELECT *
FROM ViewReisy
WHERE CAST([Код рейса] AS VARCHAR(9)) LIKE '%'+@Kod_reisa+'%'
AND [Номер автомобиля] LIKE ('%'+@Reg_nomer+'%')
AND [Заказчик] LIKE '%'+@FIO+'%'
AND [Откуда] LIKE '%'+@Otkuda+'%'
AND [Куда] LIKE '%'+@Kuda+'%'
AND [Дата отправки] LIKE '%'+@Data_otpravki+'%'
AND [Дата прибытия] LIKE '%'+@Data_pribytiya+'%'
AND [Груз] LIKE '%'+@NAME_gruz+'%'
AND CAST([Цена] AS VARCHAR(9)) LIKE ('%'+@Cost+'%')
4. DeleteReisy- для удаления рейса по его коду.
CREATE PROCEDURE DeleteReisy
@Kod_reisa INT
AS
DELETE FROM Reisy WHERE Kod_reisa=@Kod_reisa
5. MyStatistics - для вывода статистики по рейсам.
CREATE PROCEDURE MyStatistics
@kol_reysov INT OUTPUT,
@avg_reysov INT OUTPUT,
@kol_zakaz INT OUTPUT,
@kol_avto INT OUTPUT,
@kol_reysov_paid INT OUTPUT,
@kol_reysov_not_paid INT OUTPUT,
@kol_reysov_return INT OUTPUT,
@cost_reysov_paid INT OUTPUT,
@cost_reysov_not_paid INT OUTPUT,
@cost_reysov_return INT OUTPUT
AS
SELECT @kol_reysov=COUNT(*),@avg_reysov=AVG(Cost) FROM Reisy;
SELECT @kol_zakaz=COUNT(*) FROM Zakazchiki;
SELECT @kol_avto=COUNT(*) FROM Avto;
SELECT @kol_reysov_paid=COUNT(*),@cost_reysov_paid=SUM(Cost) FROM Reisy WHERE [Otmetka_ob_oplate]=1 AND [Otmetka_o_vozvrate]=0;
SELECT @kol_reysov_not_paid=COUNT(*),@cost_reysov_not_paid=SUM(Cost) FROM Reisy WHERE [Otmetka_ob_oplate]=0 AND [Otmetka_o_vozvrate]=0;
SELECT @kol_reysov_return=COUNT(*),@cost_reysov_return=SUM(Cost) FROM Reisy WHERE [Otmetka_o_vozvrate]=1;
Результаты работы данных процедур проиллюстрированы в приложении xyz.
Триггеры для поддержки сложных ограничений целостности в базе данных
Данный курсовой проект содержит два триггера.
1. Вставка записи в табличку перенаправленная со вставки в представление.
CREATE TRIGGER InsertReys
ON ViewReisy
INSTEAD OF INSERT
AS
Declare @Kod_reisa INT,@Reg_nomer VARCHAR(9),@FIO VARCHAR(40)
,@Otkuda VARCHAR(50),@Kuda VARCHAR(50),@Data_otpravki VARCHAR(10)
,@Data_pribytiya VARCHAR(10),@NAME_gruz VARCHAR(20),@Cost INT
,@Otmetka_ob_oplate INT,@Otmetka_o_vozvrate INT
BEGIN
SELECT @Kod_reisa=[Код рейса],@Reg_nomer=[Номер автомобиля]
,@FIO=[Заказчик],@Otkuda=[Откуда],@Kuda=[Куда]
,@Data_otpravki=[Дата отправки],@Data_pribytiya=[Дата прибытия]
,@Cost=[Цена],@NAME_gruz=[Груз],@Otmetka_ob_oplate=[Отметка об оплате]
,@Otmetka_o_vozvrate=[Отметка о возврате]
FROM inserted;
INSERT Reisy VALUES(@Kod_reisa,(SELECT Kod_avto FROM Avto WHERE [Reg_nomer]=@Reg_nomer),(SELECT Kod_zakazchika FROM Zakazchiki WHERE [FIO]=@FIO), @Otkuda,@Kuda,@Data_otpravki,@Data_pribytiya,(SELECT Kod_gruza FROM Gruzy WHERE [NAME_gruz]=@NAME_gruz),@Cost,@Otmetka_ob_oplate, @Otmetka_o_vozvrate);
END;
Триггер вызывается при вставке в представление ViewReisy и делает вставку данных в таблицу "Рейсы" (см. Рис 4).
Запрос на вставку:
INSERT ViewReisy ([Код рейса],[Номер автомобиля],[Заказчик],[Откуда],[Куда],
[Дата отправки],[Дата прибытия],[Груз],[Цена],[Отметка об оплате],[Отметка о возврате])
VALUES(123,'с876уа58','Печеркин Александр Андреевич', 'г. Сосновоборск, ул. Сосновая 7','г. Кузнецк, ул. Белинского 151','2013-08-10','2013-09-14','Пропан',58100,1,0)
Рис 4. Таблица до и после работы триггера.
2. Обновление прибыли от клиента при вставке.
CREATE TRIGGER EvalProfit
ON Reisy
AFTER INSERT, DELETE, UPDATE
AS
Declare @Kod_zakazchika INT,@i INT=1;
BEGIN
WHILE @i<=(SELECT COUNT(*) FROM inserted) BEGIN
SELECT TOP 1 @Kod_zakazchika=TMP.Kod_zakazchika_F
FROM (SELECT TOP (@i) Kod_zakazchika_F FROM inserted ORDER BY Kod_zakazchika_F DESC) AS TMP ORDER BY TMP.Kod_zakazchika_F;
IF(SELECT COUNT(Reisy.Cost) FROM Reisy WHERE @Kod_zakazchika=Reisy.Kod_zakazchika_F AND Reisy.Otmetka_o_vozvrate=0 AND Reisy.Otmetka_ob_oplate=1)>0BEGIN
UPDATE Zakazchiki SET Profit=(SELECT SUM(Reisy.Cost) FROM Reisy WHERE @Kod_zakazchika=Reisy.Kod_zakazchika_F AND Reisy.Otmetka_o_vozvrate=0 AND Reisy.Otmetka_ob_oplate=1) WHERE Kod_zakazchika=@Kod_zakazchika; END;
SET @i=@i+1;
END;
SET @i=1;
WHILE @i<=(SELECT COUNT(*) FROM deleted WHERE Kod_zakazchika_F NOT IN (SELECT Kod_zakazchika_F FROM inserted)) BEGIN
SELECT TOP 1 @Kod_zakazchika=TMP.Kod_zakazchika_F
FROM (SELECT TOP (@i) Kod_zakazchika_F FROM deleted WHERE Kod_zakazchika_F NOT IN (SELECT Kod_zakazchika_F FROM inserted) ORDER BY Kod_zakazchika_F DESC) AS TMP ORDER BY TMP.Kod_zakazchika_F;
IF(SELECT COUNT(Reisy.Cost) FROM Reisy WHERE Kod_zakazchika = Reisy.Kod_zakazchika_F AND Reisy.Otmetka_o_vozvrate=0 AND Reisy.Otmetka_ob_oplate=1)>0 BEGIN
UPDATE Zakazchiki SET Profit=(SELECT SUM(Reisy.Cost) FROM Reisy WHERE @Kod_zakazchika=Reisy.Kod_zakazchika_F AND Reisy.Otmetka_o_vozvrate=0 AND Reisy.Otmetka_ob_oplate=1) WHERE Kod_zakazchika=@Kod_zakazchika;
END;
SET @i=@i+1;
END;
END;
Данный триггер при добавлении в таблицу рейсы пересчитывает прибыль от заказчиков (см. Рис 5).
Рис 5. До и после добавления рейса.
- 1.9 Запросы клиентского приложения к базе данных
- Разработанное клиентское приложение взаимодействует с сервером БД посредством передачи запросов, и приема их результатов. Большинство реализованных функций клиента вызывают хранимые процедуры. Например, при открытии главного окна вызывается процедура, возвращающая размеры колонок. Добавление рейсов также использует процедуру, которая принимает введенные данные и заполняет таблицу командой INSERT. Поиск рейсов происходит также, посредством хранимой процедуры.
- Для оптимизации взаимодействия клиента с сервером необходимо избегать передачи лишней информации для экономии траффика. Это и позволяют сделать хранимые процедуры. Также, их достоинствами является то, что они хранятся на сервере в откомпилированном виде и позволяют скрывать информацию.
- 1.10 Пользовательский интерфейс клиентского приложения
- При проектировке приложения надо учитывать то, что оно будет использоваться продолжительное время пользователем, не знающим языка Transact - SQL. Поэтому, запросы к серверу должны быть прописаны в исходном коде ПО, а сам интерфейс (см. Рис 6 - Рис 10) должен быть максимально интуитивным и не утомлять работника.
Рис 6. Главное окно.
Рис 7. Окно добавления рейса.
Рис 8. Окно статистики.
Рис 9. Подробности о заказчике.
По большей части пользователь будет работать с первым окном и кнопками добавить/изменить рейс. При необходимости он может воспользоваться поиском или посмотреть другие таблички.
- Заключение
- В результате выполнения курсового проекты было разработано и реализовано клиент - серверное приложение для менеджера транспортной компании. При помощи приложения можно работать с рейсами. Приложение разработано в среде С++ Builder на языке C++. Серверная часть реализована в SQL SERVER 2012 на языке Transact - SQL. Программа отлажена. Результаты работы проиллюстрированы. Задание выполнено в полном объеме.
- Список использованной литературы
- 1. А. Я. Архангельский. Программирование в C++ Builder. - Бином, 2010. 1304с.
- 2. И. А. Казакова. Основы языка Transact SQL. - Пенза: Издательство ПГУ, 2013. 163 с.
- 3. А. Г. Бондарь. Interbase и Firebird. - Санкт-Петербург: БХВ-Петербург, 2012. 593 с.
- Приложения
- Утв.
Текст программы создания БД
CREATE DATABASE Transport
--Создание таблиц БД (пункт 2)
USE Transport
CREATE TABLE Marka_avto
(
Kod_marki TINYINT PRIMARY KEY CHECK (Kod_marki>0 AND Kod_marki<200),
NAME_marka VARCHAR(20) NOT NULL
)
CREATE TABLE Vidy_avto
(
Kod_vida_avto TINYINT PRIMARY KEY CHECK (Kod_vida_avto>0 AND Kod_vida_avto<200),
NAME_vid_avto VARCHAR(40) NOT NULL
)
CREATE TABLE Vidy_gruzov
(
Kod_vida_gruza TINYINT PRIMARY KEY CHECK (Kod_vida_gruza>0 AND Kod_vida_gruza<200),
NAME_vid_gruza VARCHAR(20) NOT NULL,
Kod_vida_avto_F TINYINT FOREIGN KEY REFERENCES Vidy_avto(Kod_vida_avto) CHECK (Kod_vida_avto_F>0 AND Kod_vida_avto_F<200) NOT NULL
)
CREATE TABLE Gruzy
(
Kod_gruza TINYINT PRIMARY KEY CHECK (Kod_gruza>0 AND Kod_gruza<200),
NAME_gruz VARCHAR(20) NOT NULL,
Kod_vida_gruza_F TINYINT FOREIGN KEY REFERENCES Vidy_gruzov(Kod_vida_gruza) CHECK (Kod_vida_gruza_F>0 AND Kod_vida_gruza_F<200) NOT NULL
)
CREATE TABLE Avto
(
Kod_avto SMALLINT PRIMARY KEY CHECK (Kod_avto>0 AND Kod_avto<500),
Kod_marki_F TINYINT FOREIGN KEY REFERENCES Marka_avto(Kod_marki) CHECK (Kod_marki_F>0 AND Kod_marki_F<200) NOT NULL,
Kod_vida_avto_F TINYINT FOREIGN KEY REFERENCES Vidy_avto(Kod_vida_avto) CHECK (Kod_vida_avto_F>0 AND Kod_vida_avto_F<200) NOT NULL,
Reg_nomer CHAR(9) CHECK (Reg_nomer LIKE '[а,е,м,о,с,у][0-9][0-9][0-9][а,е,м,о,с,у][а,е,м,о,с,у][0-9][0-9][0-9," "]') NOT NULL,
Nomer_kuzova VARCHAR(17) CHECK (Nomer_kuzova LIKE '[0-9,A-H,J-N,P,R-Z][0-9,A-H,J-N,P,R-Z][0-9,A-H,J-N,P,R-Z][0-9,A-H,J-N,P,R-Z][0-9,A-H,J-N,P,R-Z][0-9,A-H,J-N,P,R-Z][0-9,A-H,J-N,P,R-Z][0-9,A-H,J-N,P,R-Z][0-9,A-H,J-N,P,R-Z][0-9,A-H,J-N,P,R-Z][0-9,A-H,J-N,P,R-Z][0-9,A-H,J-N,P,R-Z][0-9,A-H,J-N,P,R-Z][0-9][0-9][0-9][0-9]') NOT NULL,
Nomer_dvigatelya VARCHAR(10) NOT NULL,
God_vypuska SMALLINT CHECK (God_vypuska>=2010 AND God_vypuska<=2040) NOT NULL,
Data_poslednego_TO DATE CHECK (Data_poslednego_TO BETWEEN '2013-01-01' AND '2040-01-01') NOT NULL
)
CREATE TABLE Zakazchiki
(
Kod_zakazchika SMALLINT PRIMARY KEY CHECK (Kod_zakazchika>0 AND Kod_zakazchika<10000),
FIO VARCHAR(40) NOT NULL,
NAME_organization VARCHAR(50) NOT NULL,
Adress VARCHAR(50) NOT NULL,
Telephone VARCHAR(16) CHECK (Telephone LIKE '[+][7][(][0-9][0-9][0-9][)][0-9][0-9][0-9][-][0-9][0-9][-][0-9][0-9]') NOT NULL
)
CREATE TABLE Reisy
(
Kod_reisa SMALLINT PRIMARY KEY CHECK (Kod_reisa>0 AND Kod_reisa<100000),
Kod_avto_F SMALLINT FOREIGN KEY REFERENCES Avto(Kod_avto) CHECK (Kod_avto_F>0 AND Kod_avto_F<500) NOT NULL,
Kod_zakazchika_F SMALLINT FOREIGN KEY REFERENCES Zakazchiki(Kod_zakazchika) CHECK (Kod_zakazchika_F>0 AND Kod_zakazchika_F<10000) NOT NULL,
Otkuda VARCHAR(50) NOT NULL,
Kuda VARCHAR(50) NOT NULL,
Data_otpravki DATE CHECK (Data_otpravki BETWEEN '2013-01-01' AND '2040-01-01') NOT NULL,
Data_pribytiya DATE CHECK (Data_pribytiya BETWEEN '2013-01-01' AND '2040-01-01') NOT NULL,
Kod_gruza_F SMALLINT FOREIGN KEY REFERENCES Gruzy(Kod_gruza) CHECK (Kod_gruza_F>0 AND Kod_gruza_F<10000) NOT NULL,
Cost INT CHECK (Cost>0 AND COST<10000000) NOT NULL,
Otmetka_ob_oplate BIT NOT NULL,
Otmetka_o_vozvrate BIT NOT NULL
)
Текст программы для ввода текстовых данных
(Обязательное)
USE Transport
Insert Into [Zakazchiki] Values
(1,'Абрамов Максим Петрович','ООО "Движение"','г. Пенза, ул. Володарского 24','+7(901)233-72-03'),
(2,'Аганов Артур Дмитривич','ОАО "Информационно-вычислительный центр"','г. Пенза, ул. Революционная 21','+7(962)266-34-51'),
(3,'Адрианов Тимофей Николаевич','ООО "Смарт Медиа"','г. Сердобск, ул. Ленина 257','+7(987)297-42-13'),
(4,'Александров Никита Алексеевич','ООО "Рекламное Агентство "Такса"','г. Кузнецк, ул. Ленина 271','+7(937)290-70-52'),
(5,'Алексеев Федор Михайлович','ЗАО "Фьючер Медиа"','г. Сердобск, ул. Гоголя 16','+7(965)295-85-42'),
(6,'Гордон Павел Алексеевич','ООО "Стенд-XXI"','г. Сердобск, ул. Красная 37','+7(937)213-16-61'),
(7,'Губа Евгений Александрович','ООО "Принт РУСЬ"','г. Пенза, ул. Кирова 55','+7(950)251-65-91'),
(8,'Голуб Олеся Александровна','ООО "Нью Медиа"','г. Заречный, ул. Ленина 44','+7(962)382-52-40'),
(9,'Вьюгинов Николай Юрьевич','ООО "Студия Черкасова"','г. Кузнецк, ул. Московская 65','+7(901)221-47-06'),
(10,'Горохов Никита Дмитриевич','ООО "Медиа Холдинг "РЕЗОНАНС"','г. Заречный, ул. Зеленая 9','+7(903)044-48-08'),
(11,'Григорьев Святослав Александрович','ООО "Голден Стрим Медиа"','г. Заречный, пр. Победы 47','+7(965)267-18-27'),
(12,'Гудков Сергей Михайлович','ООО "Астер-Ек+"','г. Пенза, ул. Бакунина 11','+7(908)982-94-31'),
(13,'Красавцев Илья Александрович','ООО "Высшая лига"','г. Кузнецк, ул. Белинского 151','+7(965)379-04-99'),
(14,'Кувшинова Дария Михайловна','ООО "Эзапринт"','г. Пенза, ул. Суворова 144','+7(903)290-41-63'),
(15,'Манукян Карен Артурович','ООО "Форт Диалог-Исеть"','г. Сердобск, ул. Гагарина 20','+7(908)287-01-64'),
(16,'Ниссхен Ксения Денисовна','ООО "АграфЕк"','г. Сердобск, ул. Ленина 152','+7(937)217-29-56'),
(17,'Печеркин Александр Андреевич','ООО "НВМ"','г. Пенза, ул. Пушкина 158','+7(962)350-58-55'),
(18,'Савостьянов Антон Сергеевич','ООО "Фабрика Цвета"','г. Сердобск, ул. Калинина 53','+7(937)200-83-36'),
(19,'Таранов Денис Васильевич','ООО "ЦСБ"','г. Сосновоборск, ул. Ленина 24','+7(950)295-73-90'),
(20,'Филиппов Дмитрий Сергеевич','ООО "ПрессА"','г. Пенза, ул. Калинина 135','+7(937)217-71-53'),
(21,'Шокиров Иброхим Джамшедович','ООО "Парамаунт"','г. Сосновоборск, ул. Сосновая 7','+7(961)375-70-10'),
(22,'Юрьев Семен Юрьевич','ООО "Астарта"','г. Кузнецк, ул. Гагарина 31','+7(996)219-66-96'),
(23,'Яковлева Дарья Владимировна','ООО "Диамант"','г. Пенза, ул. Мереняшева 93','+7(950)350-16-50'),
(24,'Рубинский Глеб Викторович','ООО "Хозяйство"','г. Заречный, ул. Мира 32','+7(937)355-55-59'),
(25,'Свечиский Андрей Сергеевич','ООО "Мастер цвета"','г. Сосновоборск, ул. Калинина 22','+7(996)377-68-70'),
(26,'Полковников Алексей Леонидович','ООО "АДАУРА"','г. Пенза, ул. Захарова 16','+7(937)797-88-55'),
(27,'Першаков Николай Михайлович','ООО "Квант-2"','г. Кузнецк, ул. Ленина 227','+7(962)567-45-65')
Insert Into [Vidy_avto] Values
(1,'Тягач'),
(2,'Фургон промтоварный изотермический'),
(3,'Фургон рефрижераторный'),
(4,'Цистерна')
Insert Into [Vidy_gruzov] Values
(1,'Строительная техника',1),
(2,'Военная техника',1),
(3,'Мебель',2),
(4,'Пищевые продукты',3),
(5,'Растения',3),
(6,'Жидкости',4),
(7,'Газ',4)
Insert Into [Marka_avto] Values
(1,'Volvo'),
(2,'Iveco'),
(3,'Daf'),
(4,'Kamaz'),
(5,'Renault'),
(6,'Man'),
(7,'Mercedes-Benz'),
(8,'Scania'),
(9,'Hyunday'),
(10,'Mitsubishi Fuso'),
(11,'Isuzu'),
(12,'Hino'),
(13,'Avia'),
(14,'Ford')
Insert Into [Gruzy] Values
(1,'Кран',1),
(2,'Танк',2),
(3,'Стол',3),
(4,'Кровать',3),
(5,'Кухонный гарнитур',3),
(6,'Мороженое',4),
(7,'Курица',4),
(8,'Полуфабрикаты',4),
(9,'Саженцы кедра',5),
(10,'Саженцы пальмы',5),
(11,'Вода',6),
(12,'Нефть',6),
(13,'Бензин',6),
(14,'Пропан',7)
Insert Into [Avto] Values
(1,1,3,'а100аа58','XTZA8N6M3D2F14538','K3-VET',2010,'2013-08-20'),--Фургон рефрижераторный
(2,4,1,'а124ао58','XWWA8KDS3D2F18255','HE-EG',2012,'2013-07-10'),--Тягач
(3,6,2,'е744мм77','X1VA8LT53D2F14872','1G-EU',2011,'2013-09-13'),--Фургон промтоварный изотермический
(4,13,1,'м345оу58','X6FA8V6K4R2F13386','5E-L',2010,'2013-03-06'),--Тягач
(5,4,2,'с976са58','Z72A8S836D2F16877','D4-NM',2013,'2013-01-09'),--Фургон промтоварный изотермический
(6,8,2,'с876уа58','H38A8N846D2F13478','FF-FD',2013,'2013-04-03'),--Фургон промтоварный изотермический
(7,4,1,'м261оа58','R53A8C876D2F17873','KV-5B',2012,'2013-12-26'),--Тягач
(8,9,3,'с456са58','ZA6A8Y836D2F12776','NS-B9',2011,'2013-07-07'),--Фургон рефрижераторный
(9,5,4,'у276уа58','AJ2A8J876D2F17273','54-DH',2013,'2013-04-15'),--Цистерна
(10,11,4,'с876са75','BN8A8D866D2F14770','MJ-J4',2013,'2013-11-03'),--Цистерна
(11,2,3,'с876са58','55AA8H826D2F11377','N7-YE',2012,'2013-02-06'),--Фургон рефрижераторный
(12,3,3,'м956оа58','6WNA8G836D2F12873','GM-HB',2013,'2013-04-23'),--Фургон рефрижераторный
(13,2,2,'а926са48','2GTA8D836D2F13371','E4-4F',2013,'2013-05-17'),--Фургон промтоварный изотермический
(14,12,1,'с476уа58','7SEA8J838D2F14733','BN-BM',2012,'2013-06-24'),--Тягач
(15,5,1,'у606оа58','ZHBA8F846D2F15435','4R-JX',2013,'2013-07-02'),--Тягач
(16,9,4,'а176са58','B73A8H876D2F18459','V4-FN',2010,'2013-03-18')--Цистерна
Insert Into [Reisy] Values
(1,1,1,'г. Пенза, ул. Володарского 31','г. Пенза, ул. Пушкина 40','2013-07-01','2013-07-20',7,10000,1,0),
(2,2,2,'г. Заречный, пр. Победы 25','г. Заречный, ул. Зеленая 8','2013-07-05','2013-07-10',1,53200,1,0),
(3,3,3,'г. Пенза, ул. Ленина 16а','г. Сердобск, ул. Гагарина 28','2013-08-25','2013-09-10',2,33700,1,1),
(4,4,4,'г. Пенза, ул. Суворова 156','г. Кузнецк, ул. Ленина 7','2013-09-03','2013-09-13',1,15600,0,0),
(5,5,2,'г. Кузнецк, ул. Белинского 35','с. Чемодановка, ул. Заречная 3','2013-09-07','2013-09-12',1,17600,1,1),
(6,3,7,'г. Пенза, ул. Лермонтова 3','г. Пенза, ул. Чкалова 17','2013-08-21','2013-09-01',3,18600,1,0),
(7,5,3,'г. Заречный, ул. Комсомольская 1а','г. Кузнецк, ул. Октябрьская 69','2013-07-23','2013-07-29',1,43000,0,1),
(8,1,9,'г. Сердобск, ул. Комсомольская 9','г. Пенза, ул. Тельмана 25','2013-10-12','2013-10-13',1,59800,1,0),
(9,7,12,'г. Пенза, ул. Калинина 152','г. Пенза, ул. Тухачевского 58','2013-08-11','2013-09-01',2,23500,1,0),
(10,9,4,'г. Пенза, ул. Окружная 9','г. Сердобск, ул. Гоголя 96','2013-07-07','2013-07-23',11,67000,1,0),
(11,11,23,'г. Пенза, ул. Пушанина 12','г. Заречный, ул. Светлая 20','2013-08-03','2013-09-26',8,21000,1,1),
(12,12,13,'г. Кузнецк, ул. Пензенская 345','г. Кузнецк, ул. Победы 47','2013-09-08','2013-09-18',9,43100,0,0),
(13,6,18,'г. Пенза, ул. Сухумская 32','г. Пенза, ул. Измайлова 42','2013-07-03','2013-07-20',4,27700,1,0),
(14,15,19,'г. Пенза, ул. Санитарная 21','г. Пенза, ул. Ангарская 46','2013-08-06','2013-08-31',2,12400,1,0),
(15,3,8,'г. Пенза, ул. Кураева 10','г. Пенза, ул. Тарханова 7','2013-07-05','2013-07-16',4,36700,1,1),
(16,8,17,'г. Сердобск, ул. Калинина 21','г. Заречный, пр. Мира 17','2013-09-11','2013-09-24',6,55200,0,0),
(17,8,22,'г. Пенза, ул. Ставского 13','г. Кузнецк, ул. Правды 22','2013-10-26','2013-10-30',7,31600,0,0),
(18,5,27,'г. Пенза, ул. Карпинского 10а','г. Сердобск, ул. Циалковского 49','2013-10-22','2013-10-30',3,23300,1,0),
(19,2,1,'г. Кузнецк, ул. Орджоникидзе 212','г. Пенза, ул. Свободы 29','2013-09-06','2013-09-23',2,16000,1,0),
(20,11,24,'г. Пенза, ул. Фурманова 15','г. Пенза, ул. Урицкого 125','2013-08-03','2013-08-25',9,55200,1,0),
(21,13,25,'г. Сердобск, ул. Комарова 1','г. Заречный, ул. Строителей 47','2013-08-07','2013-08-13',13,31600,0,1),
(22,14,7,'г. Пенза, пр. Строителей 38','г. Пенза, ул. Суворова 121','2013-08-08','2013-08-19',12,20700,0,1),
(23,9,11,'г. Сердобск, ул. Гагарина 3','г. Сердобск, ул. Кирпичная 5','2013-07-04','2013-08-10',1,40700,1,0),
(24,5,19,'г. Пенза, ул. Рахманинова 49','г. Пенза, ул. Пушкина 128','2013-09-01','2013-09-13',5,15200,1,0),
(25,10,12,'г. Заречный, пр. Победы 22','г. Пенза, ул. Мира 6','2013-09-07','2013-09-12',13,53100,0,0),
(26,11,20,'г. Пенза, ул. Ладожская 83','г. Пенза, ул. Ленинградская 2','2013-10-03','2013-10-23',10,45600,1,0),
(27,16,9,'г. Заречный, ул. Конституции 41','г. Пенза, ул. Попова 50','2013-08-04','2013-08-20',13,25600,0,0),
(28,6,2,'г. Кузнецк, ул. Московская 35','г. Пенза, ул. Окружная 115б','2013-06-12','2013-07-03',4,55600,1,1),
(29,3,22,'г. Заречный, ул. Светлая 33','г. Кузнецк, ул. Ленина 271','2013-09-17','2013-09-24',5,25600,1,0)
Реализация запросов на языке SQL
(Обязательное)
--Простые запросы.
--Простые запросы.
--1. По Дате отправки рейса определить цены оплаченных рейсов.
SELECT Data_otpravki AS Дата, Cost AS "Цена" FROM Reisy WHERE Data_otpravki BETWEEN getdate()-70 AND getdate()
--2. По Номеру кузова определить дату последнего ТО.
SELECT Data_poslednego_TO AS "Дата последнего ТО" FROM Avto WHERE Nomer_kuzova = 'H38A8N846D2F13478'
--3. По ФИО заказчика определить его номер телефона.
SELECT Telephone AS "Телефон" FROM Zakazchiki WHERE FIO LIKE 'Филиппов%'
--Сложные запросы.
--4. По Дате отправки груза определить список ФИО заказчиков.
SELECT Data_otpravki AS Дата, FIO AS "ФИО" FROM Zakazchiki, Reisy WHERE Reisy.Kod_zakazchika_F=Zakazchiki.Kod_zakazchika AND Reisy.Data_otpravki BETWEEN getdate()-70 AND getdate()
--5. По Регистрационному номеру авто определить марку.
SELECT NAME_marka AS "Марка" FROM Marka_avto, Avto WHERE Avto.Kod_marki_F=Marka_avto.Kod_marki AND Avto.Reg_nomer='м345оу58'
--6. По Дате отправления определить виды грузов.
SELECT Data_otpravki AS Дата, NAME_vid_gruza AS "Вид груза" FROM Reisy,Gruzy,Vidy_gruzov WHERE Reisy.Kod_gruza_F=Gruzy.Kod_gruza AND Gruzy.Kod_vida_gruza_F=Vidy_gruzov.Kod_vida_gruza AND Reisy.Data_otpravki BETWEEN getdate()-70 AND getdate()
--7. По Грузу определить вид автомобиля для перевозки.
SELECT NAME_vid_avto AS "Вид автомобиля" FROM Gruzy,Vidy_gruzov, Vidy_avto WHERE Gruzy.Kod_vida_gruza_F=Vidy_gruzov.Kod_vida_gruza AND Vidy_gruzov.Kod_vida_avto_F=Vidy_avto.Kod_vida_avto AND Gruzy.NAME_gruz='Танк'
--8. По Цене рейса определить виды грузов.
SELECT NAME_vid_gruza AS "Вид груза", Cost AS Цена FROM Reisy,Gruzy,Vidy_gruzov WHERE Reisy.Kod_gruza_F=Gruzy.Kod_gruza AND Gruzy.Kod_vida_gruza_F=Vidy_gruzov.Kod_vida_gruza AND Reisy.Cost BETWEEN 10000 AND 30000
--9. По Адресу отправки определить название организации.
SELECT NAME_organization AS "Название организации",Kuda AS Адрес FROM Zakazchiki, Reisy WHERE Reisy.Kod_zakazchika_F=Zakazchiki.Kod_zakazchika AND Reisy.Kuda LIKE 'г. Заречный%'
--10. По Дате прибытия определить виды автомобилей.
SELECT Data_pribytiya AS Дата,NAME_vid_avto AS "Виды автомобилей" FROM Reisy, Avto, Vidy_avto WHERE Reisy.Kod_avto_F=Avto.Kod_avto AND Avto.Kod_vida_avto_F=Vidy_avto.Kod_vida_avto AND Reisy.Data_pribytiya BETWEEN getdate()-70 AND getdate()
Рис 10. Результаты запросов.
Реализация клиентского приложения на языке С++
(Обязательное)
//main.h
//---------------------------------------------------------------------------
#ifndef mainH
#define mainH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ADODB.hpp>
#include <DB.hpp>
#include <DBGrids.hpp>
#include <Grids.hpp>
#include <Buttons.hpp>
//---------------------------------------------------------------------------
#include "Avto.h"
#include "AvtoTable.h"
#include "Zakazchiki.h"
#include "ZakazchikiTable.h"
#include "Gruz.h"
#include "GruzTable.h"
#include "Reisy.h"
#include "MarkaTable.h"
#include "VidyAvtoTable.h"
#include "VidyGruzovTable.h"
#include "Statistic.h"
//---------------------------------------------------------------------------
class TFormMain : public TForm
{
__published: // IDE-managed Components
TADOConnection *ADOConnection1;
TADOQuery *ADOQuery1;
TDBGrid *DBGrid1;
TDataSource *DataSource1;
TBitBtn *BitBtnDelete;
TBitBtn *BitBtnAdd;
TBitBtn *BitBtnEdit;
TEdit *Edit_Kod_reisa;
TEdit *Edit_Reg_nomer;
TEdit *Edit_Zakazchik;
TEdit *Edit_Otkuda;
TEdit *Edit_Kuda;
TEdit *Edit_Data_otpravki;
TEdit *Edit_Data_pribytiya;
TEdit *Edit_Gruz;
TEdit *Edit_Cost;
TButton *ButtonSearch;
TButton *ButtonCancel;
TButton *ButtonClear;
TBitBtn *BitBtnAvtoTable;
TBitBtn *BitBtnZakazchiki;
TBitBtn *BitBtnGruzTable;
TBitBtn *BitBtnVidyAvtoTable;
TBitBtn *BitBtnMarkaTable;
TBitBtn *BitBtnVidyGruzivTable;
TADOStoredProc *ADOStoredProcDefaultSize;
TBitBtn *BitBtn1;
void __fastcall DBGrid1DrawColumnCell(TObject *Sender, const TRect &Rect, int DataCol,
TColumn *Column, TGridDrawState State);
void __fastcall DBGrid1CellClick(TColumn *Column);
void __fastcall ButtonSearchClick(TObject *Sender);
void __fastcall ButtonCancelClick(TObject *Sender);
void __fastcall ButtonClearClick(TObject *Sender);
void __fastcall BitBtnDeleteClick(TObject *Sender);
void __fastcall BitBtnAddClick(TObject *Sender);
void __fastcall BitBtnEditClick(TObject *Sender);
void __fastcall BitBtnAvtoTableClick(TObject *Sender);
void __fastcall BitBtnZakazchikiClick(TObject *Sender);
void __fastcall BitBtnGruzTableClick(TObject *Sender);
void __fastcall BitBtnMarkaTableClick(TObject *Sender);
void __fastcall BitBtnVidyAvtoTableClick(TObject *Sender);
void __fastcall Edit_Kod_reisaKeyDown(TObject *Sender, WORD &Key, TShiftState Shift);
void __fastcall BitBtnVidyGruzivTableClick(TObject *Sender);
void __fastcall BitBtn1Click(TObject *Sender);
private: // User declarations
int *defaultSize,n_defaultSize;
void __fastcall DBGrid_Default_setting();
public: // User declarations
__fastcall TFormMain(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TFormMain *FormMain;
//---------------------------------------------------------------------------
#endif
//main.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFormMain *FormMain;
//---------------------------------------------------------------------------
__fastcall TFormMain::TFormMain(TComponent* Owner)
: TForm(Owner)
{
ADOConnection1->Connected=1;
ADOQuery1->Active=1;
// 0-й параметр ReturnValue
ADOStoredProcDefaultSize->Parameters->Refresh();
n_defaultSize=ADOStoredProcDefaultSize->Parameters->Count-1;
for(int i=0;i<n_defaultSize+1;i++)
{
ADOStoredProcDefaultSize->Parameters->Items[i]->Value=0;
}
ADOStoredProcDefaultSize->ExecProc();
defaultSize=new int[n_defaultSize];
for(int i=0;i<n_defaultSize;i++)
{
defaultSize[i]=ADOStoredProcDefaultSize->Parameters->Items[i+1]->Value;
}
delete ADOStoredProcDefaultSize;
DBGrid_Default_setting();
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::DBGrid1DrawColumnCell(TObject *Sender, const TRect &Rect,
int DataCol, TColumn *Column, TGridDrawState State)
{
if(Column->Field->DataSet->FieldByName("Отметка об оплате")->AsBoolean==0)
{
DBGrid1->Canvas->Brush->Color = clSilver;
}
else
{
DBGrid1->Canvas->Brush->Color = (TColor)RGB(190,255,150);
}
if(Column->Field->DataSet->FieldByName("Отметка о возврате")->AsBoolean==1)
{
DBGrid1->Canvas->Brush->Color = (TColor)RGB(250,200,90);
}
if(Column->FieldName=="Заказчик" || Column->FieldName=="Номер автомобиля" || Column->FieldName=="Груз")
{
DBGrid1->Canvas->Font->Color = clBlue;
DBGrid1->Canvas->Font->Style = TFontStyles() << fsUnderline;
}
DBGrid1->DefaultDrawColumnCell(Rect, DataCol, Column, State);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::DBGrid1CellClick(TColumn *Column)
{
if(Column->FieldName=="Номер автомобиля")
{
TForm2 *Form2=new TForm2(this,ADOConnection1,3,ADOQuery1->Fields->Fields[9]->AsInteger);
Form2->ShowModal();
delete Form2;
}
else if(Column->FieldName=="Заказчик")
{
TForm3 *Form3=new TForm3(this,ADOQuery1->Fields->Fields[10]->AsInteger,ADOConnection1);
Form3->ShowModal();
delete Form3;
}
else if(Column->FieldName=="Груз")
{
TForm4 *Form4=new TForm4(this,ADOQuery1->Fields->Fields[11]->AsInteger,ADOConnection1);
Form4->ShowModal();
delete Form4;
}
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ButtonSearchClick(TObject *Sender)
{
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(System::String("")+
"EXEC SearchReisy '"+
Edit_Kod_reisa->Text+"','"+
Edit_Reg_nomer->Text+"','"+
Edit_Zakazchik->Text+"','"+
Edit_Otkuda->Text+"','"+
Edit_Kuda->Text+"','"+
Edit_Data_otpravki->Text+"','"+
Edit_Data_pribytiya->Text+"','"+
Edit_Gruz->Text+"','"+
Edit_Cost->Text+"'"
);
ADOQuery1->Open();
DBGrid_Default_setting();
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::DBGrid_Default_setting()
{
for(int i=0;i<n_defaultSize;i++)
{
if(defaultSize[i]) DBGrid1->Columns->Items[i]->Width=defaultSize[i];
else DBGrid1->Columns->Items[i]->Visible=0;
}
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ButtonCancelClick(TObject *Sender)
{
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("EXEC SelectReisy");
ADOQuery1->Open();
DBGrid_Default_setting();
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ButtonClearClick(TObject *Sender)
{
Edit_Kod_reisa->Text="";
Edit_Reg_nomer->Text="";
Edit_Zakazchik->Text="";
Edit_Otkuda->Text="";
Edit_Kuda->Text="";
Edit_Data_otpravki->Text="";
Edit_Data_pribytiya->Text="";
Edit_Gruz->Text="";
Edit_Cost->Text="";
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::BitBtnDeleteClick(TObject *Sender)
{
int kod_reisa=ADOQuery1->Fields->Fields[0]->AsInteger;
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(System::String("")+"EXEC DeleteReisy "+kod_reisa);
ADOQuery1->ExecSQL();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("EXEC SelectReisy");
ADOQuery1->Open();
DBGrid_Default_setting();
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::BitBtnAddClick(TObject *Sender)
{
TForm5 *Form5=new TForm5(this,ADOConnection1,1);
Form5->ShowModal();
delete Form5;
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("EXEC SelectReisy");
ADOQuery1->Open();
DBGrid_Default_setting();
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::BitBtnEditClick(TObject *Sender)
{
TForm5 *Form5=new TForm5(this,ADOConnection1,2,ADOQuery1->Fields->Fields[0]->AsInteger);
Form5->ShowModal();
delete Form5;
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("EXEC SelectReisy");
ADOQuery1->Open();
DBGrid_Default_setting();
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::BitBtnAvtoTableClick(TObject *Sender)
{
TForm6 *Form6=new TForm6(this,ADOConnection1);
Form6->ShowModal();
delete Form6;
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::BitBtnZakazchikiClick(TObject *Sender)
{
TForm7 *Form7=new TForm7(this,ADOConnection1);
Form7->ShowModal();
delete Form7;
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::BitBtnGruzTableClick(TObject *Sender)
{
TForm8 *Form8=new TForm8(this,ADOConnection1);
Form8->ShowModal();
delete Form8;
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::BitBtnMarkaTableClick(TObject *Sender)
{
TForm9 *Form9=new TForm9(this,ADOConnection1);
Form9->ShowModal();
delete Form9;
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::BitBtnVidyAvtoTableClick(TObject *Sender)
{
TForm10 *Form10=new TForm10(this,ADOConnection1);
Form10->ShowModal();
delete Form10;
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::Edit_Kod_reisaKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
if(Key==13)
{
ButtonSearchClick(Sender);
}
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::BitBtnVidyGruzivTableClick(TObject *Sender)
{
TForm11 *Form11=new TForm11(this,ADOConnection1);
Form11->ShowModal();
delete Form11;
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::BitBtn1Click(TObject *Sender)
{
TFormStat *Form=new TFormStat(this,ADOConnection1);
Form->ShowModal();
delete Form;
}
//---------------------------------------------------------------------------
Результаты работы хранимых процедур
(Обязательное)
EXEC SearchReisy `',`',`на', `', `', `', `', `', `'
Рис 10. Результат работы процедуры SearchReisy с параметром ФИО "на".
EXEC SelectReisy
Рис 11. Результат работы процедуры SelectReisy.
EXEC DefaultSizeReisy
@st0 = @st0 OUTPUT,@st1 = @st1 OUTPUT,@st2 = @st2 OUTPUT,
@st3 = @st3 OUTPUT,@st4 = @st4 OUTPUT,@st5 = @st5 OUTPUT,
@st6 = @st6 OUTPUT,@st7 = @st7 OUTPUT,@st8 = @st8 OUTPUT,
@st9 = @st9 OUTPUT,@st10 = @st10 OUTPUT,@st11 = @st11 OUTPUT,
@st12 = @st12 OUTPUT, @st13 = @st13 OUTPUT
Рис 12. Результат работы процедуры DefaultSizeReisy.
EXEC MyStatistics
@kol_reysov = @kol_reysov OUTPUT,
@avg_reysov = @avg_reysov OUTPUT,
@kol_zakaz = @kol_zakaz OUTPUT,
@kol_avto = @kol_avto OUTPUT,
@kol_reysov_paid = @kol_reysov_paid OUTPUT,
@kol_reysov_not_paid = @kol_reysov_not_paid OUTPUT,
@kol_reysov_return = @kol_reysov_return OUTPUT,
@cost_reysov_paid = @cost_reysov_paid OUTPUT,
@cost_reysov_not_paid = @cost_reysov_not_paid OUTPUT,
@cost_reysov_return = @cost_reysov_return OUTPUT
Рис 13. Результат работы процедуры MyStatistic.
EXEC DeleteReis 5
Рис 14. Результат работы процедуры DeleteReis с параметром 5.
Размещено на Allbest.ru
...Подобные документы
Анализ предметной области. Выработка требований и ограничений. Серверная часть информационной системы. Запросы клиентского приложения. Триггеры для поддержки сложных ограничений целостности в базе данных. Пользовательский интерфейс клиентского приложения.
курсовая работа [2,6 M], добавлен 21.02.2016Системный анализ предметной области. Выбор инструментальных средств для создания программного обеспечения. Программирование на стороне SQL-сервера. Создание клиентского Win-приложения, пользовательский интерфейс. Физическое проектирование базы данных.
курсовая работа [3,7 M], добавлен 20.11.2013Проектирование физической и логической моделей удаленной базы данных для АЗС. Разработка базы данных в СУБД Firebird с помощью утилиты IBExpert. Создание клиентского приложения для Windows с использованием клиент-серверной технологии в среде C++ Builder.
курсовая работа [3,9 M], добавлен 18.01.2017Реализация базы данных и серверной части информационной системы склада средствами СУБД Microsoft SQL Server. Анализ предметной области, информационных задач, пользовательской системы. Программа реализации проекта. Выработка требований и ограничений.
курсовая работа [2,4 M], добавлен 15.11.2015Разработка информационной системы "Библиотека Дорам" в архитектуре клиент - сервер; управление реляционными базами данных (СУБД) Microsoft SQL Server. Визуальная среда программирования и технические средства. Разработка структурированного приложения.
курсовая работа [3,2 M], добавлен 12.01.2010Программные средства для реализации базы данных и серверной части информационной системы "Учета технического обслуживания станков" средствами СУБД Microsoft SQL Server 2008. Разработка триггеров для поддержки сложных ограничений целостности в базе данных.
курсовая работа [768,3 K], добавлен 01.02.2013Разработка базы данных для информационной системы "Библиотека". Системный анализ, инфологическое, даталогическое и физическое проектирование. Программирование бизнес-логики, разработка клиентского приложения. Создание web-приложения, web-доступ.
курсовая работа [3,3 M], добавлен 15.09.2014Архитектура "клиент-сервер". Системный анализ базы данных "Газета объявлений", ее инфологическое и физическое проектирование. Программирование на стороне SQL-сервера. Разработка клиентской части в Borland C++ Builder 6.0 и с помощью Web-технологий.
курсовая работа [1,3 M], добавлен 07.07.2013Реализация информационной системы "Стройгенплан" в архитектуре "клиент-сервер". Цели и задачи моделируемой информационной системы, ее функциональная и информационная модели. Описание программного обеспечения, разработанного в архитектуре "клиент-сервер".
курсовая работа [1,9 M], добавлен 30.08.2010Разработка программного приложения для автоматизации рабочего места кладовщика на центральном складе предприятия. Решение задачи создания клиент-серверной архитектуры базы данных в среде программирования Delphi 7 и Interbase для "Windows 9X(NT)".
дипломная работа [1,8 M], добавлен 19.06.2012Основные компоненты системы и управление ими. Распределенная система управления и человеко-машинный интерфейс. Инструментарий для создания OPC-серверов и OPC-клиентов. Техническое руководство для администраторов, обслуживающих OPC-клиент и веб-сервер.
дипломная работа [2,0 M], добавлен 20.10.2011Разработка программы для работы с базой данных "Библиотека" в среде Borland C++Builder 6 на языке программирования C++ с использованием визуальных средств. Структура информации, подключение к ней и ее отображение. Описание пользовательского интерфейса.
курсовая работа [1,5 M], добавлен 19.05.2014Обоснование выбора языков разметки гипертекста HTML и стилей CSS. Описание архитектуры клиент-сервер. Разработка базы данных средствами структурированного языка запросов SQL. Пользовательский интерфейс и руководство пользователя для работы с программой.
курсовая работа [2,1 M], добавлен 16.04.2017Тестирование сервера с помощью хранимых процедур MS SQL SERVER 8.0. Разработка триггеров и хранимых процедур для базы формата Dbase IV, программное обеспечение в среде Borland C++ Builder, обеспечивающее работу с ней. Двухуровневая модель "Клиент-Сервер".
курсовая работа [1,2 M], добавлен 07.07.2011Реализация программного кода "Organizer 1.0". Разработка приложений баз данных с помощью Borland C++ Builder 6. Компоненты системы программирования для работы по технологии InterBase. Программный код и интерфейс "Organizer 1.0", структура приложения.
курсовая работа [466,9 K], добавлен 28.07.2009Проектирование и разработка базы данных в РСУБД Firebird. Последовательность создания приложения, основанного на клиент-серверной технологии и работающего в операционной системе Windows. Хранимые процедуры и триггеры. Доступ к сети и транзакции.
курсовая работа [2,6 M], добавлен 27.07.2013Многоуровневые архитектуры клиент–сервер. Диаграммы классов, реализующих уровни презентации, бизнес–логики и базы данных приложения. Словесное описание процесса выполнения транзакций. Создание, изменение и удаление хранимых процедур, их выполнение.
курсовая работа [3,4 M], добавлен 23.03.2013Составление модели взаимодействия клиент-сервер. Логические уровни типического приложения: пользовательский интерфейс, логика приложения и доступ к данным, работающий с базой данных. Требования к распределительным системам и понятие промежуточной среды.
реферат [183,1 K], добавлен 15.11.2011Информационные задачи и круг пользователей системы. Выработка требований и ограничений. Разработка проекта базы данных. Программная реализация проекта базы данных. Разработка хранимых процедур для поддержки сложных ограничений целостности в базе данных.
курсовая работа [706,2 K], добавлен 17.06.2012Реляционные базы данных как часть корпоративных информационных систем, их построение по принципам клиент-серверной технологии. Основные характеристики СУБД Firebird. Проектирование базы данных для информационной системы "Компьютерные комплектующие".
курсовая работа [1,9 M], добавлен 28.07.2013