Автор работы: Пользователь скрыл имя, 11 Декабря 2012 в 22:17, курсовая работа
Система автоматизации деятельности частной строительной фирмы “Ручей” предназначена для унификации и систематизации данных о клиентах , персонале и фирмы, проведенных работах, планирования работы, прием заказов, анализа и мониторинга деятельности строительной фирмы её руководством.
В последнее время в крупных фирмах внедрены или внедряются новые информационные технологии, позволяющие переходить от документов и карточек в бумажном виде к документации в электронном виде, использовать компьютеры в информационном обеспечении, что позволяет значительно сократить время поиска необходимой информации или регистрации клиентов, а также позволяет повысить качество обслуживания заказчиков, что немаловажно в условиях высочайшей конкуренции на рынке услуг.
As
Select /*Указываем, какие поля будут выведены*/
услуги.Номер_услуги,услуги.
From услуги /*Из какой таблицы*/
where услуги.Стоимость_услуги <=(select avg(Стоимость_услуги) From услуги) /*Выбор услуги, где стоимость меньше либо равна средней стоимости услуг*/
/*12. Вывод информации о заказах, которые зданы*/
CREATE VIEW Заказы_которые_зданы /*Указываем имя представления*/
AS
SELECT /*Указываем, какие поля будут выведены*/
заказы.Номер_заказа,
заказы.Адрес_объекта, заказы.
FROM заказы /*Из какой таблицы*/
WHERE заказы.Дата_здачи< Getdate()/*Выбор заказа у которого срок здачи меньше текущей даты*/
/*13. Вывод информации о заказах, которые будут зданы через 30 дней*/
CREATE VIEW Объекты_которые_будут_зданы_
AS
SELECT /*Указываем, какие поля будут выведены*/
заказы.Номер_заказа, заказы.Адрес_объекта, заказы.Дата_здачи
FROM заказы /*Из какой таблицы*/
WHERE заказы.Дата_здачи<DateAdd(day,
/*14. Вывод информации о клиентах,у которых заказ более 60 дней*/
CREATE VIEW Клиенты_с_заказом_больше_60_
AS
SELECT /*Указываем, какие поля будут выведены*/
клиенты.Номер_клиента,клиенты.
FROM клиенты /*Из какой таблицы*/
WHERE DateDiff(day,клиенты.Дата_
/*15. Вывод информации о клиентах*/
CREATE VIEW Информация_о_клиентах /*Указываем имя представления*/
AS
SELECT /*Указываем, какие поля будут выведены*/
клиенты.Номер_клиента,клиенты.
День=Day( клиенты.Дата_заказа),Месяц=
FROM клиенты /*Из какой таблицы*/
3.2 T-SQL-определения триггеров
/*2. Триггер, который
записывает при добавлении
CREATE TRIGGER proverka_Uslugi /*Обьявляем имя триггера*/
ON услуги /*Указываем имя таблицы, с которой будет связан триггер*/
FOR INSERT/*Указываем операцию, на которую будет срабатывать триггер
(на вставку)*/
AS
INSERT INTO
/* вставка записи в таблицу TrUskugi */
TrUskugi(Номер_услуги,Услуга,
добавления)
/* выбираем, какие записи вставить в таблицу */
SELECT Номер_услуги,Услуга,Стоимость_
SYSTEM_USER,
getdate()
FROM inserted
/*Перед созданием такого триггера необходимо создать таблицу TrUskugi,
куда будет производится запись:*/
CREATE TABLE TrUskugi /*Обьявляем имя таблицы*/ (
[Номер_услуги][int] NULL , /*Обьявляем полей таблицы*/
[Услуга] [varchar](20) NOT NULL , /*Обьявляем полей таблицы*/
[Стоимость_услуги][int] NULL , /*Обьявляем полей таблицы*/
[Имя_пользователя] [varchar] (50) NULL , /*Обьявляем полей таблицы*/
[Дата_добавления] [datetime] NULL /*Обьявляем полей таблицы*/
) ON [PRIMARY]
Аналагичные хранимые процедуры:
proverka_Sakazi 3 - Триггер, который записывает при добавлении записей в таблицу «заказы» в отдельную таблицу информацию о дате добавления, пользователе.
proverka_Postav 4 - Триггер, который записывает при добавлении записей в таблицу «поставщики» в отдельную таблицу информацию о дате добавления, пользователе.
proverka_Mater 5 - Триггер, который записывает при добавлении записей в таблицу «услуги» в отдельную таблицу информацию о дате добавления, пользователе.
/*1. Триггер, запрещающий
ввод значения в поле «дата_
Заказы если оно превышает номер текущего года.*/
create TRIGGER proverka_Clientov/*Обьявляем имя триггера*/
ON клиенты/*Указываем имя таблицы, с которой будет связан триггер*/
FOR INSERT
AS
DECLARE @@t int/*Объявляем переменную*/
Set @@t=5/*Инициализируем переменную*/
IF NOT EXISTS (SELECT * FROM клиенты, inserted
WHERE клиенты.Дата_заказа = inserted.Дата_заказа) /*Проверка разницы
между текущей датой и датой рождения заказа*/
Set @@t=0
IF EXISTS (SELECT * FROM клиенты, inserted
WHERE inserted.Дата_заказа>GETDATE()
Set @@t=0 /*Если условие выполняется, то обнуляем переменную*/
If @@t=0/*Если ошибка*/
BEGIN
PRINT 'Неверно введена дата заказа'
ROLLBACK TRANSACTION
END
/*6. Триггер, который записывает при удаление записей из таблицы «услуги» в отдельную таблицу информацию об удаленных записях.*/
CREATE TRIGGER T_uslugi_1
ON услуги /*Связываем с таблицей*/
FOR DELETE
AS
INSERT INTO uslugi_ud /*Указываем
таблицу, куда будет
запись*/
(Номер_услуги,Услуга,
SELECT /*Перечисляем вносимые значения*/
Номер_услуги,Услуга,Стоимость_
FROM deleted /*deleted – временная
таблица, куда заносятся
данные*/
/*Перед созданием такого триггера необходимо создать таблицу
sotrudnik_ud, куда будет производится запись:*/
CREATE TABLE sotrudnik_ud (
[Номер_услуги][int] NULL ,
[Услуга] [varchar](20) NOT NULL ,
[Стоимость_услуги][int] NULL
) ON [PRIMARY]
Аналагичные хранимые процедуры:
T_zakazy_1 7 - Триггер, который записывает при удаление записей из таблицы «заказы» в отдельную таблицу информацию об удаленных записях.
T_postavchik_1 8 - Триггер, который записывает при удаление записей из таблицы «поставщики» в отдельную таблицу информацию об удаленных записях.
T_material_1 9 - Триггер, который записывает при удаление записей из таблицы «материалы» в отдельную таблицу информацию об удаленных записях.
T_sotrudnik_1 10- Триггер, который записывает при удаление записей из таблицы «сотрудники» в отдельную таблицу информацию об удаленных записях.
3.3. T-SQL-определения хранимых процедур
/*1. Вставка в таблицу Клиенты.*/
Create PROCEDURE VstavkaKlienti /*Обьявляем имя хранимой
процедуры*/
(
@nom int, /*Обьявляем полей таблицы*/
@datzakaz datetime, /*Обьявляем полей таблицы*/
@fio varchar(150) /*Обьявляем полей таблицы*/
)
AS INSERT INTO клиенты VALUES (@nom, @datzakaz , @fio);
/*Производим вставку клиента в таблицу*/
Аналагичные хранимые процедуры:
VstavkaMaterial 3- Вставка в таблицу Материалы
VstavkaPostavchik 4- Вставка в таблицу Поставщики
VstavkaSotr 5- Вставка в таблицу Сотруники
VstavkaUslugi 2- Вставка в таблицу Услуги
/*6. Удаление Клиентов из таблицы Клиенты по номеру .*/
create PROCEDURE DeleteKlient/*Обьявляем имя хранимой процедуры*/
@number int/*Индификация поля по которому будет производится
удаления*/
AS
IF not EXISTS (SELECT * FROM услуги_клиенты WHERE
Номер_клиента=@number)
DELETE
FROM клиенты
WHERE
Номер_клиента=@number /*Поля для в вода клиента*/
Аналагичные хранимые процедуры:
DeleteMaterial 8- Удаление Материалов из таблицы Материалы по номеру
DeletePost 9- Удаление Поставщика из таблицы Поставщики по его номеру
DeleteSotr 10- Удаление Сотрудника из таблицы сотрудники по его номеру
табельному номеру
DeleteUslugi 7- Удаление услуги по ее номеру
/*11. Обновление таблицы
Сотрудники по ид_номеру
create PROCEDURE UpdateSotr/*Обьявляем имя хранимой процедуры*/
@nom int, /*Индификация поля по которому будет производится
удаления*/
@st int/*Индификация поля по которому будет производится удаления*/
AS
IF EXISTS (SELECT * FROM Сотрудники WHERE
Табельный_номер=@nom)
UPDATE Сотрудники
SET Оклад=@st /*Имя поля которое будем менять*/
WHERE Табельный_номер=@nom/*Имя поля по которому будет
производится выборка*/
Аналагичные хранимые процедуры:
UpdateBrig 12- Обновление таблицы Бригады по номеру бригады меняем
количество человек
UpdateKlient 13- Обновление таблицы Клиенты по номеру клиента меняем
отсветственное лицо
UpdateSakaz 14- Обновление таблицы Заказаы по номеру заказа меняем
дату заказа
UpdateUslug 15- Обновление таблицы Услуги по табельный номер
сотрудника меняем оклад
/*16.Вывод информации о сотрудниках.*/
create PROCEDURE VivodSotr/*Обьявляем имя хранимой процедуры*/
@nom int/*Индификация поля по которому будет производится удаления*/
AS
SELECT
Сотрудники.Табельный_номер,
Сотрудники.Номер_бригады,
которые будут показаны в отчете*/
FROM Бригады,Сотрудники
WHERE (Табельный_номер=@nom) AND (Сотрудники.Номер_бригады
=Бригады.Номер_бригады) /*Связывание двух таблиц по полям и выборка
по номеру*/
Аналагичные хранимые процедуры:
VivodKlient 18 - Выводит по номеру клиента информацию о клиенте из
таблицы Клиенты
VivodPost 19- Выводит по номеру поставщика информацию о поставщике
из таблицы Поставщики
VivodMater 20- Выводит по номеру материала информацию о материале из
таблицы Материалы
/*17.Вывод информации о заказах по дате заказа.*/
create PROCEDURE VivodSakaz/*Обьявляем имя хранимой процедуры*/
@dat datetime/*Индификация поля по которому будет производится
удаления*/
AS
SELECT
заказы.Номер_заказа,заказы.
ги.Услуга,услуги.Стоимость_
в отчете*/
FROM заказы,услуги_заказы,услуги
WHERE (Дата_здачи=@dat) AND (заказы.Номер_заказа
=услуги_заказы.Номер_заказа)
AND (услуги_заказы.Номер_услуги
=услуги.Номер_услуги) /*Связывание двух таблиц по полям и выборка по
дате здачи объекта*/
1./*Курсор для просмотра списка клиентов и подсчёт их количества*/
DECLARE infklient CURSOR
GLOBAL /*Создается глобальный курсор, который будет существовать до
закрытия данного соединения*/
SCROLL /*Создает прокручиваемый курсор*/
KEYSET /*Будет создан ключевой курсор*/
TYPE_WARNING
FOR
SELECT/*Какие поля будут показаны в курсоре*/
клиенты.Номер_клиента,клиенты.
Ответственное_лицо
FROM клиенты /*Из какой таблицы выбираются данные*/
FOR READ ONLY /*Только для чтения*/
open global infklient /*открываем глобальный курсор*/
FETCH NEXT FROM infklient
DECLARE /*объявляем переменную*/
@@Count int
SET @@Count =@@CURSOR_ROWS /*присваиваем ей число рядов
курсора*/
Select @@Count /*выводим результат на экран*/
CLOSE infklient /*закрываем курсор*/
DEALLOCATE infklient/*освобождаем курсор*/
2./*Курсор для просмотра списка сотрудников и их табельного номера*/
DECLARE udalSotrudnik CURSOR
GLOBAL/*Создается глобальный курсор, который будет существовать до
закрытия данного соединения*/
SCROLL /*Создает прокручиваемый курсор*/
KEYSET /*Будет создан ключевой курсор*/
TYPE_WARNING /* сервер будет информировать пользователя о
неявном изменении типа курсора, если он несовместим с запросом
SELECT */
FOR
SELECT/*Какие поля будут показаны в курсоре*/
sotrudnik_ud.Табельный_номер,
sotrudnik_ud.Номер_бригады,
sotrudnik_ud.ФИО,
sotrudnik_ud.Номер_паспорта,
sotrudnik_ud.Должность,
sotrudnik_ud.Оклад,
sotrudnik_ud.Адрес,
sotrudnik_ud.Стаж,
sotrudnik_ud.Номер_соц_
FROM sotrudnik_ud/*Из какой таблицы выбираются данные*/
ORDER BY sotrudnik_ud.Табельный_номер DESC
FOR READ ONLY /*Только для чтения*/
open global udalSotrudnik/*открываем глобальный курсор*/
FETCH udalSotrudnik
CLOSE udalSotrudnik /*закрываем курсор*/
DEALLOCATE udalSotrudnik /*освобождаем курсор*/
3./*Курсор для удаления записи из “Медицинская карта пациента”*/
DECLARE udalmaterial CURSOR
LOCAL SCROLL KEYSET
FOR SELECT /* что будет показано в курсоре */
материалы.Код_материала,матери
материалы.Наименование_
FROM материалы
FOR UPDATE
open udalmaterial
DECLARE
@@Код_материала varchar(50),
/*Объявляем необходимые
@@Стоимость_материалов int,
@@Наименование_материала varchar(50),
@@Количество_материала int,
@@Count int
SET @@Count = 0
WHILE @@Count < @@CURSOR_ROWS
BEGIN
SET @@Код_материала = ' '
SET @@Стоимость_материалов = ' '
SET @@Наименование_материала = ' '
SET @@Количество_материала= ' '
SET @@Count = @@Count + 1
END
CLOSE udalmaterial /*закрываем курсор*/
DEALLOCATE udalmaterial /* освобождаем курсор */
4.DECLARE infMaterial CURSOR
GLOBAL SCROLL KEYSET TYPE_WARNING
FOR SELECT
материалы.Код_материала,
материалы.Наименование_
FROM материалы
FOR READ ONLY
open global infMaterial
FETCH NEXT FROM infMaterial /*просматриваем*/
DECLARE
@@Count int
SET @@Count =@@CURSOR_ROWS
Select @@Count
CLOSE infMaterial
DEALLOCATE infMaterial
5.DECLARE @ИД_поставщика_1 VARCHAR(50),
@Название_организации_1 VARCHAR(50),
@message VARCHAR(80)
DECLARE postavchik_cursor CURSOR LOCAL FOR
SELECT ИД_поставщика, Название_организации
FROM поставщики
WHERE ИД_поставщика ='101'
ORDER BY ИД_поставщика, Название_организации
OPEN postavchik_cursor
FETCH NEXT FROM postavchik_cursor INTO
@ИД_поставщика_1,@Название_
WHILE @@FETCH_STATUS=0
BEGIN
SELECT @message=@ИД_поставщика_1+ @Название_организации_1
Информация о работе Проектирование многопользовательской информационной системы