Алгоритмический язык Pascal. Программа "Телефонный справочник"

Контрольная работа - Компьютеры, программирование

Другие контрольные работы по предмету Компьютеры, программирование

?ости разработки программ в середине 80-х годов была создана система программирования Турбо Паскаль. Слово Турбо в название системы программирования - это отражение торговой марки фирмы-изготовителя Вorland International, Inc (США).

 

Задание

 

Написать программу, которая позволяет найти нужные сведения в телефонном справочнике (а:\phone.txt). Программа должна запрашивать фамилию человека и выводить его телефон. Если в справочнике есть одинаковые фамилии, то программа должна вывести список всех людей, имеющих эти фамилии.

 

Блок-схема

 

Листинг программы

 

program kurs;

uses Crt;

type

RB=recordЗапись сведений

A,T,Y: string[10];

end;

var

D,M,i,k,z: integer; Sr,Sr0,max:real;

BookFile: file of RB; Переменная для файла с записями RecBook

Work: RB; Переменная для доступа к записям

Vid: Byte;

End_Menu:boolean;

Name,s: string[50];

procedure AddRec;Добавление записи в файл

begin

writeln(Ввод записи №,FilePos(BookFile)+1);

with Work do

begin

Write(Введите фамилию:);

Readln(A);

Write(Введите имя:);

Readln(Y);

Write(Введите телефон (32-22-12):);

Readln(T);

Write(BookFile, Work); end;

end;

procedure Create_Supplementing_library; Создание нового файла

var

Ind, Count:integer; begin Name:=A:\phone.txt;

Assign(BookFile, Name);Открыть новый файл для записи

Rewrite(BookFile);

Writeln(Создание записей файла , Name);

Write(Введите количество телефонов на станции: );

Readln(Count);

for Ind:=1 to count do

AddRec;

Writeln(Создание файла данных библиотеки завершена);

Writeln(Файл данных имеет , FileSize(BookFile), записи); close(BookFile);

end;

procedure OutputRec;

begin

With Work do

writeln(A, ,Y,,T);

end;

procedure OutputAllRec;

begin

clrscr;

Name:=A:\phone.txt;

Assign(BookFile, Name);

Reset(BookFile); clrscr; Seek(BookFile, 0);

Writeln( ФамилияТелефон);

writeln;

while (not Eof(BookFile)) do begin

With Work do begin

Read(BookFile, Work);

Outputrec; end;

end;end;

procedure FindTel;

begin

clrscr;

Name:=A:\phone.txt;

Assign(BookFile, Name);

Reset(BookFile);

writeln(Введите фамилию);

readln(s);

clrscr;

Seek(BookFile, 0);

Writeln( ФамилияТелефон);

writeln;

while (not Eof(BookFile)) do begin

With Work do begin

Read(BookFile, Work);

if s=a then begin Outputrec;z:=1;end;

end;

end;

if z=0 then writeln(В справочнике данных о ,s,е нет);

end;

begin

ClrScr;

End_Menu:=False; repeat textcolor(7);

Writeln(Выберите вид работы:);

Writeln( 1- создать новый файл данных);

Writeln( 2- вывод всей картотеки);

Writeln( 3- поиск телефона по фамилии);

Writeln( 0- завершение работы:);

Write(Ваш выбор:);

Readln(Vid);

case Vid of

1:Create_Supplementing_library;

2:OutputAllRec;

3:FindTel;

0:End_Menu:=True;

end;

writeln;

Writeln(Для продолжения нажмите Enter);

Readln;

ClrScr;

until End_Menu;

end.

 

Описание программы

 

Программа начинается стандартной строкой:

Program;

Далее следует описательная часть программы. Она состоит из нескольких разделов:

Процедура assign (ФайловаяПеременная, ИмяФайла) предшествует другим процедурам, т. к. ставит в соответствие физическому файлу на внешнем устройстве логический файл - файловую переменную, к которой впоследствии будут обращаться все другие файловые процедуры (связывает их). ИмяФайла должно представлять собой выражение строкового типа. Дальнейшие операции с переменной ФайловаяПеременная будут выполняться над физическим файлом ИмяФайла. Это полное имя внешнего файла, удовлетворяющее требованиям операционной системы MS-DOS. Процедуру assign недопустимо использовать для открытого файла. Прежде чем использовать файловую переменную повторно, необходимо закрыть файл с помощью процедуры close. После вызова assign связь файловой переменной с внешним файлом существует до тех пор, пока не будет выполнен другой assign для данной файловой переменной. Следовательно, файл можно повторно открыть без дополнительного использования процедуры assign даже после закрытия close.

Процедура reset (ФайловаяПеременная) открывает существующий файл на чтение (открывает входной файл) и ставит указатель на начало первого элемента файла. При отсутствии внешнего файла с указанным именем возникает сообщение об ошибке Error I: File not found (Ошибка 2: Файл не найден). Если при чтении файла возникнет необходимость вернуть указатель в его начало, достаточно будет просто применить процедуру reset к этому файлу еще раз.

Функция ioresult проверяет существование файла на диске. По умолчанию при всех обращениях к стандартным функциям и процедурам ввода/вывода, используемым при работе с файлами, автоматически производится проверка на наличие ошибок. Программист должен предусмотреть возможность ввода неверных исходных данных пользователем программы, например, имени файла, предназначенного для чтения. Это приведет к завершению работы программы, что нежелательно, особенно при вводе больших объемов данных. Использование директивы компилятора и стандартной функции ioresult в цикле repeat позволит программе корректно обработать эту исключительную ситуацию.

Процедура rewrite (ФайловаяПеременная) создает и открывает новый (выходной) файл для последующей записи данных. После ее успешного выполнения файл готов к записи в него первого элемента.

Обратите внимание - использование rewrite требует особой аккуратности. Если внешний файл с указанным именем уже существует, то он удаляется, и на его месте создается новый пустой файл с тем же именем. Для предотвращения потери информации на практике необходимо создавать резервные копии файлов, над которыми могут производиться опасные действия. Обычно им назначается расширение bak.

Процедура close (ФайловаяПеременная). Используя п?/p>