Помимо хранения, редактирования, обновления и анализа данных в базе данных (БД), на практике часто возникает задача осуществления разного рода расчётов и вычислений с использованием хранящейся в БД информации. Например, для базы данных, хранящей информацию о студентах учебного заведения, может возникнуть задача расчёта средней оценки студента по конкретному предмету или расчёта успеваемости группы. Поскольку требуемые расчеты могут быть довольно сложные, необходимо использование программных пакетов разработки приложений, объединяющих в себе как удобные средства доступа к БД различных форматов, так и гибкий язык программирования.
Визуальная навигация и управление данными в Borland C++ Builder производится с помощью компонент просмотра (DBGrid) и управления (DBNavigator), которые позволяют перемещаться по записям, удалять, добавлять или модифицировать их и т. д.
Программная навигация по записям таблицы возможна использованием соответствующих методов. Компонента ADOTable основана на базовом классе T ADO Table, в который инкапсулированы следующие методы навигации:
- Next() – перемещение указателя на следующую запись;
- Prior() – перемещение указателя на предыдущую запись;
- First() – перемещение указателя на первую запись таблицы;
- Last() – перемещение указателя на последнюю запись
таблицы.
Например, если создан объект ADOTable, свойством Name которого является значение ADOTable1, то оператор ADOTable1->First() переместит указатель на первую запись.
Перечисленные методы позволяют последовательно перемещать указатель записи по таблице. Для определения последней записи таблицы используется ее свойство Eof, которое принимает значение true, когда указатель установлен на последней записи.
Фрагмент программы показывает, как организовать последовательный просмотр всех записей таблицы.
ADOTable 1-> First (); // перемещение на начало таблицы
while ( ADOTable 1-> Eof != true ) // проверка на конец файла
{
ADOTable 1-> Next (); // перемещение на следующую запись
}
Для программного управления записями таблицы в класс T ADO Table инкапсулированы следующие методы управления:
- Delete() – удаление текущей записи с позиционированием указателя на следующую запись;
- Insert() – добавление пустой записи в таблицу;
- Edit() – перевод таблицы в режим редактирования;
- Post() – сохранение изменений в таблице.
Например, фрагмент программы позволяет удалить последнюю запись таблицы.
ADOTable 1-> Last ();
ADOTable 1-> Delete ();
Перечисленные методы позволяют оперировать с целыми записями таблицы.
При обработке данных таблицы часто требуется программно получить значение определенного поля записи или записать в него новое значение. Например, в БД студентов учебного заведения необходимо поменять оценку в одной записи, не изменяя значения остальных полей. Подобные операции с полями таблицы требуют создания объектов, указывающих на соответствующие поля.
Для создания подобных объектов нужно выполнить следующую последовательность действий:
- нажать правой клавишей мыши на соответствующем объекте ADOTable;
- в выведенном меню выбрать опцию Fields Editor, в результате чего на экране появится диалог редактирования полей (рисунок 16.9);
- нажать правой клавишей мыши в области диалога редактирования полей;
- в выведенном меню выбрать опцию Add Fields, в результате чего на экране появится соответствующий диалог;
- добавить необходимые поля выбором кнопки Ok. В результате диалог редактирования полей должен содержать список созданных объектов, свойства которых отражены в окне Object Inspector. Каждый из созданных объектов, указывающих на соответствующие поля, имеет свойство Name. Значение этого свойства является имя объекта (указатель). Имя указателя по умолчанию формируется из имени объекта ADOTable и имени поля.
Рисунок 16.9 – Окно Fields Editor
Например, для таблицы с именем stud.dbf, содержащей фамилии студентов и их оценки с именами полей FAM и OZ, для полей FAM и OZ будут созданы объекты с именами ADOTable1FAM и ADOTable1OZ.
Созданные объекты позволяют оперировать с таблицей на уровне полей. Значение поля содержит свойство Value. Следовательно, обозначения
ADOTable 1 FAM -> Value , ADOTable 1 OZ -> Value позволяют получать или модифицировать значения полей FAM и OZ текущей записи.
Фрагмент программы показывает, как вычислить среднюю оценку всех студентов. Для отображения на экране вычисленных данных можно, например, использовать объекты Label (текстовая метка). Свойство Caption объекта Label отвечает за надпись на форме приложения. Для функции sprint () необходимо подключить библиотеку stdio.h.
float soz =0; // переменная для средней оценки
int n=0; // счётчик записей
ADOTable1->First();
while(ADOTable1->Eof!=true)
{soz=soz+ADOTable1OZ->Value; // накопление суммы
n ++; // инкремент счётчика записей
ADOTable 1-> Next (); // переход на след. запись
}
if ( n !=0) // проверка отсутствия записей
soz = soz / n ; // расчёт среднего
char buf [50];
sprintf ( buf , "Средняя оценка: %.2 f ", soz ) ;
Label 1-> Caption = buf ;
Кроме ввода данных в таблицу, как правило, в программу требуется вводить другие исходные данные. Для ввода исходных данных в программу используются объекты Edit. Объект Edit имеет свойство Text, которое является данным типа AnsiString и содержит значение, введенное в поле ввода на форме приложения.
Например, если имя объекта Edit1, то фрагмент программы позволяет рассчитать оценку не всех студентов, а конкретного студента, фамилия которого введена в поле ввода объекта Edit1.
float soz = 0;
int n=0;
ADOTable1->First();
while ( ADOTable 1-> Eof != true )
{
// проверка совпадения поля FAM и текста в Edit 1
if(ADOTable1FAM->Value == Edit1->Text)
{
soz=soz+ADOTable1OZ->Value;
n++;
}
ADOTable1->Next() ;
}
if(n!=0)
soz=soz/n;
char buf[50];
sprintf(buf, " Средняя оценка : %.2f", soz) ;
Label 1-> Caption = buf ;
Тип AnsiString позволяет непосредственно сравнивать строки с использованием логической операции «==». Ввод числовых значений осуществляется аналогичным образом с дальнейшим последовательным преобразованием значения типа AnsiString к типу символьной строки, а затем к числовому.
Например, фрагмент программы позволяет преобразовать значение переменной Edit2->Text типа AnsiString в символьную строку с использованием метода с_str().
float x = atof(Edit2->ADOText.c_str());
Доступ к методу осуществляется через «.» поскольку данное Edit2-> ADO Text является переменной, а не указателем. Ряд методов в Borland C++ Builder специально предусмотрен для преобразования типов:
- FloatToStr() – преобразование вещественного числа в
строку;
- IntToStr() – преобразование целого числа в строку;
- StrToFloat() – преобразование строки в вещественное число;
- StrToInt() – преобразование строки в целое число.
Приведём вид формы приложения (рисунок 10.8) примера работы с таблицей stud, расчёта средней оценки студента, фамилия которого вводится в поле ввода.
Рисунок 16.10 – Внешний вид формы приложения
На рисунке 16.11 показан вид работающего Windows-приложения после отладки и компиляции проекта, запуска приложения, ввода в поле ввода фамилии «Петров» и нажатия кнопки «Расчёт средней оценки».
Рисунок 16.11 – Внешний вид работающего приложения
Контрольные вопросы
1. Что представляет собой база данных?
2. Какие элементы включает в себя база данных?
3. Что такое ключевое поле?
4. Какие бывают индексы?
5. Как создать таблицу при помощи Microsoft Office Access?
6. Какие действия необходимо выполнить для использования компонента Data Access?
7. Какие действия необходимо выполнить для использования компонента Data Control?
8. Какие действия необходимо выполнить для использования компонента dbGo?
9. Какие основные свойства объекта ADOTable?
10. Какие основные свойства объекта DBGrid?
11. Какие основные свойства объекта DBNavigator?
Заключение
В учебном пособии рассмотрены основы разработки алгоритмов и программ с использованием языка программирования Си/Си++. Уделено внимание разработке программ с использованием ветвлений, циклов, работе с комбинированными типами данных: массивами и структурами. Рассмотрены вопросы работы с указателями, динамическими переменными и структурами данных. Особое внимание уделено вопросам конструирования функций пользователя, работе со строками и файлами.
Рассмотрены вопросы разработки приложений с использованием инструментальной среды программирования Embarcadero RAD Studio 2010 C ++ Builder . Описаны приемы работы со стандартными копонентами, составляющими основу интерфейса любого приложения Windows , а также компоненты работы со строками, диалогов для выбора файлов и меню, использования графических приметивов и организации работы с простейшими базами данных.
Учебное пособие позволяет изучить основы программмирования на языке Си++ и получить опыт использования Embarcadero RAD Studio 2010 C ++ Builder при разработке приложений для операционной системы Windows.
СПИСОК ЛИТЕРАТУРЫ
1. Архангельский, А. Я. Программирование в С++ Builder 6 и 2006 / А. Я. Архангельский, М. А. Тагин – М. : ООО «Бином-Пресс», 2007 г. – 1184 с. : ил.
2. Алгоритмический язык программирования СИ/СИ++: метод. указания к лабораторным работам по дисциплине "Алгоритмические языки высокого уровня"/ сост. А. Г. Мурлин, Н. В. Ефанова, Е. А. Иванова, Д. А. Дзюбло, О. М. Гончар. – Краснодар: КубГАУ, 2006. – 121 с.
3. Громов, Ю. Ю. Программирование на языке Си [Электронный ресурс] : учеб. пособие / Ю. Ю. Громов, С. И. Татаренко. – Тамбов, 1994. – Режим доступа: http://citforum.ru/program-ming/c/dir.shtml.
4. Гурский, Н. Н. Разработка приложений в визуальных средах. [Электронный ресурс] : учеб. электронное издание / Н. Н. Гурский. – Минск : Белорусский национальный технический университет, 2010. – 144 с. Режим доступа: http://rep.bntu.by/
bitstream/handle/data/2019/%20%20%20%20%20%20%20%20%20%20%20%20%20%20.pdf?sequence=1#2.
5. Денисова, Э. В. Программирование на языке Си [Электронный ресурс] : учеб. пособие / Э. В. Денисова, С. В. Раков. – СПб : СПб ГИТМО (ТУ), 2003. – 74 с. Режим доступа:
http://window.edu.ru/resource/978/23978/files/rakov_all.pdf.
6. Иванов, К. В. Элементы языка Си (версия BORLAND C/Си++) [Электронный ресурс] : учеб.-метод. пособие / К. В. Иванов, Ю. М. Стенин. – Казань : Казанский университет, 2009. – 49 с. Режим доступа: http://kpfu.ru/docs/F1932494285/
Elementy.yazyka.SI..Avtory.Ivanov.K.V._.Stenin.Ju.M..pdf.
7. Носов, В. И. Основы теории алгоритмов и анализа их сложности [Электронный ресурс] : курс лекций / В. И. Носов. – М. : МГУ им. Ломоносова 1992. – 140 с. – Режим доступа: http://intsys. msu.ru/staff/vnosov/theoralg.htm.
8. Объектно-ориентированное программирование на С++ : Учебное пособие / А. А. Андрианова, Л. Н. Исмагилов, Т. М. Мухтарова. – Казань : Казанский (Приволжского) федерального университет, 2010. – 230 с.
9. Объектно-ориентированное программирование на языке С++: метод. указания к лабораторным работам по дисциплине "Высокоуровневые методы информатики и программирования"/ сост. А. Г. Мурлин, Е. А. Иванова, Н. В. Ефанова, О. М. Гончар. – Краснодар: КубГАУ, 2008. – 91 с.
10. Павловская Т. А. C/C++. Программирование на языке высокого уровня / Т. А. Павловская. – СПб. : Питер, 2002. – 464 с.
11. Подбельский, В. В. Курс программирования на языке Си [Электронный ресурс] : учебник / В. В. Подбельский, С. С. Фомин. – Электрон. дан. – М. : ДМК Пресс, 2012. – 384 с. – Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=4148.
12. Подбельский В. В. Язык С++ [Текст] : учеб. пособие / В. В. Подбельский. – 5-е изд. – М. : Финансы и статистика, 2003. –560 с.
13. Прата, С. Язык программирования C++ : лекции и упражнения / С. Прата; пер. с англ. – М. : Издательский дом «Вильямс», 2012. – 1248 с.
14. Программирование в среде Microsoft Visual Studio .NET: метод. указания к лабораторным работам для студентов второго курса специальности 08080165 «Прикладная информатика (по областям)» всех форм обучения/ сост. Е.А. Иванова, Н.В. Ефанова, Д. А. Р. Г. Симонян. – Краснодар: КубГАУ, 2008. – 153 с.
15. Программирование в объектно-ориентированных средах: метод. указания к лабораторным работам для студентов первого курса специальности 230201.65 – «Информационные системы и технологии» всех форм обучения/ сост. А. Г. Мурлин, Е. А. Иванова, Н. В. Ефанова. – Краснодар: КубГАУ, 2009. – 92 с.
16. Разработка бизнес-приложений: метод. указания к лабораторным работам для студентов четвертого курса специальности 230201.65 "Информационные системы и технологии" всех форм обучения/ сост. Т. П. Барановская, Е.А. Иванова, Н.В. Ефанова. – Краснодар: КубГАУ, 2012. – 87 с.
17. Разработка приложений на языках высокого уровня: метод. указания к лабораторным работам для студентов первого курса специальности 351400 "Прикладная информатика (по областям)" всех форм обучения/ сост. А. Г. Мурлин, Н. В. Ефанова, С. А. Яхонтов, Е. А. Иванова. – Краснодар: КубГАУ, 2004. – 177 с.
18. Разработка приложений на языке С++: метод. указания к лабораторным работам по дисциплине "Разработка приложений на языках высокого уровня"/ сост. А. Г. Мурлин, Е. А. Иванова, Н. В. Ефанова, С. А. Яхонтов. – Краснодар: КубГАУ, 2007. – 116 с.
19. Страуструп, Б. Язык программирования Си++ / Б. Страуструп; пер. с англ. – М. : Радио и связь, 1991. – 352 с.
20. Технология разработки приложений на языке С++: метод. указания к лабораторным работам по дисциплине "Разработка приложений на языках высокого уровня"/ сост. А. Г. Мурлин, Е. А. Иванова, Н. В. Ефанова, С. А. Яхонтов. – Краснодар: КубГАУ, 2010. – 147 с.
21. Федоренко Ю. П. Алгоритмы и программы на C++Builder / Ю. П. Федоренко. – М. : ДМК Пресс, 2010. – 544 с. : ил.
22. Хвостов, А. А. Разработка программного обеспечения системы мониторинга производства на языке С++ с использованием математической модели технологического процесса [Электронный ресурс] : учеб. пособие / А. А. Хвостов, В. К. Битюков, С. Г. Тихомиров [и др.]. – Электрон. дан. – Воронеж : ВГУИТ (Воронежский государственный университет инженерных технологий), 2014. – 117 с. – Режим доступа: http://e.lanbook.com/books/
element.php?pl1_id=72901.
23. Элджер Дж. С++: библиотека программиста / Дж. Элджер. – СПб. : ЗАО Изд-во «Питер», 1999. – 320 с. : ил.
ОГЛАВЛЕНИЕ
Введение. 3
1 Алгоритм. Элементы структурного программирования. 4
1.1 Понятие алгоритма. 4
1.2 Основные требования к алгоритмам.. 7
1.3 Элементы структурного программирования. 10
2 Лексические основы языка Си/Си++. 12
2.1 Лексемы Си/Си++. 12
2.2 Типы данных. 14
2.2.1 Объявление переменной. 14
2.2.2 Категории типов данных. 15
2.2.3 Целый тип данных. 15
2.2.4 Данные с плавающей точкой (вещественные типы) 17
2.4 Знаки операций. 19
2.4.1 Разновидности выражений в Си/Си++. 19
2.4.2 Разновидности операций в Си++. 19
2.4.3 Простое присваивание. 22
2.4.4 Составное присваивание. 22
2.4.5 Приоритеты операций и порядок вычислений. 23
2.5 Структура и компоненты программы на языке Си++.. 24
2.6 Организация ввода-вывода. 25
2.6.1 Ввод-вывод в стиле в стиле Си. 25
2.6.2 Ввод, вывод данных в стиле Си++. 28
2.7 Математические функции. 31
3 Программирование алгоритмов линейной структуры.. 34
4 Алгоритмы и программы ветвящейся структуры.
Условный оператор if. Переключатель switch. 38
4.1 Алгоритмы и программы ветвящейся структуры.. 38
4.2 Условный оператор if 39
4.3 Логические операции. 40
4.4 Примеры составления алгоритмов и программ
с использованием условного оператора if 41
4.5 Переключатель switch. 43
5 Алгоритмы и программы циклической структуры.. 46
5.1 Понятие цикла. Разновидности циклов. 46
5.2 Цикл с параметром в Си/Си++. 47
5.3 Оператор while. 49
5.4 Оператор do while. 50
5.5 Оператор continue. 50
Контрольные вопросы.. 51
6 Регулярные типы данных. Массивы.. 52
6.1 Понятие регулярного типа. 52
6.2 Алгоритмы сортировки массивов. 56
6.3 Постановка задачи сортировки и методы ее решения. 56
6.4 Алгоритм прямого упорядочения
(Алгоритм сортировки выбором элемента) 58
6.5 Алгоритм попарного сравнения соседних элементов («пузырьковая» сортировка) 60
6.6 Алгоритм сортировки выбором элемента. 61
6.7 Методы доступа к элементам массивов,
использование указателей. 61
6.8 Организация многомерных массивов.
Указатели на многомерные массивы.. 63
7 Функции в Си/Си ++. 66
7.1 Описание и определение функции. 66
7.2 Вызов функции. 69
7.3 Передача параметров в функцию.. 70
7.4 Описание прототипа функции. 72
7.5 Функция с переменным количеством параметров. 73
7.6 Понятие сигнатуры функции. 73
7.7 Подставляемые (встраиваемые) функции. 74
7.8 Передача параметров в главную функцию.. 74
7.9 Рекурсивные вызовы функции. 75
7.10 Примеры составления функций. 76
8 Программирование с использованем
строковых типов данных. 80
8.1 Особенности ввода с клавиатуры строковых данных. 81
8.2 Операции со строками. 82
8.3 Функции работы со строками. 83
8.3.1 Функции модуля stdlib.h. 84
8.3.2 Функции модуля string.h. 84
8.3.3 Функции модуля ctype.h. 86
8.4 Пример использования строк. 87
9 Указатели. 91
9.1 Понятие указателя. 91
9.2 Инициализация указателей. 93
9.3 Операции с указателями. 96
9.4 Ссылки. 99
9.5 Динамические массивы.. 99
9.6 Функции и массивы.. 101
9.7 Указатели на функции. 104
10 Структуры, как тип данных. 107
10.1 Понятие структурированного типа. 107
10.2 Динамические структуры данных. 109
10.2.1 Односвязные списки. 109
10.2.2 Динамическая структура «Стек». 117
10.2.3 Очередь. 120
11 Файлы в Си/Си++. 125
11.1 Файловый ввод/вывод с помощью потоков. 125
11.2 Дополнительные функции файлового ввода/вывода. 127
11.3 Режимы файлов. 130
11.4 Двоичные файлы.. 131
11.5 Произвольный доступ к файлам.. 132
12 Разработка приложений в среде
«Embarcadero RAD Studio 2010». 135
12.1 Интегрированная среда разработки программ
Си++Builder 135
12.2 Структура программ Си++Builder 137
12.3 Пример разработки программы.. 137
12.3.1 Настройка формы.. 137
12.3.2 Изменение заголовка формы.. 137
12.3.3 Размещение строки ввода (TEdit) 138
12.3.4 Размещение надписей (TLabel) 138
12.3.5 Размещение многострочного окна вывода (TMemo) 139
12.3.6 Написание кода обработки события
показа формы (FormShow) 140
12.3.7 Написание кода обработки события
нажатия кнопки (ButtonClick) 140
12.3.8 Запуск и работа с программой. 140
12.3.9 Сетка строк – компонент TStringGrid. 142
12.4 Пример выполнения программы.. 142
12.4.1 Настройка компонента TStringGrid. 143
13 Программирование с использованием
компонентов работы со строками. 146
13.1 Типы данных для работы со строками. 146
13.1.1 Длинная строка типа string и AnsiString. 146
13.1.2 Широкая строка типа wstring. 146
13.2 Компонент TListBox. 146
13.3 Компонент TComboBox. 147
13.4 Компонент TBitBtn. 147
13.5. Обработка событий. 147
13.6 Пример разработки программы
с использованием строк. 148
14 Разработка приложений с использованием диалогов
для выбора файлов и главного меню.. 151
14.1 Компоненты TOpenDialog и TSaveDialog. 151
14.2 Использование компонента TMainMenu. 151
14.3 Пример программы работы с файлами. 152
14.3.1 Настройка компонентов TOpenDialog и
TSaveDialog. 152
14.3.2 Работа с программой. 153
15 Разработка приложений с использованием средств
для отображения графической информации. 158
15.1 Построение графика с помощью компонента TChart 158
15.2 Пример разработки программы.. 158
15.2.1 Настройка формы.. 159
15.2.2 Работа с компонентом TChart 159
15.2.3 Написание кода обработки события
открытия формы.. 160
15.2.4 Запись кода обработки событий нажатия на кнопки. 160
16 Разработка приложений с использованием доступа
к таблицам баз данных. 163
16.1 Основы реляционных баз данных. 163
16.2 Создание таблиц при помощи Microsoft Office Access. 165
16.3 Разработка приложения для работы с таблицей данных. 166
16.4. Обработка информации однотабличной базы данных. 171
Заключение. 178
СПИСОК ЛИТЕРАТУРЫ... 179
Учебное издание
Мурлин Алексей Георгиевич,
Мурлина Владислава Анатольевна,
Ефанова Наталья Владимировна и др.
Программирование на языке Си++
Учебное пособие
Компьютерная верстка – А. Г. Мурлин
В авторской редакции
Подписано в печать 31.05.2016 Формат 60 × 84 1/16.
Усл. печ. л. – 10,8. Уч.-изд. л. – 8,4.
Тираж 100 экз. Заказ №
Типография Кубанского государственного аграрного университета.
350044, г. Краснодар, ул. Калинина, 13
Дата: 2019-02-02, просмотров: 278.