Алгоритмический язык 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>