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

Тип работы:
Контрольная
Предмет:
Программирование


Узнать стоимость новой

Детальная информация о работе

Выдержка из работы

Цель работы:

Изучение принципов создания, преобразования и хранения последовательных файлов и файлов произвольного доступа.

Задание:

Сформировать два файла. В один из них поместить фамилии пяти ваших знакомых, а в другой номера их телефонов.

Составить программу, которая по фамилии вашего знакомого определяет номер его телефона.

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

322 286

322 155

455 932

32 456

322 286

322 155

455 932

435 645

324 567 678

3 456 789

3 245 667 788

3 245 475 685

Для продолжения нажмите любую клавишу…

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

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

322 155

322 155

3 456 789

Введите имя (10 знаков): Sergey

Введите Фамилию (15 знаков): Sazonov

Введите отчество (15 знаков): Nikolaevich

Введите домашний телефон: 322 155

Введите рабочий телефон: 322 155

Введите сотовый тепеФон: 987 654 321

Для продолжения нажмите любую клавишу…

Показать Свернуть
Заполнить форму текущей работой