Название реферата: Преобразования и хранения последовательных файлов и файлов произвольного доступа на Турбо Паскале
Раздел: Программирование, компьютеры и кибернетика
Скачано с сайта: www.refsru.com
Дата размещения: 09.09.2012
Преобразования и хранения последовательных файлов и файлов произвольного доступа на Турбо Паскале
Цель работы:
Изучение принципов создания, преобразования и хранения последовательных файлов и файлов произвольного доступа.
Задание:
Сформировать два файла. В один из них поместить фамилии пяти ваших знакомых, а в другой номера их телефонов.
Составить программу, которая по фамилии вашего знакомого определяет номер его телефона.
![]() | |||
![]() | |||
![]() |
procedure print_head;
![]() |
procedure print_menu;
![]() |
procedure print_book(n : integer; a : men ; b : tels);
![]() |
procedure ins_man(var n : integer;var a : men ;var b : tels);
![]() | |||||||||
![]() | |||||||||
![]() | ![]() | ||||||||
![]() | |||||||||
![]() |
procedure change_man(n : integer;var a: men ;var b: tels);
![]() |
procedure read_file(var f : fman;var ft : ftel;var n : integer;var a : men; var b : tels);
![]() |
procedure write_file(var f : fman;var ft : ftel;n : integer; a : men; b : tels);
![]() |
procedure show_matrix(n,m : integer;a : matrix);
![]() |
Программа:
{*****************************************}
{Программа:lab22 }
{Цель:создание таблицы данных }
{Описание параметров и переменных: }
{ menbook,telbook - массив записей }
{ menfile,telfile - файлы записей }
{ n - кол-во элементов в базе данных }
{ i - вспомогательная переменная }
{ key - переменная-ключ }
{Подпрограммы:нет }
{Программист: Кондрахин А.В.,гр.343 }
{Проверил: Москвитина О.А.,каф. ВПМ }
{Дата написания: 12 марта 2004 г. }
{*****************************************}
program lab22;
uses crt;
const
verh ='┌──────────┬───────────────┬───────────────┬──────────┬──────────┬───────────┐';
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. Редактировать запись.
0. Выход
Введите ключ команды: 2
Введите имя (10 знаков):Ivanov
Введите Фамилию (15 знаков):Uladislav
Введите отчество (15 знаков):01egovich
Введите домашний телефон:226057
Введите рабочий телефон:226057
Введите сотовый телефон:123Ч56789
Для продолжения нажмите любую клавишу .
Выберете одно из следующих действий:
1. Просмотреть записную книжку.
2. Добавить новую запись.
3. Редактировать запись.
0. Выход
Введите ключ команды: 3
Введите Фамилию: Sazonov
Имя |
Фамилия |
Отчество |
дом.тел. |
раб.тел. |
сот.тел. |
Sergey |
Sazonov |
Otc |
322155 |
322155 |
3456789 |
Введите имя (10 знаков):Sergey
Введите Фамилию (15 знаков):Sazonov
Введите отчество (15 знаков):Nikolaevich
Введите домашний телефон:322155
Введите рабочий телефон:322155
Введите сотовый тепеФон:987654321
Для продолжения нажмите любую клавишу .