39031

Базовые технологии доступа к БД в Borland C++ Builder. Лабораторная работа

Лабораторная работа

Информатика, кибернетика и программирование

Указания к выполнению лабораторной работы Ранее уже говорилось что наборы данных представляют собой группы записей переданных из базы данных в приложения для просмотра и редактирования. Каждый набор данных инкапсулирован в специальном компоненте доступа к данным. Основные свойства и методы базового класса наборов данных TDtSet уже были рассмотрены нами ранее.

Русский

2013-09-30

125.5 KB

41 чел.

Лабораторная работа № 5

Базовые технологии доступа к БД в Borland C++ Builder

(Окончание)

Цель работы: Изучить основные способы работы с наборами данных в среде Borland C++ Builder. Получить навыки проектирования несложных фактографических систем.

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

Ранее уже говорилось, что наборы данных представляют собой группы записей, переданных из базы данных в приложения для просмотра и редактирования. Каждый набор данных инкапсулирован в специальном компоненте доступа к данным. Основные свойства и методы базового класса наборов данных (TDataSet) уже были рассмотрены нами ранее. Кроме того, мы познакомились с основными компонентами наборов данных, взаимодействующих с базами данных посредством BDE (TTable, TQuery и др.). Компоненты наборов данных предоставляют разработчику довольно широкие возможности для эффективной обработки данных. Рассмотрим некоторые из них:

  •  Навигация по набору данных. Осуществляется с помощью уже рассматривавшихся методов перемещения курсора (указателя текущей записи) по набору данных: First(), Last(), Next(), Prior(), MoveBy(int). Например, для последовательного перебора записей, начиная с текущей позиции до конца набора данных Table1, можно использовать следующий цикл перебора:

Table1->Open()

...

while (!Table1->Eof)

{

... // выполняются некоторые действия

Table1->Next();

}

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

  •  void* GetBookmark() – создает и возвращает закладку для текущей записи набора данных;
    •  GotoBookmark(void *bookmark) – перемещает курсор на запись, которая соответствует параметру bookmark (закладке).
  •  Сортировка записей является важной и довольно сложной проблемой. Можно выделить три способа определения нужного порядка следования записей:
    •  Индексирование полей таблиц БД. Этот способ является возможным при использовании компонента набора данных TTable. При проектировании базы данных для каждой таблицы можно задать одно или несколько индексированных полей, позволяющих упорядочивать записи по значениям этого поля по возрастанию, либо по убыванию. После этого записи набора данных можно упорядочивать по любому индексированному полю, присвоив его наименование свойству IndexName. Рассмотрим, например, таблицу городов из базы данных, построенной для ИС «Телефонный справочник» (см. лабораторные работы № 3 и 4). Изначально список записей в наборе данных будет соответствовать действительному порядку размещения записей в таблице БД, поэтому при последовательном просмотре набора данных в программе получим:

Москва

Новосибирск

Санкт-Петербург

Бердск

Используя конструктор таблицы в Microsoft Access, сделаем поле city_name указанной таблицы индексированным. После этого, в качестве свойства IndexName для табличного набора данных можно указывать не только поле первичного ключа city_id, но и  поле city_name. В последнем случае последовательный просмотр набора данных в программе даст упорядоченный список наименований городов:

Бердск

Москва

Новосибирск

Санкт-Петербург

  •  Определение порядка следования записей при построении SQL-запроса. Этот способ используется при работе с компонентами TQuery, TStoredProc и их аналогами. Способы упорядочения записей в SQL-запросах на выборку данных будут подробно рассмотрены в курсе «Базы Данных».
    •  Сортировка записей внутренними средствами компонента набора данных. Данный способ может быть использован не всегда, поскольку его применение ограничивается как свойствами компонента набора данных (который может не поддерживать внутреннюю сортировку записей), так и свойствами базы данных, с которой взаимодействует приложение. Компонент TTable имеет свойство IndexFieldNames, которому можно присваивать список наименований полей, по которым будет производиться упорядочение. Поля в списке должны быть только полями данных (вычисляимые и поля синхронного просмотра не допускаются); одно поле отделяется от другого через точку с запятой. Сортировка набора данных при непустом значении свойства IndexFieldNames выполняется следующим образом: сначала записи упорядочиваются по значению первого поля, затем, если эти значения совпадают, – то по значениям второго поля и так далее. Список полей может состоять из единственного поля. Например, можно сортировать записи рассмотренной выше таблицы городов по значению кода города. Для этого достаточно присвоить свойству IndexFieldNames его наименование: (city_code). При этом поле city_code не обязательно должно быть индексированным*. Список записей при последовательном просмотре набора данных в этом случае примет вид:

Новосибирск

Бердск

Москва

Санкт-Петербург

  •  Поиск записей в наборе данных может выполняться двумя способами.
    •  Для позиционирования на нужной записи используются методы Locate и Lookup:

virtual bool __fastcall Locate(const AnsiString KeyFields, const System::Variant &KeyValues, TLocateOptions Options);

virtual System::Variant __fastcall Lookup(const AnsiString KeyFields, const Variant &KeyValues, const AnsiString ResultFields);

Метод Locate ищет первую запись, удовлетворяющую критерию поиска, и, если такая запись найдена, делает ее текущей. Параметр KeyFields должен содержать список наименований одного или нескольких полей, по которым ведется поиск. В случае нескольких полей их названия разделяются точкой с запятой. Критерии поиска задаются в вариантном массиве KeyValues так, что i-тое значение в этом массиве автоматически ставится в соответствие i-тому полю в KeyFields. Параметр Options позволяет включить дополнительные необязательные режимы поиска. Метод Locate возвращает значение true, если запись найдена и установлена в качестве текущей, и false – в противном случае.

Примеры:

// Запись "НоВоСиБиРсК" в таблице городов отсутствует, поэтому

// результат выполнения функции Locatefalse.

Table1->Locate("city_name","НоВоСиБиРсК",TLocateOptions());

// Запись "НоВоСиБиРсК" в таблице городов отсутствует, но включен

// режим поиска без учета высоты букв, поэтому результат выполнения

// функции Locate – true.

Table1->Locate("city_name","НоВоСиБиРсК",TLocateOptions()<<loCaseInsensitive);

 Метод Lookup, также как и метод Locate, находит запись, удовлетворяющую заданным условиям поиска, но не делает ее текущей, а возвращает значения некоторых полей этой записи. Кроме параметров KeyFields и KeyValues, смысл которых совпадает с одноименными параметрами метода Locate,  функция метода Lookup содержит параметр ResultFields, который определяет список наименований полей, значения которых будут возвращены. Результатом метода является вариантный массив значений, причем i-тое значение в этом массиве соответствует i-тому полю списка ResultFields. Если запись, удовлетворяющая условиям поиска, не обнаружена, то возвращается пустое значение (Null()) Метод Lookup целесообразно использовать в тех случаях, когда изменять текущую запись нежелательно.

Пример.

// Узнаем по имени города значение его префикса.

Variant V = Table1->Lookup("city_name","Новосибирск","city_code");

if (V == Null()) ShowMessage("Null");

else ShowMessage(V);  // Результат: 383

  •  Для фильтрации записей по определенному критерию используются свойства Filter, Filtered и FilterOptions, а также событие OnFilterRecord.

Свойство Filter позволяет задать критерий фильтрации. В этом случае набор данных будет отфильтрован, как только его свойство Filtered станет равным true. Синтаксис описания критериев фильтрации предоставляет разработчику довольно широкие возможности, в частности:

  •  Использование наименований полей и константных значений;
  •  Использование операций сравнения (<,>,=,>=,<=,<>);
  •  Использование арифметических операций;
  •  Использование логических операций (NOT, AND, OR);
  •  Использование спецсимвола “*” для фильтрации по частичному соответствию.

Пример.  

Выбрать из набора данных все города, которые либо начинаются с буквы «М», либо имеют префикс, начинающийся с 38.

Table1->Filter = "city_name = 'М*' OR city_code='38*'";

Table1->Filtered = true;

Table1->First();

 while(!Table1->Eof)

{

     ShowMessage(Table1->FieldByName("city_name")->Value);

 Table1->Next();

}

Результат:

Новосибирск

Москва

Бердск

Чтобы реализовать более сложные алгоритмы фильтрации набора данных можно использовать событие OnFilterRecord. Оно возникает всякий раз, когда значение свойства Filtered устанавливается в true. Обработчик этого события имеет два параметра: указатель на фильтруемый набор данных (приведенный к базовому классу TDataset) и переменную Accept, в которую в результате выполнения обработчика должно быть помещено либо значение  true, ели запись удовлетворяет условиям фильтра, либо значение false в противном случае. Следует помнить, что при включении фильтра указанное событие вызывается для каждой записи, поэтому для больших наборов данных такая фильтрация может выполняться довольно долго.

Помимо общих способов поиска и фильтрации данных  компонент TTable имеет целый ряд специфических методов: FindKey(), FindNearest(), SetRange() и др. Их изучение студентам предлагается провести самостоятельно.

Задания к лабораторной работе

  1.  В соответствии с вариантом задания спроектировать и реализовать простейшую фактографическую информационную систему.
  2.  При проектировании БД рекомендуется использовать результаты выполнения лабораторных работ 4 и 5 курса «Информационные системы».
  3.  При реализации программного приложения для работы с БД выполнить следующие требования:
    1.  Разработку программного приложения начать с проектирования пользовательского интерфейса и подготовки прототипа приложения.
    2.  Развитие проекта программного приложения осуществлять в соответствии с принципами итеративной разработки.
    3.  Обеспечить возможность добавления, редактирования и удаления записей во все основные таблицы БД;
    4.  Обязательно использовать компонент TDBLookupComboBox для редактирования и/или определения условий поиска информации.
    5.  Обязательно использовать поля синхронного просмотра и вычисляемые поля;
    6.  Обязательно использовать один из способов упорядочения набора данных;
    7.  Обязательно использовать один из способов поиска информации в наборе данных.
  4.  В отчет о выполнении лабораторной работы включить:
    1.  Модель данных (ER-диаграмму) ИС;
    2.  Перечень и содержание выполненных итераций по разработке программного приложения;
    3.  Результаты тестирования программы;
    4.  Выводы по проделанной работе.

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

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

Обязательные требования к ИС :

  1.  Возможность получения информации о выданных предметах с дополнительным полем, в котором рассчитывается сумма оплаты за прокат. Учесть, что при выдаче предмета более, чем на десять дней, арендатору должна быть предоставлена скидка в 10%.
  2.  Возможность получения списка всех выданных предметов;
  3.  Возможность получения списка всех предметов, которые не были сданы в срок;

  1.  ИС кадров предприятия. Основная таблица содержит фамилию, отдел, оклад, дату рождения, дату приема, дату увольнения (если работает – пустое значение). Справочная таблица отделов содержит название отдела, фамилию начальника.

Обязательные требования к ИС :

  1.  Возможность получения информации о сотрудниках и их заработной плате. Учесть, что заработная плата сотрудников, работающих в организации более 5 лет, должна быть увеличена на 20% по сравнению с окладом.
    1.  Возможность получения информации об отделах с дополнительными вычисляемыми полями, в которых указывается численность отдела и общий фонд заработной платы (с надбавками).

  1.  ИС склада. Имеется справочник клиентов и справочник товаров. Справочник товаров содержит наименование, количество, цену. Справочник клиентов содержит имя и адрес клиента. Таблица фактур содержит наименование товара, приобретенное количество, наименование покупателя, дату приобретения, дату оплаты.

Обязательные требования к ИС :

  1.  Возможность получения информации по каждому товару с указанием стоимости каждой покупки;
    1.  Возможность получения информации по каждому клиенту с указанием списка неоплаченных им покупок и их количества;
    2.  Возможность получения списка всех неоплаченных фактур с указанием общей суммы к оплате.

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

Обязательные требования к ИС :

  1.  Возможность получения информации о междугородних переговорах с указанием стоимости звонка. Учесть, что если звонок был произведен в ночное время (от 22:00 до 06:00), абоненту предоставляется скидка в 50%;
    1.  Возможность получения списка городов из самой дорогой тарифной зоны.

  1.  БД радиостанции. Справочники звукооператоров и ведущих содержат фамилии, нормированный оклад (за 20 часов в эфире в месяц), дату принятия на работу. Основная таблица содержит название передачи, дату и время выхода в эфир, продолжительность в часах, фамилии звукооператора и ведущей.

Обязательные требования к ИС :

  1.  Возможность получения информации о выходах сотрудников радиостанции в эфир в течение текущего месяца (с указанием оплаты за каждый выход). Учесть, что расчет оплаты производится по вычисленному в соответствии с окладом часовому тарифу с 50% надбавкой за работу в ночные часы (22:00-8:00) и с 10% надбавкой за стаж работы более 5 лет.
    1.  Возможность получения информации о передачах, которые выходили в заданное время заданного дня недели.

  1.  ИС библиотеки. Основный справочник книг содержит шифр книги, фамилию автора, название книги, код УДК, стоимость, количество экземпляров Каталог читателей содержит номер билета, фамилию читателя, домашний адрес. Основная таблица выданных книг содержит шифр книги, номер билета, дату выдачи, дату фактического возврата (если книга на руках, то пустое значение), дату обязательного возврата (2 недели от даты выдачи).

Обязательные требования к ИС :

  1.  Возможность получения информации о выданных книгах с указанием количества просроченных дней и суммы штрафа. Учесть, что начисление штрафа начинается с 3-го дня просрочки и составляет 5% от стоимости книги.
    1.  Возможность получения информации о количестве выданных и количестве просроченных книг для некоторого читателя.

  1.  ИС деканата. Справочник «Студенты» содержит номер студенческого билета, ФИО студента, номер группы. Справочник «Дисциплины» -  шифр и название предмета. Таблица «Успеваемость» содержит номер студенческого билета, название дисциплины и полученные оценки.

Обязательные требования к ИС :

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

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

Обязательные требования к ИС :

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

  1.  ИС турагентства. Справочник туров содержит информацию о курорте, программе тура, базовой стоимости тура. Таблица заездов содержит информацию о возможных датах заезда для каждого из тура, а также цену путевки для тура с указанной датой как процент от базовой стоимости тура. Журнал заказов содержит фамилию, имя, отчество клиента, код тура, код заезда.

Обязательные требования к ИС :

  1.  Возможность получения информации о турах, в которые можно отправиться в ближайшие 2 недели, –  с указанием стоимости путевки;
  2.  Возможность получения информации о списке и количестве путешественников, отправляющихся в определенный заезд;
  3.  Возможность получения информации о путешественниках, которые отправлялись более чем в один тур.

  1.  ИС банка. Справочник вкладов содержит информацию о наименовании вклада, минимальном размере, сроке действия договора, процентной ставке по вкладу. Каталог клиентов содержит информацию о вкладчике (ФИО, паспортные данные, адрес), тип вклада, сумму вклада, дату заключения договора.

Обязательные требования к ИС :

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

  1.  ИС супермаркета. Справочник товаров содержит информацию о коде товара (штрих-код), его наименовании, цене, критическом количестве оставшихся товаров.  Справочник операций содержит сведения о коде, наименовании и знаке операции: «+»  – поступление товара, «–» – расход товара (например, совершение покупки), «0» –прочие операции. Журнал операций содержит сведения о типе операции, коде и количестве товара, участвующего в операции, номере обосновывающего документа (например, кассового чека). 

Обязательные требования к ИС :

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

Контрольные вопросы

  1.  Понятие набора данных.
  2.  Класс TDataSet и производные компоненты наборов данных.
  3.  Навигация по набору данных.
  4.  Способы упорядочения записей в наборе данных.
  5.  Поиск данных методом Locate. Необязательные режимы поиска.
  6.  Зависит ли результат выполнения метода Locate от способа упорядочения записей. Ответ обосновать.
  7.  Поиск данных методом Lookup.
  8.  Фильтрация данных. Синтаксис строки критерия фильтрации.
  9.  Свойство FilterOption.
  10.  Фильтрация данных с использованием события OnFilterRecord.

* Следует еще раз подчеркнуть, что возможность сортировки набора данных по произвольному списку полей может быть ограничена типом используемой СУБД. Для Microsoft Access или более мощных клиент-серверных СУБД это допустимо, но для некоторых файловых БД (например, Paradox или dBASE), такая возможность отсутствует.


 

А также другие работы, которые могут Вас заинтересовать

26772. Открытое общество и его враги 30 KB
  Но можно сказать и иначе: с 1917 года история развития гражданского общества в России прерывается в связи с огосударствливанием всех сфер деятельности и активности. В Советском Союзе сохраняется главный элемент гражданского общества пусть не в массовом масштабе который вопреки давлению государства все же сохранил в себе способность формировать личное мировоззрение и личную судьбу. С момента перестройки с 1985 года правомерно становится говорить об активном процессе формирования гражданского общества в России.
26773. Историко-философский анализ развития идеи гражданского общества 58 KB
  Грамши и лидеров польской Солидарности которые жестко настаивают не только на разделении государства и гражданского общества но и на их противостоянии и даже на диктате гражданских активистов. Именно эти идеи и создали проблемную ситуацию в России с пониманием сути гражданского общества. Политики породили традицию конфликтно противопоставлять деятельность государства и институтов гражданского общества рассматривая их противоборство как источник развития.
26774. Устойчивые социальные системы 29 KB
  Совокупность ноосферных принципов взаимодействия общества с макросистемой окружающей средой в соответствии с 3 и 4 уровнями интеграции. Причем каждый принцип при практической реализации становится конкретным признаком общества. Таким образом мы получили перечень признаков устойчиво развивающегося общества: наличие граждан как активных свободных универсальных личностей реализация принципа № 1; наличие структур и институтов созданных по инициативе граждан для реализации своих и общественных потребностей № 2; наличие...
26775. Гражданское общество и гражданин 31.5 KB
  Гражданское общество есть общество основным элементом которого является гражданин как активная универсальная личность свободно реализующая свои потребности в тесном сотрудничестве с другими людьми и в составе различных групповых структур которые эффективно взаимодействуют друг с другом и с государственными институтами с учетом этикоправовых норм в условиях демократического управления обществом и наличия различных форм собственности в соответствии с целевой установкой на устойчивое развитие общества в ноосферном пространстве. Гражданским...
26776. Многомерные задачи оптимизации 271.5 KB
  В ИС организационного управления преобладает режим оперативной обработки транзакций для отражения актуального состояния предметной области в любой момент времени а пакетная обработка занимает незначительную часть. Офисные ИС предназначены для перевода бумажных документов в электронную форму для автоматизации делопроизводства и управления документооборотом. Смотр по контролю качества является функцией управления разработкой и связан с оценкой того насколько результаты этой работы согласуются с декларированными требованиями относительно...
26777. Метод Эйлера решения задачи Коши для ОДУ 1-го порядка 474 KB
  Свойства информации тесно связаны с информационной деятельностью человека информационными процессами в его сознании. Информационные процессы это процессы в которых человек с помощью разнообразных технических устройств выполняет сбор хранение поиск обработку кодирование и передачу информации. Информационный процесс возникает в результате установления связи между двумя материальными объектами: источником генератором и потребителем приемником получателем информации. Под информационным процессом понимаются процессы получения...
26778. Методы отделения корней уравнения 195 KB
  x37x5=0 x3=7x5 φx= x3 ψx=7x5 Процесс накопления информации. Процесс хранения информации Поиск информации. Поиск или сбор информации первичный информационный процесс лежащий как правило в сфере некоторой практической или научной деятельности. Поиск информации это извлечение хранимой информации.
26779. Уточнение корней уравнения. Метод деления отрезка пополам, метод секущих 204.5 KB
  Детальный уровень включает в себя все характеристики среднего уровня с оценкой влияния данных характеристик на каждый этап процесса разработки ПО Организация работы модели в системе GPSS. Операторыблоки формируют логику функционирования модели. Управляющие операторы служат для контроля и управления процессом моделирования прогоном модели. В процессе моделирования транзакты €œсоздаются€ заявки поступают и €œуничтожаются€ заявки уходят так как это необходимо по логике модели.
26780. Аппроксимация функций 101.5 KB
  Конкретные модели файлов используемые в системе управления файлами мы рассмотрим далее когда перейдем к физическим способам организации баз данных а на этом этапе нам достаточно знать что пользователи видят файл как линейную последовательность записей и могут выполнить над ним ряд стандартных операций: создать файл требуемого типа и размера; открыть ранее созданный файл; прочитать из файла некоторую запись текущую следующую предыдущую первую последнюю; записать в файл на место текущей записи новую добавить новую запись в...