Проектирование базы данных "Бухгалтерия" в среде программирования Delphi
Постановка задачи. Введение в базы данных. Системы управления базами данных. Этапы проектирования базы данных Таблицы БД и связи между ними. Первичные ключи и индексы. Реляционная БД. Метод сущностей и связей. Язык SQL Утилита DataBase Desktop.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 06.08.2008 |
Размер файла | 514,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
3
3
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РФ
Академия управления “ТИСБИ”
Курсовая работа
по дисциплине информационные системы
на тему:
ПРОЕКТИРОВАНИЕ БАЗЫ ДАННЫХ “БУХГАЛТЕРИЯ” В СРЕДЕ ПРОГРАММИРОВАНИЯ DELPHI
Проверил: к. т. н. Яхонтов В.А.
Выполнил(а): студентка факультета
информационных технологий
группы П-312 Исхакова Л.С.
Казань,2006.
Содержание
- 1. Постановка задачи
- 2. Введение в базы данных
- 3. Системы управления базами данных
- 4. Этапы проектирования базы данных
- 4.1 Таблицы БД и связи между ними
- 4.2 Первичные ключи и индексы
- 5. Реляционная БД
- 6. Метод сущностей и связей
- 7. Язык SQL
- 8. Утилита DataBase Desktop
- 9. Класс TdataBase
- 9.1 Создание постоянного соединения с базой данных
- 9.2 Создание локального псевдонима
- 9.3 Указание сетевого протокола при соединении с БД
- 10. Мультимедийные компоненты
- 10.1 TMediaPlayer
- 10.2 TAnimate
- 10.3 TImage
- 11. Ход работы
- 11.1 Создание основных таблиц базы данных
- 11.2 Исходные тексты программного приложения
- Использованная литература
- 1. Постановка задачи
- Цель работы:
- Используя утилиту Database Desktop, создать структуру и заполнить базу данных. Реализовать программное приложение при помощи языка программирования Pascal в среде Delphi.
- Исходные данные:
- СУБД: Paradox.
- Количество таблиц: не менее 4.
- Наличие связанных таблиц.
- Наличие вычисляемых столбцов компонента DBGrid.
- Размеры таблиц: не менее 10 записей.
- Операции с базой данных: поиск, включение, исключение, модификация записей, вычисление значений полей, сохранение, чтение, визуализация, воспроизведение мультимедиа.
- Способ доступа к данным: реляционный.
- Мультимедийные компоненты: TImage, TAnimate, TMediaPlayer.
- Требования к реализации:
- Для реализации данной программы необходимы следующие операции:
- поиск
- включение
- исключение
- модификация записей.
- 2. Введение в базы данных
- Всякая прикладная программа является отображением какой-то части реального мира и поэтому содержит его формализованное описание в виде данных. Крупные массивы данных размещают, как правило, отдельно от исполняемого кода программы, и организуют в виде базы данных. База данных - именованная совокупность данных, отражающее состояние объектов и их отношений в рассматриваемой предметной области. Базами данных называют электронные хранилища информации, доступ к которым осуществляется с помощью одного или нескольких компьютеров. Все данные, находящиеся в БД, можно представить в виде записей или объектов. Обычно БД создается для хранения и доступа к данным, содержащим сведения о некоторой предметной области, то есть некоторой области человеческой деятельности или области реального мира.
Проектирование базы данных должно начинаться с анализа предметной области, в результате которого создается ее описание. Это описание может выполняться с помощью обычного языка, таблиц, графиков.
Для проектирования базы данных необходим некоторый общий подход, который изначально гарантировал бы надежность хранения данных и простоту манипуляции ими. Такой подход называется моделью данных. Модель данных должна обеспечивать независимость данных.
Структура базы данных определяется положенной в ее основу моделью данных. Существуют различные модели баз данных. Наиболее распространенной в настоящее время является реляционная модель данных.
Для работы с БД нужны программные средства, которые обеспечивали бы доступ к нужной информации, внесение каких-либо изменений в БД. Для решения этой задачи используются системы управления базами данных.
СУБД - программные средства, предназначенные для создания, наполнения, обновления и удаления баз данных.
3. Системы управления базами данных
Современная жизнь немыслима без эффективного управления. Важной категорией являются системы обработки информации, от которых во многом зависит эффективность работы любого предприятия ли учреждения. Такая система должна:
обеспечивать получение общих и/или детализированных отчетов по итогам работы;
позволять легко определять тенденции изменения важнейших показателей;
обеспечивать получение информации, критической по времени, без существенных задержек;
выполнять точный и полный анализ данных.
Современные СУБД в основном являются приложениями Windows, так как данная среда позволяет более полно использовать возможности персональной ЭВМ, нежели среда DOS. Снижение стоимости высокопроизводительных ПК обусловил не только широкий переход к среде Windows, где разработчик программного обеспечения может в меньше степени заботиться о распределении ресурсов, но также сделал программное обеспечение ПК в целом и СУБД в частности менее критичными к аппаратным ресурсам ЭВМ.
Среди наиболее ярких представителей систем управления базами данных можно отметить: Lotus Approach, Microsoft Access, Borland dBase, Borland Paradox, Microsoft Visual FoxPro, Microsoft Visual Basic, а также баз данных Microsoft SQL Server и Oracle, используемые в приложениях, построенных по технологии «клиент-сервер». Фактически, у любой современной СУБД существует аналог, выпускаемый другой компанией, имеющий аналогичную область применения и возможности, любое приложение способно работать со многими форматами представления данных, осуществлять экспорт и импорт данных благодаря наличию большого числа конвертеров. Общепринятыми, также, являются технологи, позволяющие использовать возможности других приложений, например, текстовых процессоров, пакетов построения графиков и т.п., и встроенные версии языков высокого уровня (чаще - диалекты SQL и/или VBA) и средства визуального программирования интерфейсов разрабатываемых приложений. Поэтому уже не имеет существенного значения на каком языке и на основе какого пакета написано конкретное приложение, и какой формат данных в нем используется. Более того, стандартом «де-факто» стала «быстрая разработка приложений» или RAD (от английского Rapid Application Development), основанная на широко декларируемом в литературе «открытом подходе», то есть необходимость и возможность использования различных прикладных программ и технологий для разработки более гибких и мощных систем обработки данных. Поэтому в одном ряду с «классическими» СУБД все чаще упоминаются языки программирования Visual Basic 4.0 и Visual C++, которые позволяют быстро создавать необходимые компоненты приложений, критичные по скорости работы, которые трудно, а иногда невозможно разработать средствами «классических» СУБД. Современный подход к управлению базами данных подразумевает также широкое использование технологии «клиент-сервер».
Таким образом, на сегодняшний день разработчик не связан рамками какого-либо конкретного пакета, а в зависимости от поставленной задачи может использовать самые разные приложения. Поэтому, более важным представляется общее направление развития СУБД и других средств разработки приложений в настоящее время.
По своей структуре СУБД делятся на одно-, двух- и трехзвенные.
В зависимости от расположения отдельных частей СУБД различают локальные и сетевые. Все части локальной СУБД размещаются на компьютере пользователя базы данных. Чтобы с одной и той же БД одновременно могло работать несколько пользователей, каждый пользовательский компьютер должен иметь свою копию локальной БД. Существенной проблемой СУБД такого типа является синхронизация копий данных.
К сетевым относятся файл-серверные, клиент-серверные и распределенные СУБД. Непременным атрибутом этих систем является сеть, обеспечивающая аппаратную связь компьютеров и делающая возможной корпоративную работу множества пользователей с одними и теми же данными.
4. Этапы проектирования базы данных.
Процесс проектирования баз данных представляет собой последовательность переходов от неформального словесного описания информационной структуры предметной области к формализованному описанию объектов предметной области в терминах некоторой модели. В общем случае можно выделить следующие этапы проектирования :
системный анализ и словесное описание информационных объектов предметной области;
проектирование инфологической модели предметной области - частично формализованное описание объектов предметной области в терминах некоторой семантической модели;
даталогическое или логическое проектирование баз данных, то есть описание баз данных в терминах принятой даталогической модели данных;
физическое проектирование баз данных, то есть выбор эффективного размещения баз данных на внешних носителях для обеспечения наиболее эффективной работы приложения.
4.1 Таблица базы данных и связи между ними
Единицей хранящейся в БД информации является таблица. Каждая таблица представляет собой совокупность строк и столбцов, где строки соответствуют экземпляру объекта, конкретному событию или явлению, а столбцы - атрибутам этого объекта, события, явления. В терминах БД столбцы таблицы называются полями, а ее строки - записями.
Между отдельными таблицами БД могут существовать связи. Базы данных, между отдельными таблицами которых существуют связи, называются реляционными.
Связанные отношениями таблицы взаимодействуют по принципу главная - детальная.
4.2 Первичные ключи и индексы
В каждой таблице БД может существовать первичный ключ - поле или набор полей, однозначно идентифицирующий запись. Значение первичного ключа в таблице БД должно быть уникальным, то есть в таблице не должно существовать двух и более записей с одинаковым значением первичного ключа.
Первичные ключи облегчают установление связи между таблицами. Поскольку первичный ключ должен быть уникальным, для него могут использоваться не все поля таблицы. Если в таблице нет полей, значения в которых уникальны, для создания первичного ключа в нее обычно вводят дополнительное числовое поле, значениями которого СУБД может распоряжаться по своему усмотрению.
Индексы отличаются от первичных ключей тем, что не требуют непременной уникальности значений входящих в их состав полей. Они устанавливаются по полям, которые часто используются при поиске и сортировке данных: индексы помогут системе значительно быстрее найти нужные данные или отсортировать их в нужной последовательности.
5. Реляционная база данных
По принципу хранения данных все БД делятся на три типа: иерархические, сетевые и реляционные.
В реляционных БД объекты и взаимосвязи между ними представляются в виде прямоугольных таблиц, состоящих из строк и столбцов. Каждая таблица здесь представляет собой объект БД. Столбцы таблицы называются полями, а строки - записями. Реляционная БД может состоять из одной или нескольких таблиц. Когда в БД есть одна таблица, организация связи данных не требуется. Процесс организации связей между таблицами могут устанавливаться как в процессе проектирования БД, так и в процессе выполнения приложения. В реляционных БД могут присутствовать и связанные, и отдельные таблицы. Для связывания двух или нескольких таблиц БД предусмотрены так называемые поля связи. Они должны быть индексированы. При связывании таблиц используется понятия "главная таблица" и "подчиненная таблица". Главная таблица может иметь несколько подчиненных таблиц. При перемещении по записям главной таблицы будет автоматически производится перемещение по записям подчиненной таблицы. В каждой подчиненной таблице для организации связи с главной таблицей берется индекс, состав полей которого должен частично или полностью совпадать с составом полей главной таблицы. Таким образом в реляционной БД связи формируются по типу таблиц "главный - подчиненный".
6. Метод сущностей и связей
Этот метод проектирования БД основан на понятиях сущности и связей между сущностями.
Сущность определяется как некоторый объект, представляющий интерес для пользователя БД. Этот объект должен иметь экземпляры, отличающиеся друг от друга и допускающих однозначную идентификацию.
Связь представляет собой соединение между сущностями по какому-либо признаку. Связь между двумя и только двумя сущностями называется бинарной связью.
Связи между экземплярами сущности могут изображаться графически с помощью ER-диаграммы.
7. Язык SQL
В настоящее время в Delphi реализовано несколько механизмов доступа к данным и каждому механизму соответствует свой собственный набор компонент.
Существует много типов баз данных, поддерживающих стандарт SQL. Эти базы данных разрабатываются разными фирмами, каждая из которых реализует хранение данных и обработку SQL-запросов по-своему.
Еще одна возможность создания таблиц - через посылку SQL-запросов.
SQL символизирует собой структурированный язык запросов. Это - язык, который дает возможность создавать и работать в реляционных базах данных, являющихся наборами связанной информации, сохраняемой в таблицах.
Элегантность и независимость от специфики компьютерных технологий, а также его поддержка лидерами промышленности в области технологии реляционных баз данных, сделало SQL основным стандартным языком.
Database Desktop не обладает всеми возможностями по управлению SQL-серверными базами данных. Поэтому с помощью Database Desktop удобно создавать или локальные базы данных или только простейшие SQL-серверные базы данных, состоящие из небольшого числа таблиц, не очень сильно связанных друг с другом. Если же необходимо создать базу данных, состоящую из большого числа таблиц, имеющих сложные взаимосвязи, можно воспользоваться языком SQL. При этом можно воспользоваться компонентом Query в Delphi, каждый раз посылая по одному SQL-запросу, а можно записать всю последовательность SQL-предложений в один так называемый скрипт и послать его на выполнение. Конкретные реализации языка SQL незначительно отличаются в различных SQL-серверах, однако базовые предложения остаются одинаковыми для всех реализаций.
Язык SQL предназначен для манипулирования данными в реляционных базах данных, определения структуры баз данных и для управления правами доступа к данным в многопользовательской среде.
Поэтому, в язык SQL в качестве составных частей входят:
· язык манипулирования данными (Data Manipulation Language, DML)
· язык определения данных (Data Definition Language, DDL)
· язык управления данными (Data Control Language, DCL).
Язык манипулирования данными используется, как это следует из его названия, для манипулирования данными в таблицах баз данных.
Язык определения данных используется для создания и изменения структуры базы данных и ее составных частей - таблиц, индексов, представлений (виртуальных таблиц), а также триггеров и сохраненных процедур.
Язык управления данными используется для управления правами доступа к данным и выполнением процедур в многопользовательской среде. Более точно его можно назвать “язык управления доступом”.
С точки зрения прикладного интерфейса существуют две разновидности команд SQL:
· интерактивный SQL
· встроенный SQL.
Интерактивный SQL используется в специальных утилитах (типа WISQL или DBD), позволяющих в интерактивном режиме вводить запросы с использованием команд SQL, посылать их для выполнения на сервер и получать результаты в предназначенном для этого окне. Встроенный SQL используется в прикладных программах, позволяя им посылать запросы к серверу и обрабатывать полученные результаты, в том числе комбинируя set-ориентированный и record-ориентированный
8. Database Desktop
Одним из основных способов создания таблиц базы данных является утилита Database Desktop, входящая в поставку Delphi. Хотя для создания таблиц можно использовать различные средства (SQL - компонент TQuery и компонент TTable), применение этой утилиты позволяет создавать таблицы в интерактивном режиме и сразу же просмотреть их содержимое - и все это для большого числа форматов. Это особенно удобно для локальных баз данных, в частности Paradox и dBase.
Database Desktop - это утилита, во многом похожая на Paradox, которая поставляется вместе с Delphi для интерактивной работы с таблицами различных форматов локальных баз данных - Paradox и dBase, а также SQL-серверных баз данных InterBase, Oracle, Informix, Sybase (с использованием SQL Links). Исполняемый файл утилиты называется DBD32.EXE.
После выбора имени поля идет задание типа поля. Типы полей очень сильно различаются друг от друга, в зависимости от формата таблицы.
Далее для таблиц Paradox можно определить поля, составляющие первичный ключ, причем все они должны быть в начале записи, а первое поле, входящее в ключ, должно быть первым полем в записи. После создания таблицы, с ней можно связать некоторые свойства, перечень которых зависит от формата таблицы. Так, для таблиц формата Paradox можно задать:
· Validity Checks (проверка правильности) - относится к полю записи и определяет минимальное и максимальное значение, а также значение по умолчанию. Кроме того, позволяет задать маску ввода
· Table Lookup (таблица для “подсматривания”) - позволяет вводить значение в таблицу, используя уже существующее значение в другой таблице
· Secondary Indexes (вторичные индексы) - позволяют доступаться к данным в порядке, отличном от порядка, задаваемого первичным ключом
· Referential Integrity (ссылочная целостность) - позволяет задать связи между таблицами и поддерживать эти связи на уровне ядра. Обычно задается после создания всех таблиц в базе данных
· Password Security (парольная защита) - позволяет закрыть таблицу паролем
· Table Language (язык таблицы) - позволяет задать для таблицы языковый драйвер.
·
9. Класс TdataBase
Объект типа TDataBase не является обязательным при работе с базами данных, однако он предоставляет ряд дополнительных возможностей по управлению соединением с базой данных. TDataBase служит для:
Создания постоянного соединения с базой данных
Определения собственного диалога при соединении с базой данных (опрос пароля)
Создания локального псевдонима базы данных
Изменения параметров при соединении
Управления транзакциями
9.1 Создание постоянного соединения с базой данных
Если идет работа с базой данных, то перед началом работы выполняется процедура соединения с этой базой. В процедуру соединения, кроме прочего, входит опрос имени и пароля пользователя. Если в программе не используется TDataBase, то процедура соединения выполняется при открытии первой таблицы из базы данных. Соединение с базой данных обрывается, когда в программе закрывается последняя таблицы из этой базы.
9.2 Создание локального псевдонима базы данных
Обычно, псевдоним базы данных(Alias) определяется в утилите конфигурации BDE и информация о нем сохраняется в файле конфигурации IDAPI.CFG. Однако, в программе можно использовать не только ранее определенный в утилите конфигурации BDE псевдоним базы данных, но и так называемый локальный (т.е. видимый только внутри данной программы) псевдоним. Это иногда бывает нужно, например, для того, чтобы обезопасить программу в случае удаления используемого псевдонима из файла конфигурации BDE.
9.3 Указание сетевого протокола при соединении с БД
В случае с InterBase можно в явном виде указать, какой сетевой протокол используется при соединении с базой данных. Эта установка выполняется либо в утилите конфигурации BDE, либо в программе - нужно изменить параметр “SERVER NAME”, который содержит полный путь к файлу с базой данных.
Есть несколько основных компонент(объектов), которые используются постоянно для доступа к БД. Эти объекты могут быть разделены на три группы:
невизуальные: TTable, TQuery, TDataSet, TField
визуальные: TDBGrid, TDBEdit
связующие: TDataSource
Первая группа включает невизуальные классы, которые используются для управления таблицами и запросами. Эта группа сосредотачивается вокруг компонент типа TTable, TQuery, TDataSet и TField. В Палитре Компонент эти объекты расположены на странице Data Access.
Вторая важная группа классов - визуальные, которые показывают данные пользователю, и позволяют ему просматривать и модифицировать их. Эта группа классов включает компоненты типа TDBGrid, TDBEdit, TDBImage и TDBComboBox. В Палитре Компонент эти объекты расположены на странице Data Controls.
Имеется и третий тип, который используется для того, чтобы связать предыдущие два типа объектов. К третьему типу относится только невизуальный компонент TDataSource.
10. Мультимедийные компоненты
10.1 TMediaPlayer
Компонент TmediaPlayer представляет собой набор кнопок предназначенных для управления различными мультимедийными устройствами. Использование компонента предельно просто. Он автоматически распознает тип мультимедийного устройства по расширению файла и берет на себя управление этим устройством. Разумеется в каждый момент времени компонент может управлять лишь одним устройством но с помощью изменения содержимого свойства FileName программа может менять устройство связанное с компонентом. Каждая кнопка компонента имеет собственное имя позволяющее программисту сделать какую-либо кнопку невидимой или недоступной.
Иногда требуется воспроизвести короткий звуковой сигнал для привлечения внимания пользователя программы - например после завершения длительного по времени процесса обновления данных. Стандартная для Delphi процедура без параметров Beep извлекает сигнал из системного динамика только в том случае если компьютер не оснащен звуковой картой. С другой стороны мощные возможности компонента TmediaPlayer кажутся излишними для решения этой задачи на компьютерах оснащенных звуковой картой. В этом случае может пригодиться API-функция с помощью которой озвучиваются стандартные диалоговые окна в 32-разрядных Windows.
10.2 TAnimate
- Компонент TAnimate представляет собой проигрыватель видеоклипов формата AVI. Компонент воспроизводит виртуальную часть файла AVI и игнорирует его звуковое сопровождение. Он способен показывать лишь несжатое изображение или изображение сжатое по методу RLE. Изображение воспроизводится в отдельном потоке команд что освобождает ресурсы программы для выполнения необходимой работы на фоне воспроизведения клипа.
- 10.3 TImage
- Компонент изображений расположен на вкладке Additional, где также находятся и другие компоненты общего назначения. Некоторые из них в функциональном плане дублируют компоненты вкладки Standart.
- Этот компонент служит для размещения на форме одного из трех поддерживаемых Delphi типов изображений: растрового рисунка, значка или метафайла. Любой из этих типов изображений содержится в центральном свойстве компонента - Picture. Файл изображения может быть битовой картой, пиктограммой, метафайлом.
- Класс TImage является непосредственным потомком класса TGraphicControl и, следовательно, принадлежит к семейству графических элементов управления.
- Как и другие графические элементы управления, компонент Image обрабатывает все события от мыши. События по умолчанию не имеет.
- При помещении изображения в компонент Image на этапе проектирования можно использовать окно задания изображения. Это окно раскрывается при активизации компонента либо при выборе свойства Picture в Инспекторе Объектов. Основное поле окна задания изображения предназначено для размещения выбранной картинки.
- 11. Ход работы
- 11.1 Создание основных таблиц базы данных
- Проект будет состоять из четырех форм:
- · “Бухгалтерия” - главная форма программы.
- · “Награды и нарушения” - форма, содержащая таблицу со всеми сведениями о нарушениях и наградах.
- · “Дополнительные сведения” - форма, в которой содержится информация о заработной плате.
- · “Добавление/редактирование”.
- Создадим с помощью Database Desktop таблицы базы данных СУБД Paradox.
- Таблица СОТРУДНИКИ содержит следующие поля:
- · Id - идентификатор сотрудника, тип Autoincrement, ключевое поле;
- · Табельный номер;
- · ФИО - фамилия сотрудника, тип Alpha, размер поля 30;
- · Должность - должность сотрудника, тип Alpha, размер 20;
- · Отдел;
- · Фото - фотография сотрудника, тип Binary.
- ·
- Таблица ЗАРАБОТНАЯ ПЛАТА содержит следующие поля:
- · Id - идентификатор з/п, тип Autoincrement, ключевое поле;
- · Месяц - месяц, тип Alpha, размер 10;
- · Отработанные дни - отработанные сотрудником дни, тип Short;
- · Оплата;
- · Итог з/п - итоговая сумма з/п сотрудника, тип Sort.
- Таблица ЛИЧНЫЕ содержит:
- · Id - идентификатор сотрудника;
- · Табельный номер - тип Integer;
- · ФИО - ФИО сотрудника;
- · Год - год рождения сотрудника, тип Integer;
- · Семья - семейное положение;
- · Адрес - адрес проживания;
- · Телефон.
- Таблица НАГРАДЫ:
- · Id - идентификатор сотрудника;
- · ФИО - ФИО сотрудника;
- · Дата - дата нарушения/награды;
- · Название награды;
- Модель сущность-связь для базы данных задачи представляет собой следующий вид:
- Сущность: Сотрудники.
- Атрибуты: Id, табельный номер, ФИО, должность, отдел.
- Сущность: Заработная плата.
- Атрибуты: Id, месяц, отработанные дни, оплата, итог з/п.
- Связь: Id (сущности Сотрудники) - Id (сущности Заработная плата).
- Сущность: Личные.
- Атрибуты: Id, табельный номер, ФИО, год, семья, адрес, телефон.
- Сущность: Награды.
- Атрибуты: Id, ФИО, дата, название награды.
- Создание приложения.
- Приложение, использующее базы данных, имеет следующие компоненты:
- · Компоненты-набора данных (data set) Table, непосредственно связанные с базой данных. Эти невизуальные компоненты невидимы при работе приложения.
- · Компоненты визуализации и управления данными. В данном приложении используется DBGrid.
- · Компоненты- источники данных (data source), осуществляющие обмен информацией между невизуальными компонентами и визуальными. Таким компонентом является Data Source.
Схема взаимодействия компонентов:
На главной форме осуществляется поиск по табельному номеру сотрудника и поиск по ФИО сотрудника. В компонент Edit вводится искомый сотрудник. Появляется сообщение о выдаче полной информации о сотруднике. При положительном ответе выдается справка об искомом сотруднике, включающая табельный номер, ФИО, должность, отдел, год рождения, семейное положение, адрес проживания, телефон, месяц, отработанные дни, оплату за день и заработную плату.
Работающее приложение выглядит следующим образом:
Для изменения данных таблицы СОТРУДНИКИ используются кнопки «добавить», «редактировать», «удалить». При нажатии на одну из этих кнопок, появляется новая форма:
Для изменения таблицы ЗАРАБОТНАЯ ПЛАТА используется кнопка «Данные о з/п». При нажатии на эту кнопку, появляется новая форма:
Полную информацию о сотруднике можно получить нажатием на кнопку СПРАВКА О СОТРУДНИКЕ. Эта форма имеет вид:
Выделив курсором любую запись на главной форме БУХГАЛТЕРИЯ в таблице СОТРУДНИКИ, полную информацию об этом сотруднике также можно посмотреть в СПРАВКЕ О СОТРУДНИКЕ.
Также выдается информация о наградах и нарушениях всех работников.
В ходе работы приложения можно одновременно прослушивать медиаплеер, для чего необходимо нажатие на определенную кнопку на главной форме. На выбор предоставляется только одно произведение. При желании можно остановить проигрывание.
11.2 Исходные тексты программного приложения
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, DB, DBTables, DBCtrls, Grids, DBGrids,
MPlayer, Buttons;
type
TForm1 = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
DataSource1: TDataSource;
DataSource2: TDataSource;
DBGrid1: TDBGrid;
Table1: TTable;
Table2: TTable;
MediaPlayer1: TMediaPlayer;
Image1: TImage;
Bevel1: TBevel;
Edit2: TEdit;
GroupBox1: TGroupBox;
Label2: TLabel;
Label5: TLabel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
SpeedButton9: TSpeedButton;
SpeedButton10: TSpeedButton;
SpeedButton11: TSpeedButton;
SpeedButton12: TSpeedButton;
Table3: TTable;
DataSource3: TDataSource;
SpeedButton13: TSpeedButton;
Table4: TTable;
DataSource4: TDataSource;
SpeedButton6: TSpeedButton;
SpeedButton14: TSpeedButton;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure SpeedButton11Click(Sender: TObject);
procedure SpeedButton10Click(Sender: TObject);
procedure SpeedButton9Click(Sender: TObject);
procedure SpeedButton12Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure SpeedButton13Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure SpeedButton14Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses unit2, unit3, Unit4, Unit5;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Close;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Form2.Edit1.Text:=Table1['ФИО'];
Form2.Edit2.Text:=Table1['Должность'];
if Form2.ShowModal=mrOK then
begin
Table1.Edit;
Table1['ФИО']:=Form2.Edit1.Text;
Table1['Должность']:=Form2.Edit2.Text;
Table1.Post;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if Form2.ShowModal=mrOK then
begin
Table1.Append;
Table1['ФИО']:=Form2.Edit1.Text;
Table1['Должность']:=Form2.Edit2.Text;
Table1.Post;
end;
Form2.Edit1.Text:='';
Form2.Edit2.Text:='';
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Form1.Table1.Locate('ФИО',Form1.Edit1.Text,[loCaseInsensitive,loPartialKey]);
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
Form1.Table1.Locate('surname',Form1.Edit2.Text,[loCaseInsensitive,loPartialKey]);
if (MessageBox(0,'просмотреть всю инвормацию о сотруднике',{edit1.text}' kj', mb_YesNo)=idYes) then
begin
form5.show;
form5.edit1.text:=inttostr(table1['tabnumber']);
form5.edit2.text:=form1.table1['surname'];
form5.edit3.text:=form1.table1['name'];
form5.edit4.text:=table1['special'];
form5.edit5.text:=table1['otdel'];
form5.edit6.text:=table3['god'];
form5.edit7.text:=table3['family'];
form5.edit8.text:=table1['adresprogivania'];
form5.edit9.text:=table1['telefon'];
form5.edit10.text:=table2['month'];
form5.edit11.text:=inttostr(table2['otrabotano']);
form5.edit12.text:=inttostr(table2['oplata']);
form5.edit13.text:=inttostr(table2['zp']);
if form1.table1.fieldbyname('photo').IsNull<>true then begin
form5.image1.Picture.Bitmap.Assign(table1.fieldbyname('photo'));
form5.image1.Show; end
else form5.image1.Hide;
end; end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
Form1.Table1.Locate('Tabnumber',Form1.Edit1.Text,[loCaseInsensitive,loPartialKey]);
if (MessageBox(0,'просмотреть всю инвормацию о сотруднике',{edit1.text}' kj', mb_YesNo)=idYes) then
begin
form5.show;
form5.edit1.text:=inttostr(table1['tabnumber']);
form5.edit2.text:=form1.table1['surname'];
form5.edit3.text:=form1.table1['name'];
form5.edit4.text:=table1['special'];
form5.edit5.text:=table1['otdel'];
form5.edit6.text:=table3['god'];
form5.edit7.text:=table3['family'];
form5.edit8.text:=table3['adresprogivania'];
form5.edit9.text:=table3['telefon'];
form5.edit10.text:=table2['month'];
form5.edit11.text:=inttostr(table2['otrabotano']);
form5.edit12.text:=inttostr(table2['oplata']);
form5.edit13.text:=inttostr(table2['zp']);
if form1.table1.fieldbyname('photo').IsNull<>true then begin
form5.image1.Picture.Bitmap.Assign(table1.fieldbyname('photo'));
form5.image1.Show; end
else form5.image1.Hide;
end; end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
table1.next;
end;
procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
table1.Prior;
end;
procedure TForm1.SpeedButton5Click(Sender: TObject);
begin
form2.Show;
Form2.Edit1.Text:='';
Form2.Edit2.Text:='';
Form2.Edit3.Text:='';
Form2.Edit4.Text:='';
Form2.Edit5.Text:='';
form2.Image1.Hide;
end;
procedure TForm1.SpeedButton6Click(Sender: TObject);
begin
form2.Show;
Form2.Edit1.Text:=Table1['surname'];
Form2.Edit5.Text:=Table1['name'];
Form2.Edit2.Text:=Table1['special'];
Form2.Edit3.Text:=inttostr(Table1['Tabnumber']);
Form2.Edit4.Text:=Table1['otdel'];
form2.image1.Picture.Bitmap.Assign(table1.fieldbyname('photo'));
form2.image1.Show;
end;
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
If form1.table1.fieldbyname('photo').IsNull<>true then begin
form1.image1.Picture.Bitmap.Assign(table1.fieldbyname('photo'));
form1.image1.Show; end
else form1.image1.Hide;
end;
procedure TForm1.SpeedButton11Click(Sender: TObject);
begin
form1.MediaPlayer1.play;
end;
procedure TForm1.SpeedButton10Click(Sender: TObject);
begin
form1.MediaPlayer1.pause;
end;
procedure TForm1.SpeedButton9Click(Sender: TObject);
begin
form1.MediaPlayer1.stop;
end;
procedure TForm1.SpeedButton12Click(Sender: TObject);
begin
form5.Show;
form5.edit1.text:=inttostr(table1['tabnumber']);
form5.edit2.text:=form1.table1['surname'];
form5.edit3.text:=form1.table1['name'];
form5.edit4.text:=table1['special'];
form5.edit5.text:=table1['otdel'];
form5.edit6.text:=table3['god'];
form5.edit7.text:=table3['family'];
form5.edit8.text:=table3['adresprogivania'];
form5.edit9.text:=table3['telefon'];
form5.edit10.text:=table2['month'];
form5.edit11.text:=inttostr(table2['otrabotano']);
form5.edit12.text:=inttostr(table2['oplata']);
form5.edit13.text:=inttostr(table2['zp']);
if form1.table1.fieldbyname('photo').IsNull<>true then begin
form5.image1.Picture.Bitmap.Assign(table1.fieldbyname('photo'));
form5.image1.Show; end
else form5.image1.Hide;
end;
procedure TForm1.SpeedButton7Click(Sender: TObject);
begin
table1.Delete;
end;
procedure TForm1.SpeedButton13Click(Sender: TObject);
begin
form3.Show;
table2.Open;
if form1.table2.RecordCount<>0 then
begin
Form3.Edit1.Text:=Table2['Month'];
Form3.Edit2.Text:=inttostr(Table2['Otrabotano']);
Form3.Edit3.Text:=inttostr(Table2['Oplata']);
end; end;
procedure TForm1.FormActivate(Sender: TObject);
begin
table1.Open;
table2.Open;
table3.Open;
end;
procedure TForm1.SpeedButton14Click(Sender: TObject);
begin
form4.Show;
end; end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ExtDlgs,jpeg;
type
TForm2 = class(TForm)
Panel1: TPanel;
GroupBox1: TGroupBox;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Edit4: TEdit;
Label4: TLabel;
Bevel1: TBevel;
Image1: TImage;
Button3: TButton;
OpenPictureDialog1: TOpenPictureDialog;
Label5: TLabel;
Edit5: TEdit;
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses unit1;
{$R *.dfm}
procedure TForm2.Button3Click(Sender: TObject);
begin
if form2.OpenPictureDialog1.Execute then begin
form2.image1.Picture.LoadFromFile(form2.OpenPictureDialog1.FileName);
form2.image1.Show; end;
end;
procedure TForm2.Button1Click(Sender: TObject);
var image:TJPEGImage;
begin
form1.table1.insert;
form1.Table1['tabnumber']:=strtoint(Form2.Edit3.Text);
form1.Table1['surname']:=Form2.Edit1.Text;
form1.Table1['name']:=Form2.Edit5.Text;
form1.Table1['Special']:=Form2.Edit2.Text;
form1.Table1['otdel']:=Form2.Edit4.Text;
form1.Table1.Post;
form1.table3.insert;
form1.Table3['god']:='*';
form1.Table3['family']:='*';
form1.Table3['adresprogivania']:='*';
form1.Table3['telefon']:='*';
form1.Table3.Post;
form1.Table2.insert;
form1.Table2['month']:='*';
form1.Table2['otrabotano']:=0;
form1.Table2['oplata']:=0;
form1.Table2['zp']:=0;
form1.Table2.Post;
with form1.table1 do begin
edit;
if form2.image1.Picture.Graphic<>nil then begin
image:=TJPEGImage.Create;
image.Assign(image1.Picture.Graphic);
image.DIBNeeded;
form2.image1.Picture.Bitmap.Assign(image);
FieldByName('photo').Assign(form2.image1.Picture.Bitmap);
image.free;
end;
post;
refresh;
end;
form2.Hide;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
form2.close;
end; end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ExtDlgs;
type
TForm3 = class(TForm)
Panel1: TPanel;
GroupBox1: TGroupBox;
Label6: TLabel;
Label3: TLabel;
Label4: TLabel;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label5: TLabel;
Label7: TLabel;
procedure Button1Click(Sender: TObject);
procedure Edit3Change(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses unit1;
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
begin
form1.table2.edit; {
form1.Table2['id']:=form1.table1['tabnumber']; }
form1.Table2['Month']:=Form3.Edit1.Text;
form1.Table2.Edit;
form1.Table2['Otrabotano']:=strtoint(Form3.Edit2.Text);
form1.Table2['Oplata']:=strtoint(Form3.Edit3.Text);
form1.Table2['ZP']:=strtoint(Form3.Edit3.Text)*strtoint(form3.Edit2.Text);
form1.Table2.Post;
label5.Visible:=false;
label7.Visible:=false;
label2.Visible:=false;
form3.hide;
end;
procedure TForm3.Edit3Change(Sender: TObject);
begin
label2.Visible:=true;
label5.Visible:=true;
label7.Visible:=true;
label5.Caption:=edit1.Text;
label7.Caption:=inttostr(strtoint(edit2.Text)*strtoint(edit3.Text));
end;
procedure TForm3.Button2Click(Sender: TObject);
begin
form3.Close;
end; end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, DB, DBTables, Grids, DBGrids;
type
TForm4 = class(TForm)
DBGrid1: TDBGrid;
Table1: TTable;
DataSource1: TDataSource;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
Table2: TTable;
DataSource2: TDataSource;
SpeedButton5: TSpeedButton;
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
uses Unit1, Unit3;
{$R *.dfm}
procedure TForm4.SpeedButton1Click(Sender: TObject);
begin
table1.insert;
end;
procedure TForm4.SpeedButton4Click(Sender: TObject);
begin
table1.post;
end;
procedure TForm4.SpeedButton3Click(Sender: TObject);
begin
table1.delete;
end;
procedure TForm4.SpeedButton2Click(Sender: TObject);
begin
table1.Edit;
end;
procedure TForm4.SpeedButton5Click(Sender: TObject);
begin
form4.Close;
end; end.
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, ExtCtrls, StdCtrls,jpeg;
type
TForm5 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Bevel1: TBevel;
Bevel2: TBevel;
Bevel3: TBevel;
Label9: TLabel;
Bevel4: TBevel;
Image1: TImage;
SpeedButton1: TSpeedButton;
Edit13: TEdit;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
procedure SpeedButton1Click(Sender: TObject);
procedure Edit12Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
uses unit1, Unit3;
{$R *.dfm}
procedure TForm5.SpeedButton1Click(Sender: TObject);
var image:TJPEGImage;
begin
form1.Table1.Edit;
form1.Table1['tabnumber']:=strtoint(Form5.Edit1.Text);
form1.Table1['surname']:=Form5.Edit2.Text;
form1.Table1['name']:=Form5.Edit3.Text;
form1.Table1['Special']:=Form5.Edit4.Text;
form1.Table1['otdel']:=Form5.Edit5.Text;
form1.Table1.post;
form1.Table3.Edit;
form1.Table3['god']:=Form5.Edit6.Text;
form1.Table3['family']:=Form5.Edit7.Text;
form1.Table3['adresprogivania']:=Form5.Edit8.Text;
form1.Table3['telefon']:=Form5.Edit9.Text;
form1.Table3.post;
form1.Table2.Edit;
form1.Table2['month']:=Form5.Edit10.Text;
form1.Table2['otrabotano']:=strtoint(Form5.Edit11.Text);
form1.Table2['oplata']:=strtoint(Form5.Edit12.Text);
form1.Table2['zp']:=strtoint(Form5.Edit11.Text)*strtoint(form5.Edit12.Text);
form1.Table2.post;
with form1.table1 do begin
edit;
if form5.image1.Picture.Graphic<>nil then begin
image:=TJPEGImage.Create;
image.Assign(image1.Picture.Graphic);
image.DIBNeeded;
form5.image1.Picture.Bitmap.Assign(image);
FieldByName('photo').Assign(form5.image1.Picture.Bitmap);
image.free;
end;
post;
refresh;
end;
form5.Hide;
end;
procedure TForm5.Edit12Change(Sender: TObject);
begin
form5.Edit13.Text:=inttostr(strtoint(edit12.Text)*strtoint(edit13.Text));
end; end.
Использованная литература
1. Базы данных: модели, разработка, реализация / Т.С. Карпова. - СПб.: Питер, 2002;
2. Система программирования Delphi. - СПб.: БХВ - Петербург, 2004;
3. Базы данных. Учебно-методическое пособие / В.Н. Яхонтова. - Казань: Академия управления “ТИСБИ”, 2004;
4. Базы данных и приложения. Лекции и упражнения. - СПб.: ООО “ДиаСофтЮП”, 2002;
5. Основы программирования в Delphi - Н.Культин;
6. Работа с базами данных в Delphi / В.Э. Гофман, А.Д. Хомоненко - СПб.: КОРОНА принт, 2000.
Подобные документы
Понятие базы данных, модели данных. Классификация баз данных. Системы управления базами данных. Этапы, подходы к проектированию базы данных. Разработка базы данных, которая позволит автоматизировать ведение документации, необходимой для деятельности ДЮСШ.
курсовая работа [1,7 M], добавлен 04.06.2015Сущности и функциональные зависимости базы данных. Атрибуты и связи. Таблицы базы данных. Построение ER-диаграммы. Организация ввода и корректировки данных. Реляционная схема базы данных. Реализация запросов, получение отчетов. Защита базы данных.
курсовая работа [2,4 M], добавлен 06.02.2016Системы управления базами данных: сущность и характеристика. Типы данных и свойства полей СУБД Access. Объекты базы данных: таблицы, схемы данных, формы, запросы, отчеты. Разработка и проектирование базы данных "Продажи книг" в среде Microsoft Access.
курсовая работа [1,8 M], добавлен 04.02.2013Проектирование и создание информационной базы данных для управления предприятием "Завод металлоизделий". Данные для базы, предметная область, атрибуты объектов базы данных. Объектные отношения, их ключи, связи объектов и отношений базы данных предприятия.
реферат [26,9 K], добавлен 04.12.2009Авторизация с каталогами проектирования базы данных магазина. Задачи базы данных: учет всех товаров, поиск и выдача данных о клиентах, адрес, телефоны, цена и наличие товара. Этапы проектирования базы данных. Схема данных, создание запросов и их формы.
реферат [1,6 M], добавлен 22.10.2009Виды и функции системы управления базами данных Microsoft Access. Иерархическая, сетевая, реляционная модель описания баз данных. Основные понятия таблицы базы данных. Особенности создания объектов базы данных, основные формы. Доступ к Internet в Access.
контрольная работа [19,8 K], добавлен 08.01.2011Базы данных с двумерными файлами и реляционные системы управления базами данных (СУБД). Создание базы данных и обработка запросов к ним с помощью СУБД. Основные типы баз данных. Базовые понятия реляционных баз данных. Фундаментальные свойства отношений.
реферат [57,1 K], добавлен 20.12.2010Современные базы данных – многофункциональные программные системы, работающие в открытой распределенной среде изучении администрирования базы данных. Способы организации внешней памяти баз данных. Системы управления базами данных для хранения информации.
курсовая работа [185,6 K], добавлен 07.12.2010Цель инфологического моделирования предметной области. Источники данных, базы данных и система управления, разработка модели. Принципы проектирования базы данных, концептуальная, логическая, материальная разработка. Типы сущностей, атрибутов и связей.
курсовая работа [188,6 K], добавлен 15.07.2012Проектирование базы данных Access. Система управления базами данных. Создание и обслуживание базы данных, обеспечение доступа к данным и их обработка. Постановка задач и целей, основных функций, выполняемых базой данных. Основные виды баз данных.
лабораторная работа [14,4 K], добавлен 16.11.2008