48132 (Построение модели DFD и реализация в СУБД Visual FoxPro), страница 3

2016-07-30СтудИзба

Описание файла

Документ из архива "Построение модели DFD и реализация в СУБД Visual FoxPro", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "48132"

Текст 3 страницы из документа "48132"

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

Теперь поместим на эту форму созданное ранее меню. Для этого сначала установим свойство формы 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. Окно главной формы


Построение исполняемого файла

Для того чтобы сделать исполняемый файл с расширением .exe, необходимо выбрать опцию Build Executable (Построить исполняемый файл) в диалоговом окне Build Options (Опции построения), которое вызывается при нажатии кнопки Build (Построить) в окне диспетчера проекта. Потом нажать ОК и указать куда следует поместить исполняемый файл.

Чтобы в готовом файле .exe в процессе ввода часть русских букв автоматически не заменялись латинскими буквами из-за несовпадения кодовых страниц, необходимо в директорию, где находится .exe файл поместить файл конфигурации CONFIG.FPW, в котором указать

CODEPAGE=1251

Также можно поместить этот файл внутрь исполняемого файла. Для этого нужно добавить файл конфигурации в проект на закладке Other в раздел Text Files. Слева от имени файла не должно быть значка перечеркнутого кружка. Однако следует понимать, что такой файл невозможно будет изменить у клиента, поэтому оставим его рядом с .exe файлом, не помещая внутрь.

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


2.16 Модель предметной области описывается следующим неформальным текстом

1. У каждой студенческой группы только один куратор.

2. Название группы уникально.

3. Имя куратора не уникально.

4. Каждый преподаватель может быть куратором в нескольких группах.

5. У каждого куратора может быть только одна должность.

6. Одну и ту же должность могут иметь несколько преподавателей.

7. Несколько должностей могут иметь один и тот же оклад.

8. Преподаватель имеет ФИО, год рождения, ученую степень, адрес.

а.Постройте функциональную модель для заданной предметной области с помощью методологии DFD:

    • идентифицировать систему

    • определить сущности

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

б.Спроектируйте структуру базы данных методом «Сущность - Связь» для разработанной функциональной модели.

в.Структуру спроектированной базы данных реализуйте с помощью любой СУБД. Приложение должно содержать следующие объекты: формы, отчеты и меню.

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

Систему назовём «Система учёта студенческих групп». Определим сущности предметной области:

    • группы

    • преподаватели

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

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

Контекстная диаграмма приведена на рисунке 2.16.1, а её детализация на рисунке 2.16.2.

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

КОНЕЦ ЕСЛИ

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

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

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

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

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

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

КОНЕЦ ЕСЛИ

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

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

КОНЕЦ ЕСЛИ

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

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

КОНЕЦ ЕСЛИ

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

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

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

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

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

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

КОНЕЦ ЕСЛИ

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

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

КОНЕЦ ЕСЛИ

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

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

КОНЕЦ ЕСЛИ

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

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

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

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

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

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

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

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

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


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

Выделим две сущности: Группы и Преподаватели.

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

Сущность «Преподаватели» имеет атрибуты: ФИО, Год рождения, учёная степень, Адрес. Ни один из этих атрибутов не уникален для каждого конкретного преподавателя. К тому же для разных преподавателей могут совпадать сразу совокупность значений таких атрибутов, как ФИО, год рождения и Учёная степень. Поэтому выделим отдельный атрибут ID_Преподавателя, однозначно идентифицирующий каждый экземпляр сущности «Преподаватели». От атрибутов, не входящих в состав уникального идентификатора, функционально не зависят другие атрибуты.

Сущность «Группа» имеет атрибуты: Название группы, Имя куратора, Должность, Оклад, ID_Преподавателя (являющегося куратором данной группы). Так как название группы уникально, то это атрибут будет являться уникальным идентификатором для сущности «Группы». Все остальные атрибуты функционально зависят от уникального идентификатора.

    • «Имя куратора». В каждой студенческой группе только один куратор.

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

    • «Оклад». У каждой должности только один оклад.

    • «ID_Преподавателя». В каждой группе только один куратор, а значит и один преподаватель является куратором в данной группе.

Так как несколько должностей могут иметь один и тот же оклад, но каждая должность может иметь только один оклад, то атрибут «Оклад» функционально зависит от атрибута «Должность», не входящего в состав уникального идентификатора. Атрибут «Должность» также не может рассматриваться в качестве альтернативного ключа, ибо нет функциональной зависимости ключевого атрибута «Название группы» от атрибута «Должность», то есть одна и та же должность куратора может быть в разных группах, а альтернативный ключ должен идентифицировать каждую запись, а не набор записей. Отсюда следует, что данная структура не находится в третьей нормальной форме. Для приведения её в третью нормальную форму необходимо выделить отдельную сущность «Должности» и атрибуты «Должность» и «Оклад» выделить для этой сущности.

Определим степени связей между сущностями.

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

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

Диаграмма связей между сущностями представлена на рисунке 2.16.3.

Рис. 2.16.3. Диаграмма связей между сущностями

Структура спроектированной базы данных приведена на рисунке 2.16.4.

Рис. 2.16.4. Структура БД

Определим таблицы базы данных и укажем типы данных и ограничения для каждого поля.

Таблица Группы (Groups)

Наименование поля

Тип данных

Ограничения

Название группы (Name_group)

Строка (20)

Первичный ключ

Имя куратора (Name_Kurat)

Строка (30)

NOT NULL

Должность (Job_title)

Строка (20)

NOT NULL

Внешний ключ

ID_Преподавателя (ID_teacher)

Целое число

NOT NULL

Внешний ключ

Таблица Преподаватели (Teachers)

Наименование поля

Тип данных

Ограничения

ID_Преподавателя (ID_teacher)

Целое число

Первичный ключ

ФИО (FIO)

Строка (30)

NOT NULL

Год рождения (Year_birth)

Целое число

NOT NULL

Учёная степень (Degree)

Строка (20)

Адрес (Address)

Строка (20)

Таблица Должности (Job_titles)

Наименование поля

Тип данных

Ограничения

Должность (Jobtitle)

Строка (20)

Первичный ключ

Оклад (Salary)

Целое число

NOT NULL

Реализация спроектированной базы данных при помощи СУБД Visual FoxPro

Создадим проект приложения баз данных. Для чего выберем в главном меню File – New, затем выберем Project и укажем New File – введём имя проекта student_groups и сохраним файл проекта (student_groups.pjx). Далее откроется окно Project Manager (диспетчер проекта) в котором перейдём на вкладку Data (Данные) и выберем пункт Databases и нажмём кнопку New… (Новая). Появится окно, в котором выберем New Database (Новая база данных) и сохраним базу данных как student_groups.dbc. В появившемся окне Database Designer (Построитель базы данных) выберем из контекстного меню New Table… (Новая таблица). Появится окно, в котором выберем New Table (Новая таблица) и сохраним таблицу как Groups.dbf. После этого на экране появится диалоговое окно Table Designer (Конструктор таблиц) в котором введём названия всех полей таблицы Группы (Groups), укажем их типы данных и ограничения. Создадим индексы для таблицы. Индексы нужны для определения первичного и внешнего ключей в базе данных. Для создания индекса перейдём на вкладку Indexes (Индексы). Сначала создадим индекс первичного ключа таблицы. В поле Name введём имя индекса PK_Groups, а из раскрывающегося списка Type (Тип) выберем тип индекса Primary (Первичный), затем нажмём кнопку справа от поля Expression (Выражение) и введём значение индексного выражения в окне построителя выражений «name_group», то есть укажем, что первичным ключом будет поле name_group. Теперь создадим два регулярных индекса для определения внешних ключей. Первый FK_Job_tit, тип – Regular, выражение – «Job_title» и второй FK_Teacher, тип – Regular, выражение – «ID_teacher».

Аналогично создадим две другие таблицы Teachers.dbf и Job_titles.dbf и определим индексы первичного ключа и назовём их PK_Teacher и PK_Job_tit, а в выражении проставим название поля первичного ключа.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5250
Авторов
на СтудИзбе
422
Средний доход
с одного платного файла
Обучение Подробнее