
- •Задание №1 (Калькулятор)
- •Задание №2 (Внешняя функция)
- •Лабораторная работа № 2
- •Задание № 3 (Динамический массив – объект класса)
- •Задание № 4 (Динамическая таблица – объект класса)
- •Лабораторная работа №3
- •Задание № 5 ( Класс Stack и наследование)
- •Задание № 6 (Динамический полиморфизм и шаблоны)
- •Лабораторная работа №4
- •Задание № 7 (Библиотека стандартных шаблонов)
- •Задание № 8 (Обработка исключительных ситуаций)
- •Лабораторная работа № 5
- •Задание № 9 (Приложение бд)
- •Задание № 10 (Рисунки)
- •Задание № 12 (Меню)
- •Задание № 13 (Многомодульное приложение)
Задание № 8 (Обработка исключительных ситуаций)
Задача: Создать приложение Windows, моделирующее следующие исключительные ситуации:
Деление на нуль.
Переполнение разрядной сетки, выделенной для переменной соответствующего типа.
Ошибки преобразования данных, выполняемых стандартной функцией.
Отрицательный аргумент стандартной функции извлечения квадратного корня.
При возникновении ошибочной ситуации должен быть предусмотрен вывод сообщения об ошибке и выбор либо прекращения выполнения программы, либо ее продолжения.
Лабораторная работа № 5
Тема: Работа с базами данных.
Цели:
Освоение технологии создания и обработки таблиц реляционной базы данных.
Освоение технологии создания многомодульных приложений.
Вопросы для подготовки:
.
Задание № 9 (Приложение бд)
Тема: Работа с таблицами реляционных баз данных.
Цель: Освоение технологии и компонентов, обеспечивающих создание и доступ к таблицам базы данных.
Предварительные замечания.
Способов работы с базами данных различных типов в визуальной среде Builder несколько. Подробно технология работы с базами данных изучается в рамках дисциплины «Информационные системы». В рамках данной дисциплины рассматривается один из вариантов работы с локальной базой данных типа Database. В инструкции предлагается с помощью утилиты DBD32, которая вызывается командой Tools Database Desktop главного меню С++ Builder, создать базу данных и затем приложение Windows для работы с ней.
Общая последовательность работы:
1. С помощью утилиты DBD32 создать таблицу базы данных (подробная инструкция в Приложении А).
2. На основе одной из форм проекта создать модуль данных, обеспечивающий интерфейс между приложением (компонентами отображения) и базой данных. Модуль должен включать как минимум два объекта: Table1 (таблица данных) и DataSource1 (источник данных). Настроить объекты на созданную в п.1 базу данных, используя их свойства: DatabaseName, TableName и DataSet.
2. Подключить модуль данных к основному файлу проекта с помощью директивы препроцессора.
3. Сделать активным объект Table1, отобразить и настроить свойства полей.
4. Добавить (перенести) к функциональным формам проекта необходимые поля таблицы и объекты управления процессом просмотра и редактирования. Обеспечить связь объектов управления и отображения данных с источником данных, т.е. с объектом DataSource1, используя свойство DataSource.
Последовательность выполнения:
1. Открыть новое приложение (New Application). Форма Form1 будет использоваться для реализации основных функций приложения.
2. Открыть новую форму (New Form) (Form2, Unit2.cpp).
3. Сохранить проект в новой папке с именем DataBase.
4. С помощью утилиты DBD32 создать базу данных с именем PhoneBook и сохранить ее в папке проекта DataBase (подробные инструкции в приложении).
5. Создать модуль данных на основе второй формы.
5.1. Поместить на форму объект Table1 (вкладка Data Access или BDE) и установить, используя раскрывающиеся списки, следующие значения его свойств:
DatabaseName = DataBase
TableName = PhoneBook // имя таблицы
5.2. Поместить на форму второй объект DataSours1 и установить следующее значение его свойства: DataSet = Table1.
5.3. Дважды ЩДКМ на объекте Table1. в открывшемся окне списка полей таблицы ЩПКМ и в контекстном меню активизировать опцию Add all field.
5.4. Установить свойство окна Active = true.
5.5. Установить с помощью Инспектора объектов нужные свойства полей таблицы, которые в дальнейшем будут использоваться в приложении для работы (дополнение, удаление записей и редактирования полей). Например, используя свойство DisplayLabel, установить их русскоязычное наименование.
6. Создать интерфейс приложения на форме Form1.
6.1. Выделить нужные поля таблицы, используя клавишу Ctrl, и перетащить их на форму.
6.2. Поместить на форму объект управления. Наиболее функциональным объектом является навигатор DBNavigator1 (соответствующая компонента находится на вкладке Data Controls). Установить его свойство DataSours = Form2->DataSours1.
5.3. Поместить на форму объект DBGrid1 (вкладка ПК Data Controls) для отображения записей таблицы. Настроить объект для работы с данными таблицы:
подключить объект к источнику данных аналогично предыдущему объекту;
используя свойство Columns, открыть окно редактора столбцов;
используя контекстное меню редактора, добавить необходимое количество столбцов для отображения на объекте DBGrid1;
выделяя последовательно каждое поле, с помощью Инспектора объектов установить их точное наименование (свойство FieldName) как в объекте Table1, изменив и другие свойства при необходимости. Значения поля всех записей после ввода имени автоматически отображается в объекте DBGrid1.
6. Сохранить проект и запустить процедуру полной обработки проекта.
7. Протестировать приложение с использованием Навигатора и объекта DBGrid1:
пролистать записи;
изменить значения полей записи;
удалить запись;
добавить новую запись в конец и в середину списка.
Дополнительное задание:
1. Запрограммировать элемент бизнес логики, например, подсчитать среднее значение одного из полей таблицы. Концептуальный алгоритм функции следующий:
- открыть таблицу;
- прочитать первую запись;
- организовать цикл для обработки текущей записи;
- в цикле обработать текущую запись и прочитать следующую запись;
- вне цикла произвести окончательный расчет и отображение результата.
В качестве средств реализации алгоритма использовать следующие компонентные свойства и функции класса TTable:
открытие таблицы: Table1->Open();
чтение первой записи: Table1 -> First();
чтение следующей записи: Table1 -> Next();
количество записей в таблице: RecordCount;
доступ к полям записей таблицы для чтения:
Table1 -> FieldValues[“Имя поля”];
проверка на конец записей в таблице: (!Table1 -> Eof);
Примечание:
Имена полей таблицы соответствуют именам полей объекта Table1.
При вызове перечисленных компонентных функций следует учитывать место размещения объекта Table1(на Form2).
Составить отчет по дополнительному заданию, в котором привести эскиз интерфейса и тексты обработчиков событий с комментариями.