Информационно-справочная система "Киноиндустрия"

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

МИНОБРНАУКИ РОССИИ

Федеральное государственное бюджетное образовательное

учреждение высшего профессионального образования

«Ижевский государственный технический университет имени М.Т. Калашникова»

Кафедра «Программное обеспечение»

Пояснительная записка

к курсовой работе

по дисциплине «Системы и алгоритмы обработки данных»

на тему: Информационно-справочная система «Киноиндустрия»

Выполнила:

студентка гр. 4−78−11 Федотова Е. К.

Проверил: Сенилов М. А.

д.т.н., профессор

Ижевск 2012

ТЕХНИЧЕСКОЕ ЗАДАНИЕ

Разработать информационно справочную систему «Киноиндустрия».

Система должна содержать информацию о СТУДИЯХ, СТРАНАХ, СПОНСОРАХ, ФИЛЬМАХ, АКТЕРАХ.

В системе должны обрабатываться следующие запросы:

1. Выдать список ФИЛЬМОВ, вышедших на данной СТУДИИ в данной СТРАНЕ.

2. Для данного (или указанного) ФИЛЬМА и данной СТУДИИ привести список АКТЕРОВ.

3. Выдать сведения об АКТЕРАХ данной СТРАНЫ, снимавшихся в данном ФИЛЬМЕ данной СТУДИИ.

4. Указать список всех СПОНСОРОВ, вложивших деньги в данный ФИЛЬМ данной СТУДИИ.

5. Для каждой или указанной СТРАНЫ привести список СТУДИЙ и АКТЕРОВ.

6. Выдать ФИЛЬМ, где участвовал данный АКТЕР.

7. Для указанного ФИЛЬМА выдать СТРАНУ и СТУДИЮ, где он снимался.

8. Для данного АКТЕРА указать СТУДИЮ, где он снимался.

СОДЕРЖАНИЕ

Введение

1. Содержательная постановка задачи

1.1 Характеристика задачи

1.2 Входные данные

1.3 Выходные данные

2. Формализованная постановка задачи

2.1 Разработка модели предметной области (МПО)

2.1.1 Составление перечня атрибутов и задание их характеристик

2.1.1 Агрегация атрибутов, выделение объектов и задание их характеристик

2.1.3 Анализ запросов к информационной базе

2.1.4 Установление функциональных связей и задание их характеристик

2.1.5 Установление структурных связей и задание их характеристик

2.2 Оптимизация и проверка корректности схемы МПО

3. Абстрактный анализ и синтез МПО

3.1 Представление МПО с помощью абстрактных структур данных (АСД)

3.2 Предварительное преобразование структуры данных

3.3 Декомпозиция структуры данных на более простые АСД

4. Разработка внешних спецификаций программы

4.1 Разработка представления данных при помощи логических структур данных (ЛСД)

4.2 Интерфейс программы. Разработка макетов ввода-вывода

4.3 Разработка функций программы

4.4 Разработка функций программы по обработке ошибок

5. Разработка внутренних спецификаций программы

5.1 Разработка структуры программы

5.2 Разработка представления данных на уровне модели памяти

5.3 Разработка алгоритмов модулей

6. Описание программы kurs

6.1 Вводная часть

6.2 Функциональное назначение

6.3 Описание информации

6.4 Описание логики программы

6.5 Используемые подпрограммы

7. Описание подпрограммы zapros1

7.1 Вводная часть

7.2 Функциональное назначение

7.3 Описание информации

7.4 Описание логики

8. Описание подпрограммы zapros2

8.1 Вводная часть

8.2 Функциональное назначение

8.3 Описание информации

8.4 Описание логики

9. Описание подпрограммы zapros3

9.1 Вводная часть

9.2 Функциональное назначение

9.3 Описание информации

9.4 Описание логик

10. Описание подпрограммы zapros4

10.1 Вводная часть

10.2 Функциональное назначение

10.3 Описание информации

10.4 Описание логики

11. Описание подпрограммы zapros5

11.1 Вводная часть

11.2 Функциональное назначение

11.3 Описание информации

11.4 Описание логики

12. Описание подпрограммы zapros6

12.1 Вводная часть

12.2 Функциональное назначение

12.3 Описание информации

12.4 Описание логики

13. Описание подпрограммы zapros7

13.1 Вводная часть

13.2 Функциональное назначение

13.3 Описание информации

13.4 Описание логики

14. Описание подпрограммы zapros8

14.1 Вводная часть

14.2 Функциональное назначение

14.3 Описание информации

14.4 Описание логики

15. Описание подпрограммы Openf

15.1 Вводная часть

15.2 Функциональное назначение

15.3 Описание информации

15.4 Описание логики

16. Тестирование программы

16.1 Разработка плана тестирования и набора тестов

16.2 Результаты тестирования

Заключение

Список литературы

Приложение 1. Текст программы

Приложение 2. Тексты входных файлов

Приложение 3. Руководство программиста

Приложение 4. Руководство пользователя

ВВЕДЕНИЕ

Целью данной курсовой работы является разработка модели предметной области (МПО), ее анализ, синтез и программная реализация на языке программирования Pascal. Информационно-справочная система, для которой будет реализована МПО, — Киноиндустрия". Данная система служит для облегчения работы со статистическими данными при обработке результатов. Используя данную информационную систему можно существенно упростить поиск и просмотр основных данных в этой области. Так же существует возможность хранения информационной базы на жестких дисках и внешних носителях.

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

Методология проектирования опирается на курс «Структуры и алгоритмы обработки данных в ЭВМ».

Создаваемая информационная система способна служить для целей автоматизации человеческого труда при обработке данных по любой станции технического обслуживания. Это позволит сэкономить время и получать точные и достоверные сведения.

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

1. СОДЕРЖАТЕЛЬНАЯ ПОСТАНОВКА ЗАДАЧИ

1.1 Характеристика задачи

Название информационно-справочной системы «Киноиндустрия». Данная система рассматривает реализацию следующих запросов:

1. Выдать список ФИЛЬМОВ, вышедших на данной СТУДИИ в данной СТРАНЕ.

2. Для данного (или указанного) ФИЛЬМА и данной СТУДИИ привести список АКТЕРОВ.

3. Выдать сведения об АКТЕРАХ данной СТРАНЫ, снимавшихся в данном ФИЛЬМЕ данной СТУДИИ.

4. Указать список всех СПОНСОРОВ, вложивших деньги в данный ФИЛЬМ данной СТУДИИ.

5. Для каждой или указанной СТРАНЫ привести список СТУДИЙ и АКТЕРОВ.

6. Выдать ФИЛЬМ, где участвовал данный АКТЕР.

7. Для указанного ФИЛЬМА выдать СТРАНУ и СТУДИЮ, где он снимался.

8. Для данного АКТЕРА указать СТУДИЮ, где он снимался.

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

Данную задачу удобно решать на ЭВМ т.к. это обеспечивает:

— высокую скорость обработки информации;

— удобные средства для ввода, поиска и вывода информации;

— хранение большого количества информации при малых материальных и технических затратах.

Для разработки задачи использована методология, изложенная в курсе «Структуры и алгоритмы обработки данных».

1.2 Входные данные

Поскольку объектами данной информационно — справочной системы являются СТУДИЯ, СТРАНА, СПОНСОР, ФИЛЬМ, АКТЕР, то входные данные согласно этим объектам разделены на два входных файла «strstd. dat» и «actors. dat».

Файл «actors. dat» содержит информацию о ФИЛЬМАХ, СПОНСОРАХ И АКТЕРАХ и имеет следующую структуру:

Название фильма

Жанр фильма

Бюджет

Время выхода в прокат

Название спонсора

Количество вложенных средств

Прибыль

ФИО актера

Гонорар

Файл «strstd. dat» содержит информацию о СТРАНАХ И СТУДИЯХ и имеет следующую структуру:

Название страны

Столица

Название студии

Место съемок

