Преобразования и хранения последовательных файлов и файлов произвольного доступа на Турбо Паскале
Изучение принципов создания, преобразования и хранения последовательных файлов и файлов произвольного доступа. Сформировать два файла. В один из них поместить фамилии пяти ваших знакомых, а в другой номера их телефонов. Составить программу, которая по фамилии вашего знакомого определяет номер его телефона. Writeln ('——————————— Программа «Записная книжка» ———————————'); Niz… Читать ещё >
Преобразования и хранения последовательных файлов и файлов произвольного доступа на Турбо Паскале (реферат, курсовая, диплом, контрольная)
Цель работы:
Изучение принципов создания, преобразования и хранения последовательных файлов и файлов произвольного доступа.
Задание:
Сформировать два файла. В один из них поместить фамилии пяти ваших знакомых, а в другой номера их телефонов.
Составить программу, которая по фамилии вашего знакомого определяет номер его телефона.
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 ='—————-T———————-T———————-T—————T—————T—————-';
inc1 ='¦ Имя ¦ Фамилия ¦ Отчество ¦ дом.тел. ¦ раб.тел. ¦ сот.тел. ¦';
cent1='+—————+———————-+———————-+—————+—————+—————-+';
niz ='L—————+———————-+———————-+—————+—————+——————';
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 | ||||
Для продолжения нажмите любую клавишу…
Выберете одно из следующих действий:
1. Просмотреть записную книжку.
2. Добавить новую запись.
3. Редактировать запись.
0. Выход Введите ключ команды: 2
Введите имя (10 знаков):Ivanov
Введите Фамилию (15 знаков):Uladislav
Введите отчество (15 знаков):01egovich
Введите домашний телефон:226 057
Введите рабочий телефон:226 057
Введите сотовый телефон:123Ч56 789
Для продолжения нажмите любую клавишу…
Выберете одно из следующих действий:
1. Просмотреть записную книжку.
2. Добавить новую запись.
3. Редактировать запись.
0. Выход Введите ключ команды: 3
Введите Фамилию: Sazonov
Имя | Фамилия | Отчество | дом.тел. | раб.тел. | сот.тел. | |
Sergey | Sazonov | Otc | ||||
Введите имя (10 знаков):Sergey
Введите Фамилию (15 знаков):Sazonov
Введите отчество (15 знаков):Nikolaevich
Введите домашний телефон:322 155
Введите рабочий телефон:322 155
Введите сотовый тепеФон:987 654 321
Для продолжения нажмите любую клавишу…