Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


База данных 3

Тип Реферат
Предмет Информатика
Просмотров
1189
Размер файла
291 б
Поделиться

Ознакомительный фрагмент работы:

База данных 3

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

Учет движения продуктов по складу горюче-смазочных материалов. Составить базу данных, полями которой являются: шифр продукта, наиме­нование продукта, объём, признак прибытие/убытие, дата, наименование (фамилия) потребителя/поставщика номер счёта потребителя/поставщика, адрес, телефон и др. Вывести динамику поступления-убытия каждого кон­кретного продукта, а также общий объём движения продуктов на складе ГСМ (сколько прибыло и убыло за текущий месяц).

Что нужно проделать

ЛАБОРАТОРНАЯ РАБОТА №1

ОСНОВЫ ПОСТРОЕНИЯ БАЗЫ ДАННЫХ

В СРЕДЕ BORLAND DELPHI

Определение структуры таблицы

Например, в учебном управлении высшего учебного за­ведения необходимо хранить информацию о студентах заведения: № зачётной книжки, шифр группы, ФИО, год рождения, пол, предмет, среднюю оценку по предмету.

ТаблицаБД пред­ставляет собой обычную двумерную таблицу с характеристи­ками (атрибутами) какого-то множества объектов и имеющая имя - идентификатор, по которому на неё можно сослаться.

Таблица 1. Данные о студентах

№ зач. книж­киГруп­паФамилияИмяОтчествоГод рожде­нияПолПредметОценка
ZachGroupFamNamParYear_bSexPredOz
115261В2201ИвановЕгорПетрович1982МИнформатика4
234582Э3514ПетровИванСидорович1984МИнформатика5
365484Э3514СидоровИванПетрович1983МСПО3
498759А1501ЕгороваИннаЕгоровна1982ЖТОЭ4

Например, для таблицы введём для последующих ссылок имена полей Zach, Group, Fam, Nam, Par, Year_b, Sex, Pred, Oz, соответ­ствующие указанным в ней заголовкам полей.

Тип поля характеризует тип хранящихся в поле данных. Это могут быть строки, числа, булевы значения,большие тексты (на­пример характеристики сотрудников),изображения (фотографии) и т.п.

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

При построении таблиц БД важно обеспечить непротиворе­чивость информации. Это делается введением ключевых полей, обеспечивающих уникальность каждой записи. Ключе­вым может быть одно или несколько полей. В приведённом примере можно было бы сделать ключевыми совокупность полей Fam, Nam и Par. Но в этом случае нельзя было бы заносить в таб­лицу сведения о полных однофамильцах, у которых совпадают фамилия, имя и отчество. Поэтому целесообразнее использовать поле Zach – номер зачётной книжки, которое можно сделать клю­чевым, по­скольку номер зачётной книжки не может быть одинаковым у двух студентов.

В каждый момент времени есть некоторая текущая запись, с которой ведётся работа. Записи в таблице БД физиче­ски могут располагаться без какого-либо порядка, просто в по­следовательности их ввода (появления новых студентов). Но когда данные таблицы предъявляются пользователю, они должны быть упорядочены. Для упорядочения данных в БД, так же, как и для упорядочения данных в массивах, используется понятие индекса. Индекс показывает, в какой последовательности будет просматриваться таблица. Часто индексы хранятся от­дельно от файла с данными. Для быстрой сортировки обычно ин­дексы выносят в отдельный индексный файл с тем же названием, но с другим расширением. В таком файле содержатся только пер­вичные ключи и описание очередности записей. Основной же файл при этом остается неупорядоченным. Т. к. индексный файл на­много меньше файла объектов, сортировка по индексу происходит гораздо быстрее, чем сортировка основного файла.

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

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

Создание файла таблицы данных

Для работы с базами данныхнаиболее распространённых форматов можно использовать утилиту DatabaseDesktop, постав­ляемую в составе большинства продуктов корпорации Inprise (Borland). При установке Delphi создаётся типовая структура каталогов и меню "Пуск" Windows, а в меню "Пуск"Прогpaммы->Borland Delphi->Database Desktop.

Создание таблицы базы данных осуществляется выбором опции меню File->New->TableпослезапускаутилитыDatabase Desktop.

ВпоявившемсядиалогеCreate Tableвыбираетсятиптабли­цы (изизвестныхстандартных – например,Paradox, Access, dBase, InterBase, Oracle ит.д.).

В этой работе используется наиболее простой тип плоских таблиц dBaseforWindows.

В диалоге задания структурыуказываются: 1. имя поля (FieldName) 2. тип (Type) 3. размер (Size) 4. число десятичных знаков (Dec) и др.

В dBaseforWindows используются типы полей: Character(C) - символьное; Float(F) - вещественное (с вы­сокой точностью); Number(N) - целое, вещественное (с точностью в 2 десятичных знака); Date(D) - дата; Logical(L) - логическое; Мето(М) - текстовое без ограничениядлины;Binary(B) - двоич­ное (рисунки и другие объекты).