1.3 Выходные данные

В качестве выходных данных используются (выдаются на экран):

— в 1 запросе — список фильмов

— во 2 запросе — список актеров

— в 3 запросе — сведения об актерах

— в 4 запросе — список спонсоров

— в 5 запросе — список студий, актеров

— в 6 запросе — фильм

— в 7 запросе — страна, студия

— в 8 запросе — студия

А так же выводятся следующие сообщения об ошибках:

— страна не найдена

— студия не найдена

— фильм не найден

— актер не найден

2. ФОРМАЛИЗОВАННАЯ ПОСТАНОВКА ЗАДАЧИ

2.1 Разработка модели предметной области (МПО)

2.1.1 Составление перечня атрибутов и задание их характеристик

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

Таблица 2. 1

Код характеристики

Название характеристики

А1

Шаблон значений атрибута

А2

Процент наличия значений атрибута в экземплярах объекта

А3

Ограничения на доступ к значениям атрибута

А4

Частота использования атрибута

А5

Область допустимых значений

А6

Признак выводимости значений

А7

Признак дублирования значений

Таблица 2.2. Описание объекта СТУДИЯ

Имя атрибута

А1

А2

А3

А4

А5

А6

А7

Роль атрибута

НАЗВ

X (25)

-

-

-

-

-

-

Название студии

МЕСТО СЪЕМОК

Х (30)

-

-

-

-

-

-

Место проведения съемок

Таблица 2.3. Описание объекта СТРАНА

Имя атрибута

А1

А2

А3

А4

А5

А6

А7

Роль атрибута

НАЗВ

Х (20)

-

-

-

-

-

-

Название страны

СТОЛИЦА

Х (20)

-

-

-

-

-

-

Столица

Таблица 2.4. Описание объекта СПОНСОР

Имя атрибута

А1

А2

А3

А4

А5

А6

А7

Роль атрибута

НАЗВ

Х (40)

-

-

-

-

-

-

Название фирмы

КОЛ СРЕДСТВ

9(8)

-

-

-

-

-

-

Вложение

ПРИБЫЛЬ

9(8)

-

-

-

-

-

-

Прибыль с проката

Таблица 2.5. Описание объекта ФИЛЬМ

Имя атрибута

А1

А2

А3

А4

А5

А6

А7

Роль атрибута

НАЗВ

Х (30)

-

-

-

-

-

ДА

Название фильма

ЖАНР

Х (15)

-

-

-

-

-

ДА

Жанр фильма

БЮДЖЕТ

9(8)

-

-

-

-

-

-

Бюджет фильма

ВРЕМЯ ВЫХ

9(6)

-

-

-

-

-

ДА

Время выхода в прокат

Таблица 2.6. Описание объекта АКТЕР

Имя атрибута

А1

А2

А3

А4

А5

А6

А7

Роль атрибута

ФИО

Х (30)

-

-

-

-

ДА

-

ФИО актера

ГОНОРАР

9(8)

-

-

-

-

ДА

-

Гонорар за фильм

2.1. 2 Агрегация атрибутов, выделение объектов и задание их характеристик

Зададим для объектов характеристики, которые приведены в таблице 2. 7, и составим перечень характеристик выделенных объектов, представленный в таблице 2.8.

Таблица 2.7. Характеристики объекта

Код характеристики

Название характеристики

В1

Способ обращения к экземплярам объекта

В2

Структурная активность объекта

В3

Ограничения на доступ к экземплярам объекта

В4

Частота использования

В5

Количество экземпляров объекта

В6

Изменчивость состава экземпляров объекта

Таблица 2.8. Перечень характеристик выделенных объектов

Имя объекта

В1

В2

В3

В4

В5

Примечание

СТУДИЯ

К (НАЗВ)

М

-

-

-

-

СТРАНА

К (НАЗВ)

-

-

-

-

СПОНСОР

К (НАЗВ)

М

-

Руководство студии (фильма)

-

-

ФИЛЬМ

К (НАЗВ)

М

-

-

-

-

АКТЕР

К (ФИО)

М

-

-

-

-

2.1.3 Анализ запросов к информационной базе

1. Выдать список ФИЛЬМОВ, вышедших на данной СТУДИИ в данной СТРАНЕ.

2. Для данного (или указанного) ФИЛЬМА и данной СТУДИИ выдать список АКТЕРОВ.

3. Выдать сведения об АКТЕРАХ данной СТРАНЫ, снимавшихся в данном ФИЛЬМЕ данной СТУДИИ.

4. Выдать список всех СПОНСОРОВ, вложивших деньги в данный ФИЛЬМ данной СТУДИИ.

5. Для каждой или указанной СТРАНЫ выдать список СТУДИЙ и АКТЕРОВ.

6. Выдать ФИЛЬМ, где участвовал данный АКТЕР.

7. Для указанного ФИЛЬМА выдать СТРАНУ и СТУДИЮ, где он снимался.

8. Для данного АКТЕРА выдать СТУДИЮ, где он снимался.

2.1. 4 Установление функциональных связей и задание их характеристик

Выделим функциональные связи (ФС) по каждому из запросов (см. п. 2.1.3.):

1. Запрос можно представить следующей многомерной функциональной связью:

T (СТРАНА, СТУДИЯ) = 1: М, т.к.: в каждой стране может быть несколько студий, а определенная студия находится только в одной стране.

Применим преобразование 1.

2. Запрос можно представить следующей многомерной функциональной связью:

T (СТУДИЯ, ФИЛЬМ) = 1: М, т.к.: в каждой студии может сниматься несколько фильмов, а определенный фильм снят только в одной студии.

Применим преобразование 1.

3. Запрос можно представить следующей многомерной функциональной связью:

T (СТРАНА, СТУДИЯ) = 1: М, т.к.: в каждой стране может быть несколько студий, а определенная студия находится только в одной стране.

Применим преобразование 1.

T (СТУДИЯ, ФИЛЬМ) = 1: М, т.к.: в каждой студии может быть снято несколько фильмов, а определенный фильм снят только в одной студии.

Применим преобразование 1.

4. Запрос можно представить следующей многомерной функциональной связью:

T (СТУДИЯ, ФИЛЬМ) = 1: М, т.к.: в каждой студии может быть снято несколько фильмов, а определенный фильм снят только в одной студии.

Применим преобразование 1.

5. Запрос можно представить следующими одномерными функциональными связями:

6. Запрос можно представить следующей одномерной функциональной связью:

7. Запрос можно представить следующими одномерными функциональными связями:

8. Запрос можно представить следующей одномерной функциональной связью:

Присвоим номера функциональным связям.

1 запрос:

1.1 Т (СТРАНА, СТУДИЯ) = 1: М

1.2 Т (СТУДИЯ, ФИЛЬМ) = 1: М

2 запрос:

2.1 Т (СТУДИЯ, ФИЛЬМ) = 1: М

2.2 Т (ФИЛЬМ, АКТЕР) = 1: М

3 запрос:

3.1 Т (СТРАНА, СТУДИЯ) = 1: М

3.2 Т (СТУДИЯ, ФИЛЬМ) = 1: М

3.3 Т (ФИЛЬМ, АКТЕР) = 1: М

4 запрос

4.1 Т (СТУДИЯ, ФИЛЬМ) = 1: М

4.2 Т (ФИЛЬМ, СПОНСОР) = М: М

5 запрос

5.1 Т (СТРАНА, СТУДИЯ) = 1: М

5.2. Т (СТРАНА, АКТЕР) = 1: М

6 запрос

6.1. Т (АКТЕР, ФИЛЬМ) = М: 1

7 запрос

7.1 Т (ФИЛЬМ, СТРАНА) = М: М

7.2 Т (ФИЛЬМ, СТУДИЯ) = М: 1

8 запрос

8.1 Т (АКТЕР, СТУДИЯ) = М: 1

Таблица 2.9. Перечень функциональных связей

№ ФС

Исходные данные

Конечные объекты

Тип соответствия

Параметры выборки

Частота

Ограничение на время

Ограниче-ние на право

1. 1

СТРАНА

СТУДИЯ

1: М

Исх. :К (НАЗВ)

-

-

-

1. 2

СТУДИЯ

ФИЛЬМ

1: М

Исх. :К (НАЗВ)

Кон: М

-

-

-

2. 1

СТУДИЯ

ФИЛЬМ

1: М

Исх. :К (НАЗВ)

-

-

-

2. 2

ФИЛЬМ

АКТЕР

1: М

Исх. :К (НАЗВ)

Кон: М

-

-

-

3. 1

СТРАНА

СТУДИЯ

1: М

Исх. :К (НАЗВ)

-

-

-

3. 2

СТУДИЯ

ФИЛЬМ

1: М

Исх. :К (НАЗВ)

-

-

-

3. 3

ФИЛЬМ

АКТЕР

1: М

Исх. :К (НАЗВ)

Кон: М

4. 1

СТУДИЯ

ФИЛЬМ

1: М

Исх. :К (НАЗВ)

-

-

-

4. 2

ФИЛЬМ

СПОНСОР

М: М

Исх. :К (НАЗВ)

Кон: М

-

-

-

5. 1

СТРАНА

СТУДИЯ

1: М

Исх. :К (НАЗВ)

Кон: М

-

-

-

5. 2

СТРАНА

АКТЕР

1: М

Исх. :К (НАЗВ)

Кон: М

-

-

-

6. 1

АКТЕР

ФИЛЬМ

М: 1

Исх. :К (ФИО)

-

-

-

7. 1

ФИЛЬМ

СТРАНА

М: М

Исх: К (НАЗВ)

-

-

-

7. 2

ФИЛЬМ

СТУДИЯ

М: 1

Исх: К (НАЗВ)

-

-

-

8. 1

АКТЕР

СТУДИЯ

М: 1

Исх: К (ФИО)

-

-

-

2.1. 5 Установление структурных связей и задание их характеристик

Проанализировать функциональные связи и отобразим их в структурные связи (СС). Для данной процедуры используются следующие правила:

Правило 1. Положим, определена одномерная ФС F Y X1. где T (X1,Y)=1: M, тогда:

-- исходный объект Х1 объявляется владельцем СС;

-- конечный объект Y объявляется подчинённым;

-- значение характеристики С1 назначается ВП.

Правило 2. Положим, определена одномерная ФС F Y X2. где T (X2,Y)=M: 1, тогда:

-- конечный объект ФС Y объявляется владельцем СС;

-- исходный объект Х2 объявляется подчинённым;

-- значение характеристики С1 назначается ПВ.

Правило 3. Положим, определена одномерная ФС F Y X3. где T (X3,Y)=М: M, тогда:

-- исходный объект Х3 и конечный объект Y объявляются владельцами двух СС;

--подчинённым в обеих СС объявляется новый объект, который назовём объектом-связкой;

-- в СС, где владелец -- исходный объект ФС Х3, направление движения объявляется С1=ВП;

-- в СС, где владелец -- конечный объект ФС Y, направление движения объявляется С1=ПВ;

-- для объекта-связки в обеих СС выбирается класс членства С6=ОБ (обязательный).

Правило 4. Пусть дана многомерная ФС канонического вида F Y X4Х5, тогда:

-- все исходные и конечный объекты объявляются владельцами нескольких СС;

-- подчинённым во всех СС объявляется новый объект-связка;

-- объект-связка объявляется обязательным участником всех СС, то есть для него во всех СС выбирается класс членства С6=ОБ;

-- для одной из СС, где владелец -- исходный объект ФС, направление движения назначается С1=ВП, а во всех остальных -- С1=ПВ.

Проанализируем характеристики ФС.

1.1. Т (СТРАНА, СТУДИЯ) = 1: М, => по правилу 1 устанавливается связь S1, в которой объект СТРАНА является владельцем СС, СТУДИЯ — подчиненным объектом, значение характеристики С1 назначается ВП.

1.2. Т (СТУДИЯ, ФИЛЬМ) = 1: М, => по правилу 1 устанавливается связь S2, в которой объект СТУДИЯ является владельцем СС, ФИЛЬМ — подчиненным объектом, значение характеристики С1 назначается ВП.

2.1. Т (СТУДИЯ, ФИЛЬМ) = 1: М, => данная связь S2 уже установлена.

2.2. Т (ФИЛЬМ, АКТЕР) = 1: М, => по правилу 1 устанавливается связь S3, в которой объект ФИЛЬМ является владельцем СС, АКТЕР — подчиненным объектом, значение характеристики С1 назначается ВП.

3.1. Т (СТРАНА, СТУДИЯ) = 1: М, => данная связь S1 уже установлена.

3.2. Т (СТУДИЯ, ФИЛЬМ) = 1: М, => данная связь S2 уже установлена.

3.3. Т (ФИЛЬМ, АКТЕР) = 1: М, => данная связь S3 уже установлена.

4.1. Т (СТУДИЯ, ФИЛЬМ) = 1: М, => данная связь S2 уже установлена.

4.2. Т (ФИЛЬМ, СПОНСОР) = М: М, => к этой связи применимо правило 3. Устанавливается связь S4, в которой объект ФИЛЬМ является владельцем СС, объект-связка — подчиненным объектом, значение характеристики С1 назначается ВП; Устанавливается связь S5, в которой объект СПОНСОР является владельцем СС, объект-связка — подчиненным объектом, значение характеристики С1 назначается ПВ.

5.1. Т (СТРАНА, СТУДИЯ) = 1: М, => данная связь S1 уже установлена.

5.2. Т (СТРАНА, АКТЕР) = 1: М, => по правилу 1 устанавливается связь S6, в которой объект СТРАНА является владельцем СС, АКТЕР — подчиненным объектом, значение характеристики С1 назначается ВП.

6.1. Т (АКТЕР, ФИЛЬМ) = М: 1, к этой связи применимо правило 2. Отображение этой ФС корректирует значение С1 для ранее установленной СС S3. Теперь для S3 С1=ВПВ.

7.1. Т (ФИЛЬМ, СТРАНА) = М: М, => к этой связи применимо правило 3. Устанавливается связь S7, в которой объект ФИЛЬМ является владельцем СС, объект-связка — подчиненным объектом, значение характеристики С1 назначается ВП; Устанавливается связь S8, в которой объект СТРАНА является владельцем СС, объект-связка — подчиненным объектом, значение характеристики С1 назначается ПВ.

7.2. Т (ФИЛЬМ, СТУДИЯ) = М: 1, к этой связи применимо правило 2. Отображение этой ФС корректирует значение С1 для ранее установленной СС S2. Теперь для S2 С1=ВПВ.

8.1. Т (АКТЕР, СТУДИЯ) = М: 1, => к этой связи применимо правило 2, устанавливается связь S9, в которой объект СТУДИЯ является владельцем СС, АКТЕР — подчиненным объектом, значение характеристики С1 назначается ПВ.

Совокупность структурных связей представляют инфологическую схему МПО, представленную на рис. 2.1.

Рис. 2.1. Инфологическая схема

Каждой структурной связи (СС) присваиваем уникальное имя и определим её характеристики. Значение этих характеристик определяется на основе характеристик ФС. Перечень характеристик СС приведён в таблице 2.9.

Таблица 2. 10. Характеристики структурных связей

Код

Название характеристики

С1

С2

С3

С4

С5

С6

С7

С8

Направление движения по СС

Способ упорядочения экземпляров подчинённого объекта

Ограничения на право движения по СС

Частота использования

Количество экземпляров подчинённого объекта в СС

Класс членства подчинённого объекта

Перемещаемость экземпляров подчинённого объекта СС

Ограничения на время движения по СС

Таблица 2. 11. Перечень структурных связей

Имя СС

С1

С2

С3

С4

С5

С6

С7

С8

S1

ВП

НАЗВ

-

-

ПЕР

-

-

S2

ВПВ

НАЗВ

-

-

ПЕР

-

-

S3

ВПВ

ФИО

-

-

ПЕР

-

-

S4

ВП

-

-

ПЕР

ОБ

-

-

S5

ПВ

-

-

ПЕР

ОБ

-

-

S6

ВП

ФИО

-

-

ПЕР

-

-

S7

ВП

-

-

ПЕР

ОБ

-

-

S8

ПВ

-

-

ПЕР

ОБ

-

-

S9

ПВ

ФИО

-

-

ПЕР

-

-

2.2 Оптимизация и проверка корректности схемы МПО

Полученный первоначально вариант схемы МПО далее подлежит всестороннему анализу с целью проверки возможности оптимизации (упрощения), а также проверке на полноту и корректность.

Оптимизация заключается в преобразованиях схемы МПО с целью её упрощения. Основное правило допустимых преобразований: из схемы МПО можно исключить СС, если оставшиеся СС дают возможность обеспечить корректное выполнение всех ФС перечня. В процессе преобразований могут быть также исключены некоторые объекты-связки. Наиболее типичные преобразования структуры — это

1) исключение избыточной CC

2) исключение избыточного объекта-связки.

Попытаемся отыскать избыточную связь в инфологической схеме (см. рис. 2. 1) и провести преобразование 1. Замечаем, что связи S7 и S8 осуществляются также с помощью 2-х связей S1 (преобразуем в ВПВ) и S2. Также связь S2 осуществляется за счет S9(преобразуем в ВПВ) и S3. Связь S6 осуществляется за счет S1 и S9. Таким образом, связи являются избыточными и их можно удалить. Больше избыточных связей нет. Полученная оптимизированная инфологическая схема МПО представлена на рис. 2.2.

Рис. 2.2. Оптимизированная инфологическая схема

В качестве ОС1 выберем Договор.

Таблица 2. 12. Перечень структурных связей

Имя СС

С1

С2

С3

С4

С5

С6

С7

С8

S1

ВПВ

НАЗВ

-

-

ПЕР

-

-

S3

ВПВ

ФИО

-

-

ПЕР

-

-

S4

ВП

-

-

ПЕР

ОБ

-

-

S5

ПВ

-

-

ПЕР

ОБ

-

-

S9

ВПВ

ФИО

-

-

ПЕР

-

-

3. АБСТРАКТНЫЙ АНАЛИЗ И СИНТЕЗ МПО

3.1 Представление МПО с помощью абстрактных структур данных (АСД)

На основе схемы структурных связей приведем экземпляр МПО, достаточно полно отображающий режимы работы информационной системы (см. рис. 3. 1)

Рис. 3.1. Граф экземпляра модели предметной области

3.2 Предварительное преобразование структуры данных

Просмотрим перечень ФС (табл. 2. 9). В графе «Параметры выборки» у всех объектов установлены признаки, поэтому экземпляры каждого из этих объектов связываем в прямую разомкнутую цепь.

Просмотрим перечень СС (табл. 2. 12).

1) Характеристику C1=ВП имеют СС S4. В каждом экземпляре СС S4 каждый экземпляр объекта-владельца и соответствующие ему экземпляры подчиненного объекта связываются в прямую разомкнутую цепь.

2) Характеристику С1=ВПВ имеет СС S1, S3, S9. В каждом экземпляре этой СС каждый экземпляр объекта-владельца и соответствующие ему экземпляры подчиненного объекта связываются в двунаправленную разомкнутую цепь. (рис. 3. 2).

Рис. 3.2.

3.3 Декомпозиция структуры данных на более простые АСД

Представим АСД 1. АСД 1 является размеченным графом (см. рис. 3. 3).

/

/

Рис. 3.3. Схема АСД 1

Представим АСД2. АСД 2 является размеченным графом (см. рис. 3. 4).

Рис. 3.4. Схема АСД 2

Представим АСД3. АСД 3 является размеченным графом (см. рис. 3. 5). Объединим Объекты ДОГОВОР и СПОНСОР в кортеж.

/

/

Рис. 3.5 Схема АСД 3

4. РАЗРАБОТКА ВНЕШНИХ СПЕЦИФИКАЦИЙ ПРОГРАММЫ

4.1 Разработка представления данных при помощи логических структур данных (ЛСД)

Разработаем и проанализируем алгоритмы обработки структуры данных.

АЛГОРИТМ анонс фильмов

ВХОДНЫЕ ДАННЫЕ название страны, студии

ВЫХОДНЫЕ ДАННЫЕ фильмы

1. задать страну;

2. найти страну;

3. задать студию;

4. найти студию;

5. вывести список фильмов, снятых на данной студии;

КОНЕЦ анонс фильмов

АЛГОРИТМ актерский состав

ВХОДНЫЕ ДАННЫЕ название студии, фильма

ВЫХОДНЫЕ ДАННЫЕ список актеров

1. задать студию;

2. найти студию;

3. задать фильм;

4. найти фильм;

5. вывести список актеров, снятых в данном фильме;

КОНЕЦ актерский состав

АЛГОРИТМ актеры

ВХОДНЫЕ ДАННЫЕ название студии, фильма

ВЫХОДНЫЕ ДАННЫЕ список актеров

1. задать страну;

2. найти страну

3. задать студию;

4. найти студию;

5. задать фильм;

6. найти фильм;

7. вывести список актеров, снятых в данном фильме;

КОНЕЦ актеры

АЛГОРИТМ спонсоры

ВХОДНЫЕ ДАННЫЕ название студии, фильма

ВЫХОДНЫЕ ДАННЫЕ список спонсоров

1. задать студию;

2. найти студию;

3. задать фильм;

4. найти фильм;

5. вывести список спонсоров, вложивших деньги в данный фильм;

КОНЕЦ спонсоры

АЛГОРИТМ резервы страны

ВХОДНЫЕ ДАННЫЕ название страны

ВЫХОДНЫЕ ДАННЫЕ список студия, актеров

1. задать страну;

2. найти страну;

3. вывести список студий, находящихся в данной стране;

4. найти фильмы, снятые на данной студии;

5. вывести список актеров;

КОНЕЦ резервы страны

АЛГОРИТМ фильм

ВХОДНЫЕ ДАННЫЕ ФИО актера

ВЫХОДНЫЕ ДАННЫЕ фильм

1. задать ФИО актера;

2. найти актера;

3. вывести фильм, в котором он снялся;

КОНЕЦ фильм

АЛГОРИТМ фильм2

ВХОДНЫЕ ДАННЫЕ фильм

ВЫХОДНЫЕ ДАННЫЕ страна, студия

1. задать фильм;

2. найти фильм;

3. вывести студию, на которой он снимался;

4. вывести страну, в которой снимался фильм;

КОНЕЦ фильм2

АЛГОРИТМ студия

ВХОДНЫЕ ДАННЫЕ ФИО актера

ВЫХОДНЫЕ ДАННЫЕ студия

1. задать ФИО актера;

2. найти актера;

3. найти фильм, в котором он снимался;

4. вывести студию;

КОНЕЦ студия

4.2 Интерфейс программы. Разработка макетов ввода-вывода

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

=МЕНЮ=

1. Выдать список ФИЛЬМОВ, вышедших на данной СТУДИИ в данной стране

2. Для данного ФИЛЬМА и данной СТУДИИ привести список АКТЕРОВ

3. Выдать сведения об АКТЕРАХ данной СТРАНЫ, снимавшихся в данном

ФИЛЬМЕ данной СТУДИИ

4. Указать список всех СПОНСОРОВ, вложивших деньги в данный ФИЛЬМ данной СТУДИИ

5. Для указанной СТРАНЫ привести список СТУДИЙ и АКТЕРОВ

6. Выдать ФИЛЬМ, где участвовал данный АКТЕР

7. Для указанного ФИЛЬМА выдать СТРАНУ и СТУДИЮ, где он снимался

8. Для данного АКТЕРА указать СТУДИЮ, где он снимался

Esc. Выход

Рис. 4.1. Главное меню программы

Рассмотрим пункты меню:

Пункт 1 — реализует запрос № 1. Для активизации этого пункта меню пользователь должен нажать «1». Выводится сообщение, представленное на рис. 4.2.

введите название страны

введите название студии

Рис. 4.2. Сообщения «Запрос 1»

Пункт 2 — реализует запрос № 2. Для активизации этого пункта меню пользователь должен нажать «2». Выводится сообщение, представленное на рис. 4.3.

введите название студии

введите название фильма

Рис. 4.3. Сообщения «Запрос 2»

Пункт 3 — реализует запрос № 3. Для активизации этого пункта меню пользователь должен нажать «3». Выводится сообщение, представленное на рис. 4.4.

введите название страны

введите название студии

введите название фильма

Рис. 4.4. Сообщения «Запрос 3»

Пункт 4 — реализует запрос № 4. Для активизации этого пункта меню пользователь должен нажать «4». Выводится сообщение, представленное на рис. 4.3.

Пункт 5 — реализует запрос № 5. Для активизации этого пункта меню пользователь должен нажать «5». Выводится сообщение, представленное на рис. 4.5.

введите название страны

Рис. 4.5. Сообщения «Запрос 5»

Пункт 6 — реализует запрос № 6. Для активизации этого пункта меню пользователь должен нажать «6». Выводится сообщение, представленное на рис. 4.6.

введите ФИО актера

Рис. 4.6. Сообщения «Запрос 6»

Пункт 7 — реализует запрос № 7. Для активизации этого пункта меню пользователь должен нажать «7». Выводится сообщение, представленное на рис. 4.7.

введите название фильма

Рис. 4.7. Сообщения «Запрос 7»

Пункт 8 — реализует запрос № 8. Для активизации этого пункта меню пользователь должен нажать «8». Выводится сообщение, представленное на рис. 4.6.

Пункт «Выход" — реализует выход из меню программы. Для активизации этого пункта меню пользователь должен нажать «Esc.».

4.3 Разработка функций программы

Программа состоит из функций реализации запросов (далее ЗАПРОС 1−8). Ниже приводится описание этих функций:

zapros1 — обрабатывает информационную базу согласно запросу 1.

zapros2 — обрабатывает информационную базу согласно запросу 2.

zapros3 — обрабатывает информационную базу согласно запросу 3.

zapros4 — обрабатывает информационную базу согласно запросу 4.

zapros5 — обрабатывает информационную базу согласно запросу 5.

zapros6 — обрабатывает информационную базу согласно запросу 6.

zapros7 — обрабатывает информационную базу согласно запросу 7.

zapros8 — обрабатывает информационную базу согласно запросу 8.

4.4 Разработка функций программы по обработке ошибок

В случае возникновения ошибочной ситуации программа выводит на экран сообщения о соответствующей ошибке

5. РАЗРАБОТКА ВНУТРЕННИХ СПЕЦИФИКАЦИЙ ПРОГРАММЫ

5.1 Разработка структуры программы

Структура программы представлена на рис. 5.1 в виде иерархической схемы.

Рис. 5.1 Структура программы

где:

Zapros1 — процедура реализации запроса 1;

Zapros2 — процедура реализации запроса 2;

Zapros3 — процедура реализации запроса 3;

Zapros4 — процедура реализации запроса 4;

Zapros5 — процедура реализации запроса 5;

Zapros6 — процедура реализации запроса 6;

Zapros7 — процедура реализации запроса 7;

Zapros8 — процедура реализации запроса 8.

5.2 Разработка представления данных на уровне модели памяти

Представление данных на уровне модели памяти имеет вид, представленный на рис. 5. 2, рис. 5. 3, рис. 5.4.

Рис. 5.2 Схема представления ЛСД 1

Рис. 5.3. Схема представления ЛСД 2

Рис. 5.4. Схема представления ЛСД 3

5.3 Разработка алгоритмов модулей

Программа состоит из единственного модуля kurs. pas, который содержит в себе процедуры обработки запросов и основную программу.

6. ОПИСАНИЕ ПРОГРАММЫ Kurs

6.1 Вводная часть

Программа Kurs реализует запросы к информационной базе, содержащей сведения о «Киноиндустрии», которые хранятся на момент выполнения в памяти ЭВМ. Сведения в память ЭВМ заносятся из входных файлов strstd. dat, actors. dat.

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

6. 2 Функциональное назначение

Программа Kurs предназначена для реализации запросов к информационной базе. Она не предусматривает редактирования существующих и ввод новых данных. Ввод новых данных производится путем изменения входных файлов в любом текстовом редакторе. Для работы программы требуются следующие устройства:

накопитель на гибких или жестких магнитных дисках;

свободная оперативная память не менее 200 Кб;

дисплей;

клавиатура.

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

6.3 Описание информации

Входные данные поступают из входных файлов «strstd. dat» и «actors. dat».

Файл «actors. dat» имеет следующую структуру:

Название фильма

Жанр фильма

Бюджет

Время выхода в прокат

Название спонсора

Количество вложенных средств

Прибыль

ФИО актера

Гонорар

Файл «strstd. dat» состоит из нескольких следующих структур:

Название страны

Столица

Название студии

Место съемок

При работе программы выводится меню, описанное в п. 4.2.

Перечень сообщений используемых в работе программы при запросах представлен на рис. 4. 2−4.7 в пункте 4.2.

Перечень сообщений используемых в работе программы представлен в таблице 6.1.

Таблица 6.1. Сообщения

Текст сообщения

Содержание сообщения

Действие

Введите название страны

Требуется ввести название страны для выполнения запроса

Введите название страны для выполнения запроса

Введите название студии

Требуется название студии для выполнения запроса

Введите название студии для выполнения запроса

Введите ФИО актера

Требуется ввести ФИО актера для выполнения запроса

Введите ФИО актера для выполнения запроса

Введите название фильма

Требуется ввести название фильма для выполнения запроса

Введите название фильма для выполнения запроса

Страна не найдена

Необходимой по запросу страны не найдено

Никаких действий предпринимать не нужно, можно снова зайти в нужный запрос и изменить входные данные

Студия не найдена

Необходимой по запросу студии не найдено

Никаких действий предпринимать не нужно, можно снова зайти в нужный запрос и изменить входные данные

Фильм не найден

Необходимого по запросу фильма не найдено

Никаких действий предпринимать не нужно, можно снова зайти в нужный запрос и изменить входные данные

Актер не найден

Необходимого по запросу актера не найдено

Никаких действий предпринимать не нужно, можно снова зайти в нужный запрос и изменить входные данные

6.4 Описание логики программы

Алгоритм основной программы приведен рис. 6.1.

Рис. 6.1. Схема основной программы

6.5 Используемые подпрограммы

Программа Kurs использует следующие подпрограммы:

procedure Openf осуществляет чтение данных из файла и заносит данные в оперативную память.

procedure zapros1 осуществляет выполнение 1-ого запроса.

procedure zapros2 осуществляет выполнение 2-ого запроса.

procedure zapros3 осуществляет выполнение 3-его запроса.

procedure zapros4 осуществляет выполнение 4-ого запроса.

procedure zapros5 осуществляет выполнение 5-ого запроса.

procedure zapros6 осуществляет выполнение 6-ого запроса.

procedure zapros7 осуществляет выполнение 7-ого запроса.

procedure zapros8 осуществляет выполнение 8-ого запроса.

7. ОПИСАНИЕ ПОДПРОГРАММЫ zapros1

7.1 Вводная часть

Для реализации запроса 1 удобно создать отдельную подпрограмму, которая будет производить выборку.

7.2 Функциональное назначение

Подпрограмма предназначена для реализации запроса 1.

7.3 Описание информации

Входные данные:

Название страны, студии

Выходные данные:

Список фильмов

7.4 Описание логики

Логика подпрограммы zapros1 представлена на рис. 7.1.

Рис. 7.1. Логика подпрограммы zapros1

8. ОПИСАНИЕ ПОДПРОГРАММЫ zapros2

8.1 Вводная часть

Для реализации запроса 2 удобно создать отдельную подпрограмму, которая будет производить выборку.

8.2 Функциональное назначение

Подпрограмма предназначена для реализации запроса 2.

8.3 Описание информации

Входные данные:

Название студии, фильма.

Выходные данные:

Список актеров

8.4 Описание логики

Логика подпрограммы zapros2 представлена на рис. 8.1.

Рис. 8.1. Логика подпрограммы zapros2

9. ОПИСАНИЕ ПОДПРОГРАММЫ zapros3

9.1 Вводная часть

Для реализации запроса 3 удобно создать отдельную подпрограмму, которая будет производить выборку.

9.2 Функциональное назначение

Подпрограмма предназначена для реализации запроса 3.

9.3 Описание информации

Входные данные:

Название страны, студии, фильма.

Выходные данные:

Список актеров

9.4 Описание логики

Логика подпрограммы zapros3 представлена на рис. 9.1.

Рис. 9.1. Логика подпрограммы zapros3

10. ОПИСАНИЕ ПОДПРОГРАММЫ zapros4

10.1 Вводная часть

Для реализации запроса 4 удобно создать отдельную подпрограмму, которая будет производить выборку.

10.2 Функциональное назначение

Подпрограмма предназначена для реализации запроса 4.

10.3 Описание информации

Входные данные:

Название студии, фильма.

Выходные данные:

Список спонсоров

10.4 Описание логики

Логика подпрограммы Z4 представлена на рис. 10.1.

Рис. 10.1. Cхема подпрограммы zapros4

11. ОПИСАНИЕ ПОДПРОГРАММЫ zapros5

11.1 Вводная часть

Для реализации запроса 5 удобно создать отдельную подпрограмму, которая будет производить выборку.

11.2 Функциональное назначение

Подпрограмма предназначена для реализации запроса 5.

11.3 Описание информации

Входные данные:

Название страны

Выходные данные:

Список актеров, студий

11.4 Описание логики

Логика подпрограммы zapros5 представлена на рис 11.1.

Рис. 11.1. Схема подпрограммы zapros5

12. ОПИСАНИЕ ПОДПРОГРАММЫ zapros6

12.1 Вводная часть

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

12.2 Функциональное назначение

Подпрограмма предназначена для реализации запроса 6.

12.3 Описание информации

Входные данные:

ФИО актера

Выходные данные:

Фильм, в котором он снимался.

12.4 Описание логики

Логика подпрограммы zapros6 представлена на рис 12.1.

Рис. 12.1. Схема подпрограммы zapros6

13. ОПИСАНИЕ ПОДПРОГРАММЫ zapros7

13.1 Вводная часть

Для реализации запроса 7 удобно создать отдельную подпрограмму, которая будет производить выборку.

13.2 Функциональное назначение

Подпрограмма предназначена для реализации запроса 7.

13.3 Описание информации

Входные данные:

Название фильма

Выходные данные:

Студия и страна, где он снимался

13.4 Описание логики

Логика подпрограммы zapros7 представлена на рис 13.1.

Рис. 13.1. Схема подпрограммы zapros7

14. ОПИСАНИЕ ПОДПРОГРАММЫ zapros8

14.1 Вводная часть

Для реализации запроса 8 удобно создать отдельную подпрограмму, которая будет производить выборку.

14.2 Функциональное назначение

Подпрограмма предназначена для реализации запроса 8.

14.3 Описание информации

Входные данные:

ФИО актера

Выходные данные:

Студия, где он снимался

14.4 Описание логики

Логика подпрограммы zapros8 представлена на рис 14.1.

Рис. 14.1. Логика подпрограммы zapros8

15. ОПИСАНИЕ ПОДПРОГРАММЫ Openf

15.1 Вводная часть

Для загрузки базы данных из файлов удобно создать отдельную подпрограмму.

15.2 Функциональное назначение

Подпрограмма предназначена для загрузки базы.

15.3 Описание информации

Входные данные:

Файлы, содержащие информацию о студиях и странах (strstd. dat), а также о фильмах, актерах и спонсорах (actors. dat).

Выходные данные:

Нет

15.4 Описание логики

Логика подпрограммы Openf представлена на рис 15.1.

Рис. 15.1.

16. ТЕСТИРОВАНИЕ ПРОГРАММЫ

16.1 Разработка плана тестирования и набора тестов

Для проверки работоспособности программы необходимо разработать такой тест, чтобы он проверил все возможные случаи, которые могут возникнуть при пользовании этой программой. Для этого составим набор тестов:

Запрос 1.

Введено:

Австралия

Touchstone pictures

Ожидается:

Аферисты

Комедия

200

1989

Семь

Триллер

4500

1989

Запрос 2.

Введено:

Warner Brothers

Восставшие из ада

Ожидается:

Джессика Симпсон

120

Уорни Гамбл

3200

Запрос 3.

Введено:

США

Kolumbia pictures

Терминатор

Ожидается:

Арнольд Шварцнеггер

2300

Запрос 4.

Введено:

Warner Brothers

Восставшие из ада

Ожидается:

Greit

340

250

Запрос 5.

Введено:

США

Ожидается:

Columbia pictures

Hollywood

Trektil

Preston

Арнольд Шварценеггер

2300

Стивен Стрейт

3400

Запрос 6.

Введено:

Сэмюэл Л. Джексон

Ожидается:

Семь

Триллер

4500

1989

Запрос 7.

Введено:

Аферисты

Ожидается:

Touchstone pictures

Ronnu

Австралия

Канберра

Запрос 8.

Введено:

Сэмюэл Л. Джексон

Ожидается:

Touchstone pictures

Ronnu

16.2 Результаты тестирования

Распечатаем полные результаты, полученные по каждому из запросов.

Запрос 1.

введите название страны

Австралия

введите название студии

Touchstone pictures

Список фильмов

Аферисты

Комедия

200

1989

Семь

Триллер

4500

1989

Запрос 2.

введите название студии

Warner Brothers

введите название фильма

Восставшие из ада

Список актеров

Джессика Симпсон

120

Уорни Гамбл

3200

Запрос 3.

введите название страны

США

введите название студии

Columbia pictures

введите название фильма

Терминатор

Список актеров

Арнольд Шварценеггер

2300

Запрос 4.

введите название студии

Warner Brothers

введите название фильма

Восставшие из ада

Greit

340

250

Запрос 5.

введите название страны

США

Список студий

Columbia pictures

Hollywood

Trektil

Preston

Список актеров

Арнольд Шварценеггер

2300

Стивен Стрейт

3400

Запрос 6.

введите ФИО актера

Сэмюэл Л. Джексон

актер снимался в данном фильме

Семь

Триллер

4500

1989

Запрос 7.

введите фильм

Аферисты

фильм снимался на данной студии

Touchstone pictures

Ronnu

фильм снимался в данной стране

Австралия

Канберра

Запрос 8.

введите ФИО актера

Сэмюэл Л. Джексон

актер снимался на данной студии

Touchstone pictures

Ronnu

ЗАКЛЮЧЕНИЕ

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

Методология проектирования опиралась на курс «Структуры и алгоритмы обработки данных в ЭВМ».

Созданная информационная система служит для целей автоматизации человеческого труда. Это позволяет сэкономить большое количество времени и получать точные и абсолютно достоверные сведения.

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

СПИСОК ЛИТЕРАТУРЫ

программа спецификация руководство пользователь

1. Методические указания для самостоятельной работы студентов по дисциплине «Структуры и алгоритмы обработки данных в ЭВМ» Ч. 1 / Ижевск. гос. техн. университет. Сост. М. А. Сенилов, Ижевск, 1998. 23 с.

2. Лекции по дисциплине «Структуры и алгоритмы обработки данных».

ПРИЛОЖЕНИЕ 1

Текст программы

program kurs;

uses crt;

type tsponsor=^SPONSOR;

SPONSOR=record

NAZV: string;

KOLSR: integer;

PRIBUL: integer;

next: tsponsor;

end;

tactor=^ACTOR;

ACTOR=record

FIO: string;

GONORAR: integer;

Next: tactor;

end;

tfilm=^FILM;

FILM=record

NAZV: string;

ZHANR: string;

BUDGET: integer;

TIMEV: integer;

Next: tfilm;

Ukaz_sp: tsponsor;

Ukaz_ac: tactor;

end;

tstudia=^STUDIA;

STUDIA=record

NAZV: string;

MESTOS: string;

Next: tstudia;

Ukaz_f: tfilm;

end;

tstrana=^STRANA;

STRANA=record

NAZV: string;

STOLICA: string;

Next: tstrana;

Ukaz_st: tstudia;

end;

var f, f2: text;

key: char;

fs, str: tstrana;

fst, std: tstudia;

fsp, sp: tsponsor;

ff, fil: tfilm;

fa, ac: tactor;

procedure Openf;

begin

assign (f,'D: strstd. dat');

reset (f);

assign (f2,'D: actors. dat');

reset (f2);

str: =nil;

std: =nil;

if (not eof (f)) then

begin

new (fs);

new (fst);

str: =fs;

std: =fst;

readln (f, fs^. NAZV);

readln (f, fs^. STOLICA);

readln (f, fst^. NAZV);

readln (f, fst^. MESTOS);

fs^. ukaz_st:=fst;

while not eof (f) do

begin

new (fs^. next);

fs: =fs^. next;

readln (f, fs^. NAZV);

readln (f, fs^. STOLICA);

new (fst^. next);

fst: =fst^. next;

readln (f, fst^. NAZV);

readln (f, fst^. MESTOS);

end;

fs^. ukaz_st:=fst;

fs^. next:=nil;

fst^. next:=nil;

end;

sp: =nil;

fil: =nil;

ac: =nil;

if (not eof (f2)) then

begin

new (fsp);

new (ff);

new (fa);

sp: =fsp;

fil: =ff;

ac: =fa;

readln (f2,ff^. NAZV);

readln (f2,ff^. ZHANR);

readln (f2,ff^. BUDGET);

readln (f2,ff^. TIMEV);

readln (f2,fsp^. NAZV);

readln (f2,fsp^. KOLSR);

readln (f2,fsp^. PRIBUL);

readln (f2,fa^. FIO);

readln (f2,fa^. GONORAR);

ff^. ukaz_sp:=fsp;

ff^. ukaz_ac:=fa;

fst^. ukaz_f:=ff;

while not eof (f2) do

begin

new (ff^. next);

ff: =ff^. next;

readln (f2,ff^. NAZV);

readln (f2,ff^. ZHANR);

readln (f2,ff^. BUDGET);

readln (f2,ff^. TIMEV);

new (fsp^. next);

fsp: =fsp^. next;

readln (f2,fsp^. NAZV);

readln (f2,fsp^. KOLSR);

readln (f2,fsp^. PRIBUL);

new (fa^. next);

fa: =fa^. next;

readln (f2,fa^. FIO);

readln (f2,fa^. GONORAR);

end;

ff^. ukaz_sp:=fsp;

ff^. ukaz_ac:=fa;

fst^. ukaz_f:=ff;

ff^. next:=nil;

fsp^. next:=nil;

fa^. next:=nil;

end;

close (f);

close (f2);

end; {Openf}

procedure menu;

begin

Openf;

writeln ('=МЕНЮ=',#10#13,

'1. Выдать список ФИЛЬМОВ, вышедших на данной СТУДИИ в данной стране',#10#13,

'2. Для данного ФИЛЬМА и данной СТУДИИ привести список АКТЕРОВ',#10#13,

'3. Выдать сведения об АКТЕРАХ данной СТРАНЫ, снимавшихся в данном ФИЛЬМЕ данной СТУДИИ',#10#13,

'4. Указать список всех СПОНСОРОВ, вложивших деньги в данный ФИЛЬМ данной СТУДИИ ',#10#13,

'5. Для указанной СТРАНЫ привести список СТУДИЙ и АКТЕРОВ',#10#13,

'6. Выдать ФИЛЬМ, где участвовал данный АКТЕР',#10#13,

'7. Для указанного ФИЛЬМА выдать СТРАНУ и СТУДИЮ, где он снимался',#10#13,

'8. Для данного АКТЕРА указать СТУДИЮ, где он снимался',#10#13,

'Esc. Выход');

end; {menu}

procedure zapros1;

var nstr, nst: string;

begin

write ('введите название страны');

readln (nstr);

while str^. NAZV<>nstr do

begin

str: =str^. next;

if str=nil then

begin

writeln ('страна не найдена');

break;

end;

end;

write ('Введите название студии ');

readln (nst);

while std^. NAZV<>nst do

begin

std: =std^. next;

if std=nil then

begin

writeln ('Студия не найдена');

break;

end;

end;

while std^. next^. ukaz_f<>std^. ukaz_f do

begin

writeln ('список фильмов: ');

writeln (fil^. NAZV, fil^. ZHANR, fil^. BUDGET, fil^. TIMEV);

std^. ukaz_f:=std^. ukaz_f^. next;

end;

end; {zapros1}

procedure zapros2;

var nst, nf: string;

begin

write ('введите название студии');

readln (nst);

while std^. NAZV<>nst do

begin

std: =std^. next;

if std=nil then

begin

writeln ('студия не найдена');

break;

end;

end;

write ('Введите название фильма ');

readln (nf);

while fil^. NAZV<>nf do

begin

fil: =fil^. next;

if fil=nil then

begin

writeln ('фильм не найден');

break;

end;

end;

while fil^. next^. ukaz_ac<>fil^. ukaz_ac do

begin

writeln ('список актеров');

writeln (ac^. FIO, ac^. GONORAR);

fil^. ukaz_ac:=fil^. ukaz_ac^. next;

end;

end; {zapros2}

procedure zapros3;

var nstr, nst, nf: string;

begin

write ('Введите название страны ');

readln (nstr);

while str^. NAZV<>nstr do

begin

str: =str^. next;

if str=nil then

begin

writeln ('страна не найдена');

break;

end;

end;

write ('Введите название студии ');

readln (nst);

while std^. NAZV<>nst do

begin

std: =std^. next;

if std=nil then

begin

writeln ('Студия не найдена');

break;

end;

end;

write ('Введите фильм ');

readln (nf);

while fil< >nil do

begin

if fil^. NAZV=nf then

begin

repeat

writeln ('список актеров');

writeln (ac^. FIO, ac^. GONORAR);

fil^. ukaz_ac:=fil^. ukaz_ac^. next;

until fil^. next^. ukaz_ac=fil^. ukaz_ac;

end

else

fil: =fil^. next;

end;

end; {zapros3}

procedure zapros4;

var nst, nf: string;

begin

write ('введите название студии');

readln (nst);

while std^. NAZV<>nst do

begin

std: =std^. next;

if std=nil then

begin

writeln ('студия не найдена');

break;

end;

end;

write ('Введите название фильма ');

readln (nf);

while fil^. NAZV<>nf do

begin

fil: =fil^. next;

if fil=nil then

begin

writeln ('Студия не найдена');

break;

end;

end;

while fil^. next^. ukaz_sp<>fil^. ukaz_sp do

begin

writeln (sp^. NAZV, sp^. KOLSR, sp^. PRIBUL);

fil^. ukaz_sp:=fil^. ukaz_sp^. next;

end;

end; {zapros4}

procedure zapros5;

var nstr: string;

s: tstudia;

s2: tfilm;

begin

write ('введите название страны');

readln (nstr);

while str^. NAZV<>nstr do

begin

str: =str^. next;

if str=nil then

begin

writeln ('страна не найдена');

break;

end;

end;

while str^. next^. ukaz_st<>str^. ukaz_st do

begin

writeln ('список студий: ');

writeln (std^. NAZV, std^. MESTOS);

str^. ukaz_st:=str^. ukaz_st^. next;

end;

s: =str^. ukaz_st;

s2: =s^. ukaz_f;

while (str^. next^. ukaz_st<>s) and (s^. next^. ukaz_f<>s2) do

begin

while s2^. next^. ukaz_ac<> s2^. ukaz_ac do

begin

writeln ('список актеров: ');

writeln (ac^. FIO, ac^. GONORAR);

s2^. ukaz_ac:=s2^. ukaz_ac^. next;

end;

end;

end; {zapros5}

procedure zapros6;

var na: string;

begin

write ('Введите ФИО актера ');

readln (na);

while fil^. ukaz_ac^. FIO<>na do

begin

fil^. ukaz_ac:=fil^. ukaz_ac^. next;

if fil^. ukaz_ac=nil then

begin

writeln ('актер не найден');

break;

end;

end;

writeln ('актер снимался в данном фильме: ');

writeln (fil^. NAZV, fil^. ZHANR, fil^. BUDGET, fil^. TIMEV);

end; {zapros6}

procedure zapros7;

var nf: string;

begin

write ('Введите фильм ');

readln (nf);

while fil^. NAZV<>nf do

begin

fil: =fil^. next;

if fil=nil then

begin

writeln ('фильм не найден');

break;

end;

end;

while std^. next^. ukaz_f<>std^. ukaz_f do

begin

writeln ('фильм снимался на данной студии: ');

writeln (std^. NAZV, std^. MESTOS);

std^. ukaz_f:=std^. ukaz_f^. next;

end;

while str^. next^. ukaz_st<>str^. ukaz_st do

begin

writeln ('фильм снимался в данной стране: ');

writeln (str^. NAZV, str^. STOLICA);

str^. ukaz_st:=str^. ukaz_st^. next;

end;

end; {zapros7}

procedure zapros8;

var na: string;

begin

write ('введите ФИО актера');

readln (na);

while ac^. FIO<>na do

begin

ac: =ac^. next;

if ac=nil then

begin

writeln ('актер не найден');

break;

end;

end;

while fil^. next^. ukaz_ac<>fil^. ukaz_ac do

fil^. ukaz_ac:=fil^. ukaz_ac^. next;

while std^. next^. ukaz_f<>std^. ukaz_f do

begin

writeln ('актер снимался на данной студии: ');

writeln (std^. NAZV, std^. MESTOS);

std^. ukaz_f:=std^. ukaz_f^. next;

end;

end; {zapros8}

begin

repeat

clrscr;

menu;

key: =readkey;

case key of

#49: begin clrscr; zapros1; readkey; end;

#50: begin clrscr; zapros2; readkey; end;

#51: begin clrscr; zapros3; readkey; end;

#52: begin clrscr; zapros4; readkey; end;

#53: begin clrscr; zapros5; readkey; end;

#54: begin clrscr; zapros6; readkey; end;

#55: begin clrscr; zapros7; readkey; end;

#56: begin clrscr; zapros8; readkey; end;

end;

until key=#27;

end.

ПРИЛОЖЕНИЕ 2

Тексты входных файлов

Файл strstd. dat

Австралия

Канберра

Touchstone pictures

Ronnu

Канада

Оттава

Warner Brothers

Swiditch

США

Вашингтон

Columbia pictures

Hollywood

США

Вашингтон

Trektil

Preston

Файл actors. dat

Аферисты

Комедия

200

1989

Nike

200

300

Мастер Пи

1600

Аферисты

Комедия

200

1989

Dresscod

400

500

Крис Рок

1500

Аферисты

Комедия

200

1989

Coca-Cola

560

430

Мартин Лоуренс

2000

Семь

Триллер

4500

1989

Heineken

340

1200

Сэмюэл Л. Джексон

3200

Семь

Триллер

4500

1989

Heineken

340

1200

Бред Питт

1200

Восставшие из ада

Ужасы

2300

1998

Greit

340

250

Джессика Симпсон

120

Восставшие из ада

Ужасы

2300

1998

Greit

340

250

Уорни Гамбл

3200

Терминатор

Фантастика

1400

2000

Stiks

340

200

Арнольд Шварценеггер

2300

10 000 лет до нашей эры

Фантастика

300

2008

Jertis

560

490

Стивен Стрейт

3400

ПРИЛОЖЕНИЕ 3

РУКОВОДСТВО ПРОГРАММИСТА

1. Назначение программы

Данная программа написана на языке программирования Turbo Pascal 7. 0, она состоит из одного модуля: Kurs. pas.

2. Условия применения программы

Для работы с программой необходимо:

накопитель на жестких или гибких магнитных дисках

компьютер, совместимый с IBM PC

монитор не ниже MGA

свободная оперативная память не менее 200 Кб

MS-DOS 3.0 или выше.

3. Обращение к программе

Для запуска программы необходимо откомпилировать программу kurs. pas, набрать в командной строке kurs. exe и нажать клавишу ENTER.

4. Входные и выходные данные

Входные данные поступают из входных файлов «strstd. dat» и «actors. dat».

Файл «actors. dat» имеет следующую структуру:

Название фильма

Жанр фильма

Бюджет

Время выхода в прокат

Название спонсора

Количество вложенных средств

Прибыль

ФИО актера

Гонорар

Файл «strstd. dat» состоит из нескольких следующих структур:

Название страны

Столица

Название студии

Место съемок

5. Сообщения

Перед оператором могут возникнуть следующие сообщения:

Введите название студии:

Введите название фильма:

Введите название страны:

Введите ФИО актера:

На эти сообщения нужно вводить данные, соответствующие запросам.

Если по какому-либо из запросов не будет ничего не найдено, то выведется сообщение об ошибке:

Страна не найдена

Студия не найдена

Фильм не найден

Актер не найден.

6. Настройка программы

Данная программа не требует никаких действий для настройки ее на состав технических средств.

ПРИЛОЖЕНИЕ 4

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

1. Назначение программы

Данная программа предназначена для обращения к базе данных. С помощью этой программы и встроенных в нее запросов можно узнать интересующую информацию. В программе могут быть выполнены следующие запросы:

1. Выдать список ФИЛЬМОВ, вышедших на данной СТУДИИ в данной СТРАНЕ.

2. Для данного (или указанного) ФИЛЬМА и данной СТУДИИ привести список АКТЕРОВ.

3. Выдать сведения об АКТЕРАХ данной СТРАНЫ, снимавшихся в данном ФИЛЬМЕ данной СТУДИИ.

4. Указать список всех СПОНСОРОВ, вложивших деньги в данный ФИЛЬМ данной СТУДИИ.

5. Для каждой или указанной СТРАНЫ привести список СТУДИЙ и АКТЕРОВ.

6. Выдать ФИЛЬМ, где участвовал данный АКТЕР.

7. Для указанного ФИЛЬМА выдать СТРАНУ и СТУДИЮ, где он снимался.

8. Для данного АКТЕРА указать СТУДИЮ, где он снимался.

2. Условия применения программы

Для работы с программой необходимо:

накопитель на жестких или гибких магнитных дисках

компьютер, совместимый с IBM PC

монитор не ниже MGA

свободная оперативная память не менее 200 Кб

MS-DOS 3.0 или выше.

3. Пуск программы

Для запуска программы необходимо набрать в командной строке kurs и нажать клавишу < ENTER>.

4. Сообщения оператору

Перед оператором могут возникнуть следующие сообщения:

Введите название студии:

Введите название фильма:

ПоказатьСвернуть
Заполнить форму текущей работой