Программы для работы с большим объемом информации, записанной в файлах

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    410,07 Кб
  • Опубликовано:
    2012-08-12
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Программы для работы с большим объемом информации, записанной в файлах

Содержание

 

Введение

1. Постановка задачи

2. Анализ задачи

Структура данных

Модуль вспомогательных процедур

Модуль для работы с одним элементом

Модуль для работы с файлами

Функции программы

3. Средства реализации

4. Требования к программному и аппаратному обеспечению

5. Интерфейс пользователя

6. Реализация

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

Описание модулей

а). Модуль вспомогательных процедур

б). Модуль для работы с одним элементом

в). Модуль для работы с файлами

7. План тестирования

Заключение

Список литературы

Приложения

Введение

Вся информация в нашей жизни хранится на разного рода носителях. В компьютере для этой цели существуют внешние запоминающие устройства, способные долгое время хранить различные данные в виде файлов. В языке Pascal под файлом понимается область памяти на внешнем запоминающем устройстве, способная хранить некоторую совокупность информации. В эту область внешней памяти можно как поместить определенные данные, так и извлечь их из нее. Эти действия имеют общее название ввод-вывод.

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

Целью данной работы является реализация программ для работ с большим объемом информации, записанной в файлах.

1. Постановка задачи


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

·        создавать новый файл;

·        открывать существующий файл;

·        добавлять запись в файл;

·        удалять запись из файла;

·        изменять запись в файле;

·        отображать содержимое файла на экране;

·        конвертировать типизированный файл в текстовый;

·        конвертировать текстовый файл в типизированный;

·        заносить в отдельный файл записи, имеющие заданную спецификацию.

2. Анализ задачи


Структура данных


В типизированных файлах, с которыми будет работать программа, должна использоваться следующая структура записи:

¾      Имя файла (8 знаков);

¾      Спецификация (3 знака);

¾      Дата создания;

¾      Количество блоков.

При этом поле "Дата создания" должна иметь следующую структуру:

¾      День (2 знака);

¾      Месяц (2 знака);

¾      Год (2 знака).

В данной задаче в качестве структуры данных выбран типизированный файл. Компонентом файла является запись, так как используются данные различных типов: имя файла и спецификация является строковым типом, дата создания и количество блоков представляются в форме целочисленных данных.

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

 

Модуль вспомогательных процедур


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

файл программа структура модуль

Также в этот модуль может быть включена функция на проверку корректности имени файла с точки зрения используемых символов.

Модуль для работы с одним элементом


В данный модуль будут вынесены следующие процедуры: ввод данных об одной записи, печать одной записи, загрузка записи из типизированного файла, изменение записи и сохранение в типизированный файл.

Особое внимание должно отводиться полю записи "Дата создания". Для него должны существовать процедуры ввода, конвертирования из числового формата в строку и функция конвертирования из строки в формат даты, если дата корректна.

При вводе даты создания или её загрузке из текстового файла проверяется её корректность. Отдельно должна существовать функция проверки количества дней в указанном месяце.

При загрузке записи из текстового файла также проверяется её корректность.

Работа осуществляется с постоянным выводом информационных сообщений и вопросов пользователю.

 

Модуль для работы с файлами


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

В модуль должна быть включена процедура записи в отдельный файл записей с заданной спецификацией.

При работе с файлами проверяется корректность их имён, существование или отсутствие файлов на диске.

 

Функции программы


Из главной программы посредством меню должны вызываться процедуры и функции, выполняющие следующие основные функции:

·        создание нового файл;

·        открытие существующего файла;

·        добавление записи в файл;

·        удаление записи из файла;

·        изменять запись в файле;

·        отображение содержимого файла на экране;

·        конвертирование типизированного файла в текстовый;

·        конвертирование текстового файла в типизированный;

·        формирование нового файла с записями, имеющими заданную спецификацию.

Кроме этого, должны быть реализованы следующие вспомогательные функции:

·        печать информации о файле на экран;

·        ввод записи с клавиатуры.

3. Средства реализации


При реализации проекта использовались следующие средства:

·        интерактивная среда разработки - Borland Delphi 7.0;

·        язык разработки - Object Pascal.

4. Требования к программному и аппаратному обеспечению


Приложение предназначено для использования на IBM PC-совместимых компьютерах с операционной системой Windows 2000, XP, 2007.

Минимальные системные требования приложения:

¾      процессор Pentium I;

¾      2 Мб оперативной памяти;

¾      100 Кб дискового пространства для установки программы.

5. Интерфейс пользователя


При запуске приложения пользователь видит главное окно программы, представленное на рис.5.1.

Рис.5.1 Главное окно программы

После успешного соединения с типизированным файлом меняется главное меню программы (рис.5.2).

Рис.5.2 Главное окно программы после успешного соединения с типизированным файлом

При выборе пункта меню "1 - Создать файл" пользователю предоставляется возможность ввести имя файла и создать пустой файл с заданным именем. Если файл с таким именем уже существует, программа выдаст запрос на замену этого файла (рис.5.2). Затем программа вновь выведет меню.

Рис.5.2 Запрос на замену файла

При выборе пункта меню "2 - Открыть файл" пользователю предоставляется возможность ввести имя файла, который надо открыть, после чего будет выведено сообщение об успешном результате открытия или об ошибке.

При выборе пункта меню "3 - Загрузить данные из текстового файла" пользователю предоставляется возможность перенести все данные из заданного текстового файла в новый типизированный файл или сообщает об ошибке загрузки (рис.5.3).

Рис.5.3 Загрузка данных из текстового файла в типизированный

При выборе пункта меню "4 - Печать файла" пользователю предоставляется возможность вывести на экран содержимое всех записей из открытого файла (рис.5.4).

Рис 5.4 Отображение содержимого файла на экране

При выборе пункта меню "5 - Сохранить в текстовый файл" пользователю предоставляется возможность сохранить все данные из открытого типизированного файла в новый текстовый (рис.5.5).

Рис.5.5 Загрузка данных в текстовый файл из типизированного

При выборе пункта меню "6 - Добавить запись" пользователю предоставляется возможность добавить запись в файл (рис.5.6).

Рис.5.6 Ввод записи с клавиатуры

При выборе пункта меню "7 - Редактировать запись" пользователю предоставляется возможность изменить запись с заданным номером (рис.5.7).

Рис.5.7 Изменение записи

При выборе пункта меню "8 - Удалить запись" пользователю предоставляется возможность удалить запись с заданным номером (рис.5.8).

Рис.5.8 Удаление записи

При выборе пункта меню "9 - Занести в отдельный файл записи о файлах с заданной спецификацией" пользователю предоставляется возможность в отдельный типизированный файл занести записи, у которых спецификация совпадает с заданной пользователем (рис.5.9).

Рис.5.9 Формирование отчёта по выполнению основной задачи

6. Реализация


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


Программа состоит из главной программы и трех модулей: модуль работы с файлами UFile, модуль работы с одним элементом UElem и модуль вспомогательных процедур HelpUtils (рис.6.1).

Рис.6.1 Структура программы

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

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

Модуль вспомогательных процедур отвечает за проверку корректности имен файлов, вывод на экран информационных сообщений и вопросов.

 

Описание модулей


а). Модуль вспомогательных процедур

Модуль HelpUtils содержит следующие вспомогательные процедуры:

·        ShowMessage (txt: string) - вывод информационного сообщения;

·        InputQuery (txt: string): Boolean - вывод вопроса, подразумевающий положительный или отрицательный ответ;

·        InputFileName (txt: string; var FileName: string; MustExists: boolean): Boolean - ввод имени файла с проверкой на его существование.

 

б). Модуль для работы с одним элементом

Модуль UElem отвечает за работу с одной записью.

Структура записи:= record: string [8]; // имя файла

special: string [3]; // спецификация

сreate: TDate; // дата создания: integer; // количество блоков

end;

Структура записи "Дата создания":

TDate = record,month,year: Integer;

end;

В данном модуле реализованы следующие процедуры и функции:

·        InputDate (var d: TDate) - ввод даты создания файла;

·        InputCatalog (var f: TCatalog) - ввод данных о файле;

·        DateToStr (d: TDate): string - перевод даты в строку;

·        PrintCatalog (f: TCatalog) - печать записи;

·        SaveCatalog (var t: TextFile; f: TCatalog) - сохранение записи;

·        LoadCatalog (var t: TextFile; var f: TCatalog): Boolean - загрузка записи;

·        TryStrToDate (s: string; var d: TDate): Boolean - перевод строки в формат даты;

·        EditCatalog (var f: TCatalog) - изменение информации в записи.

 

в). Модуль для работы с файлами

Модуль UFile отвечает за работу с текстовыми и типизированными файлами.

Описание типизированного файла:= file of TCatalog; // файловая переменная, содержащая сведения о файлах

В данном модуле реализованы следующие процедуры и функции:

·        NewFile (var f: TFile; var FileName: string) - создание нового файла;

·        OpenFile (var f: TFile; var FileName: string) - открытие файла;

·        LoadFromText (var f: TFile; var FileName: string) - загрузка из текстового файла в типизированный;

·        PrintFile (var f: TFile) - печать содержимого файла;

·        SaveToText (var f: TFile; FileName: string) - сохранение содержимого типизированного файла в текстовый;

·        AddElems (var f: TFile) - добавление элемента в файл;

·        EditElems (var f: TFile) - изменение элемента в файле;

·        DeleteElems (var f: TFile) - удаление элемента из файла;

·        Task (var f: TFile) - создание файла с записями, у которых спецификация совпадает с заданной.

7. План тестирования


Тест 1. Тест функции "Создать файл".

Цель. Проверка корректной работы функции создания при работе с типизированным файлом.

Порядок проведения. В меню программы выбрать пункт "1 - Создать файл". После запроса программы ввести имя нового файла. Если на диске уже существует файл с заданным именем, будет выведено информационное сообщение с предложением заменить существующий файл. При утвердительном ответе пользователя существующий файл будет удален с диска, и создан новый. Если на диске не существовало файла с заданным именем, то он будет создан.

Результат. На диске должен быть создан типизированный файл с заданным именем. В окне программы должно быть выведено сообщение об успешном создании.

Тест 2. Тест функции "Открыть файл".

Цель. Проверка корректной работы функции открытия при работе с типизированным файлом.

Порядок проведения. В меню программы выбрать пункт "2 - Открыть файл". После запроса программы ввести имя существующего файла. Если файл не найден на диске, об этом будет выведено информационное сообщение. Если файл найден, он станет доступным для чтения и записи.

Результат. Типизированный файл должен стать доступным для записи и чтения. В окне программы должно быть выведено сообщение об успешном открытии файла.

Тест 3. Тест функции "Загрузить данные из текстового файла".

Цель. Проверка корректной работы функции загрузки данных из текстового файла в типизированный.

Порядок проведения. В меню программы выбрать пункт "3 - Загрузить данные из текстового файла". После запроса программы ввести имя текстового файла. Если данный файл не существует на диске, об этом сразу будет выведено информационное сообщение. Если текстовый файл найден, программа запросит имя типизированного файла. При существовании файла с заданным именем пользователю будет предложено заменить существующий файл. При утвердительном ответе будет создан новый типизированный файл, в который скопированы данные из текстового.

Результат. Все данные текстового файла должны быть скопированы в типизированный. В окне программы должно быть выведено сообщение об успешной загрузке данных.

Тест 4. Тест функции "Сохранить в текстовый файл".

Цель. Проверка корректной работы функции сохранения данных из типизированного файла в текстовый.

Порядок проведения. В меню программы выбрать пункт "5 - Сохранить в текстовый файл". После запроса программы ввести имя нового текстового файла. При существовании файла с заданным именем пользователю будет предложено заменить существующий файл. При утвердительном ответе будет создан новый текстовый файл, в который скопированы данные из типизированного.

Результат. На диске должен быть создан текстовый файл с заданным именем, в который скопированы все данные из типизированного файла. В окне программы должно быть выведено сообщение об успешном создании текстового файла.

Тест 5. Тест функции "Добавить запись".

Цель. Проверка корректной работы функции добавления новой записи в типизированный файл.

Порядок проведения. В меню программы выбрать пункт "6 - Добавить запись". Далее программа будет запрашивать информацию по полям записи. При некорректном вводе любого из полей будет выведено информационное сообщение. После корректного ввода записи будет запрос "Добавить ещё запись?". При утвердительном ответе пользователя процедура добавления начнется заново, при отрицательном будет выведено сообщение об успешном добавлении данных.

Результат. В конец типизированного файла должна быть добавлена новая запись. В окне программы должно быть выведено сообщение об успешном добавлении.

Тест 6. Тест функции "Редактировать запись".

Цель. Проверка корректной работы функции редактирования в типизированном файле.

Порядок проведения. В меню программы выбрать пункт "7 - Редактировать запись". После запроса программы ввести номер нужной записи. При некорректном вводе номера будет выведено сообщение об ошибке. При корректном вводе номера данная запись будет напечатана, появится запрос на утверждение редактирования. Далее программа будет редактировать запись по полям, предварительно уточняя: желает ли пользователь изменить данное поле. При некорректном вводе любого из полей будет выведено информационное сообщение. После корректного изменения записи будет выведено сообщение об успешном редактировании данных.

Результат. Выбранная пользователем запись должна быть изменена. В окне программы должно быть выведено сообщение об успешном изменении записи.

Тест 7. Тест функции "Удалить запись".

Цель. Проверка корректной работы функции удаления указанной записи в типизированном файле.

Порядок проведения. В меню программы выбрать пункт "8 - Удалить запись". После запроса программы ввести номер нужной записи. При некорректном вводе номера будет выведено сообщение об ошибке. При корректном вводе номера данная запись будет напечатана, появится запрос на утверждение удаления. При утвердительном ответе пользователя выбранная запись будет удалена из типизированного файла. На экран будет выведено сообщение об успешном удалении записи.

Результат. Выбранная пользователем запись должна быть удалена из типизированного файла. В окне программы должно быть выведено сообщение об успешном удалении.

Тест 8. Тест функции "Занести в отдельный файл записи с заданной спецификацией".

Цель. Проверка корректной работы функции создания нового типизированного файла, содержимом которого должны быть выбранные с учетом условий записи из открытого типизированного файла.

Порядок проведения. В меню программы выбрать пункт "9 - Занести в отдельный файл записи с заданной спецификацией". После запроса программы "Введите имя файла-отчета" ввести имя нового типизированного файла-отчета. При существовании файла с заданным именем пользователю будет предложено заменить существующий файл. При утвердительном ответе будет создан новый типизированный файл, и программа выдаст запрос на ввод искомой спецификации. В новый типизированный файл будут скопированы все записи с заданной спецификацией, и выведено сообщение "Отчёт сформирован. Напечатать отчет?". При утвердительном ответе будет напечатано содержимое файла-отчёта. Если данный файл пуст, появится информационное сообщение "Файл пуст".

Результат. На диске должен быть создан новый типизированный файл с заданным именем, содержащий записи, удовлетворяющие условию поиска. В окне программы должно быть выведено сообщение об успешном создании файла-отчета.

Заключение


В результате была разработана и реализована программа, позволяющая работать с типизированными файлами и выполняющая следующие функции:

·        создание файла;

·        открытие файла;

·        добавление записи;

·        удаление записи;

·        изменение записи;

·        отображение содержимого файла;

·        конвертирование типизированного файла в текстовый файл;

·        конвертирование текстового файла в типизированный файл;

·        занесение в отдельный файл записи о файлах с заданной спецификацией.

Список литературы


1.      Вирт Н. Алгоритмы и структуры данных / Н. Вирт; Пер. с англ.Д.Б. Подшиваловой. - 2-е изд., испр. - СПб.: Изд-во "Невский диалект", 2001. - 352 с.

2.      Абрамов В.Г. Введение в язык Паскаль / В.Г. Абрамов, Н.П. Трифонов, Г.Н. Трифонова - М.: Наука, 1988. - 378 с.

.        Программирование на языке Паскаль: задачник / О.Ф. Ускова [и др.]; под ред. О.Ф. Усковой - СПб.: Питер, 2002. - 336 с.

Приложения


Приложение 1. Модуль HelpUtils

 

Unit HelpUtils; // вспомогательные процедуры

interface SysUtils, Windows;

const

Yes = ['Y','y','Н','н'];= ['N','n','Т','т'];= Yes + No;

// вывод сообщения

procedure ShowMessage (txt: string);

// вывод вопроса

function InputQuery (txt: string): Boolean;

// ввод имени файла

function InputFileName (txt: string; var FileName: string;: boolean): Boolean;

implementation

// вывод сообщения

procedure ShowMessage (txt: string);

begin

Writeln (txt);;

end;

// вывод вопроса

function InputQuery (txt: string): Boolean;

var ch: Char;

begin

Writeln (txt);

repeat

Readln (ch);

until ch in YesOrNo;: = ch in Yes;

end;

// проверка на корректность имени файла

function CheckFileName (FileName: string): Boolean;

const Banned = ['\','/',': ','*','? ','"','<','>','|'];

var i: Integer;

begin

Result: =True;: =1;

while Result and (i<=Length (FileName)) do

begin

Result: = not (FileName [i] in Banned);(i);

end;;

// ввод имени файла

function InputFileName (txt: string; var FileName: string;: boolean): Boolean;

var name: string;

begin

Result: =True;(txt,' (пустая строка - отмена) ');(name);

if name='' then Result: =False

else not CheckFileName (name)

then

ShowMessage ('Имя введено некорректно! ');: =False;

end MustExists

then FileExists (name) then FileName: =name

else

ShowMessage ('Файл не найден! ');: =false

end not FileExists (name) then FileName: =name

else InputQuery ('Файл существует. Заменить? ')

then FileName: =name

else Result: =false;

end;. // HelpUtils

Приложение 2. Модуль UElem

 

unit UElem; // процедуры для работы с одним элементом

interface

SysUtils,windows,;

type

TDate = record

day,month,year: Integer;

end;

TCatalog = record: string [8];: string [3];: TDate;: integer;

end;

// ввод даты создания

procedure InputDate (var d: TDate);

// ввод данных о файле

procedure InputCatalog (var f: TCatalog);

// перевод даты в строку

function DateToStr (d: TDate): string;

// печать информации о файле

procedure PrintCatalog (f: TCatalog);

// сохранить информацию о файле

procedure SaveCatalog (var t: TextFile; f: TCatalog);

// загрузить информацию о файле

function LoadCatalog (var t: TextFile; var f: TCatalog): Boolean;

// перевод строки в формат даты

function TryStrToDate (s: string; var d: TDate): Boolean;

// изменение информации о файле

procedure EditCatalog (var f: TCatalog);

implementation

// поиск количества дней в месяце

function CountDaysInMonth (m, g: integer): integer;

begin m of

: if (g mod 4) =0 then CountDaysInMonth: =29

else CountDaysInMonth: =28;

,6,9,11: CountDaysInMonth: =30;

else CountDaysInMonth: =31;

end;;

// ввод даты создания

procedure InputDate (var d: TDate);

begin

Writeln ('Введите последние две цифры года создания файла');

Readln (d. year);

if not (d. year in [00.99])

then ShowMessage ('Ошибка! Повторите ввод! ');

until d. year in [00.99];

repeat

Writeln ('Введите месяц создания файла');

Readln (d. month);

if not (d. month in [1.12])

then ShowMessage ('Ошибка! Повторите ввод! ');

until d. month in [1.12];

repeat

Writeln ('Введите день создания файла');

Readln (d. day);

if not (d. day in [1. CountDaysInMonth (d. month,d. year)])

then ShowMessage ('Ошибка! Повторите ввод! ');

until d. day in [1. CountDaysInMonth (d. month,d. year)];

end;

// ввод данных о файле

procedure InputCatalog (var f: TCatalog);

begin

writeln ('Введите имя файла');(f. name);

if f. name=''

then ShowMessage ('Ошибка! Имя не должно быть пустым! Повторите ввод! ');

until f. name<>'';('Введите специализацию');(f. special);

InputDate (f. create);

repeat

Writeln ('Введите количество блоков');(f. blocks);

if f. blocks<0 then

ShowMessage ('Ошибка! Размер файла должен быть положительным! Повторите ввод! ');

until f. blocks>=0;

end;

// перевод даты в строку

function DateToStr (d: TDate): string;

begin

Result: ='';

if d. day<10 then Result: ='0';: =Result+IntToStr (d. day) +'. ';

if d. month<10 then Result: =Result+'0';: =Result+IntToStr (d. month) +'. ';

if d. year<10 then Result: =Result+'0';: =Result+IntToStr (d. year);

end;

// печать информации о файле

procedure PrintCatalog (f: TCatalog);

begin

SaveCatalog (output, f);

end;

// сохранить информацию о файле

procedure SaveCatalog (var t: TextFile; f: TCatalog);

begin

Writeln (t,'Имя файла: ',f. name);(t,'Спецификация: ',f. special);(t,'Дата создания: ',DateToStr (f. Create));

Writeln (t,'Количество блоков: ',f. blocks);(t);

end;

// проверка корректности содержимого файла

function GetValueFromFile (var t: TextFile; var s: string): Boolean;

var p: Integer;

begin Eof (t) then Result: =False

else

Readln (t,s);: =Pos (': ',s);

if p=0 then Result: =False

else

delete (s,1,p);: =Trim (s);: =True;

end;;;

function CheckDate (d: TDate): boolean;

begin

Result: = (d. year in [00.99]) and (d. month in [1.12]) and

(d. day in [1. CountDaysInMonth (d. month,d. year)]);

end;

// загрузка информации о файле

function LoadCatalog (var t: TextFile; var f: TCatalog): Boolean;

var s: string; d: TDate; num: integer;

begin

Result: =True;

if GetValueFromFile (t,s) and (s<>'') then f. name: =s

else Result: =False;

if Result and GetValueFromFile (t,s) then f. special: =s

else Result: =False;

if Result and GetValueFromFile (t,s) and TryStrToDate (s,d) andCheckDate (d)

then f. Create: =d

else Result: =False;

if Result and GetValueFromFile (t,s) and TryStrToInt (s, num) and (num>=0)

then f. blocks: =num

else Result: =False;

if Result and not Eof (t)

then Readln (t);

end;

// перевод строки в формат даты

function TryStrToDate (s: string; var d: TDate): Boolean;

var p: integer;

begin

p: =pos ('. ', s);: = p>0;

if not (Result and TryStrToInt (Copy (s,1,p-1),d. Day) and (d. day in [1.31]))

then Result: =False;(s,1,p);: =pos ('. ', s);

if not (Result and (p>0) and TryStrToInt (Copy (s,1,2),d. month) and (d. month in [1.12]))

then Result: =False;(s,1,p);

if not (Result and TryStrToInt (s,d. year) and (d. year in [00.99]))

then Result: =False;: = Result and (d. day in [1. CountDaysInMonth (d. month,d. year)])

end;

// изменение информации о файле

procedure EditCatalog (var f: TCatalog);

begin InputQuery ('Изменить имя файла? ') then

repeat

Writeln ('Введите новое имя');

Readln (f. name);

if f. name='' then

ShowMessage ('Ошибка! Имя не должно быть пустым! Повторите ввод! '); until f. name<>'';

if InputQuery ('Изменить специализацию файла? ') then('Введите новую специализацию');

Readln (f. special);

end; InputQuery ('Изменить дату создания файла? ')

then InputDate (f. create);

if InputQuery ('Изменить количество блоков? ') then('Введите новое количество блоков');

Readln (f. blocks);

if f. blocks<0 then

ShowMessage ('Размер файла должен быть положительным! Повторите ввод! '); until f. blocks>=0;

end;. // UElem

Приложение 3. Модуль UFile

 

unit UFile; // процедуры для работы с файлами

interface SysUtils, HelpUtils, UElem, Windows;

type

TFile = file of TCatalog;

// создание файла NewFile (var f: TFile; var FileName: string);

// открытие файла

procedure OpenFile (var f: TFile; var FileName: string);

// загрузка из файла

procedure LoadFromText (var f: TFile; var FileName: string);

// печать файла

procedure PrintFile (var f: TFile);

// сохранение в текстовый файл SaveToText (var f: TFile; FileName: string);

// добавление элемента

procedure AddElems (var f: TFile);

// измненение элемента EditElems (var f: TFile);

// удаление элемента

procedure DeleteElems (var f: TFile);

// вывод файлов с заданной спецификацией

procedure Task (var f: TFile);

implementation

// добавление нескольких элементов в файл

function AddSomeElems (var f: TFile): Integer;

var el: TCatalog;

begin

Result: =0;

repeat

InputCatalog (el);(f,el);(Result);

until not InputQuery ('Ещё? ');

end;

// создание файла NewFile (var f: TFile; var FileName: string);

begin InputFileName ('Введите имя нового файла', FileName,False) then(f, FileName);(f);

if InputQuery ('Добавить данные? ') then AddSomeElems (f);(f);('Файл создан');

end;;

// открытие файла

procedure OpenFile (var f: TFile; var FileName: string);

begin InputFileName ('Введите имя существующего файла', FileName,true) then

begin

AssignFile (f, FileName);('Файл открыт');

end;;

// загрузка из файла

procedure LoadFromText (var f: TFile; var FileName: string);

var name: string; tf: TextFile; el: TCatalog; ok: Boolean;

begin InputFileName ('Введите имя текстового файла', name,true) and('Введите имя типизированного файла', FileName, false)

then name=FileName then ShowMessage ('Имена должны быть разными! ')

else

AssignFile (tf,name);(tf);(f, FileName);(f);: =True;

while not Eof (tf) and ok do

if LoadCatalog (tf,el) then write (f,el) else ok: =False;(f);(tf);

if ok then ShowMessage ('Данные загружены')

else ShowMessage ('Ошибка при загрузке');

end;;

// печать файла

procedure PrintFile (var f: TFile);

var el: TCatalog; i: Integer;

begin

Reset (f);

if Eof (f) then ShowMessage ('Файл пуст')

else

i: =0;

while not Eof (f) do

begin

read (f,el);(i);('Файл №', i);(el);

end;;

CloseFile (f);

end;

// сохранение в текстовый файл

procedure SaveToText (var f: TFile; FileName: string);

var name: string; tf: TextFile; el: TCatalog;

begin InputFileName ('Введите имя текстового файла', name,false)

then name=FileName then ShowMessage ('Имена должны быть разные! ')

else

Reset (f);(tf, name);(tf);

while not Eof (f) do

begin

read (f,el);(tf,el);

end;

CloseFile (f);(tf);

ShowMessage ('Текстовый файл создан');

end;

end;

// добавление элемента AddElems (var f: TFile);

var n: Integer;

begin

Reset (f);: =FileSize (f);(f,n);(f);(f);('Данные добавлены');

end;

// Выбор элемента

function SelectNum (var f: TFile; n: Integer; var num: Integer; var el: TCatalog): Boolean;

begin n=1 then num: =0

else

Writeln ('Введите номер элемента');(num);

while (num<1) or (num>n) do

begin

Writeln ('Ошибка! Повторите ввод');

Readln (num);

end;

dec (num);

end;

Seek (f,num);(f,el);(el);: = InputQuery ('Этот элемент? ');

end;

// измненение элемента

procedure EditElems (var f: TFile);

var n,num: Integer; el: TCatalog;

begin

Reset (f);

if Eof (f) then ShowMessage ('Файл пуст')

else SelectNum (f, FileSize (f), num,el)

then

EditCatalog (el);(f,num);(f,el);('Данные изменены');

end;

CloseFile (f);

end;

// удаление элемента

procedure DeleteElems (var f: TFile);

var num,n: Integer; el: TCatalog;

begin

Reset (f);: =FileSize (f);

if n=0 then ShowMessage ('Файл пуст')

else SelectNum (f,n,num,el)

then n=1

then

CloseFile (f);(f);

end num=n-1

then

Seek (f, num);(f);

end

Seek (f,n-1);(f,el);(f,num);(f,el);(f,n-1);(f);

end;

ShowMessage ('Данные удалены');

end;

CloseFile (f);

end;

// вывод файлов с заданной спецификацией

procedure Task (var f: TFile);

var el: TCatalog; name: string; ok: Boolean; fout: TFile; s: string [3];

begin

Reset (f);

if Eof (f) then ShowMessage ('Файл пуст')

else InputFileName ('Введите имя нового файла-отчета', name,False)

then

Writeln ('Введите искомую спецификацию');

Readln (s);(fout, name);(fout);

while not Eof (f) do

begin

read (f,el);

if el. special=s

then

write (fout,el);: =True;

end;;

CloseFile (fout);

if ok

then

ShowMessage ('Отчет сформирован');

if InputQuery ('Напечатать отчет? ') then PrintFile (fout);

end

ShowMessage ('Не найден ни один файл с заданной спецификацией');

endShowMessage ('Прервано пользователем');(f);

end;. // UFile

Приложение 4. Главная программа

 

Program MainProgram; // главная программа

uses

SysUtils, windows,in 'HelpUtils. pas',in 'UElem. pas',in 'UFile. pas';

Var

f: TFile; item: Integer; FileName: string;

// выбор действия

function SelectItem: Integer;

var MaxItem: Integer;

begin

writeln ('1 - Создать файл');

writeln ('2 - Открыть файл ');('3 - Загрузить данные из текстового файла');

MaxItem: =3;

if FileName<>'' then

begin

writeln ('4 - Печать файла');('5 - Сохранить в текстовый файл');('6 - Добавить запись');('7 - Редактировать запись');('8 - Удалить запись');('9 - Занести в файл-отчёт записи о файлах с заданной спецификацией');

MaxItem: =9;

end;

writeln ('0 - Выход');

repeat

write ('Ваш выбор: ');(Result);

until Result in [0. MaxItem];

end;

SetConsoleCP (1251);(1251);: ='';

repeat

item: =SelectItem;

case item of // вызов соответствующих подпрограмм

1: NewFile (f,FileName);

: OpenFile (f,FileName);

: LoadFromText (f,FileName);

: PrintFile (f);

: SaveToText (f,FileName);

: AddElems (f);

: EditElems (f);

: DeleteElems (f);

: Task (f);

end; item=0;

end. // MainProgram

Похожие работы на - Программы для работы с большим объемом информации, записанной в файлах

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!