Автор работы: Пользователь скрыл имя, 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')