Постановка задачи
1. Спроектировать реляционную Базу Данных «Пенсионный фонд
2. Разработать приложение:
2.1 создать проект;
2.2 создать нормализованную базу данных;
2.3 создать таблицы:
2.4 создать формы для каждой таблицы;
2.5 создать запросы:
а) список получателей пенсии с высшим образованием и являющихся лауреатами государственных премии;
б) список получателей пенсии имеющих иждивенцев не менее двух;
в) список получателей пенсии, которые не достигли прожиточного минимума.
2.6 создать отчеты:
а) отобразить однотабличный отчет о поступлении пенсионеров
б) создание отчета Справка о пенсионере;
в) отобразить среднюю пенсию пенсионеров;
г) отобразить общее количества выплаченной пенсии пенсионерам.
3. создать главную кнопочную форму, которая содержала бы в себе запросы, отчеты и формы.
Содержание
Введение. 4
1 Логическое проектирование. 5
1.1 Нормализация базы данных 5
1.2 Связь между таблицами 6
2 Физическое проектирование. 8
2.1 Создание проекта 8
2.2 Создание базы данных 9
2.3 Создание таблиц 10
2.4 Создание целостности данных 18
2.5 Создание форм . 19
2.6 Создание запросов 26
2.6.1 Создания запроса, который будет выводить список получателей пенсии с высшим образованием и являющиеся лауреатами государственных премий. 28
2.6.2 Создания запроса, который будет выводить списко получателей пенсии имеющих иждивенцев не менее двух 30
2.6.3 Создания запроса по выборке получателей пенсии, которые не достигли прожиточного минимума 31
2.7 Создание отчетов 33
2.7.1 Создания однотабличного отчета. 33
2.7.2 Создания многотабличных отчетов с помощью конструктора отчетов. 37
3 Создания главной кнопочной формы . 42
Заключение. 43
Список литературы . 44
Приложение 1. 45
Приложение 2. 46
Приложение 3. 47
Приложение 4. 48
Приложение 5. 49
Введение
Цель курсовой работы - закрепление и демонстрация знаний, полученных при изучении дисциплины “База Данных”. Выполнение работы требует творческого подхода и всестороннего исследования поставленного задания.
Основными задачами курсовой работы являются:
· Изучить принципы организации и построения БД.
· Анализ поставленной задачи в создании БД.
· Выбрать предметную область и спроектировать БД.
· Разработать БД в среде Fox PRO 8.0.
· Осуществить заполнение БД.
· Разработать запросы, отчеты, формы к БД.
· Оформление расчетно-пояснительной записки.
· Защита курсовой работы.
База данных в Visual FoxPro — это совокупность таблиц, отношений между таблицами, индексов, триггеров и хранимых процедур.
Создание базы данных в Visual FoxPro осуществляется в интерактивном режиме с помощью конструктора базы данных, который позволяет:
1) создавать и модифицировать таблицы, хранимые процедуры, представления данных;
2) добавлять созданные ранее таблицы;
3) определять для таблиц индексы;
4) устанавливать отношения между таблицами, которые будут поддерживаться при создании форм и отчетов.
Следующие требования к базе данных:
1. БД должна содержать как минимум следующую информацию о пенсионерах: фамилию имя отчество, адрес, номер телефона, дату включения пенсионера в базу данных, образование, размер пенсии, данные трудовой книжки (общий стаж, место работы), сведения о награждениях, о поощрениях, дополнительные сведения.
2. БД должна содержать как минимум следующую информацию о работающем пенсионере: место работы, должность, размер заработной платы.
В первом пункте курсовой работы отображается логическое проектирование базы данных «Пенсионный фонд» с использованием нормализации. Также были определены связи между таблицами.
Во втором пункте поясняется процесс перехода логического проектирование в физический, с использованием СУБД Visual Fox Pro. А также объясняет по пунктам, что необходимо сделать для создания форм, запросов, отчетов.
В третьем пункте происходит сбор всех данных форм, запросов, отчетов в единое целое – главная кнопочная форма.
1 Логическое проектирование
1.1 Нормализация базы данных
Для поддержания БД в устойчивом состоянии используется ряд механизмов, которые получили обобщенное название средств поддержки целостности. Эти механизмы применяются как статически (на этапе проектирования БД), так и динамически (в процессе работы с БД).
Нормализация – это формализованная процедура, в процессе выполнения которой атрибуты данных (поля) группируются в таблицы, а таблицыв БД
Цель:
- исключить дублирования данных;
- обеспечить целостность данных, таким образом, чтобы при изменении одних объектов. Автоматически происходило соответственные изменения связных с ним объектов.
В БД имеется таблица, в которой хранятся следующие сведения: ФИО пенсионера; адрес; год рождения; телефон; пол; количество детей; размер пенсии; стаж; место работы; должность; зарплата за последние 5 лет; сведения о награждениях; сведения о поощрениях.
Каждая последующая нормальная форма должна удовлетворять требованиям предыдущей формы и некоторыми дополнительными условиями.
1. Отношения находящиеся в первой нормальной форме, если каждый её элементт имеет и всегда будет иметь атомарное значение, т.е. на пересечении строки и столбца в таблице может быть только одно значение.
2. Отношения находятся во 2-ой нормальной форме, если они находятся в первой нормальной форме и все неключевые атрибуты полностью функционально зависят от однозначной идентификации каждого неключевого атрибута требуется весь ключ (а не его часть).
3.Отношение находятся в 3-ей нормальной форме, если оно во второй нормальной форме и установлены функциональные транзитивные зависимости междуу неключевыми атрибутами, когда один ключевой атрибут может быть заменен одним или несколькими неключевыми атрибутами.
Зная все правила нормализации трех нормальных форм можно создать из одной таблицы 4 таблицы третьей нормальной формы (рис. 1.1).
Рисунок 1.1. Нормализованная база данных
1.2 Связь между таблицами
Типы связей между таблицами
1) один к одному. При таком типе связи каждой записи одной таблицы соответствует не более одной записи другой таблицы и наоборот. Связанные таким образом таблицы можно легко объединить в одну. Связь часто используется для разбиения очень широких таблиц на более узкие, что позволяет уменьшить время просмотра и управлять доступом к определенным частям таблицы.
2) один ко многим. Связывает одну строку какой-либо таблицы с двумя или несколькими строками другой. Связь устанавливается между первичным ключом основной таблицы и соответственным внешним ключом связной или подчиненной таблицы. Такие связи наиболее распространены между таблицами реляционной БД.
3) многие к одному. Что и один ко многим
4) многие ко многим. Связь нельзя установить между таблицами непосредственно, она устанавливается через третью таблицу, связную с двумя основными таблицами отношением многие к одному. На рисунке 1.2.1 изображены связи между таблицами.
Рисунок 1.1. Межтабличные связи
2 Физическое проектирование
2.1 Создание проекта
Приступая к разработке нового приложения, прежде всего, создайте проект приложения. В дальнейшем вы будете добавлять в него созданные вами элементы приложения. Для создания нового проекта вы можете использовать мастер Application Wizard (Мастер приложения) или команду New (Новый) из меню File (Файл).
При выполнении команды New (Новый) на экране открывается соответствующее диалоговое окно с перечислением всех типов элементов приложения, которые возможны в Visual FoxPro, что и отображено на рис. 2.1. По умолчанию установлена опция Project (Проект).
Для создания нового проекта выполните следующие действия:
1. Нажмите кнопку New file (Новый файл).
Рис. 2.1. Диалоговое окно New
2. В поле ввода Enter project (Введите имя проекта) диалогового окна Create (Создать) задайте имя создаваемого проекта (proj1), убедившись, что в поле Тип файла установлен тип сохраняемого файла Project (Проект), а в поле Папка правильно выбрана папка, в которой вы хотите расположить свой проект.
3. Для сохранения созданного проекта нажмите кнопку Сохранить. VisualFoxPro создаст файлы проекта и запишет их в указанное место. После этого откроется окно проекта Project Manager (Менеджер проекта) изображенное на рис. 2.1.1.
Рис. 2.1.1. Окно проекта Project Manager
2.2 Создание базы данных
Для создания базы данных выполним ряд операций:
1. Откройте созданный проект proj1.
2. Выберите в верхней части окна конструктора проектов вкладку Data(Данные). Курсор по умолчанию устанавливается в начале вкладки назначении Databases (Базы данных).
3. Нажмите кнопку New (Новый) в окне проекта.
4. В открывшемся диалоговом окне New Database (Новая база данных) нажмите кнопку New Database (Новая база данных).
5. В поле ввода Enter database (Введите имя базы данных) появившегося на экране диалогового окна Create (Создать) задайте имя создаваемой базы данных (data1), убедившись, что в поле Тип файла установлен тип сохраняемого файла Database (База данных), а в раскрывающемся списке Папка правильно указана папка, в которой вы хотите расположить создаваемую базу данных.
6. Для сохранения созданной базы данных нажмите кнопку Сохранить. После этого откроется пустое окно базы данных Database Designer(Конструктор базы данных) (рис. 2.2). Используя панель инструментов Designer (Конструктор базы данных), команды меню Database(База данных) и контекстное меню, в окне конструктора базы данных вы можете создавать новые таблицы, модифицировать существующие, создавать для них индексы, устанавливать отношения между таблицами.
Рис. 2.2. Пустое окно конструктора базы данных
2.3 Создание таблиц
Создавать таблицы будем с помощью Конструктора таблицы, потому что он предоставляет разработчику более широкие возможности при создании таблицы, чем мастер.
В конструктор таблицы вы можете перейти из мастера по созданию таблицы или непосредственно из диалогового окна New Table (Новая таблица), нажав кнопку New Table (Новая таблица) и введя в диалоговом окне Create (Создать) имя создаваемой таблицы. В результате выполнения этих действий откроется окно конструктора таблицы Table Designer(Конструктор таблицы).
Окно конструктора таблицы Table Designer (Конструктор таблицы)(рис. 2.3.) содержит три вкладки, предназначенные для определения следующих параметров: Fields (Поля) — полей таблицы; Indexes (Индексы) — индексов; Table (Таблица) — условий достоверности вводимых данных, а также триггеров добавления, удаления и модификации.
Рис. 2.3. Окно конструктора таблицы Table Designer
Вкладка Fields (Поля), позволяет ввести наименование поля, тип данных, размещаемых в поле, и ширину. При определении числовых полей необходимо также задать количество десятичных знаков.
Наименования полей таблицы вводятся на вкладке Fields (Поля) в строке ввода столбца Name (Имя). При задании наименований полей вы можете использовать буквы, цифры и знак подчеркивания. Ваши попытки ввести специальные символы Visual FoxPro проигнорирует.
Длина наименования поля ограничивается 128-ю символами. Вряд ли вы воспользуетесь возможностью задавать такие длинные имена. Обычно для имен полей используют краткие названия, которые более наглядны и легко читаемы.
Visual FoxPro не позволяет иметь в таблице поля с одинаковыми именами. При вводе имени, уже имеющегося в таблице, программа выдает предупреждение, указывающее, что поле с таким именем в таблице уже существует.
Поля таблицы предназначены для хранения в них данных. Это могут быть числа, текстовая информация, даты, графические файлы и т. д. Для определения типа данных, размещаемых в поле, используются тип поля, его ширина и количество знаков после запятой. Для их ввода предназначены столбцы Туре (Тип), Width (Ширина) и Decimal (Десятичные) вкладки Fields(Поля) конструктора таблицы.
В Visual FoxPro допустимыми являются типы полей, перечисленные в таблице 1
Таблица 1 Типы полей Visual FoxPro
Тип
Наименование
Отображаемые данные
Текстовый
Character, Character(binary)
Текстовые поля могут содержать буквы, цифры и специальные символы. Максимальная ширина поля составляет 254 символа. тип Character (binary) используется в том случае, если не требуется учитывать кодовую страницу отображаемых данных
Числовой
Integer, Numeric, Float, Double
Integer отображает целые числа от-2 147 483 647 до +2 147 483 646. Числовые поля типа Numeric и Float отображают данные с фиксированной точкой в диапазоне от-0.9999999999x1 (Г19 до +0.9999999999х10+2°. Тип данных Double используется для хранения данных с высокой точностью в диапазоне от±4.9406564854 1247x1 (Г324 до±1 .797693 13486232x1 (Г308
Денежный
Currency
В поле денежного типа могут содержаться числа от -922 337 203 685 477.5807 до922 337 203 685 477.5807
Дата
Date
В поле типа Date может содержаться любая дата от 01. 01. 0001 до 31. 12.9999
Дата и время
DateTime
В поле типа DateTime может содержаться любая дата от 01.01.0001 до 31.12.9999 и время от 00:00:00 а.m до 11 :59:59 р.m.
Логический
Logical
Содержит логическое значение True (Т.)(Истина) или False (.F.) (Ложь)
Текстовое поле произвольной длины
Memo, Memo(binary)
Memo-поле содержит символьные данные большого объема
Двоичное поле произвольной длины
General
Поле данного типа предназначено для хранения в таблицах изображений и других двоичных данных
Введем имена полей первой таблицы – «Личные данные» и обозначим каждому полю свой тип.
Рис. 2.3.1. Таблица «Личные сведения»
В остальных таблицах аналогично вводим поля и задаем тип.
Рис. 2.3.2 Таблица «Дополнительные сведения»
Введем имена полей и тип для 3 таблицы – «Сведения о работе» (рис 2.3.3.)
Рис. 2.3.3 Таблица «Сведения о работе»
Введем имена полей второй таблицы – «Сведения о поощрениях и награждениях» (рис 2.3.4.)
Рис. 2.3.4 таблица «Сведения о поощрениях и награждениях»
Необходимо также создать уникальный ключ, который не будет повторятся, так называемый index.
Для создания индекса таблицы используется вкладка Indexes (Индексы) (рис. 2.3.5) окна конструктора таблицы Table Designer (Конструктор таблицы).
Рис. 2.3.5. Вкладка Indexes конструктора таблицы, предназначенная для создания индексов
Все индексы в Visual FoxPro имеют имена, задаваемые в поле Name (Имя). Слева от имени индекса в столбце Order (Упорядочение) располагается переключатель, определяющий порядок, в котором будут выстраиваться значения индексного выражения. По умолчанию при создании индекса в данном поле появляется стрелка, направленная вверх. Это означает, что значения индексного выражения упорядочены по возрастанию. Если стрелка направлена вниз, это говорит о том, что значения упорядочены по убыванию. Для изменения способа упорядочения можно нажать клавишу или щелкнуть кнопкой мыши.
Список Туре (Тип) используется для задания типа создаваемого индекса и содержит значения, описанные в таблице 2.
Таблица 2 Описание типов индекса
Тип индекса
Описание
Regular(Обычный)
Создается индекс, в котором для каждой записи таблицы хранится значение индексного выражения. Если несколько записей имеют одинаковое значение индексного выражения, то каждое значение хранится отдельно и содержит ссылку на связанную с ней запись
Candidate(Кандидат)
Создается уникальный индекс, который не содержит полей с пустыми значениями. Этот индекс обладает всеми качествами первичного ключа и не является им только по той причине, что таблица не может содержать более одного первичного ключа
Primary(Первичный)
Создается уникальный индекс, который используется для связывания таблиц и определения условий целостности данных. Поля, входящие в первичный ключ, не должны допускать ввода пустых значений. В отличие от уникального индекса, таблица может иметь только один первичный ключ
К каждой таблице нужно ввести Index. В каждой таблице выберем в качестве Index’а поле npensii. По этому полю будет связываться таблицы.
Создание межтабличных связей
Между таблицами существует четыре типа отношений. Это "один-к-одному", "один-ко-многим", "много-к-одному", "много-ко - многим". Все эти типы отношений поддерживаются в Visual FoxPro. Как правило, в Visual FoxPro при создании форм, отчетов и запросов используется несколько таблиц, между которыми установлены постоянные отношения. Такие таблицы называются связанными. Из двух связанных таблиц одна является главной, а другая — подчиненной. Главную таблицу называют родительской, а подчиненную — дочерней. При создании индексов для родительской таблицы должен быть определен ключ типа Primary
(Первичный) или типа Candidate (Кандидат), а для дочерней таблицы — индекс для связи с родительской таблицей типа Regular (Обычный). Связи таблиц обозначены на рисунке 2.3.1.1.
Рис. 2.3.1.1 Межтабличные связи
2.4 Создание целостности данных
Целостность данных является одним из самых важных требований, предъявляемых к базам данных.
Для определения условия целостности данных используется окно построителя условий целостности данных Referential Integrity Builder (Построитель целостности данных) (рис. 2.4), которое содержит перечень всех установленных отношений между таблицами. В данной базе данный не требуется что либо изменять, а нужно оставить все по умолчанию.
Рис. 2.4. Диалоговое окно Referential Integrity Builder (Построитель целостности данных)
2.5 Создание форм
Создавать формы будем через мастера (wizard), так как для начала пусть создаст нужные компоненты и расставит их в нужном порядке. Форму, созданную с помощью мастера, можно использовать для просмотра и редактирования информации, содержащейся в таблицах Visual FoxPro. Для создания формы с помощью мастера требуется:
1. Откройте базу данных проекта. Для этого на вкладке Data (Данные) установите курсор на ее название и нажмите кнопку Open (Открыть) окна проекта. При этом на стандартной панели инструментов в списке Databases (Базы данных) появится название открытой базы данных.
2. Щелкните на ярлыке Documents (Документы) для перехода на вкладку Documents (Документы) (рис. 2.5).
3. Выберите группу Forms (Формы) и нажмите кнопку New (Новый) окна конструктора проекта. Откроется диалоговое окно New Form (Новая форма).
4. Нажмите кнопку Form Wizard (Мастер формы).
5. После запуска мастера форм на экране открывается диалоговое окно Wizard Selection (Выбор мастера) (рис. 2.5.1). Значение Form Wizard (Мастер формы) используется для создания однотабличной формы, a One-to-ManyForm Wizard (Мастер форм один-ко-многим) — для нескольких связанных. По умолчанию установлено первое значение. Нажмите кнопку ОК для запуска мастера по созданию однотабличной формы.
6. Появляется первое диалоговое окно мастера (рис. 2.5.2), в котором необходимо указать таблицу, для которой вы создаете форму, и выбрать поля этой таблицы, размещаемые в форме. В области Databases and tables(Базы данных и таблицы) расположены два списка. В верхнем списке содержится перечень открытых баз данных, в нижнем — перечень таблиц выбранной базы. Выберите из верхнего списка необходимую базу данных, а из нижнего — таблицу, для которой создаете форму.
Рис. 2.5. Окно проекта
Рис. 2.5.1. Диалоговое окно для задания типа создаваемой формы: однотабличной или многотабличной
Рис. 2.5.2. Первый шаг в создании формы с помощью мастера
7. После выбора таблицы список Available fields (Имеющиеся поля) будет содержать перечень всех полей таблицы. Вам необходимо из данного списка перенести в Selected fields (Выбранные поля) поля, которые вы хотите разместить в создаваемой форме. Для переноса полей используйте кнопки, расположенные между списками. После создания списка полей, отображаемых в форме, нажмите кнопку Next (Далее) для перехода к следующему шагу.
8. В появившемся диалоговом окне мастера следует установить стиль отображения объектов формы и типы кнопок управления (рис. 2.5.3).
Рис. 2.5.3. Окно для выбора стиля отображения полей и управляющих кнопок
9. На следующем (третьем) шаге задается критерий сортировки данных, отображаемых в форме. Перемещаем поле npensii вправо и нажимаем next (далее). Отображено на рисунке 2.5.4.
Рис. 2.5.4. Окно для выбора стиля отображения полей и управляющих кнопок
10. На заключительном шаге создания формы с помощью мастера (рис. 2.5.5) вы можете задать заголовок формы в поле Type a title for your form (Тип заголовка формы), а также указать предполагаемые действия с созданной формой, используя опции. В нашем случае выберем галочку save forь for later use (сохранить форму для дальнейшего использования).
Рис. 2.5.5. Окно для выбора сохранения данной формы
На рис. 2.5.6 представлена форма, созданная с помощью мастера. Если вам потребуются дополнительные средства для управления формой, вы можете модифицировать ее в конструкторе форм.
Использовались стандартные компоненты, предлагаемые с помощью мастера:
1) text box – предназначен для ввода каких либо данных небольшого объема.
2) Label – метка, предназначенная для подписание чего либо, либо вывода просто текста на форме.
3) Navigator – содержит множество кнопок с помощью которых можно легко добавлять, удалять, изменять новые записи в таблицу. А также возможность поиска нужно информации и перемещение на самую первую, либо на самую последнюю созданную запись.
4) Line – этот компонент говорит сам за себя, просто рисует линия на форме.
Рис. 2.5.6. форма созданная с помощью мастера
На рисунке 2.5.7. изображена форма уже прошедшая изменения с помощью конструктора форм. Основные изменения, подвергшиеся в конструкторе форм – это переименования Меток (Labels) и кнопок на русский язык, с помощью свойства Caption. Удаления знака $, с помощью свойства Format (формат).
Рис. 2.5.7. форма «Дополнительные сведения» созданная с помощью мастера и доработанная в конструкторе форм
Каждая форма создавалась, проходя 8 пунктов создания формы с помощью мастера. Также формы были доработаны с помощью конструктора форм и получился результат на следующих рисунках.
На форме «Личные сведения» были проделаны те же операции, что и с формой «дополнительная информация», но также был добавлен компонент Option group. Этот компонент упрощает ввод пола, потому что он уже заложен в программу автоматически и предлагает 2 варианта: Мужской и Женский (рис. 2.5.8).
Рис. 2.5.8. форма «Личные сведения» созданная с помощью мастера и доработанная в конструкторе форм
Рис. 2.5.9. форма «Сведения о работе» созданная с помощью мастера и доработанная в конструкторе форм
Рис. 2.5.10. форма «сведения о награждениях» созданная с помощью мастера и доработанная в конструкторе форм
2.6 Создание запросов
Одним из основных назначений разработанного приложения является быстрый поиск информации в базе данных и получение ответов на разнообразные вопросы. Для этих целей в Visual FoxPro используются средства, называемые запросами.
Результатом запроса является таблица, которую вы можете сохранить в массиве, в создаваемой новой таблице, отобразить на экране в режиме Browse (Просмотр) или вывести в виде отчета.
Для создания запросов вы можете использовать мастер запросов, который последовательно запрашивает наименования таблиц, используемых в запросе, перечень полей таблиц, критерий упорядочения и условия фильтрации данных.
На рис. 2.6 приведено диалоговое окно мастера, позволяющее сформировать условия фильтрации выбираемых из таблицы данных. Мы не будем рассматривать создание запросов с помощью мастера, т. к. конструктор запросов достаточно прост и работа в нем у вас не вызовет затруднений.
Рис. 2.6. Ввод условия выборки в мастере запросов
Для создания запроса в окне конструктора запросов выполните следующие действия:
1. На вкладке Data (Данные) конструктора проекта выберите группу Queries (Запросы).
2. Нажмите кнопку New (Новый).
3. В открывшемся диалоговом окне New Query (Новый запрос) нажмите кнопку New Query (Новый запрос). Открывается диалоговое окно выбора таблиц Add Table or View (Добавить таблицу или представление данных).
4. В этом диалоговом окне выберите таблицы, данные из которых хотите использовать в запросе, и с помощью кнопки Add (Добавить) перенесите их в окно конструктора запросов.
5. Завершив выбор таблиц, нажмите кнопку Close (Закрыть).
На экране появляется окно конструктора запросов (рис. 2.6.1), которое содержит названия выбранных таблиц, а в основном меню появляется пункт Query (Запрос). Можно приступать к формированию условий запроса. Описание вкладок приведены в таблице 3.
Рис. 2.6.1. Окно конструктора запросов с выбранными таблицами: «Личные сведения», «Дополнительные сведения», «Сведения о работе»
Таблица 3. Назначение вкладок окна конструктора запросов
Вкладка
Назначение
Fields (Поля)
Позволяет указать поля исходных таблиц, выбираемые в результирующий запрос
Join (Объединение)
Позволяет задать условия объединения таблиц
Filter (Фильтр)
Позволяет определить фильтры, накладываемые для выбора записей
Order By (Упорядочение)
Позволяет задать критерии упорядочения данных
Group By (Группировка)
Позволяет задать условия группировки данных
Miscellaneous (Разное)
Позволяет задать дополнительные условия, такие как признак выборки повторяющихся значений, количество или процент выбора данных
2.6.1 Создания запроса, который будет выводить список получателей пенсии с высшим образованием и являющиеся лауреатами государственных премий
Необходимо добавить две таблицы «Личные сведения» и «Дополнительные сведения». Связь таблиц установится автоматически через поле npensii. Во вкладке fields (Поля) выберем нам нужные первой и второй таблицы поля, после чего добавим их в поле Selection fields (выбранные поля) через кнопку add> (добавить вправо), что и изображено на рисунке 2.6.1.1.
Поля:
а)table1.fio
б)table4.sved_o_nagrazh
в)table2.education
г)table1.address
Рис. 2.6.1.1 Окно конструктора запроса 1 (Query1) с выбранными таблицами и полями
Затем перемещаемся во вкладку Filter (фильтр) и там уже непосредственно и произведем отбор из пенсионеров тех, которые нам нужны. Для этого выберем в после Fields (Поля) дополнительные сведения.education (поле образование во второй таблице). Затем в поле Criteria (Критерий) укажем знак равенства (=). В поле Example (пример) введем слово «высшее» в кавычках. Полная строчка будет означать: «Если в поле Образование есть слово высшее то отфильтровать». Нажать на кнопку insert, для вставки еще одного фильтра (условия). В поле Fields (поля) ввести сведения о награждениях.sved_o_nagrazh. В поле Example слово лауреат в кавычках. В Criteria выбрать знак равенства (=) На рисунке 2.6.1.2 изображена вкладка Filter (фильтр).
Рис. 2.6.1.2 Вкладка Filter (фильтр) с условием фильтрации по слову «высшее»
Рис. 2.6.1.3 Запрос в выполнении, при нажатии кнопки Run (запуск)
2.6.2 Создания запроса, который будет выводить списко получателей пенсии имеющих иждивенцев не менее двух
Добавим 2 таблицы «Личные сведения» и «Дополнительные сведения». Связь, аналогична первому запросу, устанавливается автоматически по полю npensii. Добавим нужные поля:
а) table1.fio
б) table1.address
в) table2.kolvo_detei
Рис. 2.6.2.1 Окно конструктора запроса 2 (Query2) с выбранными таблицами и полями
Устанавливаем фильтр для данного запроса, который заключается в выборе поля table2.kolvo_detei, установления критерия больше или равно (>=), а затем ставим минимальное число два (2). Фильтр отображен на рисунке 2.6.2.2.
Рис. 2.6.2.2 Вкладка Filter (фильтр) с условием фильтрации для второго запроса
Эта строчка фильтрации означает: «если количество детей будет больше или равно двум (2), то значит его (пенсионера) выводить в таблицу.
Результат запроса изображен на рисунке 2.6.2.3.
Рис. 2.6.2.3 Запрос в выполнении, при нажатии кнопки Run (запуск)
2.6.3 Создания запроса по выборке получателей пенсии, которые не достигли прожиточного минимума
Добавим 2 таблицы «Личные сведения» и «Дополнительные сведения». Связь устанавливается автоматически по полю npensii. Добавим нужные поля:
а) table1.fio
б) table1.address
в) table1.telephone
г) table2.razmerpensii
Выбранные таблицы и поля, а также связь между таблицами, отображены на рисунке 2.6.3.1.
Рис. 2.6.3.1 Окно конструктора запроса 3 (Query3) с выбранными таблицами и полями
Устанавливаем фильтр для запроса 3. Выбираем поле table2.razmerpensii и устанавливаем критерий больше (
Рис. 2.6.3.2 Вкладка Filter (фильтр) с условием фильтрации для третьего запроса
Результат запроса отображен на рисунке 2.6.3.3.
Рис. 2.6.3.3 Запрос в выполнении, при нажатии кнопки Run (запуск)
2.7 Создание отчетов
Отчет представляет собой форматированное представление данных, выводимое на экран, принтер или в файл. Отчет, создаваемый в Visual FoxPro, может быть представлен в табличном виде или в свободной форме. Табличный отчет — это напечатанная таблица, в которой строка представляет собой запись, а каждый из элементов строки содержит поле исходной таблицы или вычисляемое поле. Данные в таблице упорядочены. Табличные отчеты используются для печати данных, представленных в виде списка. При подготовке писем, почтовых этикеток поля используемых в отчете таблиц должны располагаться в специально выделенных для них местах. В этом случае табличный отчет не подходит и используются отчеты в свободной форме. При создании такого отчета вы можете воспользоваться стандартным форматом, автоматически создаваемым Visual FoxPro для каждой таблицы, при котором поля исходной таблицы располагаются вертикально. Используя конструктор отчетов, вы можете разрабатывать собственные форматы отчета, где поля исходной таблицы будут расположены там, где вам нужно.
В Visual FoxPro для создания отчетов можно использовать следующие средства: Report Wizard (Мастер отчета). Позволяет достаточно быстро создать отчет, применяя сортировку, группировку данных и заданный вами стиль оформления. Для создания готового отчета с помощью мастера достаточно ответить на ряд вопросов Report Wizard (Мастер отчета) Visual FoxPro. Report Designer (Конструктор отчета). В конструкторе отчетов вы можете разрабатывать или модифицировать отчеты, созданные с помощью мастера.
· Quick Report (Быстрый отчет). Данное средство предназначено для размещения в конструкторе отчета полей и задания среды окружения. Разработчику на выбор предлагается два варианта размещения полей.
2.7.1 Создания однотабличного отчета
Создание однотабличного отчета с помощью мастера:
1. в уже открытом проекте proj1 на стандартной панели инструментов в списке Databases (Базы данных) перейдите на вкладку Documents (Документы) и выберите группу Reports(Отчеты).
2. Нажмите кнопку New (Новый) окна проекта.
3. В открывшемся диалоговом окне New Report (Новый отчет) выберите опцию Report Wizard (Мастер отчета).
4. После запуска мастера для построения отчета на экране открывается диалоговое окно, в котором вы должны укажем тип создаваемого отчета Report Wizard (создает простой однотабличный отчет).
5. Открывается первое диалоговое окно мастера (рис. 2.7.1), в котором указываем таблицу 1 (table 1), для которой вы создаете отчет, и выбрать размещаемые в отчете поля: fio, address, ntelephone, datavkl.
Рис. 2.7.1 Окно создания однотабличного отчета с помощью мастера
6. В следующем диалоговом окне мастера создания отчета необходимо указать поля, по которым будет осуществляться группировка данных в отчете.
7. В центре диалогового окна расположены три раскрывающихся списка, позволяющих задать до трех группировок данных в отчете. Эти списки содержат все поля таблицы. Для осуществления группировки данных в отчете выберем поле datavkl из раскрывающегося списка 1. группировка видна на рисунке 2.7.1.1
Рис. 2.7.1.1 Определение полей для группировки данных в отчете
8. В следующем диалоговом окне мастера задается стиль отображения объектов в отчете. Выберем Executive.
9. На следующем шаге все оставить по умолчанию и нажать кнопку далее (next).
10. На пятом шаге создания отчета с помощью мастера задаются поля, по которым требуется упорядочение данных в отчете. Жмем далее.
11. На шестом шаге вы можете задать заголовок отчета, используя для этого поле ввода Type a title for your report (Тип заголовка отчета). В этом же диалоговом окне указываем Save report and modify it in the Report Designer (Сохранить и открыть в конструкторе для модификации).
В правом нижнем углу диалогового окна находится кнопка Preview(Просмотр), позволяющая просмотреть созданный отчет. После просмотра данного отчета он не удовлетворил нашим требованиям и поэтому в 11 пункте мы выбрали сохранить и открыть в конструкторе. Результат мастера отображен на рисунке 2.7.1.2.
Рис. 2.7.1.2 Готовый фрагмент отчета созданный с помощью мастера
Как видно из рисунка заголовки английские, а хотелось бы на русском и при всем этом мастер соединил fio и ntelephone вместе. Все это можно исправить при помощи конструктора отчетов. Исправленный вариант виден на рисунке 2.7.1.3
Рис. 2.7.1.3 Готовый фрагмент отчета, отредактированный с помощью конструктора отчетов
(Приложение 1. Отчет «По назначению пенсии»)
2.7.2 Создания многотабличных отчетов с помощью конструктора отчетов
Создание отчетов в конструкторе похоже на создание формы, но тут нечто иная форма в виде полосок, в которые и размещаются объекты. Набор объектов можно увидеть в таблице 4. Но перед созданием отчета требуется указать таблицы, которые будут участвовать в отчете, это можно сделать при помощи контекстного меню Data Environment…В диалоговом окне Data Environment отображается серый фон. На этот серый фон и добавляются таблицы с автоматическими связями через поле npensii.
Таблица 4. Объекты панели инструментов Report Controls
Наименование
Назначение
Select Objects (Выбор объектов)
Является указателем выбора объектов отчета
Label (Метка)
Размещает текст
Field (Поле)
Размещает поля
Line (Линия)
Рисует линии
Rectangle (Прямоугольник)
Рисует прямоугольники
Rounded Rectangle (Скругленный прямоугольник)
Рисует прямоугольник со скругленными краями
Picture/Act! vX Bound Control
(Изображение/Ас1!уХ-объект)
Помещает в отчет рисунок
Button Lock (Закрепитель кнопки)
Закрепляет выбор кнопки
Также существует 7 полос, и они отображены в таблице 5.
Таблица 5. Типы полос отчета
Полоса
Назначение
Title (Титул)
В этой полосе размещается информация, появляющаяся перед основным отчетом и называемая титульной. Это может быть имя отчета, сопроводительное письмо или любые данные, которые необходимо поместить на первой странице отчета
Page Header
(Верхний колонтитул)
Эта полоса в отчете называется верхним колонтитулом. Данные, помещенные в полосу, печатаются в начале каждой страницы. Примерами элементов управления могут быть название отчета, текущая дата, номер страницы и т. д.
Group Header
(Группа сверху)
В этой полосе печатается информация, используемая при группировке. При группировке данных группа может иметь верхние полосы, печатаемые до нее. Они помогают идентифицировать информацию, содержащуюся на каждом уровне группировки
Detail (Детали)
Эта полоса содержит данные полей из таблицы или результат вычислений над ними
Group Footer
(Группа снизу)
В полосе размещается итоговая информация по группе
Page Footer (Нижний колонтитул)
В нижнем колонтитуле печатается название отчета, дата, номер страницы и итоговые значения по данным текущей страницы
Summary (Итоги)
В итоговой части отчета содержится информация, появляющаяся один раз после основного отчета и содержащая итоговые значения или заключительный текст
Для создания отчета По обще выплате пенсии были использованы следующие объекты:
1) Label (метка) – для заголовков, названия полей и так далее.
2) Field (поле) – поле посредством чего и выводятся данные, или вычисления.
3) Rectangle (прямоугольник) – предназначен для выделения или оформления.
4) Line (линия) – функции как у прямоугольника.
Ускорить размещение данных в отчете можно с помощью команды Quick Report (Быстрый отчет) из меню Report (Отчет). Отчет, получаемый в результате выполнения этой команды, называется быстрым или стандартным отчетом. Иными словами, Quick Report (Быстрый отчет) — это средство конструктора отчетов, которое автоматически помещает выбранные поля и надписи к ним в окно конструктора отчета. После этого вы можете модифицировать полученный отчет, изменив текст надписей, порядок расположения полей, добавить в отчет группирование данных, заголовок и так далее.
После выбора в меня Отчеты Быстрый отчет отобразится диалоговое окно показанное на рисунке 2.7.2.1
Рис. 2.7.2.1. Диалоговое окно Quick Report
Далее выбираем расположение полей в отчете – по умолчанию по горизонтали. Чтобы в отчете небыли отображены все поля, нажимаем кнопку fields…(поля….) (рис. 2.7.2.2)
Рис. 2.7.2.2. Диалоговое окно field picker
Выбираем поля fio из table1, stazh из table2 и razmerpensii из table2. возвращаемся в Быстрый отчет и жмем ОК. Автоматически будут размещены объекты в конструкторе, остается их только отредактировать. Первоначальный вид отчета отображен на рисунке 2.7.2.3.
Рис. 2.7.2.3. отчет созданный при помощи Быстрого отчета
На рисунке 2.7.2.4 изображен отчет после непродолжительного редактирования и изменения некоторых объектов.
Рис. 2.7.2.4 готовый отчет созданный при помощи конструктора отчетов и Быстрого отчета
(Приложение 4. Отчет «Общие выплаты пенсии»)
Как видно из рисунка 2.7.2.4 были добавлены две линии: Title и Summary.
Создание отчета Справка пенсионеру, а также отчет Средняя пенсия пенсионера аналогично всем действиям создания предыдущего отчета - Общие выплаты пенсии. Отчет в виде modify (изменения) отображен на рисунке 2.7.2.5.
Рис. 2.7.2.5 Отчет Справка пенсионеру в виде modify….
(Приложение 2. Отчет «Справка пенсионеру»)
Рис. 2.7.2.6 Отчет средняя пенсия пенсионеров в виде modify….
(Приложение 3. Отчет «Средняя пенсия пенсионеров»)
3 Создания главной кнопочной формы
Создание главной кнопочной формы схоже с созданием обычной формы через конструктора форм. В создании использовались такие компоненты как Кнопки (Command button), Метки (Label). Вид главной кнопочной формы отображается на рисунке 3.1
Рис. 3.1 Главная кнопочная форма
В заключение создадим проект. Выберем форму mainform и нажмем кнопку build… В пунктах выбрать Application (app) и нажать Build. После указать путь на дискету.
Заключение
По проделанной работе следует учесть, что до выполнения курсового проекта СУБД Visual Fox PRO была неизвестна разработчику. И поэтому следует сказать, что программа не так уж проста в освоении. Но, углубляясь в пространства программного кода, становится очевидно, для того чтобы постичь программу в совершенстве, если это возможно вообще, потребуется огромное количество времени. В общем, программа сильно отстает от других программных продуктов, как например Delphi. Все же в дальнейшем опыт с работой Visual FOX PRO может пригодиться разработчику.
База данных написано с нормализацией третьего уровня с использованием запросов, отчетов, и форм. Использовать эту базу данных в серьезных организация не стоит, так как она предусмотрена для обучения и не может быть использована по прямому назначению.
Список литературы
1. Лекция по Базе данных
2. Мусина Т.В., Изд.: Корона Принт, 2004г. «Visual Fox Pro 8.0. Учебный курс»
3. «Иллюстрированный самоучитель по Visual Foxpro 7» http://vfpdev.narod.ru/docs/bookvfp7/index.html
Приложение 1
Приложение 2
Приложение 3
Приложение 4
Приложение 5
Листинг программы для вызова формы:
DO FORM c:\arhiv\kursbd\bd\table1.scx
DO FORM c:\arhiv\kursbd\bd\table2.scx
DO FORM c:\arhiv\kursbd\bd\table3.scx
DO FORM c:\arhiv\kursbd\bd\table4.scx
Листинг программы для вызова отчетов:
DO c:\arhiv\kursbd\bd\query1.qpr
DO c:\arhiv\kursbd\bd\query2.qpr
DO c:\arhiv\kursbd\bd\query3.qpr
Листинг программы для вызова запросов:
REPORT FORM c:\arhiv\kursbd\bd\report1.frx PREVIEW
REPORT FORM c:\arhiv\kursbd\bd\report2.frx PREVIEW
REPORT FORM c:\arhiv\kursbd\bd\report3.frx PREVIEW
REPORT FORM c:\arhiv\kursbd\bd\report4.frx PREVIEW
Листинг программы для выхода:
THISFORM.Release