Выбор типа поля осуществляется нажатием клавиши <пробел> или правой клавишей «мыши».

Для примера БД студентов учебного заведения структура файла таблицы может быть представлена в виде (рис. 2).

Рис. 2 Диалог задания структуры таблицы

Изменение кодовой страницы для поддержки русского язы­ка осуществляется следующим образом: в окошке TablePropertiesиз выпадающего списка выбирается пункт TableLanguage, после чего необходимо нажать кнопку Modify; в появившемся диалоге TableLanguage указывается кодовая страница dBaseRUScpp866.

После задания структуры таблицы, её сохранение произво­дится выбором кнопки SaveAs. В диалоге указывается имя файла таблицы (например, stud.dbf).

Если необходимо в дальнейшем изменить структуру табли­цы, следует открыть таблицу в DatabaseDesktop и выбрать в главном меню пункты Table->Restructure.

После создания таблицы возможно её редактирование и использование в при­кладных программах.

Разработка приложения для работы с таблицей данных

Для разработки системы управлениябазой данных можно воспользоваться как стандартными СУБД (Access, Paradox, dBase и т.д.), так и разработать самостоятельное приложение для работы с БД.

Разработка самостоятельного приложения для работы с БД имеет ряд преимуществ по сравнению с использованием готовых пакетов:

1) ресурсы ОС задействованы только для тех задач, которые будут реализованы в СУБД;

2) полученные программные модули очень компактны;

3) обеспечивается более высокое быстродействие вследствие использования только необходимых для решения задачи операций с БД;

4) многообразие реализаций максимально удобного интерфейса пользователя с СУБД;

5) возможность интегрироваться в любые программные приложения;

6) осуществление расчётных задач сложности, которая не может быть обеспечена применением готовых СУБД.

Для разработки системы управлениябазой данных восполь­зуемся интегрированной средой визуальной разработки Windows-приложений Borland Delphi. Одним из важнейших достоинств Delphi является на­личие удобных средств быстрой визуальнойразработки приложе­ний с использованием специализированных компонент доступа и управления базами данных, генерации отчётов, запросов SQL, a так же наличие технологии BorlandDatabaseEngine (BDE), обеспечи­вающей доступ к большинству известных баз данных с использо­ванием их собственных драйверов.

Для программирования баз данныхиспользуются следую­щие вкладки палитры компонент: DataAccess и DataControl(рис. 3, 4, 5).

Рис. 3. Палитра компонентов Borland Delphi

Рис. 4. Вкладка DataAccess

Вкладка Data Access содержит компоненты:

Table (второй слева) - связывающий файл таблицы на диске с приложением и позволяющий оперировать с таблицей (второй компонент).

DataSource (первый слева) - связывает компоненты ото­бражения информации с компонентом Table (первый компонент).

Рис. 5. Вкладка DataControl

Вкладка DataControl содержит компоненты:

DBGrid - для отображения и редактирования записей базы данных (первый компонент)

DBNavigator - для управления данными (удаление, добавле­ние, перемещение и т. д.)

Компоненты переносятся на окно приложения (форму) путём выделения компоненты нажатием правой клавиши мыши на ней, а затем на форме.

Компоненты вкладки DataAccess являются служебными и от­носятся к невидимым (т. е. отображаются на стадии разработки приложения и не отображаются в процессе выполнения), aDataControl к отображаемым как в процессе разработки, так и в про­цессе выполнения.

После переноса компонент на форму производится настройка свойств объектов с использованием ObjectInspector.

Основные свойства объекта Table:

Name - имя объекта используемое в программе (является указателем, заданным в соответствии с шаблоном компоненты); DatabaseName - имя псевдонима (alias) базы данных (выби­рается из списка, если таблица и проектнаходятся в одном ката­логе необязательный параметр!); TableName - имя файла таблицы (выбирается из списка, ес­ли указан псевдоним БД или файл с таблицей и проект находятся в одном каталоге); Active - позволяет отображать данные из таблицы в процес­се разработки и автоматически открывает файл при выполнении (когда установлено true).

Служебная компонента DataSource выполняет роль свя­зующего звена и имеет следующие свойства:

Name - имя объекта используемое в программе (является указателем, заданным в соответствии с шаблоном компоненты); DataSet - имя таблицы связанной с данным объектом (вы­бирается из списка).

Объект Table позволяет приложению работать с таблицей, но для отображения данных на экране необходимо использовать компоненту DBGrid.

Основные свойства объекта DBGrid:Name - имя объекта используемое в программе (является указателем, заданным в соответствии с шаблоном компоненты); DataSource имя источника данных, посредством которого осуществляется связь объекта DBGrid с объектом Table (выбира­ется из списка).

Объект DBGrid позволяет не толькоотображать данные, но и управлять ими (перемещаться по записям, добавлять и редакти­ровать записи и т.д.). Однако ряд действий эффективней выпол­нять с использованием объекта DBNavigator.

Основные свойства объекта DBNavigator:Name имя объекта (указатель); DataSource имя источника данных, посредством которого осуществляется управление компонентой Table, выбирается из спи­ска (рис. 6).

Рис. 6 Свойства компонент Table и DataSource

На рис. 7 показана структурная схема взаимодействия компонент приложения для работы с базой данных.

Рис. 7. Взаимодействие компонент приложения

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

Рис. 8 Макет формы приложения для работы с таблицей stud

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

Рис. 9 Внешний вид работающего приложения

Структура проекта приложения

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

1. проектные файлы (приводятся имена, используемые по умолчанию для первого созданного в среде проекта):

Project1 .dof - проектный файл компоновки, описывающий все файлы, входящие в проект;

Project1.dpr - файл, отвечающий за запуск приложения;

Project1.res - файл ресурсов (курсоры, пиктограммы и т.д.).

2. файлы, относящиеся к формам приложения (имена, используемые по умолчанию Delphi для первой созданной формы):

Unit1 .pas - исходные тексты программы, содержащие обра­ботчики событий класса TForm1;

Unit1 .dfm - файл с описанием формы, её визуальных объек­тов и их свойств.

3. Файлы данных: файлы таблиц, индексов и т.д.

При использовании формата dBaseforWindows файлы таблиц имеют расширение *.dbf, а файлы индексов *.mdx.

Пример реализации БД о студентах

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

А. Определим структуру базы и введём условные обозначения:

Zach – номер зачётной книжки, целое 6 знаков;

Group – шифр группы, символьное, 4 символа;

Fam – фамилия символьное, 20 символов;

Nam – имя символьное, 20 символов;

Par – отчество символьное, 20 символов;

Year_b – год рождения, целое, 4 знака;

Sex – пол символьное, 1 символ;

Pred – предмет символьное, 10 символов;

Oz – оценка целое, 4 целых знака, 2 десятичных.

В. Разработаем таблицу с соответствующей структурой. Для этого необходимо запустить утилиту DatabaseDesktop, выбрать опции меню File->New и заполнить соответствующие ячейки диалога задания структуры в соответствии с выбранной структурой (пункт А, рис. 2). После этого необходимо сохранить таблицу на диске в своём рабочем каталоге.

С. Создадим Windows-приложение для работы с данными. Для этого необходимо запустить среду BorlandDelphi, выбрать опции меню File->New->Application, после чего откроется новый проект приложения. Далее следует перенести на макет формы приложения компоненты Table, DataSource, DBGrid, DBNavigator и настроить их свойства в соответствии с табл. 2.

Таблица 2. Свойства компонент приложения

Компонента Свойство Значение
Table Name Table1
TableName Stud.dbf
DataSource Name DataSource1
DataSet Table1
DBGrid Name DBGrid1
DataSource DataSource1
DBNavigator Name DBNavigator1
DataSource DataSource1

Внешний вид макета формы приложения должен соответствовать рис. 8.

После этого необходимо откомпилировать проект и осуществить ввод данных в таблицу (рис. 9).

ЛАБОРАТОРНАЯ РАБОТА №2

СОЗДАНИЕ WINDOWS-ПРИЛОЖЕНИЯ ДЛЯ РАБОТЫ С БАЗОЙ ДАННЫХ. ГЕНЕРАЦИЯ ОТЧЕТОВ.

Обработка информации однотабличной базы данных

Помимо хранения, редактирования, обновления и анализа данных в базе данных (БД), на практике часто возникает задача осуществления разного рода расчётов и вычислений с использованием хранящейся в БД информации. Например, для базы данных, хранящей информацию о студентах учебного заведения (см. методические указания к лабораторной работе №1) может возникнуть задача расчёта средней оценки студента по конкретному предмету или расчёта успеваемости группы. Поскольку требуемые расчёты могут быть довольно сложные, необходимо использование программных пакетов разработки приложений, объединяющих в себе как удобные средства доступа к БД различных форматов, так и гибкий язык программирования. С этой точки зрения наиболее удобным инструментом является среда визуальной разработки Windows-приложений Borland Delphi, обеспечивающая доступ к информации БД практически всех существующих форматов и возможность её обработки, используя язык Delphi.

Визуальная навигация и управление данными в BorlandDelphi производится с помощью компонент просмотра (DBGrid) и управления (DBNavigator), которые позволяют перемещаться по записям, удалять, добавлять или модифицировать их и т.д.

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

Next - перемещение указателя на следующую запись;

Prior - перемещение указателя на предыдущую запись;

First - перемещение указателя на первую запись таблицы;

Last - перемещение указателя на последнюю запись таблицы.

Например, если создан объект Table, свойством Name ко­торого является значение Table1, то оператор

Table1.First;

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

Фрагмент программы

Tabl1.Open;

Table1.First;//перемещение на начало таблицы

WhilenotTable1.EOFdo//проверка на конец файла

Table1.Next;//перемещение на следующую запись

Table1.Close;

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

Для программного управления записями таблицы в класс TTable инкапсулированы следующие методы управле­ния:

Delete - удаление текущей записи с позиционированием указателя на следующую запись;

Insert - добавление пустой записи в таблицу;

Edit – перевод таблицы в режим редактирования;

Postсохранение изменений в таблице.

Например, фрагмент программы

Table1.Last;

Table1.Delete;

Перечисленные методы позволяют оперировать с целыми записями таблицы.

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

Для создания подобных объектов нужно выполнить следующую последовательность действий:

- нажать правой клавишей мыши на соответствующем объ­екте Table;

- в выведенном меню выбрать опцию FieldsEditor, в ре­зультате чего на экране появится диалог редактирования полей;

- нажать правой клавишей мыши в области диалога редак­тирования полей;

- в выведенном меню выбрать опцию AddFields, в резуль­тате чего на экране появится соответствующий диалог;

- добавить необходимые поля выбором кнопки Ok. В результате диалог редактирования полей должен содер­жать список созданных объектов, свойствакоторых отражены в окне ObjectInspector. Каждый из созданных объектов, указываю­щих на соответствующие поля, имеет свойство Name.

Например, для таблицы с именем stud.dbf, содержащей фа­милии студентов и их оценки с именами полей FAM и OZ, для полей FAM и OZ будут созданы объекты с именами Table1[‘FAM ‘]и Table1[‘OZ’].

Созданные объекты позволяютоперироватьс таблицей на уровне полей.

Фрагмент программы

Var

Soz : real;//переменная для средней оценки

N : integer; //счётчик записей

begin

Table1.First;

While not Table1.EOF do begin

soz:=soz+Table1[‘OZ’].Value;//накоплениесуммы

n:=n+1;//увеличение счётчика записей

Table1.Next;//переход на след. запись

End;

if (n<>0) then//проверка отсутствия записей

soz := soz/n;//расчёт среднего

end;

показывает, как вычислить среднюю оценку всех студентов. Для отображения на экране вычисленных данных можно, например, использовать объекты Label (текстовая метка). Свойст­во Caption объекта Label отвечает за надпись на форме приложе­ния.

Например, если имя объекта Label1, то фрагмент програм­мы

var

buf : string[50];

buf:="Средняяоценка:”+FloatToStr(soz);

Label1.Caption := buf;

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

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

Для вывода разного рода списков плавающего размера используется компонента Memo. Добавление, например, фамилии студента в список будет осуществляться с помощью оператора:

Memo1.lines.Add(Table1[‘FAM’]);

Кроме ввода данных в таблицу, как правило, в программу требуется вводить другие исходные данные. Для ввода исходных данных в программу используются объекты Edit. Объект Editимеет свойство Text, которое является данным типа AnsiString и содержит значение, введенное в поле ввода на форме приложе­ния.

Например, если имя объекта Edit1, то фрагмент программы

Var

soz : real;

n : integer;

begin

soz:=0;

n:=0;

Table1.First;

While not Table1.EOF do begin

/* проверка совпадения поля FAM и текста в Edit1*/

if (Table1[‘FAM’] = Editl.Text) then begin

soz:=soz+Table1[‘OZ’];

n:=n+1;

end;

Table1.Next;

End;

If (n<>0) then soz:=soz/n;

End;

позволяет рассчитать оценку не всех студен­тов, а конкретного студента, фамилия которого введена в поле ввода объекта Edit1.

Ряд методов в Borland Delphi специально предусмотрен для преобразования типов:

FloatToStr() - преобразование вещественного числа в строку;

IntToStr() - преобразование целого числа в строку;

StrToFloat() - преобразование строки в вещественное число;

StrToInt() - преобразование строки в целоечисло.

Как правило, программные модули выполняются в резуль­тате определенных действий пользователя. Например, фрагмент программы по расчёту и выводу средней оценки может выпол­няться при нажатии кнопки «Расчет». Событие Click (одинар­ное нажатие) объекта Button (кнопка) позволяет определить функцию, выполняемую при нажатии на кнопку. За надпись на кнопке отвечает свойство Caption.

Заголовок функции генерируется автоматическипри выбо­ре в закладке Events инспектора объектов соответствующего со­бытия и двойном щелчке напротив, сама функция инкапсулирует­ся в класс Form (форма) - основной класс приложения. В BorlandDelphi такие функции называются обработчиками событий, т. к. они содержат программный код, выполняющийся при насту­плении соответствующего события этой компоненты. Например, если на форме с именем Form1 разместить ком­поненту Button с именем Button1 и создать обработчик события Click для компоненты Button1, в редакторе кода в файле Unit1.pas будет создана пустая функция, которая должна содер­жать код, выполняемый, если произойдёт событие Click.

procedure TForm1.Button1Click(Sender: TObject);

begin

//код, выполняющийся при наступлении события OnClick //например, расчёт средней оценки студентов

end;

а в заголовочном файле unitUnit1 в шаблоне класса TForm1 будет объявлена функция обработчика события Click.

procedure Button1Click(Sender: TObject);

Приведём вид формы приложения (рис. 9) примера работы с таблицей stud.dbf, расчёта средней оценки студента, фамилия которого вво­дится в поле ввода и описание компонент приложения с по­яснением настройки свойств и событий (табл. 1).

Рис. 1. Внешний вид формы приложения

Таблица 1. Свойства и события компонент приложения

Компонент Cвойство Значение
Table Name Table1
TableName stud.dbf
DataSource Name DataSource1
DataSet Table1
DBGrid Name DBGrid1
DataSource DataSource1
DBNavigator Name DBNavigator1
DataSource DataSource1
ShowHintTRUE (показывает подсказки к кноп­кам навигатора)
Button Name Button1
Caption"Расчёт средней оценки студентов"
Label Name Label1
CaptionОпределяется в обработчике события OnClick компоненты Button1
Edit Name Edit1
TextОпределяется пользователем
Компонент CобытиеЗначение
ButtonOnClickОдинарное нажатие на кнопку

На рис. 2 показан вид работающего Windows-приложения после отладки и компиляции проекта, запускаприложения, ввода в поле ввода фамилии Петров и нажатия кнопки "Расчёт средней оценки".

Рис. 2. Внешний вид работающего приложения

3. Печать данных

A. Для осуществления печати результатов, представления данных в удобной для просмотра форме удобно использовать так называемые отчёты. В Borland Delphi имеется набор компо­нент для быстрой визуальной разработки отчётов. За автоматиче­скую генерацию отчёта отвечает компонента TRVTableConnect(вкладка Rave). Вся дальнейшая работа осуществляется под управлением утилиты RaveReportDesigner.

Для создания отчёта необходимо выполнить последовательность действий:

1. Для вызова утилиты выберите в главном меню команду Tools-> RaveDesigner.

2. C помощью команды File->NewDataObject вызовите окно DataConnection, в котором выберите продолжение DirectDataView, и после щелчка на кнопке Next-RvTableConnection1. Таким образом, отчет связывается с источником данных, которые он будет отображать.

3. Вызовите мастера создания отчета по данным, получаемым из единственной таблице командой Tools-> ReportWizards -> SimpleTable. Этот мастер с помощью последовательно раскрывающихся окон определяет основные параметры отчета.

4. Для подготовки проекта отчета скорректируйте размеры полос и взаимное расположе­ние на них компонент.

5. Для указания связи приложения с проектом имя файла отчета (*.rav) помещается в свойство ProjectFile компоненты TrvProject, которую необходимо поместить на форму.

6. Напишите обработчик события щелчка на кнопке Отчет:

procedure TForm1.Button1Click (Sender: TObject);

Begin

RvProject1.Execute;

End;

B. Существует альтернативная технология создания отчетов в DelphiQuickReport.

Этот компонент всегда помещается на пустую форму, образуя с ее помощью визуальную среду конструирования отчета.

Для создания отчёта необходимо выполнить последовательность действий:

1. Создать дополнительную форму для отчёта,выбрав опции меню File->NewForm, вынести на форму отчёта компоненту TQuickRep из вкладки Qreport и сохраните.

2. Эта форма не будет создаваться автоматически в момент старта программы, поэтому после ее присоединения к проекту выберите команду Project-> Options и перенесите ее в список доступных форм Availableforms.

3. С помощью команды File->Useunitсвязать новую форму с модулем данных, после чего поместить в свойство DataSet компонента QuickRep1 значение того набора данных, который будет содержать основную информацию.

4. Вынести на форму отчёта компоненты QRBand (полосы отчёта). Эта компонента является частью печатной страницы, т.е. основанием для ввода данных. В зависимости от свойств BandType различают несколько типов компонентыQRBand: за­головочная полоса (rbTitle) выводится только один раз в начале страницы (может содержать заголовок и наименования столбцов таблицы); полоса данных (rbDetail) содержит значения полей текущей записи и выводится столько раз, сколько записей в таб­лице; rbSummary выводится один раз в конце отчёта.

5. Установить значение свойства BandType компоненты QRBand. Рекомендуется выносить как минимум две полосы: за­головочную и данных.

6. На заголовочную полосу вынести компоненты QRLabel(аналогичны компонентам Label). Свойство Caption содержит выводимую на печать информацию (например, наименования столбцов, поясняющие надписи, расчётные значения и т.д.).

7. На полосу данных вынести компоненты QRDBText, ото­бражающие значения определённых полей таблицы. Свойство DataSource устанавливает имя источника данных, а свойства DataField имя выводимого поля.

8. Скорректировать размеры полос и взаимное расположе­ние на них компонент.

Предварительный просмотр на стадии проектирования при­ложения осуществляется двойным щелчком мыши на объекте QuickRep1.

