Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Содержание Станчик.doc
Скачиваний:
7
Добавлен:
01.04.2025
Размер:
2 Мб
Скачать
☆

1. Вывод информации о блюдах при условии, что калорийность больше 800 ккал, а стоимость больше 30000р.

CREATE VIEW bluda2

AS

SELECT name_bluda, vremya_prigotovleniya, stoimost

FROM bluda

WHERE kalorinost>800 and stoimost>30000

2. Вывод информацию о блюдах, которые заказал клиент в определенный день.

CREATE VIEW NameBluda

AS

SELECT Bluda.name_bluda, Zakaz.data_zakaza, Klienti.familia

FROM Bluda, Zakaz, Klienti

WHERE (Bluda.kod_bluda=Zakaz.kod_bluda and

Klienti.kod_klienta=Zakaz.kod_klienta and name_bluda='Роллы')

3. Вывод информации о блюдах, название которых уже прописано.

CREATE VIEW ViborBlud

AS

SELECT Bluda.name_bluda, Bluda.sostav_bluda, Bluda.ves

FROM Bluda

WHERE name_bluda IN ('Зефир','Канапе','Пицца','Ситро', 'Оладьи')

4. Вывод информации о блюдах вида «Салаты», с условием, что стоимость больше 20000.

CREATE VIEW VidBlud

AS

SELECT Vid_bluda.name_vida, Bluda.name_bluda, Bluda.stoimost

FROM Bluda, Vid_bluda

WHERE Vid_bluda.kod_vida=Bluda.kod_vida and stoimost>20000 and name_vida='Салаты'

5. Вывод информации о работнике, который выполнял заказы в определенный день.

CREATE VIEW Zakaz3

AS

SELECT Personal.familia, Personal.imya, Zakaz.data_zakaza,

Zakaz.kolichestvo_blud

FROM Personal, Zakaz

WHERE Personal.kod_rabotnika=Zakaz.kod_rabotnika and data_zakaza between '01/12/2013' and '01/13/2013'

6. Вывод информации о должности работника, оклад которого больше 2000000, а дата рождения находится в рамках от 06.12.1988 до 02.19.1990.

CREATE VIEW Personal2

AS

SELECT Dolshnosti.name_dolshnosti,Dolshnosti.oklad,

Personal.familia,Personal.imya, Personal.data_roshdeniya

FROM Dolshnosti, Personal

WHERE Dolshnosti.kod_dolshnosti=Personal.kod_dolshnosti and

oklad>2000000 and data_roshdeniya between '06/12/1988' and '02/19/1990'

7. Вывод информации о должности определенного названия.

CREATE VIEW NameDolshnosti2

AS

SELECT Dolshnosti.name_dolshnosti, Dolshnosti.vipoln_funkcii

FROM Dolshnosti

WHERE name_dolshnosti IN ('Официант','Повар')

8. Вывод информации о клиентах, фамилия которых содержит частицу «ин».

CREATE VIEW KusokSlova

AS

SELECT *

FROM Klienti

WHERE familia LIKE '%ин%'

9. Вывод информации о клиентах, фамилия которых начинается на букву, которая находится в диапазоне от "А" до "Г".

CREATE VIEW FamiliaKlienta

AS

SELECT familia

FROM Klienti

WHERE familia between 'А' and 'Г'

10. Вывод информации о работнике, который проживает по определенному адресу.

CREATE VIEW AdresPersonala

AS

SELECT Personal.familia, Personal.imya, Personal.adres

FROM Personal

WHERE adres in ('г. Бобруйск','г. Осиповичи')

    1. T-SQL-определения триггеров

1. blud1 срабатывает при вставке или обновлении записи в таблице «Блюда». Он проверяет на корректность вставленные поля таблицы. В случае ошибки записи изменены не будут.

Create Trigger tIU_Blud1

ON Bluda

FOR INSERT, UPDATE

AS

BEGIN

IF EXISTS(Select name_bluda From inserted WHERE name_bluda IS NULL)

BEGIN

RAISERROR('Введите название блюда', 16,10)

ROLLBACK TRANSACTION

END

End

2. bluda2 запрещает удалять из таблицы «Блюда» запись, если стоимость блюда меньше 10000 р. В случае ошибки записи изменены не будут.

Create Trigger tIU_Bluda2

ON Bluda

AFTER DELETE

AS

BEGIN

IF (Select stoimost From deleted) < 10000

BEGIN

RAISERROR('Нельзя удалить с низкой стоимостью', 16,10)

ROLLBACK TRANSACTION

END

End

3. dolshnosti срабатывает при вставке нового элемента в таблицу «Должности». Триггер проверяет поля название должности, оклад и выполняемые функции. Если хотя бы одно из них остается не заполненным, то программа выдает ошибку;

CREATE TRIGGER tIU_Dolshnosti

ON Dolshnosti

FOR INSERT, UPDATE

AS

BEGIN

IF Exists(Select name_dolshnosti From inserted Where name_dolshnosti IS NULL)

BEGIN

RAISERROR('Поле с наименованием не может быть пустым', 16,10)

ROLLBACK TRANSACTION

END

IF (Select oklad From inserted) is NULL

BEGIN

RAISERROR('Оклад не может быть нулевым', 16,10)

ROLLBACK TRANSACTION

END

IF EXISTS (Select vipoln_funkcii From inserted Where vipoln_funkcii IS NULL)

BEGIN

RAISERROR('Поле с выполняемыми функциями не может быть пустым', 16,10)

ROLLBACK TRANSACTION

END

END

4. klienti запрещает удалять из таблицы «Клиенты» запись, если скидка у клиента на весь ассортимент блюд в данном кафе меньше 10.

CREATE TRIGGER tIU_Klienti

ON Klienti

AFTER DELETE

AS

BEGIN

IF (Select skidki From deleted) < 10

BEGIN

RAISERROR('Скидка меньше 10', 16,10)

ROLLBACK TRANSACTION

END

End

5. personal срабатывает при вставке нового элемента в таблицу «Персонал». Триггер проверяет поле adres. Если оно остается не заполненным, то программа выдает ошибку;

Create Trigger tIU_Personal

ON Personal

for INSERT, UPDATE

AS

BEGIN

IF Exists(Select adres From inserted Where adres is NULL)

BEGIN

RAISERROR('Поле с адресом не может быть пустым', 16,10)

ROLLBACK TRANSACTION

END

End

3.3 T-SQL-определения хранимых процедур

1. При вводе названия должности выдает имя и фамилию подходящего работника.

CREATE PROCEDURE Dolshnosti3

@Dol nvarchar(30)

AS

SELECT Personal.imya, Personal.familia, Dolshnosti.name_dolshnosti

FROM Personal, Dolshnosti

WHERE Dolshnosti.kod_dolshnosti=Personal.kod_dolshnosti and

name_dolshnosti=@Dol

2. Выводит ФИО клиента, имя которого совпадает с введенными с клавиатуры данными.

CREATE PROCEDURE Imya4

@imya nvarchar(20)

AS

SELECT imya, otchestvo, familia

FROM Klienti

WHERE imya like '%'+@imya+'%'

3. Выводит фамилию клиента, который заказал такое количество блюд, которое будет меньше, чем введенное с клавиатуры.

CREATE PROCEDURE KolBlud3

@Kol Int

AS

SELECT Klienti.familia, Bluda.name_bluda, Zakaz.kolichestvo_blud

FROM Klienti, Bluda, Zakaz

WHERE Bluda.kod_bluda=Zakaz.kod_bluda and

Klienti.kod_klienta=Zakaz.kod_klienta and kolichestvo_blud<@Kol

4. Выводит название блюда, вес которого меньше 300 г., а калорийность больше или равна 600 ккал.

CREATE Procedure NameBlud2

AS

SELECT name_bluda

FROM Bluda

WHERE ves>300 and Kalorinost>=600

5. Выводит информацию о работнике, оклад которого равен цифре, введенной с клавиатуры.

CREATE Procedure Oklad

@Oklad int

AS

SELECT Dolshnosti.name_dolshnosti, Personal.familia, Personal.imya

FROM Dolshnosti, Personal

WHERE Dolshnosti.kod_dolshnosti=Personal.kod_dolshnosti and

oklad=@Oklad

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

CREATE PROCEDURE Personal3

@NachaloPerioda DATETIME, @KonecPerioda DATETIME

AS

SELECT familia, imya, adres

FROM Personal

WHERE data_roshdeniya between @NachaloPerioda and @KonecPerioda

7. Выводит данные о работнике, пол которого такой же, как и введенный с клавиатуры.

CREATE Procedure Pol2

@Pol nvarchar(10)

AS

SELECT familia, imya, data_roshdeniya

FROM Personal

WHERE pol=@Pol

8. Выводит данные о клиенте, у которого размер скидки больше, чем введенный с клавиатуры.

CREATE Procedure Skidki

@Skidki Int

AS

SELECT *

FROM Klienti

WHERE skidki>@Skidki

9. Выводит данные о блюде, в состав которого входит слово, введенное пользователем.

CREATE Procedure Sostav2

@Slovo nvarchar(20)

AS

SELECT name_bluda, sostav_bluda

FROM Bluda

WHERE sostav_bluda like '%'+@Slovo+'%'

10. Выводит название блюда равное введенному с клавиатуры названию.

CREATE PROCEDURE SpisokBlud3

@NameBluda Char(20)

AS

SELECT name_bluda

FROM Bluda

WHERE name_bluda=@NameBluda

11. Выводит название блюд, стоимость которых больше, чем введенная пользователем.

CREATE Procedure StoimBlud

@Stoimost Int

AS

SELECT name_bluda

FROM Bluda

WHERE stoimost>@stoimost

12. Выводит данные о блюдах, вид которых равен виду, введенному с клавиатуры и стоимость которого больше 50000р.

CREATE Procedure VidBluda

@Vid nvarchar(30)

AS

SELECT Bluda.name_bluda, Bluda.stoimost, Vid_bluda.name_vida

FROM Bluda, Vid_bluda

WHERE Bluda.kod_vida=Vid_bluda.kod_vida and name_vida=@Vid and stoimost>50000

13. Выводит название блюда, время приготовления которого больше 40 минут, а стоимость – меньше 100000р.

CREATE Procedure Vremya

AS SELECT name_bluda

FROM Bluda

WHERE vremya_prigotovleniya>40 and stoimost<100000

14. Выводит информацию о блюдах, код заказа которых равен коду, введенному с клавиатуры.

CREATE PROCEDURE Zakaz5

@ZakazBluda Int

AS SELECT Bluda.name_bluda, Bluda.stoimost, Zakaz.data_zakaza

FROM Bluda, Zakaz

WHERE Bluda.kod_bluda=Zakaz.kod_bluda and kod_zakaza=@ZakazBluda

15. Выводит данные о клиентах, сделавших заказ в период времени, который вводится с клавиатуры.

CREATE PROCEDURE ZakKlient3

@NachaloPerioda DATETIME, @KonecPerioda DATETIME

AS SELECT Klienti.familia, Klienti.imya, Zakaz.data_zakaza

FROM Klienti, Zakaz

WHERE Klienti.kod_klienta=Zakaz.kod_klienta and data_zakaza between @NachaloPerioda and @KonecPerioda

    1. T-SQL-определения курсоров

1. Курсор для просмотра информации о блюдах и заказах.

DECLARE MyCursor1 INSENSITIVE SCROLL CURSOR FOR

(SELECT Bluda.name_bluda, Bluda.stoimost, Zakaz.data_zakaza,

Zakaz.kolichestvo_blud from Bluda, Zakaz

WHERE Bluda.kod_bluda=Zakaz.kod_bluda)

3.5 Описание клиентских приложений

При разработке клиентского приложения были созданы следующие формы.

При запуске приложения появляется форма (рисунок 10), на форме присутствует следующие кнопки: «Блюда», «Виды блюд», «Заказы», «Клиенты», «Должности», «Персонал», «Запросы», «Справка» и «Выход», нажатие на которые открывает другие формы. Код обработки нажатия кнопок в соответствующем порядке:

procedure TForm1.Button1Click(Sender: TObject);

begin

Form1.Hide();

Form2.Show(); end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Form1.Hide();

Form4.Show(); end;

procedure TForm1.Button3Click(Sender: TObject); begin

Form1.Hide();

Form5.Show(); end;

procedure TForm1.Button4Click(Sender: TObject);

begin

Form1.Hide();

Form6.Show(); end;

procedure TForm1.Button5Click(Sender: TObject);

begin

Form1.Hide();

Form7.Show(); end;

procedure TForm1.Button6Click(Sender: TObject);

begin

Form1.Hide();

Form8.Show(); end;

procedure TForm1.Button8Click(Sender: TObject); begin

Form1.Hide();

Form12.Show(); end;

procedure TForm1.Button9Click(Sender: TObject);

var h:HWND; begin

h:=FindWindow('HH Parent','О программе');

if h=0 then

WinExec('hh.exe Spravka.chm',SW_RESTORE)

else begin

ShowWindow(h,SW_RESTORE);

Windows.SetForegroundWindow(h); end;

procedure TForm1.Button7Click(Sender: TObject);

begin

Form1.Close(); end;

Рисунок 10 – Главная форма

При нажатии кнопки «Блюда» появится форма «Блюда» - рисунок 11. На форме находятся таблица с данными и навигация для добавления и удаления данных о блюдах. Также на форме присутствует кнопка «Поиск», при нажатии на которую осуществляется поиск по заданным параметрам. Код обработки нажатия кнопки:

procedure TForm2.Button1Click(Sender: TObject);

begin

If radioButton2.Checked=True then begin

DBGrid1.DataSource.DataSet.Filter := 'kalorinost = ' + Edit2.Text;

DBGrid1.DataSource.DataSet.Filtered := true;

end;

If radioButton3.Checked=True then begin

DBGrid1.DataSource.DataSet.Filter := 'vremya_prigotovleniya = ' + Edit3.Text;

DBGrid1.DataSource.DataSet.Filtered := true;

end;

If radioButton4.Checked=True then begin

DBGrid1.DataSource.DataSet.Filter := 'stoimost = ' + Edit4.Text;

DBGrid1.DataSource.DataSet.Filtered := true;

end;

end;

Кнопка «Сброс» сбрасывает результаты поиска. Код обработки нажатия кнопки:

procedure TForm2.Button2Click(Sender: TObject);

begin

DBGrid1.DataSource.DataSet.Filter := '';

DBGrid1.DataSource.DataSet.Filtered := true;

end;

При нажатии на кнопку «Сортировка по калорийности» осуществляется сортировка данных по столбцу Калорийность. Код обработки нажатия кнопки:

procedure TForm2.Button3Click(Sender: TObject);

begin

DataModule3.ADOTable1.Sort:='kalorinost';

end;

Кнопка «Вывести отчет» выводит отчет о блюдах. Код обработки нажатия кнопки:

procedure TForm2.Button4Click(Sender: TObject);

begin

RvProject1.Execute;

end;

Рисунок 11 – Форма «Блюда»

На форме имеется меню, с помощью которого можно легко перейти к другой форме. При выборе пункта меню «Виды блюд» осуществляется переход к форме «Виды блюд» - рисунок 12. На форме находятся таблица с данными о

видах юблюд и навигация для добавления и удаления данных.

Рисунок 12 – Форма «Виды блюд»

При выборе пункта меню «Заказы» появится форма «Заказы» - рисунок 13. На форме находятся таблица с данными и навигация для добавления и удаления данных о заказах. Также существует кнопка «Фильтрация», при нажатии на которую осуществляется фильтрациия данных в таблице по столбцу kolichestvo_blud. Код обработки нажатия кнопки:

procedure TForm5.Button3Click(Sender: TObject);

begin

DataModule3.ADOTable3.Sort:='kolichestvo_blud';

end;

Для данной таблицы организован поиск по дате заказа и по количеству блюд. Код обработки нажатия кнопки «Поиск»:

procedure TForm5.Button1Click(Sender: TObject);

begin

If radioButton1.Checked=True then begin

DBGrid1.DataSource.DataSet.Filter := 'data_zakaza = ' + Edit1.Text;

DBGrid1.DataSource.DataSet.Filtered := true;

end;

If radioButton2.Checked=True then begin

DBGrid1.DataSource.DataSet.Filter := 'kolichestvo_blud = ' + Edit2.Text;

DBGrid1.DataSource.DataSet.Filtered := true;

end;

end;

Код обработки нажатия кнопки «Сброс»:

procedure TForm5.Button2Click(Sender: TObject);

begin

DBGrid1.DataSource.DataSet.Filter := '';

DBGrid1.DataSource.DataSet.Filtered := true;

end;

Кнопка «Вывести отчет» выводит отчет о заказах. Код обработки нажатия кнопки:

procedure TForm5.Button4Click(Sender: TObject);

var Excel, Workbook, Sheet: variant; i:integer;a:integer;

begin

try

Excel:=CreateOleObject('Excel.Application');

except

showmessage('Ошибка доступа! Microsoft Excel не установлен');

exit;

end;

DataModule3.ADOTable4.First;

workbook:=eXcel.workbooks.add;

sheet:=workbook.sheets[1];

Sheet.Cells[1,3]:='Информация о заказах';

Sheet.Cells[2,1]:='Фамилия';

Sheet.Cells[2,2]:='Имя';

DataModule3.ADOTable3.First;

Sheet.Cells[2,3]:='Дата заказа';

Sheet.Cells[2,4]:='Время заказа';

Sheet.Cells[2,5]:='Кличество блюд';

for i:=1 to DataModule3.ADOTable4.RecordCount do begin

a:= StrToInt(Edit3.Text);

if DataModule3.ADOTable4.FieldByName('kod_klienta').AsInteger=a then begin

Sheet.Cells[3,1]:= DataModule3.ADOTable4.FieldByName('familia').AsString;

Sheet.Cells[3,2]:= DataModule3.ADOTable4.FieldByName('imya').AsString;

DataModule3.ADOTable3.RecordCount;

Sheet.Cells[3,3]:=DataModule3.ADOTable3.FieldByName('data_zakaza').AsDatetime;

Sheet.Cells[3,4]:=DataModule3.ADOTable3.FieldByName('vremya_zakaza').AsString;

Sheet.Cells[3,5]:=DataModule3.ADOTable3.FieldByName('kolichestvo_blud').AsInteger;

end;

DataModule3.ADOTable4.Next;

DataModule3.ADOTable3.Next;

end; Excel.Visible:=true; end;

Рисунок 13 – Форма «Заказы»

При выборе пункта меню « Клиенты» откроется форма «Клиенты» - рисунок 14. На форме находятся таблица с данными и навигация для добавления и удаления данных о заказах. Кнопка «Вывести отчет о клиентах» выводит соответствующий отчет. Код обработки нажатия кнопки:

procedure TForm6.Button1Click(Sender: TObject);

begin

RvProject3.Execute; end;

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

procedure TForm6.Button2Click(Sender: TObject; begin

If radioButton1.Checked=True then begin

DBGrid1.DataSource.DataSet.Filter := 'kod_klienta = ' + Edit1.Text;

DBGrid1.DataSource.DataSet.Filtered := true; end;

If radioButton2.Checked=True then begin

DBGrid1.DataSource.DataSet.Filter := 'skidki = ' + Edit2.Text; end; end;

Код обработки нажатия кнопки «Сброс», которая сбрасывает результаты поиска:

procedure TForm6.Button3Click(Sender: TObject);

begin

DBGrid1.DataSource.DataSet.Filter := '';

DBGrid1.DataSource.DataSet.Filtered := true;

end;

Рисунок 14 – Форма «Клиенты»

При выборе пункта меню «Должности» происходит переход на форму «Должности» - рисунок 15. На форме находятся таблица с данными и навигация для добавления и удаления данных о заказах. Также на форме размещен поиск по запрашиваемым данным. Код обработки нажатия кнопки «Поиск»:

procedure TForm7.Button1Click(Sender: TObject);

begin

If radioButton1.Checked=True then begin

DBGrid1.DataSource.DataSet.Filter := 'oklad = ' + Edit1.Text;

DBGrid1.DataSource.DataSet.Filtered := true; end;

If radioButton2.Checked=True then begin

DBGrid1.DataSource.DataSet.Filter := 'kod_dolshnosti = ' + Edit2.Text;

DBGrid1.DataSource.DataSet.Filtered := true; end; end;

procedure TForm7.Button2Click(Sender: TObject); begin

DBGrid1.DataSource.DataSet.Filter := '';

DBGrid1.DataSource.DataSet.Filtered := true; end;

Кнопка «Сброс» позволяет нам сбросить результаты поиска. Код обработки нажатия кнопки:

procedure TForm7.Button2Click(Sender: TObject); begin

DBGrid1.DataSource.DataSet.Filter := '';

DBGrid1.DataSource.DataSet.Filtered := true; end;

Рисунок 15 – Форма «Должности»

При выборе пункта меню «Персонал» появляется форма «Персонал» - рисунок 16. На форме находятся таблица с данными и навигация для добавления и удаления данных о заказах. Для данной таблицы организован поиск. Код обработки нажатия кнопки «Поиск»:

procedure TForm8.Button1Click(Sender: TObject); begin

If radioButton1.Checked=True then begin

DBGrid1.DataSource.DataSet.Filter := 'kod_rabotnika = ' + Edit1.Text;

DBGrid1.DataSource.DataSet.Filtered := true; end;

If radioButton2.Checked=True then begin

DBGrid1.DataSource.DataSet.Filter := 'telephon = ' + Edit2.Text;

DBGrid1.DataSource.DataSet.Filtered := true;

end; end;

Для сброса результатов поиска существует кнопка «Сброс». Код обработки нажатия кнопки:

procedure TForm8.Button2Click(Sender: TObject);

begin

DBGrid1.DataSource.DataSet.Filter := '';

DBGrid1.DataSource.DataSet.Filtered := true;

end;

4 Результат тестирования информационной системы

Для нормальной работы системы необходимо 256 Мбайт оперативной памяти, Windows NT/2000/XP и выше, Microsoft SQL Server 2005, Microsoft Excel 2003 и выше.

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

После тестирования получили результаты:

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

- тестирование запросов прошло успешно.

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

Отчеты составлены на основе запросов и используются для получения информации и оформления документации.

Заключение

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

Во время выполнения курсового проекта была разработана однопользовательская информационная система «Кафе».

При создании информационной системы использовались сервер баз данных Microsoft SQL Server 2005, Microsoft Excel 2010, Borland Delphi 7 и CASE-средства Erwin и BPWin.

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

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

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

1. ГОСТ 19.101-77. Единая система программной документации. Виды программ и программных документов. – М.: ИПК Изд-во стандартов, 2004. – 22 с.

2. ГОСТ 19.105-78. Единая система программной документации. Общие требования к программным документам. – М.: ИПК Изд-во стандартов, 2004. – 38 с.

3. Артемов, Д.В. Microsoft SQL Server 2000. Новейшие технологии / Д.В. Артемов. – М.: Издательско-торговый дом «Русская Редакция», 2001. – 576 с.

4. Астахова, И.Ф. SQL в примерах и задачах: учеб. пособие / И.Ф. Астахова, А.П. Толстобров, В.М. Мельников. – Мн.: Новое знание, 2002. – 176 с.

5. Виейра Роберт. Программирование баз данных Microsoft SQL Server 2005. Базовый курс = Beginning Microsoft SQL Server 2005 Programming. — М.: «Диалектика», 2007. — С. 832. — ISBN 0-7645-8433-2

6. Гандерлой, М. Освоение Microsoft SQL Server 2005 : пер. с англ. / М. Гандерлой, Дж. Джорден, Д. Чанц. — М. : ООО "И. Д. Вильямс", 2007. — 1104 с.

7. Глушаков, С. В. Базы данных/ С.В. Глушаков, Д.В. Ломотько. — Харьков: Фолио; М.: ООО «Издательство ACT», 2002. – 504 с.

8. Кузин, А.В. Базы данных: учеб. пособие для студ. высш. учеб. заведений / А.В. Кузин, С.В. Левонисова. – 2-е изд., стер. – М.: Издательский центр «Академия», 2008. – 320 с.

9. Леоненков, А.В. Объектно-ориентированный анализ и проектирование с использованием UML и IBM Rational Rose: учебное пособие / А.В. Леоненков. - М. : Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2006. – 320 с.

10. Партыка Т.Л., Попов И.И. Информационная безопасность. Учебное пособие для студентов учреждений среднего профессионального образования. ~М.: ФОРУМ: ИНФРА-М, 2004,-368с.: ил. - (Серия «Профессиональное образование»)

11. Ратушный А.С. Сборник рецептур блюд и кулинарных изделий для предприятий общественного питания / А. С. Ратушный, Л. А. Старостина, Н. С.

12. Фаронов, В.В. Система программирования Delphi / В.В. Фаронов. – СПб.: БХВ-Петербург, 2003. – 912 с.

13. Фаулер, М. UML в кратком изложении. Применение стандартного языка объектного моделирования.: пер. с англ. / М. Фаулер, К.Скотт – М. : Мир, 1999. – 165 с.