Разработка программ в C++ Builder

Лабораторная работа № 6.

Разработка программы "База данных" в C++ Builder

Цель работы

Написать программу для работы с базой данных MS Access, содержащей оценки студентов по изучаемым дисциплинам.

Спецификация программы:

Программа должна подключаться к базе данных, содержащей оценки студентов по изучаемым дисциплинам. База данных должна быть создана в MS Access (формат 2002-2003). Программа должна позволять пользователю создавать, редактировать и удалять записи. Кроме этого программа должна подсчитывать средний балл для выбранного в таблице студента. Соединение с базой данной с помощью технологии ADO (от англ. ActiveX Data Objects — «объекты данных ActiveX») — интерфейс программирования приложений для доступа к данным, разработанный компанией Microsoft.

Для создания формы использовать компоненты:

Label – для подписей

Button – для инициирования действий

Edit – для вывода количества полей (колонок) и записей (строк) таблицы

ADOConnection –компонент для подключения к базе данных

ADOTable – компонент для работы со структурой и данными таблицы базы данных

DataSource – компонент для передачи данных компоненту DBGrid и DBNavigator.

DBGrid – компонент для визуализации таблицы из БД

DBNavigator – компонент для редактирования записей подключенной таблицы БД

Рекомендуемая компоновка формы программы представлена на рисунке 1.

Рисунок 1. Рекомендуемая компоновка формы

Рекомендации для выполнения лабораторной работы:

1) Создать базу данных «Ведомость» в MS Access. Запустить Microsoft Office Access. В появившемся окне выбрать пункт «Новая база данных» и указать путь для сохранения базы данных, для этого нажать на кнопку

напротив поля «Имя файла».

Рисунок 2. Создание БД

2) В появившемся окне выбрать расположение создаваемого файла БД и указать тип «Базы данных Microsoft Office Access 2002-2003 (*.mdb)» как показано на рисунке 3.

Рисунок 3. Выбор типа файла БД

3) Нажать кнопку «Создать» (рисунок 2).

4) В появившемся окне нажать кнопку режим (рис. 4) и задать имя таблицы «Студенты»

Рисунок 4. Переключение режима «Конструктор»

5) В БД создать таблицу «Студенты», структура которой показана на рисунке 5.

Рисунок 5. Поля таблицы «Студенты»

Поле «Номер зачетки» сделать ключевым (уникальным), для этого выделить это поле и нажать кнопку на панели инструментов:

Для поля ФИО указать длину поля 50 символов:

Рисунок 6. Настройка размера текстового поля (кол-ва символов)

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

6) Сменить режим на «Таблица», нажав кнопку «Режим» на панели инструментов

7) В таблицу ввести несколько записей.

Например:

Рисунок 7. Пример заполнения таблицы

8) Сохранить и закрыть базу данных. Переместить файл базы данных в папку будущей программы.

9) Запустить C++ Builder. При запуске автоматически создается новый проект. Окно C++ Builder показано на рисунке 2. Для создания нового проекта, в случае если он не создался автоматически или вы его закрыли, выполнить команду меню File / New /Application.

10) Сохранить проект в свою рабочую папку, выполнив команду меню File / Save Project As. Будет сохранено несколько файлов проекта.

11) Расположить на форме требуемое количество объектов (см. рис.1).

Вкладка Standard: Label , Button , Edit .

Вкладка ADO: ADOConnection , ADOTable .

Вкладка DataAccess: DataSource .

Вкладка DataControls: DBGrid , DBNavigator .

12) Изменить подписи объектов Label и пользовательской формы Form1. Для этого необходимо у перечисленных объектов отредактировать свойство Caption в соответствии с рисунком 1.

13) У объектов Edit и ComboBox очистить поле свойства Text.

14) Поскольку объекты Edit используются только для вывода, то необходимо присвоить свойству ReadOnly для этих объектов значение true.

15) Настройка подключения к БД осуществляется за несколько шагов:

1. Выделить компонент ADOConnection1. Установить значение false для свойств Connected (соединение) и LoginPromt (вход с паролем) Сформировать строку подключения ConnectionString (строка параметров подключения к базе данных), нажав на кнопку с тремя точками.

Рисунок 8. Настройка свойств объекта ADOConnection1

В появившемся окне выбрать пункт «Use Connection String» и нажать на кнопку «Build»:

Рисунок 9. Окно настройки подключения

Далее необходимо выбрать поставщика данных и нажать на кнопку далее:

Рисунок 10. Выбор поставщика данных

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

Рисунок 11. Выбор файла базы данных

Применить все изменения и поменять значение свойства Connected на true.

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

Пример строки подключения:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\ALL_WORK\ПРИКЛАДНАЯ ИНФОРМАТИКА\Прикладная информатика\Лабораторные работы\5-БД\Студенты.mdb;Persist Security Info=False

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

На этом настройка компонента ADOConnection1 закончена.

2. Выделить объект ADOTable и в окне «Object Inspector» в поле Connection выбрать объект ADOConnection1, а в поле TableName выбрать таблицу из базы данных. Если при выборе таблицы возникает, то соединение с базой данных не было установлено. В этом случае следует проверить строку подключения в объекте ADOConnection1. В самую последнюю очередь установить переключатель Active в положение true.

Рисунок 12. Настройка объекта ADOTable1

3. Выделить объект DataSource1 и в списке свойств в поле DataSet выбрать объект ADOTable1.

Рисунок 13. Настройка объекта DataSource1

4. Для объектов DBGrid и DBNavigator в поле свойства DataSource выбрать объект DataSource1:

.

5. При правильном выполнении всех вышеперечисленных операций в объект DBGrid должна быть загружена таблица из базы данных (рис.14).

Рисунок 14. Загруженная таблица

Настройка подключения таблицы базы данных к программе завершена. Теперь необходимо написать код для расчета количества полей и записей таблицы для последующего их вывода в объекты Edit1 и Edit2.

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

При изменении данных в таблице генерируется событие OnDataChange объекта DataSource. Для обработки этого события необходимо выделить объект DataSource1 и в списке событий Events дважды щелкнуть левой кнопкой мыши по полю OnDataChange. В созданной заготовке функции следует написать следующий программный код:

17) Подсчет среднего балла студента должен происходить по нажатию кнопки «Рассчитать средний балл». Для обработки нажатия этой кнопки дважды щелкнуть по ней и в заготовке функции написать следующий код:

18) Сохранить проект нажатием кнопкина панели инструментов.

19) Провести отладку и тестирование программы

20) Изучить назначение кнопок объекта DBNavigator1 самостоятельно.

21) Отредактировать таблицу средствами программы. Отредактировать уже существующие записи в таблице, добавить 4 и удалить 2 записи.

Для защиты программы необходимо:

1) Иметь рабочий вариант программы

2) Знать используемые в программе свойства компонентов Label, Button, ComboBox, Edit, ADOConnection, ADOTable, DataSource, DBGrid, DBNavigator, DBGrid, DBNavigator и уметь их использовать.

3) Ориентироваться в программном коде и знать все операторы, используемые в программе

4) Выполнить самостоятельную часть лабораторной работы.

Задача для самостоятельной работы №6

Задание: Дополнить программу «База данных». По желанию пользователя программа должна подсчитывать средний балл по выбранной дисциплине.

Примерная компоновка формы измененной программы:

Справка:

  • Переход по записям (строкам) в базе данных в прямом направлении осуществляется командой

  • Для установки на первую запись предназначена команда

  • Объявить цикл перехода по записям таблицы можно двумя способами:

Или

  • Получение целого числа из поля по его имени:

  • Получение целого числа из поля по его индексу:

  • Заполнение объекта ComboBox1 списком имен полей из таблицы: