Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовые / 1 / STASKURS / Курсовая работа.doc
Скачиваний:
19
Добавлен:
17.04.2013
Размер:
1.63 Mб
Скачать

Project1.Cpp

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

USERES("Project1.res");

USEFORM("Unit1.cpp", Form1);

USEUNIT("Unit2.cpp");

//---------------------------------------------------------------------------

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

Application->Initialize();

Application->Title = "Курсовой проект по работе с базой данных по файлом ";

Application->CreateForm(__classid(TForm1), &Form1);

Application->Run();

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

return 0;

Схема алгоритма.

Схема взаимодействия компонентов С++Builder c базой данных.

Пояснения к программе.

Программа для работы с базой данных была написана на языке C++ Builder 4.0. Вместе с

С++ Builder поставляется программа Database Desktop, которая позволяет создавать таблицы баз данных некоторых СУБД, задавать и изменять их структуру. С помощью Database Desktop была создана таблица базы данных СУБД Paradox 7. В Paradox 7 база данных – это каталог, в котором лежат таблицы – файлы с расширением .db.

Для каждого поля создаваемой таблицы прежде всего указывается имя (Field Name)– идентификатор поля. Затем необходимо выбрать тип (Type) данных этого поля. В нашем случае используются следующие типы данных:

  • + (Autoincrement) - автоматически увеличивающееся на 1 длинное целое. Только для чтения. При удалении записей значения полей в оставшихся записях не изменяются;

  • А (Alpha) – строковое поле, содержащее любые печатаемые ASCII символы. Размер – число символов (1-255);

  • N (Number) – действительные числа с 15 значащими разрядами. Для выбора формата представления надо использовать Paradox;

  • D (Date) – значения, представляющие собой даты. Для выбора формата представления надо использовать Paradox;

  • I (Long Integer) – длинные целые числа от –2 147 483 648 до 2 147 483 647;

  • M (Memo) – поле для хранения текстов неограниченной длины. Тексты хранятся в отдельных файлах .mb. Указываемый размер – это число первых символов текста, хранящихся непосредственно в таблице. Просмотр полей Memo возможен в Paradox или в приложениях C++ Builder.

Для некоторых типов необходимо задавать размер (Size). Ключевые поля должны быть отмечены символом ’’ * ” в последней колонке.

В программе в таблице сформировано новое поле – File_size_new,- не предусмотренное при её создании, значение которого вычисляется на основании значений других полей записи. Подобные поля называются вычисляемыми полями.

Для поиска по базе данных в программе используется язык SQL (Structured Query Language – язык структурированных запросов). Он позволяет формировать весьма сложные запросы к базам данных. Запрос – это вопрос к базе данных, возвращающий запись или множество записей, удовлетворяющих вопросу.

В программе используется один оператор SQL – оператор выбора Select. Этот оператор возвращает одно или множество значений, которые могут представлять собой значения указанных полей записей, удовлетворяющих указанному условию и упорядоченных по заданному критерию. Одна из форм этого оператора имеет синтаксис:

SELECT <список имён полей> FROM <таблица>

WHERE <условие отбора> ORDER BY <список имён полей>;

Элемент WHERE определяет условие отбора записей: отбираются только те, в которых условие выполняется. Элемент ORDER BY определяет упорядочивание возвращаемых записей.

Для задания условия используются следующие операции:

  • операция like, которая имеет синтаксис

<поле> LIKE ‘<последовательность символов>’.

Эта операция применима к полям типа строк и возвращает true, если в строке встретился фрагмент, заданный в операции как <последовательность символов>;

  • операция between…and , которая имеет синтаксис

<поле> BETWEEN <значение> AND <значение>

и задаёт для указанного поля диапазон отбираемых значений.

Оператор Select позволяет возвращать не только множество значений полей, но и некоторые совокупные (агрегированные) характеристики, подсчитанные по всем или по указанным записям таблицы. Одна из функций, возвращающих такие совокупные характеристики, count(<условие>) – количество записей в таблице, удовлетворяющих заданным условиям. Оператор, использующий ключевое слово DISTINCT (уникальный), выдаст число неповторяющихся значений в указанном поле.

Приведём описание некоторых функций, используемых в данной программе:

  • Функции DAY, MONTH и AGE с помощью побитовых сдвигов переводят в обычный формат день, месяц и год создания файла;

  • Функция RAZMER определяет, в чём измеряется размер файла: в байтах, Кбайтах или Мбайтах;

  • Функция OKRUGL переводит размер файла в байтах в Кбайты или Мбайты;

  • Функция DATA проверяет правильность введения пользователем даты создания файла, у случая неправильного указания даты выводится сообщение об ошибке;

  • Функция NAM обрабатывает введённое имя файла на синтаксические ошибки и недопустимые символы;

  • Стандартная функция для работы с файлами на диске findfirst, описание которой находится в файле dir.h. Её синтаксис:

int findfirst(const char _FAR* _path, struct ffblk _FAR*_ffblk, int _attrib).

Она начинает поиск файлов по шаблону _path с атрибутами _attrib; заносит результат в _ffblk; возвращает 0 при успехе или –1;

  • Функция findnext ,синтаксис которой

int fidnnext(struct ffblk _FAR *_ffblk) ,продолжает поиск файлов, начатый функцией findfirst со структурой _ffblk; возвращает 0 при успехе или –1;

  • Функция sprintf, синтаксис которой:

int sprintf (char *buffer, const char *format [, argument, ...])

выводит в строку buffer список аргументов argument по формату format, описание этой

стандартной функции находится в файле conio.h;

  • Функции взаимного преобразования чисел и строк, описанные в файле SysUtils.hpp: Extended StrToFloat (const System::AnsiString S) – переводит строку S в число;

IntStrToInt (const System::AnsiString S) – переводит строку в целое число;

System::AnsiString IntToStr (int Value) – переводит целое число в строку;

  • Функция обработки строк с нулевым символом в конце

char *strchr (const char * s, int c) - возвращает указатель на первое вхождение c в s, или

NULL, данная функция описана в файле string.h.

При работе программы могут возникать различного рода ошибки. При возникновении таких исключительных ситуаций программа генерирует так называемое исключение и выполнение дальнейших вычислений в данном блоке прекращается. Исключение – это объект специального вида, характеризующий возникшую в программе исключительную ситуацию. Он может также содержать в виде параметров некоторую уточняющую информацию. Особенностью исключений является то, что это сугубо временные объекты. Как только они обработаны каким-то обработчиком, они разрушаются. Если исключение нигде в программе не перехвачено, то оно обрабатывается методом Application->HandleException .Он обеспечивает стандартную реакцию программы на большинство исключений – выдачу пользователю краткой информации в окне сообщений и уничтожение экземпляра исключений.

Если не принять соответствующих мер, то к неприятностям прекращения вычислений могут добавиться ещё и неприятности, связанные с так называемой утечкой ресурсов. Под этим подразумевают потери динамически распределяемой памяти, незакрытые файлы, не уничтоженные временные файлы на диске и т.д.

Наиболее кардинальный путь борьбы с исключениями – отлавливание и обработка их с помощью блоков try…catch. Синтаксис этих блоков следующий:

try

{

исполняемый код

}

catch (TypeToCatch)

{

код, исполняемый в случае ошибки

}

Операторы блока catch представляют собой обработчик исключений. Параметр TypeToCatch может быть или одним из целых типов, или ссылкой на класс исключений, или многоточием, что означает обработку любых исключений. Операторы обработчика выполняются только в случае генерации в операторах блока try исключения типа, указанного в заголовке catch. После блока try может следовать несколько блоков catch для разных типов исключений.

В программе использовались следующие классы:

  • TBevel - Используется для рисования прямоугольной рамки, изображенной как выступающая или утопленная. Компонент визуальный.

  • TDBGrid - Используется для создания ориентированных на данные сеток (таблиц) с отображением данных в строках и столбцах. Компонент визуальный.

  • TcomboBox - Объединяет функции ListBox и Edit. Пользователь может либо ввести текст, либо выбрать его из списка. Компонент визуальный.

  • TgroupBox - Является контейнером, объединяющим группу связанных органов управления, таких как радиокнопки RadioButton, контрольные индикаторы Checkbox и т.д. Компонент визуальный.

  • TDriveComboBox - Выпадающий список доступных дисков. Компонент визуальный.

  • TdirectoryListBox - Отображает структуру каталогов диска. Компонент визуальный.

  • Tlabel - Используется для размещения на формах и других контейнерах текста, который не изменяется пользователем. Компонент визуальный.

  • Tedit - Используется для ввода пользователем однострочных текстов. Может использоваться для отображения текста. Компонент визуальный.

  • Tbutton - Используется для создания кнопок, которыми пользователь выбирает команды в приложении. Компонент визуальный.

  • TMemo - Используется для ввода и отображения многострочных текстов. Компонент визуальный.

  • TRadioButton - Предлагают пользователю набор альтернатив, из которого выбирается одна. Набор реализуется требуемым количеством радиокнопок, размещенных в одном контейнере (форме, панели и т. п.). Компонент визуальный.

  • TmaskEdit - Используется для форматирования данных или для ввода символов в соответствии с шаблоном. Компонент визуальный.

Соседние файлы в папке STASKURS