Разработка базы данных для кинотеатров

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

Шаблон пояснительной записки.doc

— 831.00 Кб (Скачать файл)
 

Возвращаемый  результат процедуры: 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)=datepart(yyyy,@SeansTime)

                        and datepart(mm,@datetemp1)=datepart(mm,@SeansTime)

                        and datepart(dd,@datetemp1)=datepart(dd,@SeansTime)

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(@FilmID, @SeansID, @KinoName, @Ryad,@Mesto,@Stimost)

      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 [Название кинотеатра]=@KinoName)

      or not exists (select [Рабочий день] from Расписание

                   where [Рабочий день]=@RubDay)

         and exists (select [Номер личного дела] from Работник

                   where [Номер личного дела]=@RaspSost) 

    begin

      declare @Data datetime set @Data=getdate()

        if (isdate(@RubDay)=1) and (@RubDay>=@Data)

          if (isdate(@TimeBegin)=1) and datepart(yyyy,@TimeBegin)=datepart(yyyy,@RubDay)

                            and datepart(mm,@TimeBegin)=datepart(mm,@RubDay)

                            and datepart(dd,@TimeBegin)=datepart(dd,@RubDay)

        if (isdate(@TimeEnd)=1) and datepart(yyyy,@TimeEnd)=datepart(yyyy,@RubDay)

                          and datepart(mm,@TimeEnd)=datepart(mm,@RubDay)

                          and datepart(dd,@TimeEnd)=datepart(dd,@RubDay)

      begin

            insert into Расписание([Номер  личного дела],[Название кинотеатра]

                              ,[Рабочий  день],[Время начала],[Время окончания]

                              ,[Составитель])

            values(@NumDela,@KinoName,@RubDay,@TimeBegin,@TimeEnd,@RaspSost)

      if @@rowcount>0 set @res=1

     end

   end

end

go 

Пример  использования:

declare @res tinyint

exec добавить_расписание @res output,7,'Комсомолец','20100601','20100601 09:00:00','20100601 21:00:00',6 

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')

Информация о работе Разработка базы данных для кинотеатров