Автор работы: Пользователь скрыл имя, 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, если новая запись добавлена 
Листинг 
3. SQL код создания и использования 
процедуры «Добавить_должность» 
use Moveis
if exists (select name from sysobjects where name = 'Добавить_должность' and type = 'P')
drop procedure Добавить_должность
go 
create procedure Добавить_должность
@res tinyint output, @Oklad money=1.0, @NameDolz nvarchar(25)=''
as
begin
set @res=0
if not exists (select [Название должности] from Должность where [Название должности]=@NameDolz)
insert into Должность (Оклад,[Название должности])
values(@Oklad, @NameDolz)
if @@rowcount>0 set @res = 1
end
go
Пример использования:
use Moveis
declare @res tinyint
exec добавить_должность 
@res output, 12000, 'Электромантер' 
3. Хранимая 
процедура для таблицы «Фильм» 
Имя процедуры: добавить_фильм
Назначение процедуры: Добавление информации о новом фильме и описание его характеристик и актеров, принимавших участие в съемках.
Требования к целостности данных: При неверном вводе даты, в базу данных вставляется текущая дата.
Таблица 
27 – Аргументы процедуры 
«добавить_фильм» 
| Аргумент | Смысл | Вид аргумента | Значение по умолчанию | Тип | 
| @FilmName | Название фильма | входной | Пустая строка | nvarchar(25) | 
| @Operator | Ф.И. Оператора | входной | Пустая строка | nvarchar(25) | 
| @Reziser | Ф.И. Режиссера | входной | Пустая строка | nvarchar(25) | 
| @Scenarist | Ф.И Сценариста | входной | Пустая строка | nvarchar(25) | 
| @DataOut | Дата выхода фильма | входной | Пустая строка | nvarchar(10) | 
| @res | Результат выполнения процедуры | выходной | нет | tinyint | 
| @Izobr | Формат изображения | входной | Пустая строка | nvarchar(10) | 
| @FilmTime | Продолжительность фильма | входной | 1 | int | 
| @Zanr | Жанр фильма | входной | Пустая строка | nvarchar(25) | 
| @Subtitles | Язык субтитров | входной | Пустая строка | nvarchar(25) | 
| @Language | Язык звука | входной | Пустая строка | nvarchar(30) | 
| @Stream | Аудио поток (стерео эффекты) | входной | Пустая строка | nvarchar(25) | 
Возвращаемый 
результат процедуры: 1, если новая 
запись добавлена 
Листинг 
4. SQL код создания и использования 
процедуры «добавить_фильм» 
Use Moveis
if exists (select name from sysobjects where name = 'добавить_фильм' and type = 'P')
drop procedure добавить_фильм
go 
create procedure добавить_фильм
@FilmName nvarchar(25)='', @Operator nvarchar (25)='',
@Reziser nvarchar(25)='', @Scenarist nvarchar (25)='',
@DataOut nvarchar(10), @res tinyint output,
@Izobr nvarchar(10)='', @FilmTime int=1,
@Zanr nvarchar(25)='', @Subtitles nvarchar(25)='',
@Language nvarchar(30)='', @Stream nvarchar(25)=''
as
begin
set @res=0
declare @datetmp datetime set @datetmp = getdate()
if isdate(@DataOut)=1 --Если получен правильный формат даты
begin
declare @datetmp1 datetime --локальная переменная для даты
        
--конвертировать полученную 
set @datetmp1 = cast(@DataOut as datetime)
set @datetmp = @datetmp1
end
insert into Фильм 
([Название фильма],Оператор,
               Сценарист,[Дата 
выхода фильма],Изображение,[
Жанр,Субтитры,Язык,[Аудио поток])
      values 
(@FilmName,@Operator,@Reziser,
                
@Zanr,@Subtitles,@Language,@
if @@rowcount>0 set @res = 1
end
go 
Пример 
использования: 
use Moveis
declare @res tinyint
exec добавить_фильм @res output, 'Человек паук 2','Билл Поул','Сэм Рэйми','Алвин Сарджент',
'20050101','3D',123,'
4. Хранимая 
процедура для таблицы «Актеры» 
Имя процедуры: добавить_актера
Назначение процедуры: вставка информации о актере в таблицу «Актеры»
Требования к целостности данных: При вводе данных, не должно оставаться пустых полей.
Таблица 
28 – Аргументы процедуры 
«добавить_актера» 
| Аргумент | Смысл | Вид аргумента | Значение по умолчанию | Тип | 
| @res | результат работы процедуры | выходной | нет | tinyint | 
Продолжение таблицы 28
| Аргумент | Смысл | Вид аргумента | Значение по умолчанию | Тип | 
| @SName | Фамилия актера | входной | Пустая строка | nvarchar(25) | 
| @Name | Имя актера | входной | Пустая строка | nvarchar(25) | 
Возвращаемый 
результат процедуры: 1, если новая 
запись добавлена. 
Листинг 
5. SQL код создания и использования 
процедуры «добавить_актера» 
Use Moveis
if exists (select name from sysobjects where name = 'добавить_актера' and type = 'P')
drop procedure добавить_актера
go 
create procedure добавить_актера
@res tinyint output, @SName nvarchar(25)='', @Name nvarchar(25)=''
as
begin
set @res=0
if @SName<>'' and @Name<>''
begin
insert into Актеры (Фамилия, Имя)
values (@SName, @Name)
end
end
go
Пример использования:
use Moveis
declare @res tinyint
exec 
добавить_актера @res output, 'Бондарчук','Федор' 
5. Хранимая 
процедура для таблицы «Кинотеатры» 
Имя процедуры: добавить_кинотеатр
Назначение процедуры: вставка в таблицу «Кинотеатры» информации о адресах нахождения и названиях кинотеатров.
Требования 
к целостности 
данных: данная процедура должна обеспечить 
проверку на отсутствие повторяющихся 
«имен» кинотеатров, а так же при отсутствии 
дополнительных корпусов вставлять значение 
Null. 
Таблица 
29 – Аргументы процедуры 
«добавить_кинотеатр» 
| Аргумент | Смысл | Вид аргумента | Значение по умолчанию | Тип | 
| @res | результат | выходной | нет | tinyint | 
| @NameTheter | Название кинотеатра | входной | Пустая строка | nvarchar(25) | 
| @BuildNum | Номер здания | входной | 1 | int | 
| @Street | Название улицы | входной | Пустая строка | nvarchar(30) | 
| @Liter | Буквенный литер | входной | Пустая строка | nvarchar(1) | 
Возвращаемый 
результат процедуры: 1, если новая запись 
добавлена. 
Листинг 
6. SQL код создания и использования 
процедуры «добавить_кинотеатр» 
use Moveis
if exists (select name from sysobjects where name = 'добавить_кинотеатр' and type = 'P')
drop procedure добавить_кинотеатр
go 
create procedure добавить_кинотеатр
@res tinyint output,
@NameTheter nvarchar(25)='',
@BuildNum int=1,
@Street nvarchar(30)='',
@Liter nvarchar(1)=''
as
begin
if not exists (select [Название кинотеатра] from Кинотеатр where
[Название кинотеатра] like @NameTheter)
begin
              insert into Кинотеатр 
([Название кинотеатра],[Номер 
                              
                  values (@NameTheter,@BuildNum,@
end
if @@rowcount>0 set @res=1
end
go 
Пример использования:
Use Moveis
declare @res tinyint
exec добавить_кинотеатр 
@res output,'Кинцо', 66,'Devil street',6 
6. Хранимая 
процедура для таблицы «Сеансы» 
Имя процедуры: добавить_сеанс
Назначение процедуры: процедура добавляет в таблицу «Сеанс» с указанием даты, времени сеанса, а так же идентификатором фильма, который относится к таблице «Фильм»
Требования 
к целостности 
данных: Идентификатор фильма, должен 
существовать в соответствующей таблице. 
Время сеанса должно иметь прямое отношение 
к дате. 
Таблица 
30 – Аргументы процедуры 
«добавить_сеанс» 
| Аргумент | Смысл | Вид аргумента | Значение по умолчанию | Тип | 
| @res | результат | выходной | нет | tinyint | 
| @SeansDate | Дата сеанса | входной | Пустая строка | nvarchar (10) | 
| @SeansTime | Время сеанса | входной | Пустая строка | nvarchar (20) | 
| @FilmID | Идентификатор показываемого фильма | входной | Null | int |