Разработка информационного банка данных

Системный анализ предметной области и построение схемы функциональных зависимостей. Формирование 1НФ, нормализация отношений. Создание связанных таблиц и псевдонима BDE для созданной БД. Разработка алгоритмов работы программы и приложения пользователя.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 17.12.2014
Размер файла 666,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Содержание

Введение

1. Системный анализ предметной области

2. Построение схемы функциональных зависимостей

2.1 Формирование 1НФ

2.2 Нормализация отношении

3. Реализация БД

3.1 Создание связанных таблиц БД, заданной структуры, в формате Paradox 7 с помощью Database Desktop

3.2 Создание псевдонима BDE для созданной БД с помощью BDE Administrator

4. Разработка алгоритмов работы программы

5. Разработка приложения пользователя

Заключение

Список использованной литературы

Приложения

Введение

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

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

1. Системный анализ предметной области

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

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

Составление и поддержание информационной системы осуществляет администрация и работники студии. Информация в БД поступает из решения директора после обсуждения заказа заказчиком.

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

Входная информация поступает в БД виде:

- информация о композиторах;

- информация о вокалистах;

- информация о музыкантах;

- информация о инструментах;

- информация о заказе.

На выходе пользователи системы получают информацию в виде:

- данных о сотрудников участвующих определенных композициях;

- данных об инструментах использованных определенных композициях;

- данные о композиции.

Главным параметром заказа композиции является название, которое делает его индивидуальным. Кроме того, каждое название композиции характеризуется следующими характеристиками:

- ФИО композитора;

- год записи;

- жанр;

- цена заказа.

ФИО вокалиста содержит информацию:

- тип голоса;

- телефон.

Название композиции и ФИО вокалиста содержат информацию:

- тип вокала.

ФИО музыканта содержит информацию:

- телефон.

Название композиции и ФИО музыканта содержат информацию:

- инструмент.

ФИО композитора содержит информацию:

- стиль работы;

- телефон.

В базе данных присутствуют следующие ограничения на информацию:

- название композиции должно быть уникальным;

- у одной композиции должна быть только один композитор.

В результате БД должна обеспечивать решение следующих основных прикладных задач:

- расчет заработной платы;

- мониторинг загруженности работы сотрудников;

- выявления лучших композиторов по количеству песен или по собранному бюджету.

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

2. Построение схемы функциональных зависимостей

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

Список необходимых атрибутов:

- «Название композиции»;

- «год записи»;

- «жанр»;

- «цена заказа»;

- «ФИО композитора»;

- «телефон»;

- «стиль работы»;

- «ФИО вокалиста»;

- «тип голоса»;

- «тип вокала»;

- «ФИО музыканта»;

- «инструмент»;

Схема функциональных зависимостей представлена на рисунке 2.1.

Рисунок 2.1 - Схема функциональных зависимостей

Из приведенной схемы видно, что атрибуты «год записи», «жанр», «цена заказа», «ФИО композитора» функционально зависят от атрибута «название композиции». Атрибуты «стиль работы», «телефон» функционально зависят от атрибута «ФИО композитора». Атрибуты «тип голоса», «телефон» функционально зависят от атрибута «ФИО вокалиста». Атрибут «тип вокала» функционально зависит от атрибутов «ФИО вокалиста» и «название композиции». Атрибут «телефон» функционально зависит от атрибута «ФИО музыканта». Атрибут «инструмент» функционально зависит от атрибутов «ФИО музыканта» и «название композиции».

2.1 Формирование 1НФ

Исходное отношение, находящееся в 1НФ, строится из всех атрибутов, выделенных в предметной области, и представлено на рисунке 2.1.1.

Рисунок 2.1.1 - исходное отношение в 1НФ

Первичным ключом исходного отношения являются атрибуты «название композиции», «ФИО вокалиста», «ФИО музыканта» так как данные индивидуальны и не будет повторяться. Все атрибуты, не вошедшие в первичный ключ, непосредственно или транзитивно, полностью или частично зависят от первичного ключа.

2.2 Нормализация отношений

Для перевода отношения из 1НФ во 2НФ необходимо исключить из исходного отношения частичные функциональные зависимости не ключевых атрибутов от первичного ключа. В представленном на рисунке 2.1.1 отношении в соответствии со схемой функциональных зависимостей присутствуют частичные функциональные зависимости атрибутов «ФИО вокалиста», «телефон», «тип голоса», «тип вокала» от атрибута «название композиции» и атрибутов «ФИО музыканта», «телефон», «инструмент». Существуют еще частичные функциональные зависимости атрибутов «тип голоса», «телефон» от атрибута «ФИО вокалиста» и атрибут «телефон» от атрибута «ФИО музыканта».

Для исключения этих зависимостей по правилам декомпозиции исходное отношение R разбивается на три отношения R1 («название композиции», «год записи», «жанр», «цена заказа», «ФИО композитора», «телефон», «стиль работы»), R2 («название композиции», «ФИО вокалиста», «тип голоса», «телефон», «тип вокала») и R3 («название композиции», «ФИО музыканта», «телефон», «инструмент»). Отношение R2 разбивается на два отношения R2 («название композиции», «ФИО вокалиста», «тип вокала») и R4 («ФИО вокалиста», «тип голоса», «телефон») и отношение R3 на два отношения R3 («название композиции», «ФИО музыканта», «инструмент») и R5 («ФИО музыканта», «телефон»).

Рисунок 2.2.1 - Схема отношений в 2НФ

Далее необходимо привести полученные отношения R1, R2, R3, R4, R5 к 3НФ. Для этого требуется исключить присутствующие в них транзитивные зависимости. В отношении R1 атрибуты «стиль работы» и «телефон» зависят от первичного ключа транзитивно через атрибут «ФИО композитора». Для перевода этого отношения в 3НФ его необходимо разбить по атрибуту «ФИО композитора» на два отношения R1 («название композиции», «год записи», «жанр», «цена заказа», «ФИО композитора») и R6 («ФИО композитора», «стиль работы», «телефон»).

Рисунок 2.2.2 - Схема отношений в 3НФ и НФБК

Исходное отношение, показанное на рисунке 2.2.2 находится в НФБК т.к. оно находится в 3НФ и в нём отсутствуют зависимости ключевых атрибутов. Эта схема удовлетворяет всем требованиям НФБК и является конечным результатом концептуального проектирования.

3. Реализация БД

3.1 Создание связанных таблиц БД, заданной структуры, в формате Paradox 7 с помощью Database Desktop

После запуска утилиты Database Desktop выбирается команда меню File|New|Table для создания новой таблицы. В появившемся диалоговом окне выбора типа таблицы выбирается по умолчанию формат Paradox 7. После выбора типа таблицы Database Desktop предоставляет диалоговое окно, в котором определяются поля таблицы, их тип, размеры и набор ключевых атрибутов.

Создается таблица под названием Kompozicia.db, содержащая 5 полей:

- поле Nazvanie_kompozicii типа Alpha (строка длиной 1-255 байт, содержащая любые печатаемые символы). Размер поля 25. Это поле является ключом таблицы;

- поле God_zapisi типа Short (числовое поле длиной 2 байта, которое может содержать только целые числа в диапазоне от -32768 до 32767);

- поле Zanr типа Alpha. Размер поля 20;

- поле Cena_zakaza типа $ (money);

- поле FIO_kompozitora типа Alpha. Размер поля 25.

Полученная таблица представлена на рисунке 3.1.1.

Рисунок 3.1.1 - Таблица Kompozicia.db

Создается таблица под названием Kompozitor.db, содержащая 3 поля:

- поле FIO_kompozitora типа Alpha. Размер поля 25. Это поле является ключом таблицы;

- поле Stil_raboti типа Alpha. Размер поля 20;

- поле Telefon типа Alpha. Размер поля 20.

Полученная таблица представлена на рисунке 3.1.2.

Рисунок 3.1.2 - Таблица Kompozitor.db

Создается таблица под названием Muzikant.db, содержащая 2 поля:

- поле FIO_muzikanta типа Alpha. Размер поля 25. Это поле является ключом таблицы;

- поле Telefon типа Alpha. Размер поля 20.

Полученная таблица представлена на рисунке 3.1.3.

Рисунок 3.1.3 - Таблица Muzikant.db

Создается таблица под названием Vokalist.db, содержащая 3 поля:

- поле FIO_vokalista типа Alpha. Размер поля 25. Это поле является ключом таблицы;

- поле Tip_golosa типа Alpha. Размер поля 15;

- поле Telefon типа Alpha. Размер поля 20.

Полученная таблица представлена на рисунке 3.1.4.

Рисунок 3.1.4 - Таблица Vokalist.db

Создается таблица под названием Instrument.db, содержащая 3 поля:

- поле FIO_muzikanta типа Alpha. Размер поля 25;

- поле Nazvanie_kompozicii типа Alpha. Размер поля 25. Эти два поля будет ключами таблицы;

- поле Instrument типа Alpha. Размер поля 20.

Полученная таблица представлена на рисунке 3.1.5.

Рисунок 3.1.5 - Таблица Instrument.db

Создается таблица под названием Vokal.db, содержащая 3 поля:

- поле FIO_vokalista типа Alpha. Размер поля 25;

- поле Nazvanie_kompozicii типа Alpha. Размер поля 25. Эти два поля будет ключами таблицы;

- поле Tip_vokala типа Alpha. Размер поля 15.

Полученная таблица представлена на рисунке 3.1.6.

Рисунок 3.1.6 - Таблица Instrument.db

Здесь же, с помощью свойства таблицы создается связь между таблицами Kompozicia.db и Kompozitor.db. Выбирается вкладка Referential Integrity и нажимается кнопка Define. Затем из списка Fields двойным щелчком мыши выбирается значение FIO_kompozitora. В списке Table выберается значение таблицы Kompozitor.db. Далее нажимается кнопка ОК и созданной связи присваивается имя Zapisivaet. Работа во вкладке Referential Integrity представлена на рисунке 3.1.7.

Рисунок 3.1.7 - Cвязь Zapisivaet

С помощью свойств таблицы создаются следующие связи между таблицами:

- Instrument.db и Kompozicia.db;

- Instrument.db и Muzikant.db;

- Vokal.db и Kompozicia.db;

- Vokal.db и Vokalist.db.

Как было описано ранее, для создания связей между таблицами Instrument и Kompizicia выбирается вкладка Referential Integrity и нажимается кнопка Define. Затем из списка Fields двойным щелчком мыши выбирается значение Nazvanie_kompozicii. В списке Table выбирается значение таблицы Kompozicia.db. Для создания связей между таблицами Instrument и Muzikant из списка Fields двойным щелчком мыши выбирается значение FIO_muzikanta. В списке Table выбирается значение таблицы Muzikant.db.

Для создания связей между таблицами Vokal и Kompozicia из списка Fields двойным щелчком мыши выбирается значение Nazvanie_kompozicii. В списке Table выбирается значение таблицы Kompozicia.db. Для создания связей между таблицами Vokal и Vokalist из списка Fields двойным щелчком мыши выбирается значение FIO_vokalista. В списке Table выбирается значение таблицы Vokalist.db.

Окно вкладки Referential Integrity по созданию связей между таблицами Instrument.db и Kompozicia.db, Instrument.db и Muzikant.db, Vokal.db и Kompozicia.db и Vokal.db и Vokalist.db представлена на рисунках 3.1.8, 3.1.9, 3.1.10, 3.1.11 соответственно.

Рисунок 3.1.8 - Cвязь между Instrument.db и Kompozicia.db

Рисунок 3.1.9 - Cвязь между Instrument.db и Muzikant.db

Рисунок 3.1.10 - Cвязь между Vokal.db и Kompozicia.db

Рисунок 3.1.11 - Cвязь между Vokal.db и Kompozicia.db

В таблице Kompozitor.db создается вторичный индекс: по полю Stil_raboti. В правой верхней части окна выбирается вкладка Secondary Index и нажимается кнопка Define. В списке Field выбирается значение Stil_raboti и нажимается кнопка ОК. В появившемся окне Save Index As вводится в строку ввода имя индекса stil и нажимается кнопка ОК. Работа по созданию вторичного индекса stil представлена на рисунке 3.1.12.

Рисунок 3.1.12 - Создание вторичного ключа stil

После создания всех таблиц необходимо добавить по несколько записей в каждую из созданных таблиц. На этом этап создания таблиц с помощью утилиты Database Desktop заканчивается.

3.2 Создание псевдонима BDE для созданной БД с помощью BDE Administrator

Создается новый псевдоним базы данных. Запускается утилита BDE Administrator. Далее в главном меню выбирается элемент Object -> New. В появившемся окне задается тип создаваемой базы данных - STANDARD и нажимается кнопка OK. Задается имя псевдонима - BD. Затем задается путь сохранения псевдонима. Окно создания псевдонима представлено на рисунке 3.2.1.

Рисунок 3.2.1 - Создание псевдонима

На этом заканчивается этап создания псевдонима в утилите BDE Administrator.

4. Разработка алгоритмов работы программы

После запуска программы происходит подключение модулей (блок 1). Вход в БД происходит через главную форму (блок 2).

Если нажат кнопка «Добавить» (блок 3), то выполняется соответственно выбор таблицы и добавление записи (блоки 4,5).

Если нажат кнопка «Изменить» (блок 6), то выполняется соответственно выбор таблицы, выбор записи и добавление записи (блоки 7,8,9).

Если нажат кнопка «Удалить» (блок 10), то выполняется соответственно выбор таблицы, выбор записи и удаление записи (блоки 11,12,13).

Если нажат кнопка «Сохранить» (блок 14), то выполняется сохранение записи (блоки 15).

Если выбран поиск (блок 16), то программа выполняет поиск по названию композиции (блоки 17). Фильтрация по жанру (блок 18) выполняется нажатием кнопки фильтр (блок 19).

Если нажата кнопка «Статистика» (блок 20), то открывается вторая форма.

Если нажата значение таблиц «Выбор композицию» (блок 21), то программа рассчитывает заработную плату сотрудников (блок 22). Нажатие кнопки «Отчет» (блок 23) приведет к предварительному просмотру отчета плана распределения заработной платы (блок 24).

Если нажата кнопка «Выбрать» (блок 25) и в поле введено соответствующее значение то программа выявляет лучшего композитора по количеству песен или по собранному бюджету (блок 26). Нажатие кнопки «Отчет» (блок 27) приведет к предварительному просмотру годового отчета (блок 28).

Производится мониторинг загруженности работы композиторов (блок 29). Нажатие кнопки «Отчет» (блок 30) приведет к предварительному просмотру отчета интенсивности загруженности работы композиторов (блок 31).

Выход осуществляется нажатием на кнопку «Выход» (блок 32), после чего программа перестанет выполняться, иначе продолжает выполняться и ожидать нажатия кнопки.

Блок-схема данного процесса представлена в приложении А на рисунке А.1.

5. Разработка приложения пользователя БД

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

На главной форме создается таблица Инструменты: на форме располагается группа компонентов Table1, DataSource1, DBGrid1и DBNavigator1. Для Table1 в свойствах инспектора объектов указывается DatabaseName, которая связывает наборы данных с псевдонимом BDE, т.е. выбирается имя псевдонима BD, и в TableName задается таблица Instrument.db. Далее активизируется компонент переключением Active в True.

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

Далее таким же образом создается таблица Композиции с набором компонентов Table2, DataSource2, DBGrid2 и DBNavigator2. Отличие состоит в том, что в Table Name задается таблица Kompozicia.db.

Cоздается таблица Композитор с набором компонентов Table3, DataSource3, DBGrid3 и DBNavigator3. В поле TableName задается таблица Kompozitor.db.

Cоздается таблица Музыканты с набором компонентов Table4, DataSource4, DBGrid4 и DBNavigator4. В поле TableName задается таблица Muzikant.db.

Cоздается таблица Вокал с набором компонентов Table5, DataSource5, DBGrid5 и DBNavigator5. В поле TableName задается таблица Vokal.db.

Cоздается таблица Вокалист с набором компонентов Table6, DataSource6, DBGrid6 и DBNavigator6. В поле TableName задается таблица Vokalist.db.

Для настройки внешнего вида компонентов DBGrid используется встроенный редактор столбцов ColumnsEditor, который вызывается двойным щелчком по компоненту DBGrid. Вызывается команда AddAllFields контекстного меню для вывода всех имеющихся данных. Имя каждого поля меняется на русский язык (Title -> Caption).

Создается возможность поиска композиции из таблицы Композиция по его названию. Для этого на форме размещаются компоненты Edit1, в которую будет записываться название композиции и метка Lable1 (название). Далее в обработчике события поля Edit организуется вызов метода Locate. Код обработчика события представлен в листинге программы в приложении Б. В случае полного совпадения или части заданной композиции курсор укажет на данную запись.

Cоздается возможность отсортировать данные таблицы Композиторы по ФИО композитора и по стилям работы.

Для реализации сортировки на форме располагаются компоненты ComboBox1 и Lable2 (сортировать). Сортировка производится по созданным в DatabaseDesktop вторичному индексу stil. Для ComboBox1 устанавливается свойство Items в соответствии с рисунком 5.1.

Рисунок 5.1 - Редактор строк для сортировки

Двойным щелчком мыши по компоненте ComboBox1 вызывается обработчик событий. Код обработчика событий представлен в листинге программы в приложение Б.

Реализуется возможность фильтрации данных на таблице Композиция по жанру для облечения просмотра. Для реализации фильтрации на форме располагается компонент ComboBox2 и Lable3 (жанр). В Table2 устанавливается свойство Filtered набора данных равным значению true. Для ComboBox2 устанавливается свойство Items в соответствии с рисунком 5.2.

Рисунок 5.2 - Редактор строк для фильтрации

Двойным щелчком мыши по компоненте ComboBox2 вызывается обработчик событий. Код обработчика событий представлен в листинге программы в приложение Б.

Далее для таблицы Композиторы создаются кнопки Добавить (BitBtn1), Изменить (BitBtn2), Сохранить (BitBtn3), Удалить (BitBtn4). Также создаются 4 поля (Edit), в которых и будет редактироваться информация таблицы и 3 Lable (ФИО композитора, стиль работы, телефон). Двойным щелчком мыши по кнопкам вызывается обработчик событий. Код обработчика событий представлен в листинге программы в приложение Б.

Для связи главной и подчиненной таблиц между собой по ключевому полю используются свойства MasterSource и MasterFields подчиненного набора данных. При этом в свойстве MasterSource подчиненного компонента Table2 указывается источник данных DataSource3, соответствующий таблице Table3 (kompozitor.db), расположенной на этой же форме, на записи которой ссылается подчиненная таблица. При обращении в инспекторе объектов к свойству MasterFields подчиненного компонента Table2 вызывается специальный редактор отношений, изображенный на рисунке 5.3. В нем выбирается вторичный индекс, соответствующий связи с таблицей kompozicia, kompozitor.

Рисунок 5.3 - Редактор отношений

Для Table5 указывается источник данных DataSource2 и в редакторе отношении выбирается вторичный индекс, соответствующий связи с таблицей vocal, kompozicia. Редактор отношений, приведен на рисунке 5.4

Рисунок 5.4 - Редактор отношений

Для Table1 указывается источник данных DataSource2 и в редакторе отношении выбирается вторичный индекс, соответствующий связи с таблицей instrument, kompozicia. Редактор отношений, приведен на рисунке 5.5.

Рисунок 5.5 - Редактор отношений

Еще применяется выбор записи с помощью Lookup.

Двойным щелчком мыши на компоненте Table5, командой AddallFields/NewFields появляется окно, в котором устанавливаются следующие значения:

- в поле Name - имя нового поля (FIO);

- в поле Type - тип создаваемого поля (String);

- в поле Fieldtype - значение lookup;

- в выпадающем списке KeyFields выбирается ключевое поле (FIO_vokalista);

- в выпадающем списке Dataset выбирается - связываемый набор данных (Table5);

- в выпадающем списке LookupKeys выбирается ключевое поле (FIO_vokalista);

- в выпадающем списке ResultField выбирается просматриваемое поле (FIO_vokalista).

Окно NewFields представлено на рисунке 5.6.

Рисунок 5.6 - Окно NewFields для поля «FIO_vokalista»

Таким же образом создается выбор методом Lookup для поля «FIO_muzikanta» в Table1. Lookup для поля «FIO_muzikanta» представлен на рисунке 5.7 соответственно.

Рисунок 5.7 - Окно NewFields для поля «FIO_muzikanta»

Результат главной формы с заполненными полями информацией представлен на рисунке 5.8.

Рисунок 5.8 - Главная форма

Создается вторая форма, которая будет открываться по нажатию Button1(Статистика) на главной форме.

Чтобы связать формы в Implementation пишется Uses Unit2 для главной формы, для второй Uses Unit1, Uni3, Unit4, Unit5. Для третьей, четвертой и пятой формы Uses Unit2.

Для расчета заработной платы сотрудников на форму добавляются DBGrid2, DBGrid3, DBGrid4, DBGrid5, Query2, Query3, Query4, Query5, DataSource2, DataSource3, DataSource4, DataSource5, Edit2, Edit3, Edit4, Edit5, Edit6, Edit7, Edit8, Edit10, Edit11, Edit12, Edit13, Button2.

В свойствах DBGrid2, DBGrid3, DBGrid4, DBGrid5 в строке DataSource указывается соответственно DataSource2, DataSource3, DataSource4, DataSource5. В свойствах DataSource2, DataSource3, DataSource4, DataSource5 в строке DataSet указывается соответственно Query2, Query3, Query4, Query5. В свойствах Query2, Query3, Query4, Query5 в строке DatabaseName указывается DB, а в строке SQL соответственно пишется запросы которые представлены на рисунках 5.9, 5.10, 5.11, 5.12. Activate меняем с false на true.

