|
Телефонный справочник
Телефонный справочник
2 ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) дистанционная форма обучения Кафедра автоматизированных систем управления (АСУ) Программирование Курсовой проект «телефонный справочник» Дата выполнения работы ___________________ Дата проверки ___________________Оценка ___________________И.О.Фамилия преподавателя ___________________Подпись преподавателя ___________________Содержание:СодержаниеВведениеПостановка задачиИспользуемые методыОписание алгоритма программыЗаключениеСписок литературыПриложение 1. Листинг программыВведение:Целью курсовой работы является углубление знаний и расширение навыков по разработке алгоритмов и их реализации на персональном компьютере.Постановка задачи:Необходимо написать программу, которая будет работать с базой телефонных номеров. При этом программа должна уметь добавлять, изменять, удалять, искать записи. Также, для упрощения работы с программой, необходимо создать интуитивно понятный интерфейс.1. Используемые методы:В программе используется следующий алгоритм работы с данными: все данные хранятся в файле phone.dat и загружаются в программу при вызове той или иной процедуры. При удалении или изменении записи создается временный файл с именем temp.dat, в него записываются все данные из файла phone.dat кроме тех которые были удалены или записываются уже измененные данные, затем файл phone.dat удаляется, а файл temp.dat переименовывается в phone.dat.2. Описание алгоритма программы.Создадим запись Phone, в этой записи создадим четыре поля с именами:· SurnameS - строкового типа длинной 15 символов, данное поле будет содержать фамилию;· NameS - строкового типа длинной 15 символов, данное поле будет содержать имя;· PhoneS - строкового типа длинной 15 символов, данное поле будет содержать номер телефон.· AddressS - строкового типа длинной 50 символов, данное поле будет содержать адрес.Создадим переменные:· PhoneF - файлового типа, для работы с файлами данных;· PhoneR - произвольного типа (Phone), для работы с данными.· а - массив от 1 до 600 типа Phone, данный массив будет необходим для организации сортировки записей.Процедура WritePhone - данная процедура выводит все записи из файла phone.dat на экран. При помощи оператора Assign устанавливается связь между файлом и переменной файлового типа PhoneF. С помощью команды Reset открываем файл для чтения и переводим указатель в первую позицию. Далее создаем цикл размером от первой позиции в файле до последней, в этом цикле выводим на экран значение полей: фамилия, имя, номер телефона при помощи оператора Writeln. Закрываем файл при помощи оператора Close, это необходимо для того, чтобы другие процедуры могли с ним работать.procedure WritePhone;beginAssign(PhoneF,'Phone\phone.dat');Reset(PhoneF);ClrScr;writeln('Все записи:');writeln;while not Eof(PhoneF) dobeginPhoneR.SurnameS:='';PhoneR.NameS:='';PhoneR.PhoneS:='';PhoneR.AddressS:='';read(PhoneF,PhoneR);writeln;write(PhoneR.SurnameS);write(' ',PhoneR.NameS);write('',PhoneR.PhoneS);write('',PhoneR.AddressS);end;Close(PhoneF);writeln;writeln;write('Нажмите любую клавишу...');ReadKey;end;Процедура AddPhone - данная процедура добавляет запись. С помощью операторов Assign и Reset открываем файл phone.dat и устанавливаем указатель в первую позицию. С помощью операторов Writeln и Readln создаем интерфейс для ввода фамилии, имени, номера телефона с клавиатуры и записываем введенные значения в файл. Закрываем файл.procedure AddPhone;beginAssign(PhoneF,'Phone\phone.dat');Reset(PhoneF);while not Eof(PhoneF) do Read(PhoneF,PhoneR);PhoneR.SurnameS:='';PhoneR.NameS:='';PhoneR.PhoneS:='';PhoneR.AddressS:='';ClrScr;writeln('Добавление записи:');writeln;Write('Введите Фамилию:');readln(PhoneR.SurnameS);write('Введите Имя:');readln(PhoneR.NameS);write('Введите номер телефона:');readln(PhoneR.PhoneS);write('Введите адрес:');readln(PhoneR.AddressS);write(PhoneF,PhoneR);Close(PhoneF);writeln;writeln('Запись успешно добавлена в базу!!!');writeln;write('Нажмите любую клавишу...');ReadKey;end;Процедура DeletePhone - удаляет запись. Для работы данной процедуры нам потребуются дополнительные переменные:· temp - файлового типа, в данной переменной будут хранится измененные данные;· Nazv - строкового типа длинной 15 символов, в этой переменной будет храниться значение поля фамилии записи которую необходимо удалить.С помощью операторов Assign и Reset открываем файл phone.dat и устанавливаем указатель в первую позицию. С помощью операторов Assign и Reset создаем временный файл temp.dat и устанавливаем указатель в первую позицию. С помощью операторов Writeln и Readln создаем интерфейс для ввода фамилии (по фамилии мы будем искать в файле нужную нам запись) с клавиатуры, присваиваем введенное значение переменной Nazv. Далее в цикле при помощи условного оператора сравниваем поочередно значение поля SurnameS переменной PhoneF со значением переменной Nazv, если значение не совпадают то данная запись записывается в файл temp.dat, иначе пропускается. В результате имеем два файла с удаленной и не удаленной записью, закрываем оба файла. Удаляем файл phone.dat при помощи оператора Erase, а файл temp.dat переименовываем в phone.dat при помощи оператора Rename.procedure DeletePhone;var temp : file of Phone;Nazv : string[15];beginAssign(PhoneF,'Phone\phone.dat');Reset(PhoneF);Assign(temp,'Phone\temp.dat');Rewrite(temp);PhoneR.SurnameS:='';PhoneR.NameS:='';PhoneR.PhoneS:='';PhoneR.AddressS:='';ClrScr;writeln('Удаление записи:');writeln;Write('Введите Фамилию:');readln(Nazv);while not Eof(PhoneF) dobeginRead(PhoneF,PhoneR);if PhoneR.SurnameS<>Nazv then Write(temp,PhoneR);end;Close(temp);Close(PhoneF);Erase(PhoneF);Rename(temp,'Phone\phone.dat');writeln;writeln('Запись успешно удалена из базы!!!');writeln;write('Нажмите любую клавишу...');ReadKey;end;Процедура EditPhone - редактирует запись. Работа данной процедуры аналогична работе процедуры DeletePhone. За исключением того, что во временный файл добавляется новая запись, полученная по средствам ввода с клавиатуры фамилии, имени, номера телефона.procedure EditPhone;var Nazv : string[15];temp : file of Phone;beginAssign(PhoneF,'Phone\phone.dat');Reset(PhoneF);Assign(temp,'Phone\temp.dat');Rewrite(temp);PhoneR.SurnameS:='';PhoneR.NameS:='';PhoneR.PhoneS:='';PhoneR.AddressS:='';ClrScr;writeln('Редактирование записи:');writeln;Write('Введите Фамилию, которую хотите изменить:');readln(Nazv);while not Eof(PhoneF) dobeginPhoneR.SurnameS:='';PhoneR.NameS:='';PhoneR.PhoneS:='';PhoneR.AddressS:='';Read(PhoneF,PhoneR);if PhoneR.SurnameS<>Nazv then Write(temp,PhoneR);end;writeln;write('Введите новую Фамилию:');readln(PhoneR.SurnameS);write('Введите новое Имя:');readln(PhoneR.NameS);write('Введите новый номер телефона:');readln(PhoneR.PhoneS);write('Введите новый адрес:');readln(PhoneR.AddressS);write(temp,PhoneR);Close(temp);Close(PhoneF);Erase(PhoneF);Rename(temp,'Phone\phone.dat');writeln;writeln('Запись успешно изменена!!!');writeln;write('Нажмите любую клавишу...');ReadKey;end;Процедура FindSurname - поиск по фамилии. Для работы данной процедуры нам потребуются дополнительные переменные:· k - целого типа, в данной переменной будет хранится количество найденных записей;· Nazv - строкового типа длинной 15 символов, в этой переменной будет храниться значение поля фамилии записи которую необходимо найти.Переменной k присваиваем значение равное 0. С помощью операторов Assign и Reset открываем файл phone.dat и устанавливаем указатель в первую позицию. С помощью операторов Writeln и Readln создаем интерфейс для ввода фамилии (по фамилии мы будем искать в файле нужную нам запись) с клавиатуры, присваиваем введенное значение переменной Nazv. В цикле при помощи условного оператора сравниваем значение поля SurnameS со значением переменной Nazv и при совпадение выводим данную запись на экран, при каждом совпадении значение переменной k будет увеличиваться на единицу. Выводим значение переменной k на экран. Закрываем файл.procedure FindSurname;var Nazv : string[15];k : integer;begink:=0;Assign(PhoneF,'Phone\phone.dat');Reset(PhoneF);ClrScr;writeln('Поиск записи по Фамилии:');writeln;Write('Введите Фамилию:');readln(Nazv);while not Eof(PhoneF) dobeginPhoneR.SurnameS:='';PhoneR.NameS:='';PhoneR.PhoneS:='';PhoneR.AddressS:='';read(PhoneF,PhoneR);if PhoneR.SurnameS=Nazv thenbeginwriteln;write(PhoneR.SurnameS);write(' ',PhoneR.NameS);write('',PhoneR.PhoneS);write('',PhoneR.AddressS);k:=k+1;end;end;Close(PhoneF);writeln;writeln;writeln('Поиск завершен, найдено записей: ',k);writeln;write('Нажмите любую клавишу...');ReadKey;end;Процедура FindPhone - поиск по номеру телефона. Работа данной процедуры аналогична работе процедуры FindSurname, за одним лишь исключением: сравнение идет по полю PhoneS, а не по полю SurnameS.procedure FindPhone;var Nazv : string[15];k : integer;begink:=0;Assign(PhoneF,'Phone\phone.dat');Reset(PhoneF);ClrScr;writeln('Поиск записи по номеру телефона:');writeln;Write('Введите номер телефона:');readln(Nazv);while not Eof(PhoneF) dobeginPhoneR.SurnameS:='';PhoneR.NameS:='';PhoneR.PhoneS:='';PhoneR.AddressS:='';read(PhoneF,PhoneR);if PhoneR.PhoneS=Nazv thenbeginwriteln;write(PhoneR.SurnameS);write(' ',PhoneR.NameS);write('',PhoneR.PhoneS);write('',PhoneR.AddressS);k:=k+1;end;end;Close(PhoneF);writeln;writeln;writeln('Поиск завершен, найдено записей: ',k);writeln;write('Нажмите любую клавишу...');ReadKey;end;Процедура SortSurname - сортировка по фамилии. Данная процедура открывает файл phone.dat, далее в цикле переписывает все записи в массив а. Затем при помощи цикла и условного оператора сравнивает и сортирует записи в алфавитном порядке по полю Фамилия. Далее при помощи цикла выводит на экран уже отсортированные записи из массива.procedure SortSurname;var i,j,c: integer;tr: Phone;beginc:=0;Assign(PhoneF,'Phone\phone.dat');Reset(PhoneF);ClrScr;writeln('Сортировка по Фамилии:');writeln;while not Eof(PhoneF) do begininc(c,1);read(PhoneF,a[c]);end;for i:=1 to c dofor j:=1 to c-1 do beginif a[j].SurnameS>a[j+1].SurnameS then begin tr:=a[j+1]; a[j+1]:=a[j]; a[j]:=tr;end;end;for i:=1 to c do beginwriteln;write(a[i].SurnameS);write(' ',a[i].NameS);write('',a[i].PhoneS);write('',a[i].AddressS);end;Close(PhoneF);writeln;writeln;write('Нажмите любую клавишу...');ReadKey;end;Процедуры SortAddress и SortPhone - работают аналогично процедуре SortSurname, только за одним исключением сравниваются и сортируются записи по полям адрес и номер телефона соответственно.procedure SortAddress;var i,j,c: integer;tr: Phone;beginc:=0;Assign(PhoneF,'Phone\phone.dat');Reset(PhoneF);ClrScr;writeln('Сортировка по адресу:');writeln;while not Eof(PhoneF) do begininc(c,1);read(PhoneF,a[c]);end;for i:=1 to c dofor j:=1 to c-1 do beginif a[j].AddressS>a[j+1].AddressS then begin tr:=a[j+1]; a[j+1]:=a[j]; a[j]:=tr;end;end;for i:=1 to c do beginwriteln;write(a[i].SurnameS);write(' ',a[i].NameS);write('',a[i].PhoneS);write('',a[i].AddressS);end;Close(PhoneF);writeln;writeln;write('Нажмите любую клавишу...');ReadKey;end;procedure SortPhone;var i,j,c: integer;tr: Phone;beginc:=0;Assign(PhoneF,'Phone\phone.dat');Reset(PhoneF);ClrScr;writeln('Сортировка по адресу:');writeln;while not Eof(PhoneF) do begininc(c,1);read(PhoneF,a[c]);end;for i:=1 to c dofor j:=1 to c-1 do beginif a[j].PhoneS>a[j+1].PhoneS then begin tr:=a[j+1]; a[j+1]:=a[j]; a[j]:=tr;end;end;for i:=1 to c do beginwriteln;write(a[i].SurnameS);write(' ',a[i].NameS);write('',a[i].PhoneS);write('',a[i].AddressS);end;Close(PhoneF);writeln;writeln;write('Нажмите любую клавишу...');ReadKey;end;Процедура SortType - подменю сортировки. Данная процедура при помощи операторов Writeln и Readln создает подменю сортировки, для удобства работы с программой конечного пользователя. В меню присутствуют следующие пункты:· 1. Не сортировать - вызывает процедуру WritePhone;· 2. Сортировать по Фамилии - вызывает процедуру SortSurname;· 3. Сортировать по адресу - вызывает процедуру SortAddress;· 4. Сортировать по номеру телефона - вызывает процедуру SortPhone;· 5. Возврат в главное меню - возвращается к главному меню;procedure SortType;var b: integer;beginrepeat begin ClrScr; writeln('"Телефонный справочник" - меню сортировки'); writeln; writeln('1. Не сортировать'); writeln('2. Сортировать по Фамилии'); writeln('3. Сортировать по адресу'); writeln('4. Сортировать по номеру телефона'); writeln('----------------------------'); writeln('5. Возврат в главное меню'); writeln; write('Выберите пункт меню: '); readln(b); case b of 1 : WritePhone; 2 : SortSurname; 3 : SortAddress; 4 : SortPhone; end; end;until b=5;end;Процедура PhoneMenu - меню. Данная процедура при помощи операторов Writeln и Readln создает меню, для удобства работы с программой конечного пользователя. В меню присутствуют следующие пункты:· 1. Показать все записи - вызывает процедуру WritePhone;· 2. Добавить запись - вызывает процедуру AddPhone;· 3. Удалить запись - вызывает процедуру DeletePhone;· 4. Редактировать запись - вызывает процедуру EditPhone;· 5. Поиск по Фамилии - вызывает процедуру FindSurname;· 6. Поиск по номеру телефона - вызывает процедуру FindPhone;· 7. Выход - завершает работу программы;procedure PhoneMenu;var b: integer;beginrepeat begin ClrScr; writeln('"Телефонный справочник" - Главное меню'); writeln; writeln('1. Показать все записи'); writeln('2. Добавить запись'); writeln('3. Удалить запись'); writeln('4. Редактировать запись'); writeln('5. Поиск по Фамилии'); writeln('6. Поиск по номеру телефона'); writeln('----------------------------'); writeln('7. Выход'); writeln; write('Выберите пункт меню: '); readln(b); case b of 1 : SortType; 2 : AddPhone; 3 : DeletePhone; 4 : EditPhone; 5 : FindSurname; 6 : FindPhone; end; end;until b=7;end;В основной программе происходит очистка экрана при помощи оператора ClrScr и вызывается процедура PhoneMenu.begin ClrScr; PhoneMenu;end.ЗаключениеДанная программа продемонстрировала хорошую работоспособность. Имеет интуитивно понятный интерфейс и не должна вызывать затруднений в работе конечного пользователя. Для корректной работы программы файл phone.dat должен находиться в каталоге Phone, который в свою очередь должен находится в каталоге где установлен язык программирования Turbo Pascal.Список литературы.1. «Основы алгоритмизации и программирование», Е. Н. Сафьянова, учебное пособие, Томск, 2000 г.Приложение 1. Листинг программы.{Для корректной работы программы файл phone.datдолжен находиться в каталоге Phone, который всвою очередь должен находится в каталоге гдеустановлен язык программирования Turbo Pascal}program Phonebook;uses Crt;type Phone = record SurnameS : string[15]; NameS : string[15]; PhoneS : string[15]; AddressS: string[50]; end;var PhoneF : file of Phone;PhoneR : Phone;a : array[1..600] of Phone;procedure WritePhone;beginAssign(PhoneF,'Phone\phone.dat');Reset(PhoneF);ClrScr;writeln('Все записи:');writeln;while not Eof(PhoneF) dobeginPhoneR.SurnameS:='';PhoneR.NameS:='';PhoneR.PhoneS:='';PhoneR.AddressS:='';read(PhoneF,PhoneR);writeln;write(PhoneR.SurnameS);write(' ',PhoneR.NameS);write('',PhoneR.PhoneS);write('',PhoneR.AddressS);end;Close(PhoneF);writeln;writeln;write('Нажмите любую клавишу...');ReadKey;end;procedure AddPhone;beginAssign(PhoneF,'Phone\phone.dat');Reset(PhoneF);while not Eof(PhoneF) do Read(PhoneF,PhoneR);PhoneR.SurnameS:='';PhoneR.NameS:='';PhoneR.PhoneS:='';PhoneR.AddressS:='';ClrScr;writeln('Добавление записи:');writeln;Write('Введите Фамилию:');readln(PhoneR.SurnameS);write('Введите Имя:');readln(PhoneR.NameS);write('Введите номер телефона:');readln(PhoneR.PhoneS);write('Введите адрес:');readln(PhoneR.AddressS);write(PhoneF,PhoneR);Close(PhoneF);writeln;writeln('Запись успешно добавлена в базу!!!');writeln;write('Нажмите любую клавишу...');ReadKey;end;procedure DeletePhone;var temp : file of Phone;Nazv : string[15];beginAssign(PhoneF,'Phone\phone.dat');Reset(PhoneF);Assign(temp,'Phone\temp.dat');Rewrite(temp);PhoneR.SurnameS:='';PhoneR.NameS:='';PhoneR.PhoneS:='';PhoneR.AddressS:='';ClrScr;writeln('Удаление записи:');writeln;Write('Введите Фамилию:');readln(Nazv);while not Eof(PhoneF) dobeginRead(PhoneF,PhoneR);if PhoneR.SurnameS<>Nazv then Write(temp,PhoneR);end;Close(temp);Close(PhoneF);Erase(PhoneF);Rename(temp,'Phone\phone.dat');writeln;writeln('Запись успешно удалена из базы!!!');writeln;write('Нажмите любую клавишу...');ReadKey;end;procedure EditPhone;var Nazv : string[15];temp : file of Phone;beginAssign(PhoneF,'Phone\phone.dat');Reset(PhoneF);Assign(temp,'Phone\temp.dat');Rewrite(temp);PhoneR.SurnameS:='';PhoneR.NameS:='';PhoneR.PhoneS:='';PhoneR.AddressS:='';ClrScr;writeln('Редактирование записи:');writeln;Write('Введите Фамилию, которую хотите изменить:');readln(Nazv);while not Eof(PhoneF) dobeginPhoneR.SurnameS:='';PhoneR.NameS:='';PhoneR.PhoneS:='';PhoneR.AddressS:='';Read(PhoneF,PhoneR);if PhoneR.SurnameS<>Nazv then Write(temp,PhoneR);end;writeln;write('Введите новую Фамилию:');readln(PhoneR.SurnameS);write('Введите новое Имя:');readln(PhoneR.NameS);write('Введите новый номер телефона:');readln(PhoneR.PhoneS);write('Введите новый адрес:');readln(PhoneR.AddressS);write(temp,PhoneR);Close(temp);Close(PhoneF);Erase(PhoneF);Rename(temp,'Phone\phone.dat');writeln;writeln('Запись успешно изменена!!!');writeln;write('Нажмите любую клавишу...');ReadKey;end;procedure FindSurname;var Nazv : string[15];k : integer;begink:=0;Assign(PhoneF,'Phone\phone.dat');Reset(PhoneF);ClrScr;writeln('Поиск записи по Фамилии:');writeln;Write('Введите Фамилию:');readln(Nazv);while not Eof(PhoneF) dobeginPhoneR.SurnameS:='';PhoneR.NameS:='';PhoneR.PhoneS:='';PhoneR.AddressS:='';read(PhoneF,PhoneR);if PhoneR.SurnameS=Nazv thenbeginwriteln;write(PhoneR.SurnameS);write(' ',PhoneR.NameS);write('',PhoneR.PhoneS);write('',PhoneR.AddressS);k:=k+1;end;end;Close(PhoneF);writeln;writeln;writeln('Поиск завершен, найдено записей: ',k);writeln;write('Нажмите любую клавишу...');ReadKey;end;procedure FindPhone;var Nazv : string[15];k : integer;begink:=0;Assign(PhoneF,'Phone\phone.dat');Reset(PhoneF);ClrScr;writeln('Поиск записи по номеру телефона:');writeln;Write('Введите номер телефона:');readln(Nazv);while not Eof(PhoneF) dobeginPhoneR.SurnameS:='';PhoneR.NameS:='';PhoneR.PhoneS:='';PhoneR.AddressS:='';read(PhoneF,PhoneR);if PhoneR.PhoneS=Nazv thenbeginwriteln;write(PhoneR.SurnameS);write(' ',PhoneR.NameS);write('',PhoneR.PhoneS);write('',PhoneR.AddressS);k:=k+1;end;end;Close(PhoneF);writeln;writeln;writeln('Поиск завершен, найдено записей: ',k);writeln;write('Нажмите любую клавишу...');ReadKey;end;procedure SortSurname;var i,j,c: integer;tr: Phone;beginc:=0;Assign(PhoneF,'Phone\phone.dat');Reset(PhoneF);ClrScr;writeln('Сортировка по Фамилии:');writeln;while not Eof(PhoneF) do begininc(c,1);read(PhoneF,a[c]);end;for i:=1 to c dofor j:=1 to c-1 do beginif a[j].SurnameS>a[j+1].SurnameS then begin tr:=a[j+1]; a[j+1]:=a[j]; a[j]:=tr;end;end;for i:=1 to c do beginwriteln;write(a[i].SurnameS);write(' ',a[i].NameS);write('',a[i].PhoneS);write('',a[i].AddressS);end;Close(PhoneF);writeln;writeln;write('Нажмите любую клавишу...');ReadKey;end;procedure SortAddress;var i,j,c: integer;tr: Phone;beginc:=0;Assign(PhoneF,'Phone\phone.dat');Reset(PhoneF);ClrScr;writeln('Сортировка по адресу:');writeln;while not Eof(PhoneF) do begininc(c,1);read(PhoneF,a[c]);end;for i:=1 to c dofor j:=1 to c-1 do beginif a[j].AddressS>a[j+1].AddressS then begin tr:=a[j+1]; a[j+1]:=a[j]; a[j]:=tr;end;end;for i:=1 to c do beginwriteln;write(a[i].SurnameS);write(' ',a[i].NameS);write('',a[i].PhoneS);write('',a[i].AddressS);end;Close(PhoneF);writeln;writeln;write('Нажмите любую клавишу...');ReadKey;end;procedure SortPhone;var i,j,c: integer;tr: Phone;beginc:=0;Assign(PhoneF,'Phone\phone.dat');Reset(PhoneF);ClrScr;writeln('Сортировка по адресу:');writeln;while not Eof(PhoneF) do begininc(c,1);read(PhoneF,a[c]);end;for i:=1 to c dofor j:=1 to c-1 do beginif a[j].PhoneS>a[j+1].PhoneS then begin tr:=a[j+1]; a[j+1]:=a[j]; a[j]:=tr;end;end;for i:=1 to c do beginwriteln;write(a[i].SurnameS);write(' ',a[i].NameS);write('',a[i].PhoneS);write('',a[i].AddressS);end;Close(PhoneF);writeln;writeln;write('Нажмите любую клавишу...');ReadKey;end;procedure SortType;var b: integer;beginrepeat begin ClrScr; writeln('"Телефонный справочник" - меню сортировки'); writeln; writeln('1. Не сортировать'); writeln('2. Сортировать по Фамилии'); writeln('3. Сортировать по адресу'); writeln('4. Сортировать по номеру телефона'); writeln('----------------------------'); writeln('5. Возврат в главное меню'); writeln; write('Выберите пункт меню: '); readln(b); case b of 1 : WritePhone; 2 : SortSurname; 3 : SortAddress; 4 : SortPhone; end; end;until b=5;end;procedure PhoneMenu;var b: integer;beginrepeat begin ClrScr; writeln('"Телефонный справочник" - Главное меню'); writeln; writeln('1. Показать все записи'); writeln('2. Добавить запись'); writeln('3. Удалить запись'); writeln('4. Редактировать запись'); writeln('5. Поиск по Фамилии'); writeln('6. Поиск по номеру телефона'); writeln('----------------------------'); writeln('7. Выход'); writeln; write('Выберите пункт меню: '); readln(b); case b of 1 : SortType; 2 : AddPhone; 3 : DeletePhone; 4 : EditPhone; 5 : FindSurname; 6 : FindPhone; end; end;until b=7;end;begin ClrScr; PhoneMenu;end.
|
|