Разработка класса для работы с двоичным файлом

Страницы работы

7 страниц (Word-файл)

Содержание работы

Структурное описание программы.

Структура программы.

В данной работе разработан класс для работы с двоичным файлом. Разработанный класс существенно облегчает работу с двоичными файлами в дальнейшем (если конечно они совпадают по формату). В дальнейшем программисту нет необходимости постоянно переписывать один и тот же код по нескольку раз. Достаточно будет просто создать объект класса BinaryFile и при помощи методов работать с файлами. Данный подход к программированию существенно облегчает понимание программы и ее дальнейшее модифицирование, потому как объектно-ориентированная концепция программирования лучше отражает картину реального мира, то есть объект представлен в виде какого-то реального предмета наделенного характерными для него особенностями (свойствами), а так же набором действий, которые над ним можно производить. Класс представлен в виде множества объектов одного типа. Я разрабатывал класс двоичный файл. Он отражает все свойства и методы двоичных файлов в общем (точнее все свойства и методы, необходимые в рамках курсовой работы), имя файла с которым  мы работаем, количество строк хранимых в файле и массив адресов на данные в файле.

Головная функция (main) программы представляет из себя  последовательное тестирование всех методов класса. Добавления, сортировки, сохранения в текстовый файл и т.д. 

Создавая объект, вместе с ним создается файл, который «привязывается» к нему, результаты всей работы с объектом будут содержаться именно в нем. Так же, помимо него, программой будет создан откаточный файл, необходимый для перезаписывания файла. Мы копируем данные из файла привязанного к объекту в откаточный (BuckCopy.tmp) файл и потом из откаточного обратно. Это необходимо чтобы не нарушалась топология файла, измененная в результате сортировок, вставок и удаления. Когда пользователь производит выше упомянутые операции, он никак не изменяет файл, исключением может быть метод вставки, потому как он записывает вставляемую строку в конец файла. Но при этом возникает несоответствие номера положения строки в файле и массиве указателей. Для этого и вызывается перезапись.

Перезаписывание необходимо и оно вызывается после вставки, удаления и сортировки.

Для удобства программирования строки файла также представлены в виде класса.

Структура двоичного файла.

Двоичный файл представляет собой последовательности шестнадцатеричных символов. В соответствие с типом хранимой переменной можно сказать сколько символов надо считать, чтобы правильно определить хранимое число. Для char – 2 тетрады, для int - 4, поскольку другие с типы данных не используются в моей работе я про них ни чего не упоминаю.

В начале файла хранится количество строк записанных в него. Это необходимо для того, чтобы определить когда достигается конец файла. Записывается эта информация в самое начало, чтобы ее было просто найти.

Потом следует некоторое количество строк, формат хранения которых вполне стандартный: сначала записывается количество символов, потом сама строка.

Структура текстового файла.

Самый обычный текстовый файл, строки в котором хранятся поочередно. Каждая строка заканчивается символом переноса строки. А конец файла отмечен символом ~end~.


Задание.

Двоичный файл содержит записи переменной длины – строки. Формат записи предполагает ее переменную размерность. Реализовать набор операций над записями без загрузки одновременно всех строк в память (поэлементная загрузка СД) : добавление строки, извлечение, удаление, вставка по логическому номеру и редактирование (обновление),  вставка с сохранением порядка, сортировка (возможно, через внешний текстовый файл), экспорт строк из текстового файла, постраничный просмотр. При открытии файла производится его последовательный просмотр и составляется структура данных, содержащая адреса (указатели) записей в файле. При изменении размерности записи, она переписывается в конец файла. При завершении работы программы, записи переписываются в выходной двоичный файл в логическом порядке следования в структуре данных.

Варианты структуры даннных :

 Динамический массив указателей на записи.


Теоретический материал.

Массив указателей.

В языке СИ элементы массивов могут иметь любой тип, и, в частности, могут быть указателями на любой тип. Рассмотрим несколько примеров с использованием указателей.

Следующие объявления переменных

     int a[]={10,11,12,13,14,};

     int *p[]={a, a+1, a+2, a+2, a+3, a+4};

Похожие материалы

Информация о работе