Макет формы печати данных таблицы stud.dbf и рассчитанной средней оценкипредставлен на рис. 3.

Рис. 3. Внешний вид формы печати

Вывод данных на печать из программы выполняется встро­енным в компоненту TQuickRep методом Print.

Например, если имя компоненты TQuickRep - QuickRe­p1, то оператор

Form2.QuickRep1.Print;

выведет данные на печать, а

Form2:=TForm2.Create(Self);

Form2.QuickRep1.Preview;

Form2.Free;

осуществит предварительный просмотр на экране.

Необходимо предусмотреть в программе вывод в от­чёт расчётных значений с использованием компоненты QRLabel.

При предварительном просмотре или выводе на печать данные будут отображены в следующем виде (рис. 4).

Рис. 4. Данные таблицы stud.dbf при предварительном просмотре

Пример реализации программы расчёта средней оценки

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

А. Создадим таблицу соответствующей структуры и Windows-приложение для работы с БД (см. методические указанияк лабораторной работе №1).

B. Вынесем на макет формы приложения компоненту Edit с именем Edit1, компоненту Label с именем Label1 и компоненту Button с именем Button1 (см. рис. 1). Настроим свойства этих компонент в соответствии с табл. 1. Создадим обработчик события Click для компоненты Button1 и напишем в обработчике следующий код:

Var

soz : real;

n : integer;

buf : string[50];

begin

soz:=0;

n:=0;

Table1.First;

While not Table1.EOF do begin

/* проверка совпадения поля FAM и текста в Edit1*/

if (Table1[‘FAM’] = Editl.Text) then begin

soz:=soz+Table1[‘OZ’];

n:=n+1;

end;

Table1.Next;

End;

If (n<>0) then soz:=soz/n;

buf:="Средняяоценка:”+FloatToStr(soz);

Label1.Caption := buf;

QRLabel10.Caption := buf;

End;

C. Создадим вторую форму выбором меню File->New. Вынесем на форму компоненту QuickRep из вкладки QReport.. Вынесем на форму отчёта три компоненты QRBand (со свойствами BandTyperbTitle, rbDetailи rbSummary). На заголовочную полосу вынесем компоненты QRLabelи настроим свойство Caption для отображения названия отчёта и столбцов. На полосу данных вынесем компоненты QRDBText и настроим их на связь с соответствующими полями. На последнюю полосу вынесем компоненту QRLabelc именем QRLabel10. Внешний вид и расположение компонент соответствует рис. 3. Просмотр отчёта организуем добавлением компоненты Button2 и обработчиком события Click следующего содержания:

Form2:=TForm2.Create(Self);

Form2.QuickRep1.Preview;

Form2.Free;

После компиляции проекта необходимо проверить правильность работы программы.

ЛАБОРАТОРНАЯ РАБОТА №3

ОБРАБОТКА ИНФОРМАЦИИ БАЗЫ ДАННЫХ, ИМЕЮЩЕЙ СТРУКТУРУ «master-detail». ИЗУЧЕНИЕ ОСНОВ SQL.

Основные сведения о ссылочной целостности. Задание индексов.

Для выполнения задания, необходимо сформировать в DatabaseDesktop (DBD) структуры 2-х таблиц типа Paradox7, между которыми будет организована связь «один-ко-многим».

Рис. 1 Структура основной и подчиненной таблиц в Paradox7.

Данные структур сохраним в папке WorkDir с именами stud.db и ozen.db.

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

Итак, в организации ссылочной целостности присутствуют 2 таблицы, одна из них содержит данные (подчиненная), другая использует эти данные (основная). Осуществляется она через поля основной и подчиненной таблиц. При этом в основной таблице можно использовать только ключевые поля, а в подчиненной – индексированные, причем выбранные для связи поля автоматически становятся индексированными. Из основной таблицы можно организовывать связь с несколькими подчиненными.

Для организации связи 2-х таблиц с помощью DataDesktop в окне задания структуры, когда в нем находится структура подчиненной таблицы (в нашем случае, ozen.db), следует у списка Tableproperties (характеристики таблицы) выбрать значение ReferentialIntegrity (ссылочная целостность), после чего определить Define связь. В открывшемся окне задаем характеристики связи таблиц, выбрав в левом окне поле для организации связи, в правом – имя требуемой таблицы (двойным щелчком мыши). Естественно, что количество выбранных полей из каждой таблицы и их типы должны совпадать.

Рис. 2 Связь подчиненной и основной таблицы по ключевым полям.

Здесь же можно задать характеристики связи: 1) правило обновления (updaterule) – для определения варианта обновления значений в подчиненной таблице при изменении или удалении связанных значений в основной (каскадный, запрещенный); 2) выключатель защиты целостности (strictreferentialintegrity) – для определения невозможности изменения данных в таблицах, для которых установлена ссылочная целостность. После определения параметров связи задаем имя связи.

Идентифицируем параметры всех связей основной таблицы:

Теперь зададим вторичные индексы. Данная операция используется для ускорения поиска в таблицах необходимой информации по значениям в конкретных полях. Индексирование в Paradox приводит к созданию специальных файлов по каждому индексу, такой файл содержит записи, включающие значения индекса (одно или несколько полей) и указатель на соответствующую запись в таблице. Выбрав нужное значение индекса, можно затем по указателю найти и саму запись.

Для задания вторичных индексов с помощью DBD, следует у списка Tableproperties (характеристики таблицы) выбрать значение SecondaryIndexes (вторичные индексы), после чего определить Defineполя, используемые в индексе, их последовательность (!!!) и ряд характеристик: 1) уникальность (unique); 2) режим обновления (maintained); 3) чувствительность к регистру (casesensitive); 4) порядок сортировки (descending). По завершению формирования индекса задаем имя индекса.

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

Имя индексаПоляUniqueMaintainedCase sensitiveDescending
indNaimÖ
Zach

Zach

Oz

Ö

Отметим, что для задания каждого индекса следует выполнять всю последовательность выше указанных действий. Нельзя, например, переместить все поля, используемые в индексах, в правый список, а затем выполнить оставшиеся действия, так как в этом случае будет создан 1 индекс сразу по всем выделенным полям.

Рис. 3 Задание вторичного индекса.

3. Задание псевдонимов в BDEAdministrator.

Располагать все таблицы БД, а также программы СУБД желательно в отдельной папке, которой к тому же следует задать псевдоним для более простого обращения к данным (до сих пор псевдонимы нами не были использованы).

Для задания псевдонима можно воспользоваться утилитой BDEAdministrator, постав­ляемую в составе большинства продуктов корпорации Inprise (Borland). Утилита BDEAdministrator находится в меню "Пуск"Прогpaммы -> Borland Delphi -> BDE Administrator.

В левой части окна следует открыть страницу Databases, содержащую список псевдонимов, в правой части появятся его характеристики.

Рис. 4. Окно BDE.

Для добавления псевдонима задаем либо Object.New, либо по правой кнопке мыши в дополнительном меню выбираем New. Из списка драйверов выбираем значение Standard, используемое для создания псевдонима БД в формате Paradox.

Изменив имя псевдонима, рассмотрим набор его характеристик: 1) type – название драйвера, на основе которого был создан псевдоним, 2) defaultdriver – название драйвера, который подключается к файлу БД первым, 3) enablebcd – признак перевода значений десятичных полей в двоично-десятичное представление, 4) path – путь к папке, где находятся таблицы БД.

4. Установка связей между компонентами и БД. Создание меню.

Теперь разместив на форме диалога компонент Menu с палитры компонентов Стандарт, сформируем простое меню, задавая названия пунктов меню свойству Items. Для Поиск – подменю: SQL и фильтрация, для Сортировкапо фамилии, по наименованию дисциплин и пункт Выход. Обратите внимание на порядок задания имен, в свойстве Name каждого пункта будет отображен этот номер.

Модуль пункта меню Выход будет самым информативным: Close();

Предыдущие приложения (л/р№1, 2) разрабатывались для ведения данных одной таблицы. Здесь же, одна из связанных таблиц является головной (master, таблица stud), а другая вспомогательной, детализирующей (detail, таблица ozen).

Итак, разместив в окне 2 комплекта Table, DataSource и средства отображения данных DBGrid, зададим их цепочку связи, которую можно представить схемой (рис.6). Связь с БД устанавливается в итоге значением true свойства Active.

Для связи в форме этих таблиц, временно разорвем связь, указав для вспомогательной таблицы ozen значение false для свойства Active.

Рис. 5 Форма диалога приложения БД


Рис. 6 Схема взаимодействия компонентов Delphi с БД.

Далее в свойстве MasterSource компонента Table, настроенного на вспомогательную таблицу, установите имя головной таблицы. После этого щелкните на свойстве MasterFields. Откроется окно редактора связей полей (FieldLinkDesigner). Индексировать таблицу надо так, чтобы индекс включал ключевое поле связи Zach. После этого можете восстанавливать связь с БД (Active=true) и запустить приложение.

Теперь немного об удобстве вода данных в форму. Для полей просмотра в DBGrid можно в свойстве Columns задать значение свойства ButtonStyle поля равным cbsAuto и тогда при редактировании данных автоматически будет появляться выпадающий список, из которого пользователь может выбирать соответствующее значение (например, для поля group).

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

Table1.Append; \ метод, добавляющий новую запись в БД

Table1.DeleteRecords(arCurrent); \ удаление записи, на которой стоит курсор текущей записи

Table1.Post; \ сохранение изменений в БД

Table1.Cancel; \отмена действий пользователя

Для корректного удаления записи, можно предварительно уточнить требование у пользователя:

If (Application.MessageDlg (

“Действительно хотите удалить запись?”,

“Подтвердите удаление записи”,

MB_YESNO + MB_ICONQUESTION) = IDYES) then

Table1.Delete;

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

5. Поиск данных.

Одна из важнейших для пользователя операций с БД – поиск записей по некоторому ключу. Для их применения таблица должна быть предварительно проиндексирована по этому полю.

В работе мы рассмотрим только фильтрацию записей (Filter для компонента Table)и применение запросов к БД при помощи компонента Query.

a) Компонент Table позволяет не только отображать, редактировать и упорядочивать данные, но и фильтровать записи по определенным критериям. Фильтрация задается свойствами Filter, Filtered и FilterOptions компонента Table. Для отображения отфильтрованных записей по вами заданному критерию, добавим на Form1 надпись и текстовой поле, установив предварительно их свойства Visible в состояние false. А пункту меню Фильтрация назначим функцию:


begin

Label1.Visible:=true;

Edit1.Visible:=true;

if (Edit1.Text<>’’) then begin

Table1.Filtered:=false;

Table1.Filter:=’group=’+Edit1.Text;

Table1.Filtered:=true;

end else

ShowMessage("Укажитеномергруппы!!!");

end;


б) Основное свойство Query – SQL, имеющее тип Tstrings. Это список строк, содержащих запросы SQL. Создайте для этого новую форму (рис. 7) с модулем Unit2. Пропишите в unit ее заголовок (как мы это уже делали в л/р№2) и назначьте вызов для пункта меню SQL: Form2.Show;

ПеренеситенаформукомпонентыQuery1 (вместо Table1), DataSource1, DBGrid1исоединитеихобычнойцепочкой: вDBGrid1задайтесвойствоDataSourceравнымDataSource1, авDataSource1задайтесвойствоDataSetравнымQuery1. Компонент Query1 настройте на таблицу ozen. Для этого установите свойство DataBaseName на псевдоним qwerty, а в свойстве SQL напишите оператор: select * fromozen.

Рис. 7. Форма SQL-запросов к БД.

Чтобы вы могли самостоятельно формировать произвольные запросы, перенесите на форму обычное (не db) поле Memo и кнопку Выполнить, для которой можно задать функцию:

begin

if (Query1.Active=true) then Query1.Close;

Query1.SQL.Clear;

Query1.SQL.AddStrings(Memo1.Lines);

Query1.ExecSQL;

end;

Сохраните все операции и запустите приложение с различными видами запросов на выборку, на добавление, на удаление, на обновление.


Нет нужной работы в каталоге?

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

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
Тгу им. Г. Р. Державина
Реферат сделан досрочно, преподавателю понравилось, я тоже в восторге. Спасибо Татьяне за ...
star star star star star
РЭУ им.Плеханово
Альберт хороший исполнитель, сделал реферат очень быстро, вечером заказала, утром уже все ...
star star star star star
ФЭК
Маринаааа, спасибо вам огромное! Вы профессионал своего дела! Рекомендую всем ✌🏽😎
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

Подогнать готовую курсовую под СТО

Курсовая, не знаю

Срок сдачи к 7 дек.

только что
только что

Выполнить задания

Другое, Товароведение

Срок сдачи к 6 дек.

1 минуту назад

Архитектура и организация конфигурации памяти вычислительной системы

Лабораторная, Архитектура средств вычислительной техники

Срок сдачи к 12 дек.

1 минуту назад

Организации профилактики травматизма в спортивных секциях в общеобразовательной школе

Курсовая, профилактики травматизма, медицина

Срок сдачи к 5 дек.

2 минуты назад

краткая характеристика сбербанка анализ тарифов РКО

Отчет по практике, дистанционное банковское обслуживание

Срок сдачи к 5 дек.

2 минуты назад

Исследование методов получения случайных чисел с заданным законом распределения

Лабораторная, Моделирование, математика

Срок сдачи к 10 дек.

4 минуты назад

Проектирование заготовок, получаемых литьем в песчано-глинистые формы

Лабораторная, основы технологии машиностроения

Срок сдачи к 14 дек.

4 минуты назад

2504

Презентация, ММУ одна

Срок сдачи к 7 дек.

6 минут назад

выполнить 3 задачи

Контрольная, Сопротивление материалов

Срок сдачи к 11 дек.

6 минут назад

Вам необходимо выбрать модель медиастратегии

Другое, Медиапланирование, реклама, маркетинг

Срок сдачи к 7 дек.

7 минут назад

Ответить на задания

Решение задач, Цифровизация процессов управления, информатика, программирование

Срок сдачи к 20 дек.

7 минут назад
8 минут назад

Все на фото

Курсовая, Землеустройство

Срок сдачи к 12 дек.

9 минут назад

Разработка веб-информационной системы для автоматизации складских операций компании Hoff

Диплом, Логистические системы, логистика, информатика, программирование, теория автоматического управления

Срок сдачи к 1 мар.

10 минут назад
11 минут назад

перевод текста, выполнение упражнений

Перевод с ин. языка, Немецкий язык

Срок сдачи к 7 дек.

11 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

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

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно