Автор работы: Пользователь скрыл имя, 27 Декабря 2010 в 17:04, курсовая работа
Предметная область, подлежащая изучению – «кинотеатр». В сферу этой предметной области попадают предприятия, занимающиеся оказанием услуг проведения досуга. Цель функционирования предприятий этой предметной области – оказание услуг, таких как: показ кинофильмов, реклама и анонс будущих фильмов и получение прибыли, извлекаемой из оплаты этих услуг клиентами. Для оказания услуг необходимо наличие квалифицированных специалистов и помещений, удовлетворяющих нормам санитарных и других требований в соответствии с действующим законодательством.
1 Постановка задачи 4
2 Анализ предметной области 5
3 Проектирование базы данных 9
4 Реализация базы данных в формате MS SQL Server 2000 10
5 Хранимые процедуры для вставки данных 21
6 Представления на выборку данных из базы данных 39
7 Проектирование программного обеспечения 42
8 Руководство пользователя 45
Список литературы 47
Приложение 48
Возвращаемый
результат процедуры: 1, если новая
запись добавлена.
Листинг 7. SQL код создания и использования процедуры «добавить_сеанс»
use Moveis
if exists (select name from sysobjects where name = 'добавить_сеанс' and type = 'P')
drop procedure добавить_сеанс
go
create procedure добавить_сеанс
@res tinyint output,
@SeansDate nvarchar(10)='',
@SeansTime nvarchar (20)='',
@FilmID
int=null
as
begin
declare @datetemp datetime set @datetemp= getdate()
if (isdate(@SeansDate)=1)
begin
declare @datetemp1 datetime set @datetemp1=cast(@SeansDate as datetime)
if (@datetemp1>=@datetemp)
begin
declare @SeansT datetime if
isdate(@SeansTime)=1 and datepart(yyyy,@datetemp1)=
and
datepart(mm,@datetemp1)=
and
datepart(dd,@datetemp1)=
set @SeansT=cast(@SeansTime
as datetime)
if exists (select [Идентификатор фильма]from Фильм where [Идентификатор фильма]=@FilmID)
begin
insert into Сеансы ([Дата сеанса], [Время сеанса], [Идентификатор фильма])
values (@datetemp1, @SeansT, @FilmID)
if @@rowcount>0 set @res = 1
else insert into Сеансы ([Дата сеанса], [Время сеанса])
values (@datetemp1, @SeansT)
if @@rowcount>0 set @res = 1
end
end
end
end
go
Пример использования:
Use Moveis
declare @res int
exec добавить_сеанс
@res output,'20100519','20100519 09:00:00',4
7. Хранимая
процедура для таблицы «Билет»
Имя процедуры: добавить_билет
Назначение процедуры: процедура добавляет в таблицу Идентификатор фильма, соответствующий таблице «Фильм», идентификатор сеанса, соответствующий таблице «Сеансы». Название кинотеатра, соответствующие таблице «Кинотеатр».
Требования
к целостности
данных: При вставке данных должна выполняться
проверка существования данных в соответствующих
таблицах.
Таблица
31 – Аргументы процедуры
«добавить_билет»
Аргумент | Смысл | Вид аргумента | Значение
по умолчанию |
Тип |
@res | результат | выходной | нет | tinyint |
@FilmID | Идентификатор фильма | входной | Null | int |
@SeansID | Идентификатор сеанса | входной | Null | int |
@Ryad | Номер ряда | входной | нет | int |
@Stimost | Стоимость билета | входной | нет | money |
@Mesto | Номер места | входной | нет | int |
@KinoName | Название фильма | входной | Пустая строка | nvarchar (25) |
Возвращаемый
результат процедуры: 1, если новая
запись добавлена.
Листинг 8. SQL код создания и использования процедуры «добавить_билет»
use Moveis
if exists (select name from sysobjects where name = 'добавить_билет' and type = 'P')
drop procedure добавить_билет
go
create procedure добавить_билет
@res tinyint output,
@FilmID int=null,
@SeansID int=null,
@Ryad int,
@Stimost money,
@Mesto int,
@KinoName nvarchar(25)=''
as
begin
if exists (select [Идентификатор фильма] from Фильм
where [Идентификатор фильма]=@FilmID)
and exists (select [Идентификатор сеанса] from Сеансы
where [Идентификатор сеанса]=@SeansID)
and exists (select [Название кинотеатра] from Кинотеатр
where [Название кинотеатра]=@KinoName)
begin
insert into Билет([Идентификатор фильма],
[Идентификатор
values(@
if @@rowcount>0 set @res=1
end
end
go
Пример использования:
declare @res int
exec добавить_билет @res output, 2,1,1,3,250
go
8.
Хранимая процедура для таблицы «Расписание»
Имя процедуры: добавить_расписание
Назначение процедуры: процедура добавляет в таблицу информацию о днях и времени работы, каждого работника.
Требования
к целостности
данных: При вставке данных должна выполняться
проверка существования данных в соответствующих
таблицах.
Таблица
31 – Аргументы процедуры
«добавить_расписание»
Аргумент | Смысл | Вид аргумента | Значение
по умолчанию |
Тип |
@res | результат | выходной | нет | tinyint |
@NumDela | Номер личного дела работника | входной | Пустая строка | int |
@KinoName | Название кинотеатра | входной | Пустая строка | nvarchar (25) |
@RubDay | Рабочий день | входной | нет | datetime |
@TimeBegin | Время начала рабочего дня | входной | нет | datetime |
@TimeEnd | Время окончания рабочего дня | входной | нет | datetime |
@RaspSost | Составитель расписания | входной | нет | int |
Возвращаемый
результат процедуры: 1, если новая
запись добавлена.
Листинг 9. SQL код создания и использования процедуры «добавить_расписание»
use Moveis
if exists (select name from sysobjects where name = 'добавить_расписание' and type = 'P')
drop procedure добавить_расписание
go
create procedure добавить_расписание
@res tinyint output,
@NumDela int='',
@KinoName nvarchar(25)='',
@RubDay datetime,
@TimeBegin datetime,
@TimeEnd datetime,
@RaspSost int
as
begin
if not exists(select [Номер личного дела] from Расписание
where [Номер личного дела]=@NumDela)
or not exists (select [Название кинотеатра] from Расписание
where [Название кинотеатра]=@
or not exists (select [Рабочий день] from Расписание
where [Рабочий день]=@RubDay)
and exists (select [Номер личного дела] from Работник
where [Номер личного дела]=@
begin
declare @Data datetime set @Data=getdate()
if (isdate(@RubDay)=1) and (@RubDay>=@Data)
if (isdate(@TimeBegin)=1) and datepart(yyyy,@TimeBegin)=
and datepart(mm,@TimeBegin)=
and datepart(dd,@TimeBegin)=
if (isdate(@TimeEnd)=1) and datepart(yyyy,@TimeEnd)=
and datepart(mm,@TimeEnd)=
and datepart(dd,@TimeEnd)=
begin
insert into Расписание([Номер
личного дела],[Название
,[Рабочий
день],[Время начала],[Время
,[Составитель])
values(@NumDela,@
if @@rowcount>0 set @res=1
end
end
end
go
Пример использования:
declare @res tinyint
exec добавить_расписание
@res output,7,'Комсомолец','
9. Хранимая
процедура для таблицы «Работник_должность»
Имя процедуры: добавить_работник_должность
Назначение процедуры: процедура добавляет в таблицу идентификатор должности работника и идентификатор должности.
Требования
к целостности
данных: При вставке данных должна выполняться
проверка существования данных в соответствующих
таблицах.
Таблица
32 – Аргументы процедуры
«добавить_работник_должность»
Аргумент | Смысл | Вид аргумента | Значение
по умолчанию |
Тип |
@res | результат | выходной | нет | tinyint |
@DolzID | Идентификатор должности | входной | Null | int |
@NumDela | Номер личного дела работника | входной | Null | int |
Возвращаемый
результат процедуры: 1, если новая
запись добавлена.
Листинг 10. SQL код создания и использования процедуры «добавить_работник_должность»
use Moveis
if exists (select name from sysobjects where name = 'добавить_работник_должность' and type = 'P')