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

inc1 ='│ Имя │ Фамилия │ Отчество │ дом.тел. │ раб.тел. │ сот.тел. │';

cent1='├──────────┼───────────────┼───────────

────┼──────────┼──────────┼───────────┤';

niz ='└──────────┴───────────────┴───────────────┴──────────┴──────────┴───────────┘';

Num=10;

type

man=record

name:string[10];

fam :string[15];

otc :string[15];

end;

tel=record

hometel: string[6];

worktel: string[6];

sottel : string[11];

end;

men=array[1 Num] of man;

tels=array[1 Num] of tel;

fman=file of man;

ftel=file of tel;

var

n,i :integer;

menbook :men;

telbook :tels;

menfile :fman;

telfile :ftel;

key :char;

procedure print_head;

begin

Clrscr;

Writeln('██████████████████████ Программа "Записная книжка" ██████████████████████');

Writeln;

end;

procedure print_menu;

begin

print_head;

Writeln('Выберете одно из следующих действий:');{Вывод меню}

Writeln('1. Просмотреть записную книжку.');

Writeln('2. Добавить новую запись.');

Writeln('3. Редактировать запись.');

Writeln;

Writeln('0. Выход');

Writeln;

Writeln('Введите ключ команды:');

end;

procedure print_book(n : integer; a : men ; b : tels);

var

i:integer;

begin

print_head;

Writeln(verh);Writeln(inc1);Writeln(cent1);

for i:=1 to n do {Вывод записей}

Writeln('│',a[i].name:10,'│',a[i].fam:15,'│',a[i].otc:15,'│',b[i].hometel:10,'│',b[i].worktel:10,'│',b[i].sottel:11,'│');

Writeln(niz);

Writeln('Для продолжения нажмите любую клавишу .');Readkey;

end;

procedure ins_man(var n : integer;var a : men ;var b : tels);

var

fam : string[15];

begin

print_head;

if n=Num

then Writeln('База данных переполнена!') {Переполнение базы}

else begin

inc(n); {Занесение записи}

Write('Введите имя (10 знаков):');Readln(a[n].name);

Write('Введите фамилию (15 знаков):');Readln(a[n].fam);

Write('Введите отчество (15 знаков):');Readln(a[n].otc);

Write('Введите домашний телефон:');Readln(b[n].hometel);

Write('Введите рабочий телефон:');Readln(b[n].worktel);

Write('Введите сотовый телефон:');Readln(b[n].sottel);

end;

Writeln('Для продолжения нажмите любую клавишу .');Readkey;

end;

procedure change_man(n : integer;var a: men ;var b: tels);

var

fam : string[15];

i :integer;

begin

print_head;

Writeln('Введите фамилию:');Read(fam);

i:=1;

while (a[i].fam<>fam) and (i<=n) do {Поиск фамилии}

inc(i);

if (i>n) and (a[i].fam<>fam)

then Writeln('Такой фамилии не найдено!')

else

begin

Writeln(verh);Writeln(inc1);Writeln(cent1);

Writeln('│',a[i].name:10,'│',a[i].fam:15,'│',a[i].otc:15,'│',b[i].hometel:10,'│',b[i].worktel:10,'│',b[i].sottel:11,'│');

Writeln(niz);Writeln;Readln;

Write('Введите имя (10 знаков):');Readln(a[i].name); {Изменение записи}

Write('Введите фамилию (15 знаков):');Readln(a[i].fam);

Write('Введите отчество (15 знаков):');Readln(a[i].otc);

Write('Введите домашний телефон:');Readln(b[i].hometel);

Write('Введите рабочий телефон:');Readln(b[i].worktel);

Write('Введите сотовый телефон:');Readln(b[i].sottel);

Writeln('Для продолжения нажмите любую клавишу .');Readkey;

end;

end;

procedure read_file(var f : fman;var ft : ftel;var n : integer;var a : men; var b : tels);

begin

n:=0;

assign(f,'man.db'); {Инициализация файловых}

assign(ft,'tel.db'); {переменных}

{$I-}

reset(f);

reset(ft);

{$I+}

if IOResult<>0

then Writeln('Файл базы данных не найден!')

else begin

while not(EOF(f)) and (n<=10) do

begin

inc(n);

read(f,a[n]); {Чтение записей}

read(ft,b[n]);

end;

Writeln('Файл базы данных успешно прочитан!');

end;

end;

procedure write_file(var f : fman;var ft : ftel;n : integer; a : men; b : tels);

var

i: integer;

begin

rewrite(f);

rewrite(ft);

for i:=1 to n do

begin {Запись записей}

Write(f,a[i]);

Write(ft,b[i]);

end;

Writeln('Файл базы данных успешно сохранен!');

end;

begin

read_file(menfile,telfile,n,menbook,telbook); {Чтение файлов}

print_head;

key:='Y';

while (UpCase(key)='Y') do {Проверка ключа}

begin

print_menu;

key:=Readkey;

case key of {Выплнение соотв.}

'1': begin print_book(n,menbook,telbook);key:='Y';end;

'2': begin ins_man(n,menbook,telbook);key:='Y';end;

'3': begin change_man(n,menbook,telbook);key:='Y';end;

else begin Writeln('Вы ввели неправильный код!');key:='N';end

end;

Writeln;

end;

write_file(menfile,telfile,n,menbook,telbook); {Запись файлов}

end.

Просчет контрольного варианта на ЭВМ:

Выберете одно из следующих действий:

1. Просмотреть записную книжку.

2. Добавить новую запись.

3. Редактировать запись.

0. Выход

Введите ключ команды: 1

Имя

Фамилия

Отчество

дом.тел.

раб.тел.

сот.тел.

Andrey

Sergey

Alex

Serega

Kondrahin Sazonov

Uoronov

Kurpach

Uyacheslauouich

Otc

Uiktorouich Uiktorouich

322286

322155

455932

32456

322286

322155

455932

435645

324567678

3456789

3245667788

3245475685

Страница:  1  2  3 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы