Файл: Практическая работа БД.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 26.05.2021

Просмотров: 852

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

практическая работа № 7

Работа с переменными и массивами

Работа с массивами

Компонент TStringGrid

Порядок выполнения задания

Настройка компонента TStringGrid

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

procedure FormActivate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

const

Nmax=10; // Максимальная размерность массива

Type

Mas1 = array[1..Nmax] of extended; {Объявление типа одномерного массива вещественных чисел размерностью Nmax}

Mas2 = array[1..Nmax,1..Nmax] of extended; {Объявление типа двумерного массива вещественных чисел размерностью Nmax*Nmax}

Var

Form1: TForm1;

A : Mas2; // Объявление двумерного массива

B,Y : Mas1; // Объявление одномерных массивов

N,i,j : integer;

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);

{Процедура подготовки к началу работы}

begin

N:=3; // Задание размерности массива

Edit1.Text:=IntToStr(N); // Вывод значения N в Edit1

{Задание числа строк и столбцов в таблицах}

StringGrid1.ColCount:=N+1;

StringGrid1.RowCount:=N+1;

StringGrid2.RowCount:=N+1;

StringGrid3.RowCount:=N+1;

{Ввод в левую верхнюю ячейку таблицы названия массива}

StringGrid1.Cells[0,0]:='Массив A:';

StringGrid2.Cells[0,0]:='Массив B:';

StringGrid3.Cells[0,0]:='Массив Y:';

{Заполнение верхнего и левого столбцов поясняющими подписями}

for i:=1 to N do

begin

StringGrid1.Cells[0,i]:=' i= '+IntToStr(i);

StringGrid1.Cells[i,0]:=' j= '+IntToStr(i);

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

{Процедура изменения размерности массива}

begin

try

N:=StrToInt(Edit1.Text);

except

ShowMessage('Ошибочная запись числа '+Edit1.Text);

Edit1.SetFocus;

Exit;

end;

{Задание числа строк и столбцов в таблицах}

StringGrid1.ColCount:=N+1;

StringGrid1.RowCount:=N+1;

StringGrid2.RowCount:=N+1;

StringGrid3.RowCount:=N+1;

{Заполнение верхнего и левого столбцов поясняющими подписями}

for i:=1 to N do

begin

StringGrid1.Cells[0,i]:=' i= '+IntToStr(i);

StringGrid1.Cells[i,0]:=' j= '+IntToStr(i);

end;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

{Процедура расчета вектора Y}

var

s: extended;

begin

{Заполнение массива А элементами из таблицы StringGrid1}

for i:=1 to N do

for j:=1 to N do

begin

if StringGrid1.Cells[j,i]=' ' then

begin

ShowMessage('Ошибка заполнения массива А');

Exit;

end;

try

A[i,j]:=StrToFloat(StringGrid1.Cells[j,i]);

except

ShowMessage('Ошибочная запись числа '+StringGrid1.Cells[j,i]);

Exit;

end;

end;

{Заполнение массива B элементами из таблицы StringGrid2}

for i:=1 to N do

begin

if StringGrid2.Cells[0,i]=' ' then

begin

ShowMessage('Ошибка заполнения массива В!');

Exit;

end;

try

B[i]:=StrToFloat (StringGrid2.Cells[0,i]);

except

ShowMessage ('Ошибочная запись числа '+StringGrid2.Cells[0,i]);

Exit;

end;

end;

{Умножение массива А на массив В}

for i:=1 to N do

begin

s:=0;

for j:=1 to N do

s:=s+A[i,j]*B[i];

Y[i]:=s;

{Вывод результата в таблицу StringGrid3}

StringGrid3.Cells[0,i]:=FloatToStrf(y[i],fffixed,6,2);

end;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

{Очищение всех ячеек таблиц перед очередным прогоном программы}

for i:=1 to N do

begin

StringGrid2.Cells[0,i]:=' ';

StringGrid3.Cells[0,i]:=' ';

for j:=1 to N do

StringGrid1.Cells[j,i]:=' ';

end;

end;

end.

Индивидуальные задания

лабораторная работа №

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

Создание приложений для работы с базами данных На ОСНОВЕ ТЕХНОЛОГИИ bde

Порядок выполнения задания

Рис. 9.- Расположение компонентов на форме

3.Компоненту DBNavigator1:

4.Компоненту DBGrid1:

Рис. 10.- Рабочее окно программы

Компонент DBNavigator служит для управления записями таблицы (перемещение, добавление, удаление). При этом все изменения сохраняются в таблице MainData.DB (свойству Store Defs присвойте значение True).

3.Компоненту DBGrid2:

Можно не менять свойство SQL компонента Query1, а изменить обработчик события для Form1 следующим образом:

end;

Создание параметризованного запроса

Индивидуальные задания

Варианты задач

Индивидуальные задания

Варианты задач

лабораторная работа №

Индивидуальные задания

Варианты задач

TQuery и параметры

1.Компоненту Table1 присвойте следующие свойства:

DatabaseName: DB_DNEVNIK {выбор псевдонима базы данных}

TableName: MainData.DB {название таблицы}

TableType: ttParadox {тип базы данных}

2.Компоненту DataSource1:

DataSet: Table1 {выбор источника данных для DataSource1}

3.Компоненту DBNavigator1:

DataSource: DataSource1 {связь DBNavigator1 с DataSource1}


4.Компоненту DBGrid1:

DataSource: DataSource1 {связь DBGrid1 с DataSource1}


Создайте обработчик события для Form1:

procedure TForm1.FormActivate(Sender: TObject);

begin

Table1.Active:=True;

end;


Теперь при открытии формы будет автоматически открываться таблица MainData.DB.

Сохраните модуль и проект. Запустите программу (F9). Рабочее окно программы представлено на рис. 10.

Рис. 10.- Рабочее окно программы

Компонент DBNavigator служит для управления записями таблицы (перемещение, добавление, удаление). При этом все изменения сохраняются в таблице MainData.DB (свойству Store Defs присвойте значение True).

Создание программного модуля простого и параметризованного запросов на основе данных таблицы

Познакомьтесь с теоретическим материалом, касающимся использования объекта типа TQuery в программах для работы с базами данных (приложение П6).

Создание простого запроса

Добавьте к прежней форме новый компонент Query1, DataSource2, DBGrid2, а также два компонента типа TLabel рис. 11.

Рис. 11.- Форма программы для создания простого запроса


1.Компоненту Query1 присвойте следующие свойства:

DatabaseName: DB_DNEVNIK;

DataSource: DataSource1. {связь Query1 с DataSource1}

SQL: Select * from MainData where Comment ='Ivanov'

{выбрать из таблицы MainData.db все записи со значением ”Ivanov”поля Comment}

2. Компоненту DataSource2:

DataSet: Query1; {связь Query1 с DataSource2}

3.Компоненту DBGrid2:

DataSource: DataSource2. {связь DBGrid2 с DataSource2}

4. Обработчик события активации формы Form1 перепишите следующим образом:

procedure TForm1.FormActivate(Sender: TObject);

begin

Query1.Active:=True;

end;

Запустите программу (F9). Результат работы представлен на рис. 12.

Рис. 12. – Результат работы программы по созданию простого запроса

Можно не менять свойство SQL компонента Query1, а изменить обработчик события для Form1 следующим образом:

procedure TForm1.FormActivate(Sender: TObject);

begin

Query1.SQL.Add('Select * from MainData where Comment="Ivanov"');

Query1.Active:=True;

end;


Создание параметризованного запроса

1. Задаем текст SQL запроса в компоненте Query1:

SQL: Select * from MainData where Comment= :NameStr

2. Обработчик события для Form1 перепишите следующим образом:

procedure TForm1.FormActivate(Sender: TObject);

begin

Query1.Params[0].AsString:='Petrov';

Query1.Active:=True;

end;

3. Запустите программу (F9). Результат работы представлен на рис. 14.

Рис. 14. – Результат работы программы по созданию параметризованного запроса

Индивидуальные задания

Задание: создать таблицу базы данных сответстующей предметной области с помощью утилиты Database Desktop, программные модули открытия и редактирования таблицы, осуществления простого и параметризованного запросов.

Варианты задач

1.Городской транспорт

Список характеристик:

Вид транспорта, номер маршрута, начальная остановка, конечная остановка, время в пути, примечание.

2.Аэропорт

Список характеристик:


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

3. Персональные ЭВМ

Список характеристик:

Фирма-изготовитель, тип процессора, тактовая частота, объем ОЗУ, объем жесткого диска, дата выпуска.

4.Университет

Список характеристик:

Номер, ФИО, адрес и должность преподавателя, название предмета.

5.Деканат

Список характеристик:

Kод группы, ФИО, телефон слушателя, код, название предмета, код сессии и оценки по предмету.

6. Оптовая база

Список характеристик:

Код товара, название товара, количество на складе, стоимость единицы товара, примечания-описание товара.

7.Сеть магазинов

Список характеристик:

Номер, название, адрес и телефон магазина, ФИО и ИНН владельцев магазина.

9. Личные данные о студентах

Список характеристик:

ФИО студента, курс, факультет, специальность, дата рождения студента, сведения о семье.


10. Железнодорожный вокзал

Список характеристик:

Номер поезда, пункт назначения, номер путей и платформы, дата прибытия, дата отбытия, ФИО пассажира.























лабораторная работа №

ОРГАНИЗАЦИЯ ВЗАИМОДЕЙСТВИЯ ПРИКЛАДНОЙ ПРОГРАММЫ С БАЗОЙ ДАННЫХ НА ОСНОВЕ ТЕХНОЛОГИИ ADO


Цель лабораторной работы: приобрести практические навыки организации взаимодействия приложения с однотабличной базой данных на основе технологии ADO.

Задачи лабораторной работы:

Изучить наборы компонентов «Data Access», «ADO» и «Data Controls».

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

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


Указания по выполнению работы

Среда программирования Borland Delphi7 представляет максимально широкие возможности организации взаимодействия пользователя с базами данных. Данное взаимодействие осуществляется по схеме, приведенной на рис. 1. Следует отметить, что база данных может быть использована несколькими приложениями.

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

Для многих баз данных в BDE и в ADO предусмотрены свои собственные драйверы, позволяющие обходиться без ODBC. В данной работе взаимодействие с базой данных будем строить через компоненты ADO (ActiveX Data Objects)–технология Microsoft для доступа не только к базам данных, но и ко многим другим объектам.

Как и в работе №5 задачей будет разработка простейшего ежедневника.

Порядок выполнения работы:

1. Запустите MS-Access: Пуск\Программы\Microsoft Access.

2. Выберите Создание базы данных\Новая база данных.

3. Укажите папку для создания базы данных Lab на Вашем диске, имя базы данных db1.mdb.

4. Далее выберите Создание таблицы в режиме конструктора.

5. Создайте таблицу следующего вида табл. 1. Имя таблицы установите MainData, ключевые поля не задавайте и введите в нее три записи, как показано на рис. 2.

Таблица 1.

Структура исходной таблицы

Имя поля

Тип данных

Формат

DateS

Дата/время

Краткий формат даты

FromTime

Дата/время

Краткий формат времени

ToTime

Дата/время

Краткий формат времени

Comment

Поле МЕМО


Phone

Текстовый

30 символов


Рис. 2. Ввод записей в таблицу MainData в MSAccess

6. Закройте MS Access.

7.Запустите Delphi7: Пуск\Программы\Borland Delphi7\ Delphi7. Создайте новый проект. Сохраните его в новую папку на Вашем диске под именем Lab.

8. Для эффективной работы с данными следует создать специальный модуль данных (Data Module)–File/New/Data Module. В данный модуль добавьте компонент ADOTable из группы компонент ADO (рис. 3).

Рис. 3. Создание модуля данных

9.В свойстве ConnectionString компоненты ADOTable вызовите диалог формирования строки соединения (Connection String) и нажмите в нем Built…, далее укажите тип данных -Microsoft Jet OLE DB Pro­vider (драйвер для доступа к базам данных MSAccess) рис. 4. На закладке Connection (Подключение) в первой строке впишите путь к вашей базе данных (в данном случае D:\User\OLGA\РГОТУПС\Информатика\db1.mdb). Проверьте подключение, установите флажок Blank Password (Пустой пароль) и закройте диалог.

10.Также установите для ADOTable1 следующие свойства: TableNameMainData, Active–True.

11. Для организации отображения данных следует включить в модуль данных (DataModule2) еще один компонент–Источник данных (Data Source), он находится на закладке Data Access панели ком-понент. Установите для него в свойстве DataSet значение ADOTable1.

Компонент DataSource служит передаточным звеном между базой данных и элементами их отображения.

12.Перейдите к редактированию модуля Unit1 и в раздел implementation после ключевого слова Uses модуля Unit1 впишите модуль Unit2 – т.к. созданный модуль данных будет использоваться в форме Form1.

13.Разместите на форме Form1 компонент DBGrid (закладка Data Controls). Установите его свойство DataSource в DataModule2. DataSource1. В результате на форме должна быть таблица с открытой в ней БД рис.5.

14.Для компоненты DBGrid1 зайдите в редактор свойства Columns, добавьте таблице все пять колонок и, изменяя у них свойство Title\ Caption, сформируйте заголовки. Кроме того, удалите колонку, соответствующую полю Comment рис.6.

Рис. 4. Настройка свойства соединения с БД

Рис. 5. Вид формы Form1 с размещенным на ней компонентом TDBGrid

Рис. 6. Установка заголовков колонок

15. Добавьте на форму Form1 компонент TDBMemo. Установите для него свойства DataSource=DataModule2.DataSource1 и DataField = Comment рис. 7.

Рис. 7. Окно работающей программы с компонентом DBMemo1

16. В модуле данных нажмите на правую кнопку на элементе Fields, входящем в DataSource1 (рис. 8). Выберите пункт Add all fields.

Рис. 8. Выбор полей для DataSource1

17. Для полей FromTime и ToTime установите в свойстве DisplayFormat значение hh:nn (часы:минуты).

18. Добавьте на форму Form1 главное меню MainMenu1 с пунктами Файл (Выход), Поиск (По дате, По Телефону, Сброс фильтра) и Событие (Добавить, Удалить, Редактировать) рис. 9.

Рис.9. Окно работающей программы с компонентом MainMenu1

19. Добавьте в форму Form1 обработку подтверждения о выходе из программы. Для этого создайте следующий обработчик события OnClick для пункта меню Выход.

procedure TForm1.N2Click(Sender: TObject);

var

S1:PChar;

begin

S1:=' Вы действительно желаете закрыть программу?';

//-вызов окна сообщения запроса с двумя кнопками “Да” и “Нет”


if Application.MessageBox(S1,'Запрос', MB_YESNO)=IDYES

then Close;

end;

20.Отключите возможность изменения размеров окна. Для этого в свойстве BorderStyle формы Form1 установите значение bsSingle.

21.Создайте форму для ввода и редактирования записей по образцу, приведенному на рис. 10. Создав новую форму, впишите в ее раздел Uses модуль Unit2 (напомним, что это модуль данных). Для строк ввода используйте компонент TDBEdit (закладка Data Controls) и установите для них свойство DataSource= DataModule2.DataSource1 и DataField требуемое поле БД. В раздел implementation после ключевого слова Uses модуля Unit1 впишите модуль Unit3.


Рис. 10. Форма Form3, предназначенная для ввода и корректировки данных таблицы MainData

  1. Общая схема работы с данной формой представления на Рис. 11.


Рис. 11. Алгоритм процедур добавления и корректировки записей

В соответствии с этой схемой скорректируйте процедуру обработки нажатия пункта меню Событие Добавить следующим образом:

procedure TForm1.N7Click(Sender: TObject);
begin

{Добавили запись в таблицу}

DataModule2.Adotable1.Insert;

{Устанавливаем текущие значения дат и времени в новой записи}

DataModule2.Adotable1.FieldByName('DateS').Value:= Date();
DataModule2.Adotable1.FieldByName('FromTime').Value:= Time();
DataModule2.Adotable1.FieldByName('ToTime').Value:= Time();
if Form3.ShowModal=mrOK then

{Фиксируем изменения}

DataModule2.ADOTable1.Post

else

{Удаляем запись}

DataModule2.ADOTable1.Delete;

end;

23. Скорректируйте процедуры обработки нажатия пунктов меню Событие \ Удалить и Событие \ Редактировать следующим образом:

procedure TForm1.N8Click(Sender: TObject);

// Событие / Удалить

begin

{Удаление записи}

DataModule2.ADOTable1.Delete;
end;


procedure TForm1.N9Click(Sender: TObject);

// Событие / корректировать

begin
if
Form3.ShowModal=mrOK then

{Фиксируем изменения}

DataModule2.ADOTable1.Post

else

DataModule2.ADOTable1.Cancel;
end;

24.Сохраните, запустите проект и проверьте его работу. Добавьте несколько записей в таблицу MainData. Откройте базу данных db1.mdb в MS Access и посмотрите на внесенные изменения.

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

Рис. 12. Формы для установки фильтров (Form4 и Form5)

26.Впишите в модуле Unit1 после ключевого слова implementation в разделе Uses модули Unit4 и Unit5. Сформируйте обработчики событий меню Поиск:


procedure TForm1.N5Click(Sender: TObject);
begin

// Фильтруем по дате

if Form4.ShowModal=mrOK then
begin
with
DataModule2.ADOTable1 do
begin

Filter := 'DateS='+ DateToStr(Form4.MonthCalendar1.Date);
Filtered := True;

end
end
;
end;

procedure TForm1.N6Click(Sender: TObject);

// Фильтруем по телефону

begin
if
Form5.ShowModal=mrOK then
begin
with
DataModule2.ADOTable1 do

begin

Filter := 'Phone = '+Form5.Edit1.Text;

Filtered := True;

end
end
;

end;

procedure TForm1.N10Click(Sender: TObject);

// Cнимаем фильтры

begin

DataModule2.ADOTable1.Filter := '';
DataModule2.ADOTable1.Filtered := False;
end;

27. Сохраните, запустите проект и проверьте его работу.

Индивидуальные задания

Варианты задач

1.Городской транспорт

Список характеристик:

Вид транспорта, номер маршрута, начальная остановка, конечная остановка, время в пути, примечание.


2.Аэропорт

Список характеристик:

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

3. Персональные ЭВМ

Список характеристик:

Фирма-изготовитель, тип процессора, тактовая частота, объем ОЗУ, объем жесткого диска, дата выпуска.

4.Университет

Список характеристик:

Номер, ФИО, адрес и должность преподавателя, название предмета.

5.Деканат

Список характеристик:

Kод группы, ФИО, телефон слушателя, код, название предмета, код сессии и оценки по предмету.

6. Оптовая база

Список характеристик:

Код товара, название товара, количество на складе, стоимость единицы товара, примечания-описание товара.

7.Сеть магазинов

Список характеристик:

Номер, название, адрес и телефон магазина, ФИО и ИНН владельцев магазина.

9. Личные данные о студентах

Список характеристик:

ФИО студента, курс, факультет, специальность, дата рождения студента, сведения о семье.


10. Железнодорожный вокзал

Список характеристик:

Номер поезда, пункт назначения, номер путей и платформы, дата прибытия, дата отбытия, ФИО пассажира.














лабораторная работа №

РАБОТА СО СВЯЗАННЫМИТАБЛИЦАМИ.

ПОСТРОЕНИЕ ПРОСТЕЙШИХ ОТЧЕТОВ


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

Задачи лабораторной работы:

изучить понятие справочника;

отработать технологию связывания таблиц базы данных;

закрепить навыки работы с базами данных.


Указания по выполнению работы

В данной работе будут рассмотрены базы данных со связанными таблицами. Наиболее распространенным отношением таблиц является отношение «один ко многим». На рис. 1. показан пример такого отношения– между двумя таблицами :«Контрагенты» и «Документы». При взаимодействии с одним контрагентом формируется несколько документов, но полные реквизиты контрагента хранятся только в одной записи, а таблицы связаны по коду контрагента.

Рис. 1. Пример отношения «один ко многим»

В приведенном примере таблица «Контрагенты» может выступать в качестве справочника для заполнения таблицы «Документы» - при вводе нового документа наименование контрагента можно выбрать из списка.

В данной работе взаимодействие с базой данных также будем строить через компоненты ADO. Как и в предыдущей работе, задачей будет доработка ежедневника.


Порядок выполнения работы:

1.Скопируйте созданную вами в предыдущей работе базу данных ежедневника (db1.mdb) в новую папку Lab на вашем диске.

2.Запустите MS Access: Пуск\Программы\Microsoft Access. Откройте базу данных db1.mdb из папки Lab.

3.Добавьте в базу данных новую таблицу Person следующей структуры: CodeЧисловой, FamilyТекстовый, NameТекстовый, PostТекстовый, PhoneТекстовый.

4. Добавьте в таблицу Person несколько записей рис. 2.

Рис. 2. Таблица Person

5.Модифицируйте таблицу MainData, добавив в нее поле PersCode (тип данных–числовой, число десятичных знаков–0). Внеси-те в это поле различные целые числа от 1 до 4. Таким образом, вы получили две таблицы, связанные по коду персоны с которой назначается встреча рис. 3.