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

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

>

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

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);(Ф?/p>