Обработка информации однотабличной базы данных
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Помимо хранения, редактирования, обновления и анализа данных в базе данных (БД), на практике часто возникает задача осуществления разного рода расчётов и вычислений с использованием хранящейся в БД информации. Например, для базы данных, хранящей информацию о студентах учебного заведения, может возникнуть задача расчёта средней оценки студента по конкретному предмету или расчёта успеваемости группы. Поскольку требуемые расчеты могут быть довольно сложные, необходимо использование программных пакетов разработки приложений, объединяющих в себе как удобные средства доступа к БД различных форматов, так и гибкий язык программирования.

Визуальная навигация и управление данными в 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, просмотров: 246.