Преобразования и хранения последовательных файлов и файлов произвольного доступа на Турбо Паскале
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 |
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности