Построение функциональной модели 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Построение функциональной модели



Построение функциональной модели

Систему назовём «Система учёта аудиторий».

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

Определим сущности предметной области:

o Корпуса

o Аудитории

o Сотрудники

Определим потоки данных между сущностями и системой.

Функциональная модель представлена при помощи диаграмм потоков данных (DFD). Контекстная диаграмма приведена на рисунке 2.15.1, а её детализация на рисунке 2.15.2.


Рис. 2.15.1. Контекстная диаграмма

 

Рис. 2.15.2.Детализированная диаграмма потоков данных


Словарь данных

 

@ИМЯ = ПОИСК АУДИТОРИИ

@ТИП = дискретный поток

@БНФ = Название корпуса + Номер аудитории

@ИМЯ = ДАННЫЕ О КОРПУСЕ

@ТИП = дискретный поток

@БНФ = Название корпуса + Адрес

@ИМЯ = ДАННЫЕ ОБ АУДИТОРИИ

@ТИП = дискретный поток

@БНФ = Название корпуса + Номер аудитории + Число посадочных мест + Тип аудитории + Сотрудник

@ИМЯ = ДАННЫЕ О СОТРУДНИКЕ

@ТИП = дискретный поток

@БНФ = Табельный номер + ФИО + Должность + Служебный телефон

@ИМЯ = ТИП АУДИТОРИИ

@ТИП = дискретный поток

@БНФ = {«поточная», «лекционная», «лаборатория», «компьютерный класс»}

@ИМЯ = СВЕДЕНИЯ ОБ АУДИТОРИИ

@ТИП = дискретный поток

@БНФ = Название корпуса + Номер аудитории + Число посадочных мест + Тип аудитории + Адрес

@ИМЯ = ОТЧЁТ О ПОЖАРНОЙ БЕЗОПАСНОСТИ

@ТИП = дискретный поток

@БНФ = ПОИСК АУДИТОРИИ + ДАННЫЕ О СОТРУДНИКЕ

@ИМЯ = ИНФОРМАЦИЯ О КОРПУСЕ

@ТИП = дискретный поток, внутренний

@БНФ = ДАННЫЕ О КОРПУСЕ

@ИМЯ = ИНФОРМАЦИЯ ОБ АУДИТОРИИ

@ТИП = дискретный поток, внутренний

@БНФ = ДАННЫЕ ОБ АУДИТОРИИ

@ИМЯ = ИНФОРМАЦИЯ О СОТРУДНИКЕ

@ТИП = дискретный поток, внутренний

@БНФ = ДАННЫЕ О СОТРУДНИКЕ

@ИМЯ = ИСКАТЬ СВЕДЕНИЯ ОБ АУДИТОРИИ

@ТИП = дискретный поток, внутренний

@БНФ = ПОИСК АУДИТОРИИ

@ИМЯ = РЕЗУЛЬТАТ ПОИСКА АУДИТОРИИ

@ТИП = дискретный поток, внутренний

@БНФ = СВЕДЕНИЯ ОБ АУДИТОРИИ

@ИМЯ = ИСКАТЬ СВЕДЕНИЯ О СОТРУДНИКЕ

@ТИП = дискретный поток, внутренний

@БНФ = ПОИСК АУДИТОРИИ

@ИМЯ = СВЕДЕНИЯ О СОТРУДНИКЕ

@ТИП = дискретный поток, внутренний

@БНФ = ДАННЫЕ О СОТРУДНИКЕ

Спецификация процессов

Спецификация процесса A0.1

@ВХОД = ДАННЫЕ О КОРПУСЕ

@ВЫХОД = ИНФОРМАЦИЯ О КОРПУСЕ

@СПЕЦПРОЦ A0.1 ФОРМИРОВАТЬ ИНФОРМАЦИЮ О КОРПУСЕ

ЕСЛИ добавить ИНФОРМАЦИЮ О КОРПУСЕ ТО

ИНФОРМАЦИЯ О КОРПУСЕ = ДАННЫЕ О КОРПУСЕ

КОНЕЦ ЕСЛИ

ЕСЛИ изменить ИНФОРМАЦИЮ О КОРПУСЕ ТО

ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЮ О КОРПУСЕ

КОНЕЦ ЕСЛИ

ЕСЛИ удалить ИНФОРМАЦИЮ О КОРПУСЕ ТО

ВЫПОЛНИТЬ удалить ИНФОРМАЦИЮ О КОРПУСЕ

КОНЕЦ ЕСЛИ

Спецификация процесса A0.2

@ВХОД = ДАННЫЕ О СОТРУДНИКЕ

@ВЫХОД = ИНФОРМАЦИЯ О СОТРУДНИКЕ

@СПЕЦПРОЦ A0.2 ФОРМИРОВАТЬ ИНФОРМАЦИЮ О СОТРУДНИКЕ

ЕСЛИ добавить ИНФОРМАЦИЮ О СОТРУДНИКЕ ТО

ИНФОРМАЦИЯ О СОТРУДНИКЕ = ДАННЫЕ О СОТРУДНИКЕ

КОНЕЦ ЕСЛИ

ЕСЛИ изменить ИНФОРМАЦИЮ О СОТРУДНИКЕ ТО

ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЮ О СОТРУДНИКЕ

КОНЕЦ ЕСЛИ

ЕСЛИ удалить ИНФОРМАЦИЮ О СОТРУДНИКЕ ТО

ВЫПОЛНИТЬ удалить ИНФОРМАЦИЮ О СОТРУДНИКЕ

КОНЕЦ ЕСЛИ

Спецификация процесса A0.3

@ВХОД = ДАННЫЕ ОБ АУДИТОРИИ

@ВЫХОД = ИНФОРМАЦИЯ ОБ АУДИТОРИИ

@СПЕЦПРОЦ A0.3 ФОРМИРОВАТЬ ИНФОРМАЦИЮ ОБ АУДИТОРИИ

ЕСЛИ добавить ИНФОРМАЦИЮ ОБ АУДИТОРИИ ТО

ИНФОРМАЦИЯ ОБ АУДИТОРИИ = ДАННЫЕ ОБ АУДИТОРИИ

КОНЕЦ ЕСЛИ

ЕСЛИ изменить ИНФОРМАЦИЮ ОБ АУДИТОРИИ ТО

ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЮ ОБ АУДИТОРИИ

КОНЕЦ ЕСЛИ

ЕСЛИ удалить ИНФОРМАЦИЮ ОБ АУДИТОРИИ ТО

ВЫПОЛНИТЬ удалить ИНФОРМАЦИЮ ОБ АУДИТОРИИ

КОНЕЦ ЕСЛИ

Спецификация процесса A0.4

@ВХОД = ПОИСК АУДИТОРИИ

@ВХОД = РЕЗУЛЬТАТ ПОИСКА АУДИТОРИИ

@ВЫХОД = ИСКАТЬ СВЕДЕНИЯ ОБ АУДИТОРИИ

@ВЫХОД = СВЕДЕНИЯ ОБ АУДИТОРИИ

@СПЕЦПРОЦ A0.4 ВЫДАТЬ СВЕДЕНИЯ ОБ АУДИТОРИИ

ЕСЛИ осуществляется поиск аудитории ТО

ИСКАТЬ СВЕДЕНИЯ ОБ АУДИТОРИИ = ПОИСК АУДИТОРИИ

СВЕДЕНИЯ ОБ АУДИТОРИИ = РЕЗУЛЬТАТ ПОИСКА АУДИТОРИИ

КОНЕЦ ЕСЛИ

Спецификация процесса A0.5

@ВХОД = ПОИСК АУДИТОРИИ

@ВХОД = СВЕДЕНИЯ О СОТРУДНИКЕ

@ВЫХОД = ИСКАТЬ СВЕДЕНИЯ О СОТРУДНИКЕ

@ВЫХОД = ОТЧЁТ О ПОДАРНОЙ БЕЗОПАСНОСТИ

@СПЕЦПРОЦ A0.5 ВЫДАТЬ ОТЧЁТ О ПОЖАРНОЙ БЕЗОПАСНОСТИ

ЕСЛИ осуществляется поиск ответственного сотрудника за пожарную безопасность в аудитории ПОИСК АУДИТОРИИ ТО

ИСКАТЬ СВЕДЕНИЯ О СОТРУДНИКЕ = ПОИСК АУДИТОРИИ

ОТЧЁТ О ПОДАРНОЙ БЕЗОПАСНОСТИ = ПОИСК АУДИТОРИИ + СВЕДЕНИЯ О СОТРУДНИКЕ

КОНЕЦ ЕСЛИ


Создание форм

 

Создадим три формы по одной для каждой таблицы при помощи мастера форм. Для создания формы нужно в окне Диспетчера проектов перейти на вкладку Documents, где выбрать пункт Form и нажать кнопку New. Выберем Form Wizard, затем выберем мастера создания формы с одной таблицы Form Wizard. На первом шаге необходимо выбрать таблицу и поля, которые будут применяться в форме. Укажем таблицу AUDITORIUMS базы данных AUDITORIUMS (не свободную таблицу, потому, что мы её уже добавили в базу данных) и выберем все поля, переместив их в список Selected fields (Выбранные поля).

 

Рис. 2.15.8. Создание формы при помощи мастера форм

 

На втором шаге выберем стиль формы.

На третьем шаге укажем поля, по которым будет происходить упорядочение записи и порядок сортировки записей. Выберем упорядочение по значению поля Название корпуса (name_build), для чего переместим его в список Selected fields (Выбранные поля). Укажем сортировку по возрастанию (Ascending).

На четвёртом шаге введём заголовок для формы в поле Type a title for your form, введём Аудитории. Выберем Save and modify it in the Form designer (Сохранить и изменить форму в Конструкторе форм).

Форма откроется в окне конструктора форм, в котором изменим надписи, для чего выделим нужную надпись и в окне свойств Properties - auditoriums.scx изменим свойство Caption. Сохраним изменения, выбрав File – Save.

 

Рис. 2.15.9. Форма для таблицы «Аудитории»

 

Аналогично создадим формы для двух других таблиц.

Создадим форму для двух связанных таблиц Аудитории (Auditoriums) и Корпуса (Buildings)(Рис. 2.15.10.). Для этого выберем мастера создания формы, использующего связанные таблицы One-toForm Wizard.

На первом шаге необходимо выбрать поля из родительской таблицы, которые будут применяться в форме. Выберем таблицу Buildings базы данных AUDITORIUMS и выберем из этой таблицы поля Название корпуса (Name_building) и Адрес (Address), переместив их в список Selected fields (Выбранные поля).

На втором шаге выберем поля из дочерней таблицы. Здесь мы выберем таблицу Auditoriums и выберем из этой таблицы поля Номер аудитории (Number_aud), Число посадочных мест (Number_pla) и Тип (type_).

На третьем шаге указывается связь таблиц. Оставим связку по полю Название корпуса (Name_build).

На четвёртом шаге укажем стиль формы.

На пятом шаге укажем поля, по которым будет происходить упорядочение записи и порядок сортировки записей. Выберем упорядочение по значению поля Название корпуса (name_build) и дополнительную сортировку по полю Адрес (Address), для чего переместим их в список Selected fields (Выбранные поля). Укажем сортировку по возрастанию (Ascending).

На шестом шаге введём заголовок для формы в поле Type a title for your form, введём Аудитории и корпуса. Выберем Save and modify it in the Form designer (Сохранить и изменить форму в Конструкторе форм). Сохраним форму как Auditoriums and Buildings.scx.

 

Рис. 2.15.10. Создание формы для связанных таблиц при помощи мастера форм

 

Форма откроется в окне конструктора форм, в котором изменим надписи, для чего выделим нужную надпись и в окне свойств Properties - auditoriums.scx изменим свойство Caption. Также изменим названия столбцов и ширину полей объекта формы grid1, для чего выберем этот объект и в окне свойств в верхнем выпадающем списке выберем для первого столбца Column1 и изменим ширину поля, указав нужное число в значении свойства Width (Ширина). Для указания текста заголовка этого поля выберем в том же выпадающем списке окна свойств Header1 и введём название в свойство Caption. Сохраним изменения, выбрав File – Save.

 

Рис. 2.15.11. Изменение свойств столбца объекта grid1

 

Рис. 2.15.12. Форма «Аудитории и корпуса»

 

Создание отчётов

 

Для создания отчётов нужно в окне Диспетчера проектов перейти на вкладку Documents, где выбрать пункт Reports(Отчёты) и нажать кнопку New. После этого откроется диалоговое окно New Report (Новый отчёт) Выберем New Report. Появится окно конструктора отчётов Report Designer. Определим среду данных для отчёта, для чего выберем из контекстного меню пункт Data Environment (Среда данных). Щёлкнем правой кнопкой мыши в окне среды данных и выберем в появившемся контекстном меню пункт Add…(Добавить). Добавим таблицы Auditoriums и Buildings и установим связи между ними. Разместим надписи столбцов в области Page Header (Верхний колонтитул) окне конструктора отчётов, а в поле Detail разместим поля из таблиц. Для добавления поля выберем его из окна среды данных отчёта или поместим объект Field (Поле) из элементов управления отчётом Report Controls. При этом появится диалоговое окно Report Expression (Выражение для отчёта), затем введём в поле Expression наименование требуемого поля. В области Page Footer поместим значение, указывающее общее количество строк в отчёте и выведем текущую дату. Для того чтобы вывести значение числа строк, поместим в полосу Page Footer объект Field (Поле). В окне Report Expression нажжём кнопку Calculations (Вычисления), после чего появится диалоговое окно Calculate Field (Вычисляемое поле), в котором выберем операцию Count (Количество), а в поле Expression укажем наименование первого поля – Name_build. Для того, чтобы вывести текущую дату необходимо поместить объект Field (Поле) и в окне Report Expression ввести в поле Expression выражение DATE() – функцию по вычислению текущей даты. Рядом добавим соответствующие надписи, поместив на макет формы объекты Label (Надпись) и введя требуемые надписи. Сохраним отчёт.

 

Рис. 2.15.13. Макет отчёта в окне конструктора форм.

 

Создание меню

 

Для создания меню нужно в окне Диспетчера проектов перейти на вкладку Other (Другое), где выбрать пункт Menus (Меню) и нажать кнопку New. После этого откроется диалоговое окно New Menu (Новое меню) Выберем Menu. Появится окно конструктора меню Menu Designer. Введём названия пунктов меню в поле Prompt (Наименование), а в раскрывающемся списке Result (Результат) определим действия, происходящие при выборе пункта меню. Введём подменю «Таблицы», для чего в поле Prompt введём название пункта меню «Таблицы», а в списке Result укажем Submenu (Подменю), затем нажмём на кнопку Create (Создать) после чего в раскрывающемся списке Menu Level (Уровень меню) появится название созданного подменю. Все остальные пункты, созданные на этом уровне, будут пунктами подменю для пункта меню «Таблицы». Создадим пункт «Аудитории». Для этого в списке Result укажем Command (Команда) и введём «DO FORM «c:\бд auditoriums\формы\auditoriums.scx»«, что значит открыть форму auditoriums.scx. Аналогично создадим пункты для открытия трёх других форм.

Рис. 2.15.14. Создание меню

 

Затем в списке Menu Level (Уровень меню) выберем верхний уровень – Menu Bar и введём ещё одно подменю «БД», в котором укажем два пункта «Отчёт» и «Выход». В поле ввода команды для пункта «Отчёт» введём «REPORT FORM «c:\бд auditoriums\отчёты\report1.frx» PREVIEW», т. е открытие файла отчёта. Для пункта «Выход» укажем команду QUIT.

Чтобы меню можно было использовать в приложении, сначала его нужно сгенерировать. Для этого используется пункт системного меню Menu (Меню) и диалоговое окно Generate Menu (Генерация меню). В этом окне укажем файл, в котором будет сохранено меню, после чего нажмём кнопку Generate (Генерация).

Созданное меню необходимо запустить на экранной форме. Если просто в Диспетчере проекта выделить меню и нажать Run (Выполнить), то меню будет запущено в главном окне Visual FoxPro. Для того чтобы меню запускалось в форме приложения баз данных, необходимо установить флажок Top-Level Form (Форма верхнего уровня) в диалоговом окне General Options (Основные опции) и снова запустить процесс генерации меню.

Теперь создадим главную форму приложения, из которой будут открываться все остальные. Назовём её Main_form. На эту форму поместим четыре кнопки, и зададим команды на запуск соответствующих форм при нажатии на эти кнопки. Поместим на макет формы компонент Command Button (Командная кнопка), у которого в свойстве Caption напишем текст надписи на кнопке, например, для кнопки вызова формы Аудитории так и напишем Аудитории. Затем перейдём на вкладку Methods (Методы) окна Properties (Свойства) формы и выбираем метод Click Event (Событие щелчок). Щёлкнем два раза на названии события, после чего появится окно Command1.Click, в котором введём

DO FORM «c:\бд auditoriums\формы\auditoriums.scx»

Окно ввода команды, выполняющейся при нажатии на кнопку окно Command1.Click, можно вызвать и двойным щелчком на макете кнопки.

Аналогично создадим кнопки вызова других форм и отчёта.

Теперь поместим на эту форму созданное ранее меню. Для этого сначала установим свойство формы ShowWindow равным 2 – As top level form (Как форма верхнего уровня), затем в методе Init Event пропишем

DO «C:\БД Auditoriums\MENU1.MPR» WITH THIS,.T..

Создадим файл основной программы. Для этого в окне Диспетчера проекта перейдём на вкладку Code, где выберем пункт Programs (Программы) и нажмём кнопку New….Появится окно Program1, в котором напишем

DO FORM «c:\бд auditoriums\формы\main_form.scx»

_SCREEN.Visible =.T.

READ EVENTS

Сначала откроется окно главной формы, затем значение свойства Visible (Видимость) окна проставим в Истина. Затем зададим точку останова командой READ EVENTS, то есть после выполнения этой команды программа будет ожидать действий пользователя, и все следующие за ней команды не будут выполнятся до тех пор, пока не будет выполнена команда CLEAR EVENTS. Поместим эту команду в обработчик события Destroy Event (Закрытие формы) главной формы Main_form.

Сохраним файл программы как Program1.prg и сделаем этот файл основной в приложении, для чего выделим его в Диспетчере проекта и в контекстном меню выберем пункт Set Main (Сделать основным). Файл при этом станет выделенным жирным шрифтом.

 

Рис. 2.15.15. Окно главной формы

Словарь данных

 

@ИМЯ = ДАННЫЕ О ПРЕПОДАВАТЕЛЯХ

@ТИП = дискретный поток

@БНФ = ФИО + Год рождения + Учёная степень + Адрес

@ИМЯ = ДАННЫЕ О ГРУППЕ

@ТИП = дискретный поток

@БНФ = Название группы + Имя куратора + ДАННЫЕ О ПРЕПОДАВАТЕЛЯХ + Должность + Оклад

@ИМЯ = ПОИСК КУРАТОРА

@ТИП = дискретный поток

@БНФ = Название группы

@ИМЯ = ИНФОРМАЦИЯ О КУРАТОРЕ

@ТИП = дискретный поток

@БНФ = ДАННЫЕ О ГРУППЕ

@ИМЯ = ИНФОРМАЦИЯ О ПРЕПОДАВАТЕЛЯХ

@ТИП = внутренний поток

@БНФ = ДАННЫЕ О ПРЕПОДАВАТЕЛЯХ

@ИМЯ = ИНФОРМАЦИЯ О ГРУППЕ

@ТИП = внутренний поток

@БНФ = Название группы + Имя куратора + Должность + Оклад + ID_Преподавателя

@ИМЯ = НАЙТИ ПРЕПОДАВАТЕЛЯ

@ТИП = внутренний поток

@БНФ = ДАННЫЕ О ПРЕПОДАВАТЕЛЯХ

@ИМЯ = РЕЗУЛЬТАТ ПОИСКА ПРЕПОДАВАТЕЛЯ

@ТИП = внутренний поток

@БНФ = ID_Преподавателя

@ИМЯ = ПОИСК ИНФОРМАЦИИ О КУРАТОРЕ

@ТИП = внутренний поток

@БНФ = ПОИСК КУРАТОРА

@ИМЯ = ДАННЫЕ О ГРУППАХ И ПРЕПОДАВАТЕЛЯХ

@ТИП = внутренний поток

@БНФ = ДАННЫЕ О ГРУППЕ


Спецификация процессов

 

Спецификация процесса A0.1

@ВХОД = ДАННЫЕ О ГРУППЕ

@ВХОД = РЕЗУЛЬТАТ ПОИСКА ПРЕПОДАВАТЕЛЯ

@ВЫХОД = НАЙТИ ПРЕПОДАВАТЕЛЯ

@ВЫХОД = ДАННЫЕ О ГРУППЕ

@СПЕЦПРОЦ A0.1 ПРОВЕРИТЬ НАЛИЧИЕ ПРЕПОДАВАТЕЛЯ

НАЙТИ ПРЕПОДАВАТЕЛЯ = ДАННЫЕ О ПРЕПОДАВАТЕЛЯХ из ДАННЫЕ О ГРУППЕ

ЕСЛИ РЕЗУЛЬТАТ ПОИСКА ПРЕПОДАВАТЕЛЯ не равен NULL ТО

ДАННЫЕ О ГРУППЕ = ДАННЫЕ О ГРУППЕ

КОНЕЦ ЕСЛИ

Спецификация процесса A0.2

@ВХОД = ДАННЫЕ О ГРУППЕ

@ВЫХОД = ИНФОРМАЦИЯ О ГРУППЕ

@СПЕЦПРОЦ A0.2 ФОРМИРОВАТЬ ИНФОРМАЦИЮ О ГРУППЕ

ЕСЛИ добавить ИНФОРМАЦИЮ О ГРУППЕ ТО

ИНФОРМАЦИЯ О ГРУППЕ = ДАННЫЕ О ГРУППЕ

КОНЕЦ ЕСЛИ

ЕСЛИ изменить ИНФОРМАЦИЮ О ГРУППЕ ТО

ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЮ О ГРУППЕ

КОНЕЦ ЕСЛИ

ЕСЛИ удалить ИНФОРМАЦИЮ О ГРУППЕ ТО

ВЫПОЛНИТЬ удалить ИНФОРМАЦИЮ О ГРУППЕ

КОНЕЦ ЕСЛИ

Спецификация процесса A0.3

@ВХОД = ДАННЫЕ О ПРЕПОДАВАТЕЛЯХ

@ВЫХОД = ИНФОРМАЦИЯ О ПРЕПОДАВАТЕЛЯХ

@СПЕЦПРОЦ A0.3 ФОРМИРОВАТЬ ИНФОРМАЦИЮ О ПРЕПОДАВАТЕЛЯХ

ЕСЛИ добавить ИНФОРМАЦИЮ О ПРЕПОДАВАТЕЛЯХ ТО

ИНФОРМАЦИЯ О ПРЕПОДАВАТЕЛЯХ = ДАННЫЕ О ПРЕПОДАВАТЕЛЯХ

КОНЕЦ ЕСЛИ

ЕСЛИ изменить ИНФОРМАЦИЮ О ПРЕПОДАВАТЕЛЯХ ТО

ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЮ О ПРЕПОДАВАТЕЛЯХ

КОНЕЦ ЕСЛИ

ЕСЛИ удалить ИНФОРМАЦИЮ О ПРЕПОДАВАТЕЛЯХ ТО

ВЫПОЛНИТЬ удалить ИНФОРМАЦИЮ О ПРЕПОДАВАТЕЛЯХ

КОНЕЦ ЕСЛИ

Спецификация процесса A0.4

@ВХОД = ПОИСК КУРАТОРА

@ВХОД = ДАННЫЕ О ГРУППАХ И ПРЕПОДАВАТЕЛЯХ

@ВЫХОД = ПОИСК ИНФОРМАЦИИ О КУРАТОРЕ

@ВЫХОД = ИНФОРМАЦИЯ О КУРАТОРЕ

@СПЕЦПРОЦ A0.4 ПОИСК КУРАТОРА

ПОИСК ИНФОРМАЦИИ О КУРАТОРЕ = ПОИСК КУРАТОРА

ВЫПОЛНИТЬ Поиск в БД ИНФОРМАЦИИ О КУРАТОРЕ

ИНФОРМАЦИЯ О КУРАТОРЕ = найденные в БД ДАННЫЕ О ГРУППАХ И ПРЕПОДАВАТЕЛЯХ


Создание форм

 

Создадим три формы по одной для каждой таблицы при помощи мастера форм. Для создания формы нужно в окне Диспетчера проектов перейти на вкладку Documents, где выбрать пункт Form и нажать кнопку New. Выберем Form Wizard, затем выберем мастера создания формы с одной таблицы Form Wizard. На первом шаге необходимо выбрать таблицу и поля, которые будут применяться в форме. Укажем таблицу Groups базы данных Student_Groups и выберем все поля, переместив их в список Selected fields (Выбранные поля).

На втором шаге выберем стиль формы.

На третьем шаге укажем поля, по которым будет происходить упорядочение записи и порядок сортировки записей. Выберем упорядочение по значению поля Название группы (Name_group), для чего переместим его в список Selected fields (Выбранные поля). Укажем сортировку по возрастанию (Ascending).

На четвёртом шаге введём заголовок для формы в поле Type a title for your form, введём Группы. Выберем Save and modify it in the Form designer (Сохранить и изменить форму в Конструкторе форм).

Форма откроется в окне конструктора форм, в котором изменим надписи, для чего выделим нужную надпись и в окне свойств Properties – groups.scx изменим свойство Caption. Сохраним изменения, выбрав File – Save.

 

Рис. 2.16.6. Форма для таблицы «Группы»

 

Аналогично создадим формы для двух других таблиц.

Создадим форму для представления Student_groups_View. Для этого также выберем создание формы в мастере форм и на первом этапе выберем представление и укажем использовать в форме все его поля. Укажем заголовком формы «Группы и их преподаватели», а после завершения работы мастера, откроем форму в окне конструктора и изменим подписи полей.

Создание отчётов

 

Для создания отчётов нужно в окне Диспетчера проектов перейти на вкладку Documents, где выбрать пункт Reports(Отчёты) и нажать кнопку New. После этого откроется диалоговое окно New Report (Новый отчёт) Выберем New Report. Появится окно конструктора отчётов Report Designer. Определим среду данных для отчёта, для чего выберем из контекстного меню пункт Data Environment (Среда данных). Щёлкнем правой кнопкой мыши в окне среды данных и выберем в появившемся контекстном меню пункт Add…(Добавить). Добавим представление Student_groups_View. Перейдём к окну конструктора отчётов.

Для добавления всех полей из среды данных в отчёт выберем в главном меню окна Visual FoxPro Report – Quick Report (Быстрый отчет). Появится окно Quick Report в котором выберем вертикальное размещение полей, указав соответствующее положение переключателя в разделе Field Layout. Нажмём ОК, и в области Detail отчёта появятся все поля из среды данных отчёта. Изменим надписи для полей и добавим линию для разделения записей при просмотре.

В области Page Footer будут уже помешены поля, содержащие функцию вычисления значения Текущей даты и номера страницы. Добавим ещё поле, выводящее значение, указывающее общее количество строк в отчёте. Для того чтобы вывести значение числа строк, поместим в полосу Page Footer объект Field (Поле). В окне Report Expression нажжём кнопку Calculations (Вычисления), после чего появится диалоговое окно Calculate Field (Вычисляемое поле), в котором выберем операцию Count (Количество), а в поле Expression укажем наименование первого поля – student_groups_view.name_group. Рядом добавим соответствующие надписи, поместив на макет формы объекты Label (Надпись) и введя требуемые надписи. Сохраним отчёт.

 

Рис. 2.16.7. Макет отчёта в окне конструктора форм

 

Создание меню

 

Для создания меню нужно в окне Диспетчера проектов перейти на вкладку Other (Другое), где выбрать пункт Menus (Меню) и нажать кнопку New. После этого откроется диалоговое окно New Menu (Новое меню) Выберем Menu. Появится окно конструктора меню Menu Designer. Введём названия пунктов меню в поле Prompt (Наименование), а в раскрывающемся списке Result (Результат) определим действия, происходящие при выборе пункта меню. Введём подменю «Таблицы», для чего в поле Prompt введём название пункта меню «Таблицы», а в списке Result укажем Submenu (Подменю), затем нажмём на кнопку Create (Создать) после чего в раскрывающемся списке Menu Level (Уровень меню) появится название созданного подменю. Все остальные пункты, созданные на этом уровне, будут пунктами подменю для пункта меню «Таблицы». Создадим пункт «Группы». Для этого в списке Result укажем Command (Команда) и введём «DO FORM «c:\student groups\формы\groups.scx»«, что значит открыть форму groups.scx. Аналогично создадим пункты для открытия трёх других форм.

Затем в списке Menu Level (Уровень меню) выберем верхний уровень – Menu Bar и введём ещё одно подменю «BD», в котором укажем два пункта «Отчёт» и «Выход». В поле ввода команды для пункта «Отчёт» введём «REPORT FORM «c:\student groups\отчёты\report.frx» PREVIEW», т. е открытие файла отчёта. Для пункта «Выход» укажем команду QUIT.

Чтобы меню можно было использовать в приложении, сначала его нужно сгенерировать. Для этого используется пункт системного меню Menu (Меню) и диалоговое окно Generate Menu (Генерация меню). В этом окне укажем файл, в котором будет сохранено меню, после чего нажмём кнопку Generate (Генерация).

Созданное меню необходимо запустить на экранной форме. Если просто в Диспетчере проекта выделить меню и нажать Run (Выполнить), то меню будет запущено в главном окне Visual FoxPro. Для того чтобы меню запускалось в форме приложения баз данных, необходимо установить флажок Top-Level Form (Форма верхнего уровня) в диалоговом окне General Options (Основные опции) и снова запустить процесс генерации меню.

Теперь создадим главную форму приложения, из которой будут открываться все остальные. Назовём её Main_form. На эту форму поместим четыре кнопки, и зададим команды на запуск соответствующих форм при нажатии на эти кнопки. Поместим на макет формы компонент Command Group (Группа командных кнопок), у которого в свойстве ButtonCount (Количество кнопок) укажем значение 4 по количеству форм. В выпадающем списке вверху окна свойств выбираем нужную кнопку и в свойство Caption напишем текст надписи на этой кнопке. Затем перейдём на вкладку Methods (Методы) и выбираем метод Click Event (Событие щелчок). Щёлкнем два раза на названии события, после чего появится окно Command1.Click, в котором введём команду DO FORM «<путь к файлу формы>«

Также поместим ещё две кнопки (компонент CommandButton) для вывода отчёта и выхода из программы. Изменим аналогично текст надписи и зададим обработчики события нажатия на эти кнопки.

Теперь поместим на эту форму созданное ранее меню. Для этого сначала установим свойство формы ShowWindow равным 2 – As top level form (Как форма верхнего уровня), затем в методе Init Event пропишем путь к файлу меню

DO «c:\student groups\меню\menu1.mpr» WITH THIS,.T.

Поместим в обработчик события Destroy Event (Закрытие формы) формы команду CLEAR EVENTS для того, чтобы можно было выйти из программы при закрытии формы.

Создадим файл основной программы. Для этого в окне Диспетчера проекта перейдём на вкладку Code, где выберем пункт Programs (Программы) и нажмём кнопку New….Появится окно Program1, в котором напишем

DO FORM «c:\student groups\формы\main_form.scx»

_SCREEN.Visible =.T.

READ EVENTS

Сначала откроется окно главной формы, затем значение свойства Visible (Видимость) окна проставим в Истина. Затем зададим точку останова командой READ EVENTS, то есть после выполнения этой команды программа будет ожидать действий пользователя, и все следующие за ней команды не будут выполнятся до тех пор, пока не будет выполнена команда CLEAR EVENTS.

Сохраним файл программы как Program1.prg и сделаем этот файл основной в приложении, для чего выделим его в Диспетчере проекта и в контекстном меню выберем пункт Set Main (Сделать основным). Файл при этом станет выделенным жирным шрифтом.

Словарь данных

 

@ИМЯ = ДАННЫЕ О СТУДЕНТЕ

@ТИП = дискретный поток

@БНФ = Номер зачётки + Название группы + ФИО + Год рождения + Адрес

@ИМЯ = ДАННЫЕ О ГРУППЕ

@ТИП = дискретный поток

@БНФ = Название группы + Название кафедры + Зав. кафедрой

@ИМЯ = ПОИСК СТУДЕНТА

@ТИП = дискретный поток

@БНФ = Номер зачётки

@ИМЯ = СВЕДЕНИЯ О СТУДЕНТЕ И ГРУППЕ

@ТИП = дискретный поток

@БНФ = ДАННЫЕ О СТУДЕНТЕ + ДАННЫЕ О ГРУППЕ

@ИМЯ = ИНФОРМАЦИЯ О СТУДЕНИЕ

@ТИП = внутренний поток

@БНФ = ДАННЫЕ О СТУДЕНТЕ

@ИМЯ = ИНФОРМАЦИЯ О ГРУППЕ

@ТИП = внутренний поток

@БНФ = ДАННЫЕ О ГРУППЕ

@ИМЯ = НАЙТИ ГРУППУ

@ТИП = внутренний поток

@БНФ = Название группы

@ИМЯ = РЕЗУЛЬТАТ ПОИСКА ГРУППЫ

@ТИП = внутренний поток

@БНФ = НАЙТИ ГРУППУ

@ИМЯ = ПОИСК ИНФОРМАЦИИ О СТУДЕНТЕ

@ТИП = внутренний поток

@БНФ = ПОИСК СТУДЕНТА

@ИМЯ = ИНФОРМАЦИЯ О СТУДЕНТАХ И ГРУППАХ

@ТИП = внутренний поток

@БНФ = СВЕДЕНИЯ О СТУДЕНТЕ И ГРУППЕ


Спецификация процессов

 

Спецификация процесса A0.1

@ВХОД = ДАННЫЕ О СТУДЕНТЕ

@ВХОД = РЕЗУЛЬТАТ ПОИСКА ГРУППЫ

@ВЫХОД = ДАННЫЕ О СТУДЕНТЕ

@ВЫХОД = НАЙТИ ГРУППУ

@СПЕЦПРОЦ A0.1 ПРОВЕРИТЬ НАЛИЧИЕ ГРУППЫ

НАЙТИ ГРУППУ = Название группы из ДАННЫХ О СТУДЕНТЕ

ЕСЛИ РЕЗУЛЬТАТ ПОИСКА ГРУППЫ не равен NULL ТО

ДАННЫЕ О СТУДЕНТЕ = ДАННЫЕ О СТУДЕНТЕ

КОНЕЦ ЕСЛИ

Спецификация процесса A0.2

@ВХОД = ДАННЫЕ О СТУДЕНТЕ

@ВЫХОД = ИНФОРМАЦИЯ О СТУДЕНТЕ

@СПЕЦПРОЦ A0.2 ФОРМИРОВАТЬ ИНФОРМАЦИЮ О СТУДЕНТЕ

ЕСЛИ добавить ИНФОРМАЦИЮ О СТУДЕНТЕ ТО

ИНФОРМАЦИЯ О СТУДЕНТЕ = ДАННЫЕ О СТУДЕНТЕ

КОНЕЦ ЕСЛИ

ЕСЛИ изменить ИНФОРМАЦИЮ О СТУДЕНТЕ ТО

ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЮ О СТУДЕНТЕ

КОНЕЦ ЕСЛИ

ЕСЛИ удалить ИНФОРМАЦИЮ О СТУДЕНТЕ ТО

ВЫПОЛНИТЬ удалить ИНФОРМАЦИЮ О СТУДЕНТЕ

КОНЕЦ ЕСЛИ

Спецификация процесса A0.3

@ВХОД = ДАННЫЕ О ГРУППЕ

@ВЫХОД = ИНФОРМАЦИЯ О ГРУППЕ

@СПЕЦПРОЦ A0.3 ФОРМИРОВАТЬ ИНФОРМАЦИЮ О ГРУППЕ

ЕСЛИ добавить ИНФОРМАЦИЮ О ГРУППЕ ТО

ИНФОРМАЦИЯ О ГРУППЕ = ДАННЫЕ О ГРУППЕ

КОНЕЦ ЕСЛИ

ЕСЛИ изменить ИНФОРМАЦИЮ О ГРУППЕ ТО

ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЮ О ГРУППЕ

КОНЕЦ ЕСЛИ

ЕСЛИ удалить ИНФОРМАЦИЮ О ГРУППЕ ТО

ВЫПОЛНИТЬ удалить ИНФОРМАЦИЮ О ГРУППЕ

КОНЕЦ ЕСЛИ

Спецификация процесса A0.4

@ВХОД = ПОИСК СТУДЕНТА

@ВХОД = ИНФОРМАЦИЯ О СТУДЕНТАХ И ГРУППАХ

@ВЫХОД = ПОИСК ИНФОРМАЦИИ О СТУДЕНТЕ

@ВЫХОД = СВЕДЕНИЯ О СТУДЕНТЕ И ГРУППЕ

@СПЕЦПРОЦ A0.4 ПОИСК СТУДЕНТА

ПОИСК ИНФОРМАЦИИ О СТУДЕНТЕ = ПОИСК СТУДЕНТА

ВЫПОЛНИТЬ ПОИСК ИНФОРМАЦИИ О СТУДЕНТЕ в БД

СВЕДЕНИЯ О СТУДЕНТЕ И ГРУППЕ = найденная в БД ИНФОРМАЦИЯ О СТУДЕНТАХ И ГРУППАХ


Создание форм

 

Создадим три формы по одной для каждой таблицы при помощи мастера форм. Для создания формы нужно в окне Диспетчера проектов перейти на вкладку Documents, где выбрать пункт Form и нажать кнопку New. Выберем Form Wizard, затем выберем мастера создания формы с одной таблицы Form Wizard. На первом шаге необходимо выбрать таблицу и поля, которые будут применяться в форме. Укажем таблицу Student базы данных Students и выберем все поля, переместив их в список Selected fields (Выбранные поля).

На втором шаге выберем стиль формы.

На третьем шаге укажем поля, по которым будет происходить упорядочение записи и порядок сортировки записей. Выберем упорядочение по значению поля Номер зачётки (ID_zach), для чего переместим его в список Selected fields (Выбранные поля). Укажем сортировку по возрастанию (Ascending).

На четвёртом шаге введём заголовок для формы в поле Type a title for your form, введём Студенты. Выберем Save and modify it in the Form designer (Сохранить и изменить форму в Конструкторе форм).

Форма откроется в окне конструктора форм, в котором изменим надписи, для чего выделим нужную надпись и в окне свойств Properties – Student.scx изменим свойство Caption. Сохраним изменения, выбрав File – Save.

 

Рис. 2.17.6. Форма для таблицы «Группы»

 

Аналогично создадим формы для двух других таблиц.

Создадим форму для представления Students_View. Для этого также выберем создание формы в мастере форм и на первом этапе выберем представление и укажем использовать в форме все его поля. Укажем заголовком формы «Студенты и группы», а после завершения работы мастера, откроем форму в окне конструктора где изменим подписи полей.

Создание отчётов

 

Для создания отчётов нужно в окне Диспетчера проектов перейти на вкладку Documents, где выбрать пункт Reports(Отчёты) и нажать кнопку New. После этого откроется диалоговое окно New Report (Новый отчёт) Выберем New Report. Появится окно конструктора отчётов Report Designer. Определим среду данных для отчёта, для чего выберем из контекстного меню пункт Data Environment (Среда данных). Щёлкнем правой кнопкой мыши в окне среды данных и выберем в появившемся контекстном меню пункт Add…(Добавить). Добавим представление Studens_View. Перейдём к окну конструктора отчётов.

Для добавления всех полей из среды данных в отчёт выберем в главном меню окна Visual FoxPro Report – Quick Report (Быстрый отчет). Появится окно Quick Report в котором выберем горизонтальное размещение полей, указав соответствующее положение переключателя в разделе Field Layout. Нажмём ОК, и в области Detail отчёта появятся все поля из среды данных отчёта. Изменим надписи для полей и добавим линию для разделения записей при просмотре.

В области Page Footer будут уже помешены поля, содержащие функцию вычисления значения Текущей даты и номера страницы. Добавим ещё поле, выводящее значение, указывающее общее количество строк в отчёте. Для того чтобы вывести значение числа строк, поместим в полосу Page Footer объект Field (Поле). В окне Report Expression нажжём кнопку Calculations (Вычисления), после чего появится диалоговое окно Calculate Field (Вычисляемое поле), в котором выберем операцию Count (Количество), а в поле Expression укажем наименование первого поля – students_view.Id_zach. Рядом добавим соответствующие надписи, поместив на макет формы объекты Label (Надпись) и введя требуемые надписи. Сохраним отчёт.

 

Рис. 2.17.7. Макет отчёта в окне конструктора форм

Создание меню

 

Для создания меню нужно в окне Диспетчера проектов перейти на вкладку Other (Другое), где выбрать пункт Menus (Меню) и нажать кнопку New. После этого откроется диалоговое окно New Menu (Новое меню) Выберем Menu. Появится окно конструктора меню Menu Designer. Введём названия пунктов меню в поле Prompt (Наименование), а в раскрывающемся списке Result (Результат) определим действия, происходящие при выборе пункта меню. Введём подменю «Таблицы», для чего в поле Prompt введём название пункта меню «Таблицы», а в списке Result укажем Submenu (Подменю), затем нажмём на кнопку Create (Создать) после чего в раскрывающемся списке Menu Level (Уровень меню) появится название созданного подменю. Все остальные пункты, созданные на этом уровне, будут пунктами подменю для пункта меню «Таблицы». Создадим пункт «Студенты». Для этого в списке Result укажем Command (Команда) и введём «DO FORM «c:\students\формы\student.scx»«, что значит открыть форму student.scx. Аналогично создадим пункты для открытия трёх других форм.

Затем в списке Menu Level (Уровень меню) выберем верхний уровень – Menu Bar и введём ещё одно подменю «BD», в котором укажем два пункта «Отчёт» и «Выход». В поле ввода команды для пункта «Отчёт» введём «REPORT FORM c:\students\отчёты\report.frx PREVIEW», т. е открытие файла отчёта. Для пункта «Выход» укажем команду QUIT.

Чтобы меню можно было использовать в приложении, сначала его нужно сгенерировать. Для этого используется пункт системного меню Menu (Меню) и диалоговое окно Generate Menu (Генерация меню). В этом окне укажем файл, в котором будет сохранено меню, после чего нажмём кнопку Generate (Генерация).

Созданное меню необходимо запустить на экранной форме. Если просто в Диспетчере проекта выделить меню и нажать Run (Выполнить), то меню будет запущено в главном окне Visual FoxPro. Для того чтобы меню запускалось в форме приложения баз данных, необходимо установить флажок Top-Level Form (Форма верхнего уровня) в диалоговом окне General Options (Основные опции) (пункт меню View или Menu) и снова запустить процесс генерации меню.

Теперь создадим главную форму приложения, из которой будут открываться все остальные. Назовём её Main_form. Поместим на макет формы компонент Command Group (Группа командных кнопок), у которого в свойстве ButtonCount (Количество кнопок) укажем значение 4 по количеству форм. В выпадающем списке вверху окна свойств выбираем нужную кнопку и в свойство Caption напишем текст надписи на этой кнопке. Затем перейдём на вкладку Methods (Методы) и выбираем метод Click Event (Событие щелчок). Щёлкнем два раза на названии события, после чего появится окно Command1.Click, в котором введём команду

DO FORM «<путь к файлу формы>«

Также поместим ещё один компонент Command Group с двумя кнопками для вывода отчёта и выхода из программы. Изменим аналогично текст надписи и зададим обработчики события нажатия на эти кнопки.

Теперь поместим на эту форму созданное ранее меню. Для этого сначала установим свойство формы ShowWindow равным 2 – As top level form (Как форма верхнего уровня), затем в методе Init Event пропишем путь к файлу меню

DO c:\students\меню\menu1.mpr WITH THIS,.T.

Поместим в обработчик события Destroy Event (Закрытие формы) формы команду CLEAR EVENTS для того, чтобы можно было выйти из программы при закрытии формы.

Создадим файл основной программы. Для этого в окне Диспетчера проекта перейдём на вкладку Code, где выберем пункт Programs (Программы) и нажмём кнопку New….Появится окно Program1, в котором напишем

DO FORM c:\students\формы\main_form.scx

_SCREEN.Visible =.T.

READ EVENTS

Сначала откроется окно главной формы, затем значение свойства Visible (Видимость) окна проставим в Истина. Затем зададим точку останова командой READ EVENTS, то есть после выполнения этой команды программа будет ожидать действий пользователя, и все следующие за ней команды не будут выполнятся до тех пор, пока не будет выполнена команда CLEAR EVENTS.

Сохраним файл программы как Program1.prg и сделаем этот файл основной в приложении, для чего выделим его в Диспетчере проекта и в контекстном меню выберем пункт Set Main (Сделать основным). Файл при этом станет выделенным жирным шрифтом.

Построение функциональной модели

Систему назовём «Система учёта аудиторий».



Поделиться:


Последнее изменение этой страницы: 2020-03-14; просмотров: 144; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.128.199.210 (0.239 с.)