49215 (Телефонный справочник), страница 2

2016-07-30СтудИзба

Описание файла

Документ из архива "Телефонный справочник", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "49215"

Текст 2 страницы из документа "49215"

writeln;

write('Нажмите любую клавишу...');

ReadKey;

end;

Процедуры SortAddress и SortPhone – работают аналогично процедуре SortSurname, только за одним исключением сравниваются и сортируются записи по полям адрес и номер телефона соответственно.

procedure SortAddress;

var i,j,c: integer;

tr: Phone;

begin

c:=0;

Assign(PhoneF,'Phone\phone.dat');

Reset(PhoneF);

ClrScr;

writeln('Сортировка по адресу:');

writeln;

while not Eof(PhoneF) do begin

inc(c,1);

read(PhoneF,a[c]);

end;

for i:=1 to c do

for j:=1 to c-1 do begin

if 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 begin

writeln;

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;

begin

c:=0;

Assign(PhoneF,'Phone\phone.dat');

Reset(PhoneF);

ClrScr;

writeln('Сортировка по адресу:');

writeln;

while not Eof(PhoneF) do begin

inc(c,1);

read(PhoneF,a[c]);

end;

for i:=1 to c do

for j:=1 to c-1 do begin

if 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 begin

writeln;

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;

begin

repeat

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;

begin

repeat

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;

begin

Assign(PhoneF,'Phone\phone.dat');

Reset(PhoneF);

ClrScr;

writeln('Все записи:');

writeln;

while not Eof(PhoneF) do

begin

PhoneR.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;

begin

Assign(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];

begin

Assign(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) do

begin

Read(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;

begin

Assign(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) do

begin

PhoneR.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;

begin

k:=0;

Assign(PhoneF,'Phone\phone.dat');

Reset(PhoneF);

ClrScr;

writeln('Поиск записи по Фамилии:');

writeln;

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

readln(Nazv);

while not Eof(PhoneF) do

begin

PhoneR.SurnameS:='';

PhoneR.NameS:='';

PhoneR.PhoneS:='';

PhoneR.AddressS:='';

read(PhoneF,PhoneR);

if PhoneR.SurnameS=Nazv then

begin

writeln;

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;

begin

k:=0;

Assign(PhoneF,'Phone\phone.dat');

Reset(PhoneF);

ClrScr;

writeln('Поиск записи по номеру телефона:');

writeln;

Write('Введите номер телефона:');

readln(Nazv);

while not Eof(PhoneF) do

begin

PhoneR.SurnameS:='';

PhoneR.NameS:='';

PhoneR.PhoneS:='';

PhoneR.AddressS:='';

read(PhoneF,PhoneR);

if PhoneR.PhoneS=Nazv then

begin

writeln;

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;

begin

c:=0;

Assign(PhoneF,'Phone\phone.dat');

Reset(PhoneF);

ClrScr;

writeln('Сортировка по Фамилии:');

writeln;

while not Eof(PhoneF) do begin

inc(c,1);

read(PhoneF,a[c]);

end;

for i:=1 to c do

for j:=1 to c-1 do begin

if 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 begin

writeln;

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;

begin

c:=0;

Assign(PhoneF,'Phone\phone.dat');

Reset(PhoneF);

ClrScr;

writeln('Сортировка по адресу:');

writeln;

while not Eof(PhoneF) do begin

inc(c,1);

read(PhoneF,a[c]);

end;

for i:=1 to c do

for j:=1 to c-1 do begin

if 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 begin

writeln;

write(a[i].SurnameS);

write(' ',a[i].NameS);

write('',a[i].PhoneS);

write('',a[i].AddressS);

end;

Close(PhoneF);

writeln;

writeln;

write('Нажмите любую клавишу...');

ReadKey;

end;

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5140
Авторов
на СтудИзбе
441
Средний доход
с одного платного файла
Обучение Подробнее