Лабораторная работа № 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 списком имен полей из таблицы:
            
Comments