Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лабораторная работа №8 Тема : Использование средств Delphi для работы с локальными базами данных. Цель работы : Изучить основы проектирования локальных баз данных. Используемые программные средства : Delphi . 28.1. Теоретические сведения База данных (БД) это совокупность записей различного типа, организованных по определенным правилам и обеспечивающих хранение и целостность информации. Система управления базой данных (СУБД) это совокупность языковых и программных средств, предназначенных для создания, ведения и использования БД. В зависимости от вида организации данных различают иерархическую, сетевую, реляционную и объектно-ориентируемую модели БД. Реляционная БД представляет собой совокупность таблиц, связанных отношениями. К достоинствам реляционной БД относятся простота, гибкость структуры и удобство реализации на компьютере. Таблица это двумерный массив, где строки образованы отдельными записями , а столбцы полями этой записи. Таблицы хранятся в файлах на жестком диске и похожи на отдельные документы или электронные таблицы, однако, в отличие от последних, поддерживают многопользовательский режим доступа. Во избежание дублирования информации в таблицах, в реляционных БД определяются ключи и индексы . Ключ это поле (комбинация полей), данные в котором(ых) однозначно идентифицируют каждую запись в таблице. Индекс , как и ключ, строится по полям таблицы, однако он может допускать повторение значений составляющих его полей. Индекс служит для сортировки таблиц по индексным полям. В простой БД поля можно разместить в одной таблице. В сложной БД поля распределены по нескольким таблицам. При создании программ, работающих с базами данных, в Delphi используется механизм Borland Database Engine ( BDE ), реализованный в виде набора библиотек, обеспечивающий простой и удобный доступ к базам данных независимо от их архитектуры. Проблема передачи в программу информации о месте нахождения файлов базы данных решается путем использования псевдонима ( Alias ) базы данных. Псевдоним это короткое имя, поставленное в соответствие полному имени каталога базы данных, т.е. каталога, в котором находятся файлы базы данных. Для создания и связи псевдонима с каталогом базы данных используется утилита BDE Administrator . Delphi не имеет своего формата таблиц, однако поддерживает два вида локальных таблиц dBase и Paradox . Таблицы Paradox являются достаточно развитыми и удобными при создании локальных БД. Для каждого поля таблицы необходимо задать имя, тип и размер поля. Тип поля определяет тип данных, которые могут быть помещены в поле. В Paradox имеется достаточно широкий выбор типов полей, используемых для хранения данных. Некоторые из них приведены в табл. 28 .1. Таблица 28.1. Некоторые типы полей таблиц Paradox 7 Тип Обозначение Описание значений Alpha A Строка символов. Длина не более 255 символов Number N Число с плавающей точкой Date D Дата Autoincrement + Автоинкрементное поле. При добавлении к таблице новой записи в поле автоматически записывается число, на единицу большее, чем находится в соответствующем поле последней добавленной записи Имя поля в таблице Paradox должно состоять из букв и цифр и начинаться с буквы. Максимальная длина имени поля 25 символов. В таблице не может быть два поля с одинаковым именем. Создание таблиц производится при помощи входящей в состав Delphi утилиты Database Desktop . После выбора типа таблицы, в диалоговом окне Create Paradox 7 Table следует определить структуру записей таблицы. Тип поля выбирается из списка при нажатии правой кнопки мыши в колонке Type или при нажатии клавиши Пробел . Файлы таблиц Paradox , хранящихся на диске, имеют расширение *. db . Таким образом, процесс создания новой базы данных состоит из следующих этапов: 1 создание каталога; 2 создание псевдонима; 3 создание таблицы (таблиц). Методика разработки в Delphi приложения для управления базой данных ничем не отличается от методики создания обычной программы. Просмотр баз данных обычно организуется или в режиме формы, или в режиме таблицы. В режиме формы можно видеть только одну запись, а в режиме таблицы несколько записей одновременно. Довольно часто эти два режима комбинируют. При работе с базой данных, как правило, интересует не все содержимое базы данных, а некоторая конкретная информация. Выборка нужной информации производится путем выполнения запросов . Текст запроса строится с помощью структурированного языка запросов SQL (не входит в рассмотрение данной работы). Кроме того, состав записей в наборе данных зависит от установленных ограничений, которые вводятся с помощью фильтров . Delphi предоставляет широкие возможности для выполнения различных вариантов фильтрации. Работа с компонентами Для создания приложений, работающих с БД, в Delphi имеется ряд компонентов (визуальных и невизуальных) и специальных объектов. Основные компоненты, используемые для работы с локальными базами данных, находятся на страницах Data Access (рис. 28.1) и Data Controls (рис. 28.2) Палитры компонентов . Рис. 28.1. Страница компонентов Data Access Рис. 28.2. Страница компонентов Data Controls Некоторые свойства основных компонентов для работы с БД приведены ниже. Компонент Table (панель Data Access Палитры компонентов ) набор данных, связанный с одной таблицей БД. Свойства Описание Active признак активизации/деактивизации файла данных (таблицы) DatabaseName имя БД. В качестве значения свойства используется псевдоним БД Filter текст фильтра Filtered признак активизации/деактивизации фильтра ReadOnly признак активизации/деактивизации редактирования таблицы TableName имя файла данных (таблицы данных) Методы Next, Prior, First, Last используются для перемещения указателя соответственно на следующую, предыдущую, первую, последнюю записи набора данных Компонент DataSource (панель Data Access Палитры компонентов ) обеспечивает связь таблиц БД с компонентами просмотра и редактирования содержимого полей БД. Свойства Описание DataSet имя компонента, представляющего собой входные данные Компонент DBGrid (панель Data Controls Палитры компонентов ) обеспечивает представление БД в виде таблицы. Свойства Описание DataSource имя компонента - источника данных Компонент DBNavigator (панель Data Controls Палитры компонентов ) представляет собой набор кнопок для перемещения по записям и их редактирования. Свойства Описание DataSource имя компонента - источника данных Hints массив строк, хранящий всплывающие подсказки для каждой из кнопок. Для активации требуется, чтобы свойство компонента ShowHint было установлено в true Компоненты DBEdit и DBText (панель Data Controls Палитры компонентов ) используются для просмотра и редактирования полей записи. Свойства Описание DataField имя поля для отображения/редактирования DataSource имя компонента - источника данных Рис. 28.3. Связь компонентов приложения и таблицы БД 28 .2. Порядок выполнения работы Изучить компоненты Delphi , используемые для управления базой данных, выполнить контрольные примеры и задания соответствующего варианта. Контрольный пример 1 Разработать программу управления базой данных "Записная книжка". В базе должна содержаться информация о фамилии, имени, телефоне, адресе электронной почты, дате рождения и графическое изображение. Решение 1. Перед тем, как приступить непосредственно к разработке приложения управления базой данных, необходимо, используя утилиты BDE Administrator и Database Desktop , создать псевдоним базы данных и сам файл данных (таблицу). 1.1. Запустить из Windows утилиту BDE Administrator: Пуск Программы Borland Delphi 5 BDE Administrator В левой части окна, на вкладке Databases , перечислены зарезервированные на данном компьютере псевдонимы. Чтобы создать новый псевдоним, надо выполнить команду New из меню Object . В открывшемся диалоговом окне New Database Alias выбрать драйвер Standard и нажать кнопку OK . После этого надо изменить имя Standard1 на новое имя DBSprav и указать в правом окне в поле PATH путь к файлам базы данных. В данном случае ввести путь c:Spravochnik или воспользоваться стандартным диалоговым окном ввода, находящемся в конце поля PATH (каталог должен существовать). Чтобы данный псевдоним был зарегистрирован в файле конфигурации, в меню Object выбрать команду Apply . Результат создания нового псевдонима показан на рис. 28 .4: Рис. 28 .4. Результат создания псевдонима 1.2. Для создания файла данных (таблицы) необходимо: открыть новый проект Delphi : File New Application из меню Delphi запустить утилиту Database Desktop: Tools Database Desktop в окне Database Desktop из меню File выбрать команду New и в появившемся списке выбрать тип создаваемого файла Table (рис. 28 .5) : Рис. 28.5. Диалоговое окно Database Desktop В открывшемся диалоговом окне Create Table выбрать тип создаваемой таблицы ( Paradox 7 ) и нажать OK . В открывшемся диалоговом окне (рис. 28.6) можно определять структуру записей таблицы: Рис . 28.6. Диалоговое окно Create Paradox 7 Table В табл. 28.2 перечислены поля таблицы для базы данных "Записная книжка". Тип поля ( Type ) задается нажатием правой кнопки мыши или клавишей Пробел . Таблица 28.2. Поля таблицы Поле (Field Name) Тип (Type) Размер (Size) Описание LastName A 20 Фамилия FirstName A 15 Имя Tel N Телефон A 20 Birthday D день рождения Image A 12 имя файла иллюстрации После создания таблицы ее нужно сохранить. Для этого надо нажать кнопку Save As в окне Create Paradox 7 Table , указать директорию для сохранения и имени псевдонима ( Alias ). В настоящем примере выбрать имя псевдонима DBSprav и сохранить таблицу в каталоге c:Spravochnik под именем sprav.db . 2. На форме (рис. 28.7) расположить компоненты Table1, DataSource1, DBGrid1, DBNavigator1, CheckBox1 и установить с помощью Object Inspector следующие свойства, определяющие внешний вид и поведение компонентов: Form1.Caption = 'Записная книжка' Form1.Height = 160 Form1.Width = 600 DBGrid1.Align = alTop DBGrid1.Height = 97 CheckBox1.Caption = 'Разрешить редактирование' CheckBox1.Width = 169 CheckBox1.Checked = false DBNavigator1.ShowHint = true DBNavigator1.Flat = true Table1.ReadOnly = true Рис. 28.7. Вид формы 3. Для задания связей между компонентом Table 1 и таблицей БД, между компонентом DataSource 1 и Table 1, между компонентами DBGrid 1, DBNavigator 1 и DataSource 1, надо установить для этих компонентов следующие свойства: Table1.DatabaseName = 'DBSprav' Table1.TableName = 'sprav.db' DataSource1.DataSet = Table1 DBGrid1.DataSource = DataSource1 DBNavigator1.DataSource = DataSource1 Table1.Active = true 4. Для возможности редактирования записей, их добавления и удаления, написать обработчик события OnClick компонента CheckBox 1. Текст процедуры имеет вид : procedure TForm1.CheckBox1Click(Sender: TObject); begin if CheckBox1.Checked then with Table1 do begin Active:=false; ReadOnly:=false; Active:=true; end else with Table1 do begin Active:=false; ReadOnly:=true; Active:=true; end; end; 5. Запустить проект на компиляцию и выполнение. Изменение состояния переключателя Разрешить редактирование позволяет использовать компонент DBNavigator1 для работы с записями (редактирования, создания новых, удаления) или запрещает редактировать содержание таблицы данных. 6. Для того, чтобы добавить новою запись, надо нажать кнопку и в новой строке начать ввод информации . Заполнить таблицу следующей информацией: LastName FirstName Tel Birthday Image Зверев Дима 746323 zvd@mail.ru 17.12.1975 2.ico Иванова Наташа 384736 iv_nat@mail.ru 05.08.1972 1.ico Сергеева Алла 936523 alla@yandex.ru 13.04.1970 4.ico Петров Иван 965432 petrov@yahoo.com 25.11.1976 3.ico Смирнов Олег 793546 smirnov@rambler.ru 05.07.1980 5.ico Иванов Андрей 573865 ivanov_a@mail.ru 01.01.1970 6.ico Иванов Сергей 485325 ivanov_s@mail.ru 03.03.1974 7.ico Никитина Ольга 298476 nick@mail.com 08.12.1965 9.ico Петренко Сергей 163456 petr@yandex.ru 24.03.1967 8.ico После окончания редактирования убрать флажок в переключателе Разрешить редактирование . Переход между записями осуществляется с помощью кнопок компонента DBNavigator. Окончательное окно приложения, позволяющего работать с базой данных в режиме таблицы, показано на рис. 28.8: Рис. 28.8. Результат выполнения программы Контрольный пример 2 Дополнить имеющуюся программу компонентами, позволяющими просматривать и редактировать базу данных в режиме формы. Для управление базой данных использовать управляющие кнопки. Решение 1. С помощью Object Inspector установить свойство формы Form1.Width = 324 . Расположить на форме компоненты DBEdit 1, DBEdit 2, DBEdit 3, DBEdit 4, Label 1, Label 2, Label 3, Label 4, Image 1, Button 1, Button 2 как показано на рис. 28.9 и установить для них следующие свойства: Label1.Caption = 'Фамилия' Label2.Caption = 'Имя' Label3.Caption = 'Эл. почта' Label4.Caption = 'Изображение' Image1.Height = 32 Image1.Width = 32 Button1.Caption = 'Предыдущая' Button1.Height = 25 Button1.Width = 75 Button2.Caption = 'Следующая' Button2.Height = 25 Button2.Width = 75 Рис. 28.9. Вид формы 2. Для задания связей между компонентами, обеспечивающими просмотр и редактирование полей базы данных, и компонентом источника данных DataSourse 1, установить для этих компонентов следующие свойства: DBEdit1.DataSource = DataSource1 DBEdit1.DataField = LastName DBEdit2.DataSource = DataSource1 DBEdit2.DataField = FirstName DBEdit3.DataSource = DataSource1 DBEdit3.DataField = Email DBEdit4.DataSource = DataSource1 DBEdit4.DataField = Image 3. Записать обработчики событий OnClick компонентов Button1 и Button2 для вызова соответствующих методов управления набором данных. В данном случае, при нажатии на кнопки Предыдущая и Следующая будет происходить переход соответственно к предыдущей и следующей записям набора данных Table 1. procedure TForm1.Button1Click(Sender: TObject); begin Table1.Prior; end; procedure TForm1.Button2Click(Sender: TObject); begin Table1.Next; end; 4. В поле Image таблицы данных хранится имя файла графического изображения, при этом сами файлы должны существовать. В настоящей работе считаем, что файлы хранятся в каталоге c:SpravochnikImage. Для отображения графического изображения необходимо выполнить процедуру TForm1 . Table1AfterScroll , которая обеспечивает обработку события AfterScroll для компонента Table1. Это событие происходит всякий раз при переходе между записями таблицы. Для записи обработчика события надо выделить левой кнопкой мыши компонент Table 1, в окне Object Inspector выделить вкладку Events и два раза щелкнуть левой кнопкой мыши в поле ввода для свойства AfterScroll . Листинг соответствующей процедуры имеет вид: procedure TForm1.Table1AfterScroll(DataSet: TDataSet); begin try Image1.Picture.LoadFromFile(ImagePath+DBEdit4.Text); Image1.Visible:=true; except Image1.Visible:=false; end; end; Процедура TForm1.Table1AfterScroll содержит конструкцию try ... except , чтобы обработать исключительную ситуацию в случае отсутствия изображения, например при добавлении в таблицу новой записи. ImagePath переменная строкового типа, которая содержит полный путь к файлу с изображением (имя диска, название каталога, имя файла). Для ее задания нужно записать процедуру TForm1.Table1BeforeOpen , которая обеспечивает обработку события BeforeOpen для компонента Table1. Это событие возникает всякий раз перед открытием таблицы с данными. Запись обработчика события BeforeOpen выполняется так же, как и для обработчика события AfterScroll . Тест соответствующей процедуры имеет вид: procedure TForm1.Table1BeforeOpen(DataSet: TDataSet); begin ImagePath:=ExtractFilePath(ParamStr(0))+'image'; end; Переменная ImagePath:string должна быть описана в модуле в разделе описания глобальных переменных. В процедуре TForm1.Table1BeforeOpen использовалась function ExtractFilePath(const FileName:string):string , возвращающая переменную строкового типа, содержащую название текущего каталога. 5. Запустить проект на компиляцию и выполнение. Для перемещения по записям теперь можно использовать кнопки Предыдущая и Следующая . При этом в соответствующих компонентах будет отображаться содержимое соответствующих полей конкретной записи. Окно приложения показано на рис. 28.10. Рис. 28.10. Результат выполнения программы Контрольный пример 3 Дополнить имеющуюся программу компонентами, позволяющими проводить фильтрацию содержимого базы данных. Решение 1. Расположить на форме компоненты Edit 1, Label 5, Button 3, Button 4. С помощью Object Inspector установить следующие свойства компонентов: Label5.Caption = 'Фильтр' Edit1.Text = '' Button3.Caption = 'Сбросить фильтр' Button3.Height = 25 Button3.Width = 105 Button4.Caption = 'Применить фильтр' Button4.Height = 25 Button4.Width = 105 Результат показан на рис. 28.11: Рис. 28.11. Вид формы Компонент Edit 1 используется для ввода выражения, по которому будет проводиться фильтрация. 2. Записать соответствующие обработчики событий для компонентов Button 3 и Button 4: procedure TForm1.Button3Click(Sender: TObject); begin Table1.Filtered:=false; end; procedure TForm1.Button4Click(Sender: TObject); begin Table1.Filtered:=true; Table1.Filter:=Edit1.Text; end; 3. Запустить проект на компиляцию и выполнение. 4. Ввести выражение, описывающее условие фильтрации: Birthday>'01.01.1975' и нажать кнопку Применить фильтр . Результат показан на рис. 28.12. Рис. 28.12. Результат выполнения фильтрации После нажатия кнопки Сбросить фильтр в таблице отображаются все записи, имеющиеся в таблице. 28.3. Содержание отчета Отчет должен содержать ответы на контрольные вопросы, тексты программ и решение соответствующего варианта. 28.4. Контрольные вопросы 1. В чем заключается отличием между БД и СУБД 2. Что называется псевдонимом БД? 3. Какие компоненты обеспечивают доступ к файлам данных (таблицам) и где они расположены на Палитре компонентов ? 4. Какие компоненты обеспечивают просмотр и редактирование содержимого полей БД? Где расположены эти компоненты? 5. Чем отличается просмотри БД в режиме таблицы и в режиме формы? 6. Что называется выборкой информации из БД? Вариант 1 Разработать программу управления базой данных, содержащей информацию об учениках в классе, предметам и успеваемости. Обеспечить просмотр базы данных в режиме формы с возможностями навигации по базе данных. Вариант 2 Разработать программу управления базой данных, содержащей информацию о товаре, производителе, годе выпуска и цене. Обеспечить просмотр базы данных в режиме таблицы и возможность фильтрации исходных данных. Вариант 3 Разработать программу управления базой данных, содержащей информацию о студентах и оценках, полученных на экзамене по трем предметам. Обеспечить просмотр базы данных в режиме таблицы и возможность фильтрации исходных данных. Вариант 4 Разработать программу управления базой данных, содержащей информацию о книгах в библиотеке. Поля таблицы должны содержать информацию об авторах, названии и год издания. Обеспечить просмотр базы данных в режиме формы и возможность фильтрации исходных данных. Вариант 5 Разработать программу управления базой данных, содержащей информацию о студентах в группе. Поля таблицы должны содержать информацию об фамилии, номере зачетной книжки, дне рождения и телефоне. Обеспечить просмотр базы данных в режиме формы и возможность фильтрации исходных данных.. Вариант 6 Разработать программу управления базой данных, содержащей информацию о учениках в школе. Поля таблицы должны содержать следующую информацию: фамилии учеников, рост, вес, пол. Обеспечить просмотр базы данных в режиме формы и возможность навигации по базе данных. Вариант 7 Разработать программу управления базой данных, содержащей информацию об учетах разговоров по телефону. Поля таблицы должны содержать следующую информацию о дате звонка, фамилии звонившего и времени разговора. Обеспечить просмотр базы данных в режиме таблицы с возможностями навигации по базе данных и фильтрации исходных данных. |