Рисунок 5.9 - SQL запрос Query2

Рисунок 5.10 - SQL запрос Query3

Рисунок 5.11 - SQL запрос Query4

Рисунок 5.12 - SQL запрос Query5

Нажатие Button2 содержит код для параметрической фильтрации. Действие OnCellClick DBGrid5 содержит код расчета заработной платы сотрудников. Все коды действии показаны в приложении Б.

Для выявления лучших композиторов по количеству песен или по собранному бюджету на форму добавляется компоненты DBGrid6, Query6, DataSource6.

В свойстве DBGrid6 в строке DataSource указывается DataSource6. В свойстве DataSource6 в строке DataSet указывается Query6. В свойстве Query6 в строке DatabaseName указывается DB, а в строке SQL соответственно пишется запросы, которые представлены на рисунке 5.13. Activate меняем с false на true.

Рисунок 5.13 - SQL запрос Query6

Для сортировки значении по нажатию названии столбца, добавляется действие OnTitleClick на DBGrid6. Код запроса представлен в приложении Б.

Для мониторинга загруженности работы сотрудников на форму добавляются DBGrid1, Query1, DataSource1, Edit1, Button1.

В свойстве DBGrid1 в строке DataSource указывается DataSource1. В свойстве DataSource1 в строке DataSet указывается Query1. В свойстве Query1 в строке DatabaseName указывается DB, а в строке SQL соответственно пишется запросы, которые представлены на рисунке 5.14. Activate меняем с false на true.

Рисунок 5.14 - SQL запрос Query1

Нажатие Button1 содержит код для параметрической фильтрации. Код параметрической фильтрации показан в приложении Б.

Результат Второй формы представлен на рисунке 5.15.

Рисунок 5.15 - Вторая форма

На вторую форму добавляется Button4(Отчет) для выведения отчета плана распределения заработной платы сотрудников на четвертой форме. На форму добавляется компонент QuickRep1. В QuickRep свойствах DataSet указывается Form2.ADOQuery4.

Два раза нажимая на QuickRep открывается Report Setting. Ставим галочки на Title. Добавляется 25 штук QRLabel и 3 штуки QRDBText. В некоторых QRLabel там же меняется названия, в у некоторых название присваивается по нажатию кнопки Button4.

Во всех QRDBText свойствах DataSet указывается Form2.ADOQuery2.

В QRDBText1 свойствах DataField указывается nazvanie_kompozicii, в QRDBText2 - cena_zakaza, в QRDBText3 - fio_kompozitora.

Готовая форма с отчетом представлен на рисунке 5.16.

Рисунок 5.16 - Готовая форма для отчета

На вторую форму добавляется Button5(Отчет) для вывода годового отчета на третьей форме. На форму добавляется компонент QuickRep1. В QuickRep свойствах DataSet указывается Form2.ADOQuery1.

Два раза нажимая на QuickRep открывается Report Setting. Ставим галочки на Title, Column Header, Detail Band. Добавляется QRLabel на Title и Column Header и там же меняется названия. А на Detail Band добавляется QRDBText.

Во всех QRDBText свойствах DataSet указывается Form2.ADOQuery1.

В QRDBText1 свойствах DataField указывается fio_kompozitora, в QRDBText2 - COUNT OF, в QRDBText3 - SUMM OF.

Готовая форма с отчетом представлен на рисунке 5.17.

Рисунок 5.17 - Готовая форма для отчета

На вторую форму добавляется Button3(Отчет) для выведения отчета интенсивности загруженности работ композиторов на третьей форме. На форму добавляется компонент QuickRep1. В QuickRep свойствах DataSet указывается Form2.ADOQuery6.

Два раза нажимая на QuickRep открывается Report Setting. Ставим галочки на Title, Column Header, Detail Band. Добавляется QRLabel на Title и Column Header и там же меняется названия. А на Detail Band добавляется QRDBText.

Во всех QRDBText свойствах DataSet указывается Form2.ADOQuery6.

В QRDBText1 свойствах DataField указывается fio_kompozitora, в QRDBText2 - CNT, в QRDBText3 - DFG.

Готовая форма с отчетом представлен на рисунке 5.18.

Рисунок 5.18 - Готовая форма для отчета

Заключение

Данный курсовой проект является актуальным и отвечает предъявленным к нему требованиям. Была разработана и написана, на языке программирования высокого уровня Borland Delphi 7.0, с использованием баз данных.

Программа "АРМ директора музыкальной студии", предназначена для директора музыкальной студии и администрации.

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

Список использованной литературы

1. Delphi 7.Учебный курс. / Бобровский С.И. - СПб.: Питер, 2008. - 736 с.: ил.

2. Работа с базами данных в Delphi. / Гофман В.Э., Хомоненко А.Д. - СПб.: БХВ - Петербург, 2000. - 656с.: ил.

3. Базы данных: модели, разработки, реализация / Т.С. Карпова. - СПб.: Питер, 2002.

4. Базы данных: Учебник для ВУЗов / Под ред. проф. А.Д. Хомоненко. - СПб. КОРОНА принт, 2004

Приложение А

(обязательно)

Блок-схема программы

Рисунок А.1 - Блок схема работы программы

Приложение А

(продолжение)

Продолжение рисунка А.1

Приложение Б

(обязательно)

Листинг программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, DB, DBTables, StdCtrls, Mask,

Buttons;

type

TForm1 = class(TForm)

Table1: TTable;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

Table2: TTable;

DataSource2: TDataSource;

DBGrid2: TDBGrid;

DBNavigator2: TDBNavigator;

Table3: TTable;

DataSource3: TDataSource;

DBGrid3: TDBGrid;

DBNavigator3: TDBNavigator;

Table4: TTable;

DataSource4: TDataSource;

DBGrid4: TDBGrid;

DBNavigator4: TDBNavigator;

DataSource5: TDataSource;

DBGrid5: TDBGrid;

DBNavigator5: TDBNavigator;

Table6: TTable;

DataSource6: TDataSource;

DBGrid6: TDBGrid;

DBNavigator6: TDBNavigator;

Table5Nazvanie_kompozicii: TStringField;

Table5FIO_vokalista: TStringField;

Table5Tip_vokala: TStringField;

Table5FIO: TStringField;

Table1Nazvanie_kompozicii: TStringField;

Table1FIO_muzikanta: TStringField;

Table1Instrument: TStringField;

Table1FIOS: TStringField;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Table3FIO_kompozitora: TStringField;

Table3Stil_raboti: TStringField;

Table3Telefon: TStringField;

Label7: TLabel;

DBEdit1: TDBEdit;

Label8: TLabel;

DBEdit2: TDBEdit;

Label9: TLabel;

DBEdit3: TDBEdit;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

Приложение Б

(продолжение)

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

ComboBox1: TComboBox;

Label10: TLabel;

Edit1: TEdit;

Table2Nazvanie_kompozicii: TStringField;

Table2God_zapisi: TSmallintField;

Table2Zhanr: TStringField;

Table2Cena_zakaza: TCurrencyField;

Table2FIO_kompozitora: TStringField;

ComboBox2: TComboBox;

Label11: TLabel;

Label12: TLabel;

Button1: TButton;

Table4FIO_muzikanta: TStringField;

Table4Telefon: TStringField;

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure BitBtn4Click(Sender: TObject);

procedure ComboBox1Change(Sender: TObject);

procedure Edit1Change(Sender: TObject);

procedure ComboBox2Change(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses unit2;

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

table3.Insert;

dbedit1.SetFocus;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

table3.edit;

dbedit1.SetFocus;

end;

procedure TForm1.BitBtn3Click(Sender: TObject);

begin

table3.post;

end;

procedure TForm1.BitBtn4Click(Sender: TObject);

begin

table3.delete;

end;

procedure TForm1.ComboBox1Change(Sender: TObject);

begin

case Form1.ComboBox1.ItemIndex of

0:Form1.Table3.IndexName:='';

1:Form1.Table3.IndexName:='stil';

end;

Приложение Б

(продолжение)

end;

procedure TForm1.Edit1Change(Sender: TObject);

begin

form1.Table2.Locate('Nazvanie_kompozicii',form1.Edit1.Text,[loCaseInsensitive,loPartialKey]);

end;

procedure TForm1.ComboBox2Change(Sender: TObject);

begin

if Form1.ComboBox2.ItemIndex<>0 then

begin

Form1.Table2.Filtered:=true;

Form1.Table2.Filter:=('Zhanr='+Chr(39)+Form1.ComboBox2.Text+Chr(39));

end

else Form1.Table2.Filtered:=false;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

unit2.Form2.Visible:=true;

end;

end.

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, DBGrids, DB, DBTables, StdCtrls, ExtCtrls, DBCtrls,

Buttons, ComCtrls;

type

TForm2 = class(TForm)

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Edit1: TEdit;

Button1: TButton;

Query1: TQuery;

Query2: TQuery;

DataSource2: TDataSource;

DBGrid2: TDBGrid;

Edit2: TEdit;

Button2: TButton;

Query3: TQuery;

DataSource3: TDataSource;

DBGrid3: TDBGrid;

Query4: TQuery;

DataSource4: TDataSource;

DBGrid4: TDBGrid;

Query5: TQuery;

DataSource5: TDataSource;

DBGrid5: TDBGrid;

Query5nazvanie_kompozicii: TStringField;

Query5cena_zakaza: TCurrencyField;

Edit3: TEdit;

Edit4: TEdit;

Query3fio_muzikanta: TStringField;

Edit5: TEdit;

Label1: TLabel;

Edit6: TEdit;

Edit7: TEdit;

Edit8: TEdit;

Label2: TLabel;

Label3: TLabel;

Приложение Б

(продолжение)

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Button3: TButton;

Query6: TQuery;

DataSource6: TDataSource;

BitBtn1: TBitBtn;

StringGrid1: TStringGrid;

Edit9: TEdit;

UpDown1: TUpDown;

Query6fio_kompozitora: TStringField;

Query6CNT: TIntegerField;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

DataSource7: TDataSource;

DataSource8: TDataSource;

DataSource9: TDataSource;

DataSource10: TDataSource;

Label12: TLabel;

Button4: TButton;

Button5: TButton;

DBGrid6: TDBGrid;

Edit10: TEdit;

Edit11: TEdit;

Edit12: TEdit;

Edit13: TEdit;

Query6DFG: TCurrencyField;

Label13: TLabel;

Label14: TLabel;

Label15: TLabel;

Label16: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure DBGrid5CellClick(Column: TColumn);

procedure Button3Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure DBGrid6TitleClick(Column: TColumn);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

uses unit1,unit3,unit4,unit5;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);

begin

query1.Active:=false;

query1.Params.ParamByName('god').Value:=edit1.Text;

query1.Active:=true;

end;

Приложение Б

(продолжение)

procedure TForm2.Button2Click(Sender: TObject);

begin

query2.Active:=false;

query2.Params.ParamByName('fio').Value:=edit2.Text;

query2.Active:=true;

query3.Active:=false;

query3.Params.ParamByName('fio').Value:=edit2.Text;

query3.Active:=true;

query4.Active:=false;

query4.Params.ParamByName('fio').Value:=edit2.Text;

query4.Active:=true;

end;

procedure TForm2.DBGrid5CellClick(Column: TColumn);

var i,j,a,b,c,d:integer;

begin

a:=strtoint(form2.Edit10.text);

b:=strtoint(form2.Edit11.text);

c:=strtoint(form2.Edit12.text);

d:=strtoint(form2.Edit13.text);

if (a+b+c+d=100) then

begin

edit2.Text:=dbgrid5.Fields[0].Text;

button2.Click;

Form2.Edit3.Text:=FloatToStr(Form2.Query5cena_zakaza.Value/100*b);

i:=Form2.Query3.RecordCount;

j:=Form2.Query4.RecordCount;

Form2.Edit4.Text:=Format('%f',[(Form2.Query5cena_zakaza.Value/100*c)/i]);

Form2.Edit5.Text:=Format('%f',[(Form2.Query5cena_zakaza.Value/100*d)/j]);

Form2.Edit6.Text:=FloatToStr(Form2.Query5cena_zakaza.Value/100*a);

Form2.Edit7.Text:=FloatToStr(Form2.Query5cena_zakaza.Value/100*c);

Form2.Edit8.Text:=FloatToStr(Form2.Query5cena_zakaza.Value/100*d);

end

else ShowMessage('V summe 100% dolzhen bit');

end;

procedure TForm2.Button3Click(Sender: TObject);

begin

unit3.Form3.QuickRep1.Preview;

end;

end;

procedure TForm2.Button4Click(Sender: TObject);

begin

form4.QRLabel1.Caption:=form2.Edit3.Text;

form4.QRLabel12.Caption:=form2.Edit7.Text;

form4.QRLabel11.Caption:=form2.Edit6.Text;

form4.QRLabel13.Caption:=form2.Edit8.Text;

form4.QRLabel16.Caption:=form2.Edit4.Text;

form4.QRLabel17.Caption:=form2.Edit5.Text;

form4.QRLabel18.Caption:=form2.Edit10.Text;

form4.QRLabel19.Caption:=form2.Edit11.Text;

form4.QRLabel20.Caption:=form2.Edit12.Text;

form4.QRLabel21.Caption:=form2.Edit13.Text;

unit4.Form4.QuickRep1.Preview;

end;

procedure TForm2.Button5Click(Sender: TObject);

begin

unit5.Form5.QuickRep1.Preview;

end;

procedure TForm2.DBGrid6TitleClick(Column: TColumn);

begin

Приложение Б

(продолжение)

Form2.Query6.Active:=false;

if column.FieldName='CNT' then

Form2.Query6.SQL[2]:='Order by CNT DESC' else

if column.FieldName='DFG' then

Form2.Query6.SQL[2]:='Order by DFG DESC' ;

Form2.Query6.Active:=true;

end;

end.

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, QuickRpt, ExtCtrls, QRCtrls;

type

TForm3 = class(TForm)

QuickRep1: TQuickRep;

TitleBand1: TQRBand;

ColumnHeaderBand1: TQRBand;

DetailBand1: TQRBand;

QRLabel1: TQRLabel;

QRDBText4: TQRDBText;

QRDBText5: TQRDBText;

QRDBText6: TQRDBText;

QRLabel2: TQRLabel;

QRLabel3: TQRLabel;

QRLabel4: TQRLabel;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses unit2;

{$R *.dfm}

end.

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, QuickRpt, QRCtrls, ExtCtrls;

type

TForm4 = class(TForm)

QuickRep1: TQuickRep;

TitleBand1: TQRBand;

QRDBText1: TQRDBText;

QRDBText2: TQRDBText;

QRDBText3: TQRDBText;

QRLabel1: TQRLabel;

QRLabel2: TQRLabel;

QRLabel3: TQRLabel;

QRLabel4: TQRLabel;

QRLabel5: TQRLabel;

QRLabel6: TQRLabel;

QRLabel7: TQRLabel;

QRLabel8: TQRLabel;

Приложение Б

(продолжение)

QRLabel9: TQRLabel;

QRLabel10: TQRLabel;

QRLabel11: TQRLabel;

QRLabel12: TQRLabel;

QRLabel13: TQRLabel;

QRLabel14: TQRLabel;

QRLabel15: TQRLabel;

QRLabel16: TQRLabel;

QRLabel17: TQRLabel;

QRLabel18: TQRLabel;

QRLabel19: TQRLabel;

QRLabel20: TQRLabel;

QRLabel21: TQRLabel;

QRLabel22: TQRLabel;

QRLabel23: TQRLabel;

QRLabel24: TQRLabel;

QRLabel25: TQRLabel;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

uses unit2;

{$R *.dfm}

end.

unit Unit5;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, QRCtrls, QuickRpt, ExtCtrls;

type

TForm5 = class(TForm)

QuickRep1: TQuickRep;

TitleBand1: TQRBand;

ColumnHeaderBand1: TQRBand;

DetailBand1: TQRBand;

QRLabel1: TQRLabel;

QRLabel2: TQRLabel;

QRLabel3: TQRLabel;

QRDBText1: TQRDBText;

QRDBText2: TQRDBText;

QRLabel4: TQRLabel;

QRDBText3: TQRDBText;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

uses unit2;

{$R *.dfm}

end.

Размещено на Allbest.ru

...

Подобные документы

  • Системный анализ предметной области. Разработка концептуальной модели базы данных. Построение схемы функциональных зависимостей. Создание таблиц базы данных в Database Desktop и псевдонима в BDE Administrator. Разработка алгоритма работы программы.

    курсовая работа [911,3 K], добавлен 20.12.2014

  • Словесное описание предметной области. Построение схемы функциональных зависимостей. Реализация базы данных средствами утилиты Enterprise Manager в формате SQL Server Management Studio. Разработка алгоритмов работы программы и приложения пользователя.

    дипломная работа [1,8 M], добавлен 26.03.2015

  • Понятие баз данных и принципы проектирования информационных систем. Разработка программы для отслеживания финансовой стороны работы компании в среде Delphi 7. Создание таблиц и схемы данных. Разработка клиентского приложения и процедуры добавления данных.

    курсовая работа [1,4 M], добавлен 25.04.2012

  • Основные инструменты построения Web-приложения. Язык сценариев PHP. Системный анализ предметной области базы данных. Коды SQL запросов на создание таблиц. Разработка Web-приложения. Описание функциональности модулей. Система управления содержимым статей.

    курсовая работа [4,8 M], добавлен 28.04.2014

  • Разработка базы данных с целью автоматизации процессов составления, ведения и распространения информации об расписании занятий в спортивном комплексе "Маяк". Анализ предметной области. Разработка алгоритмов работы программы и приложения пользователя.

    дипломная работа [1,0 M], добавлен 12.07.2015

  • Описание предметной области, техническое задание на разработку программного продукта. Проектирование структуры базы данных: ER-диаграмм, диаграммы функциональных зависимостей, набор основных таблиц и описание полей. Разработка руководства пользователя.

    курсовая работа [2,9 M], добавлен 25.11.2013

  • Рассмотрение теоретических основ проектирования. Анализ предметной области и разработка таблиц базы данных. Заполнение таблиц, поиск данных с помощью фильтра. Создание форм, разработка запросов. Создание и настройка отчетов, составление приложения.

    курсовая работа [2,8 M], добавлен 01.06.2014

  • Анализ предметной области, касающийся вопросов учёта и анализа музейных экспонатов, работы музея. Анализ информационных потребностей пользователя. Разработка семантической модели данных. Реализация информационной системы. Создание таблиц и схемы данных.

    курсовая работа [3,1 M], добавлен 21.02.2014

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

    курсовая работа [926,7 K], добавлен 20.05.2015

  • Функциональные зависимости и нормализация отношений. Ограничения целостности данных. Описание таблиц на языке SQL. Интерфейс пользователя и надёжность программ обработки данных. Обработка данных с помощью запросов. Работа с данными из внешних источников.

    дипломная работа [1,6 M], добавлен 25.04.2015

  • Описание первичных и результатных документов, типа связи информационных объектов. Построение информационно-логической модели базы данных и её реализация в СУБД Access (создание таблиц, запросов, форм, отчётов). Разработка интерфейса пользователя.

    курсовая работа [2,1 M], добавлен 14.11.2013

  • Разработка приложения, позволяющего автоматизировать документооборот предприятия по списанию основных средств. Мероприятия по защите и обеспечению целостности базы данных. Разработка клиентского приложения. Запросы к базе данных, руководство пользователя.

    курсовая работа [700,0 K], добавлен 14.01.2015

  • Создание базы данных, хранящей и обрабатывающей информацию о работе мебельного магазина. Описание предметной области, инфологическое, логическое и физическое проектирование. Разработка руководства пользователя. Назначение связей, нормализация отношений.

    курсовая работа [2,7 M], добавлен 02.12.2012

  • Разработка базы данных "Доставка товара" в среде MS Access, ее структуры, объектов (таблиц, запросов, форм, отчетов, макросов). Анализ предметной области базы данных, описание ее схемы, полей таблиц, разработанных объектов. Требования к работе приложения.

    контрольная работа [2,6 M], добавлен 07.08.2013

  • Разработка автоматизированной системы кредитования банка: концептуальная модель предметной области. Построение инфологической и даталогической модели средствами MySQL; таблицы и схемы базы данных; формулировка запросов для отображения данных их таблиц.

    курсовая работа [8,7 M], добавлен 18.01.2012

  • Анализ предметной области, ее формализации с помощью функциональных зависимостей. Этапы минимизации системы функциональных зависимостей и на основании полученной редуцированной системы проектирование модели базы данных. Создание и моделирование запросов.

    курсовая работа [1,7 M], добавлен 21.06.2010

  • Создание модели "сущность-связь" и нормализация данных средствами программы Microsoft Access. Идентификация объектов предметной области и отношений между ними, разработка структуры физической модели, запросов и отчетов базы данных о студентах ВУЗа.

    контрольная работа [742,8 K], добавлен 08.06.2011

  • Анализ предметной области. Показатели качества БД. Нормативные документы в бизнесе. Проектирование отчетов и экранных форм. Разработка таблиц и полей данных. Создание схемы БД. Реляционная модель данных. Запросы на выборку информации, макросы и модули.

    курсовая работа [2,0 M], добавлен 08.04.2014

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

    дипломная работа [1,4 M], добавлен 20.07.2014

  • Создание концептуальной (инфологической) модели системы, которая позволила описать сущности предметной области и отношения между ними. Диаграммы функциональных зависимостей атрибутов сущностей базы данных. Разработка программного обеспечения для ЭВМ.

    курсовая работа [877,8 K], добавлен 28.05.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.