Банк рефератов содержит более 364 тысяч рефератов, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам: истории, психологии, экономике, менеджменту, философии, праву, экологии. А также изложения, сочинения по литературе, отчеты по практике, топики по английскому.
Полнотекстовый поиск
Всего работ:
364139
Теги названий
Разделы
Авиация и космонавтика (304)
Административное право (123)
Арбитражный процесс (23)
Архитектура (113)
Астрология (4)
Астрономия (4814)
Банковское дело (5227)
Безопасность жизнедеятельности (2616)
Биографии (3423)
Биология (4214)
Биология и химия (1518)
Биржевое дело (68)
Ботаника и сельское хоз-во (2836)
Бухгалтерский учет и аудит (8269)
Валютные отношения (50)
Ветеринария (50)
Военная кафедра (762)
ГДЗ (2)
География (5275)
Геодезия (30)
Геология (1222)
Геополитика (43)
Государство и право (20403)
Гражданское право и процесс (465)
Делопроизводство (19)
Деньги и кредит (108)
ЕГЭ (173)
Естествознание (96)
Журналистика (899)
ЗНО (54)
Зоология (34)
Издательское дело и полиграфия (476)
Инвестиции (106)
Иностранный язык (62791)
Информатика (3562)
Информатика, программирование (6444)
Исторические личности (2165)
История (21319)
История техники (766)
Кибернетика (64)
Коммуникации и связь (3145)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (588)
Краткое содержание произведений (1000)
Криминалистика (106)
Криминология (48)
Криптология (3)
Кулинария (1167)
Культура и искусство (8485)
Культурология (537)
Литература : зарубежная (2044)
Литература и русский язык (11657)
Логика (532)
Логистика (21)
Маркетинг (7985)
Математика (3721)
Медицина, здоровье (10549)
Медицинские науки (88)
Международное публичное право (58)
Международное частное право (36)
Международные отношения (2257)
Менеджмент (12491)
Металлургия (91)
Москвоведение (797)
Музыка (1338)
Муниципальное право (24)
Налоги, налогообложение (214)
Наука и техника (1141)
Начертательная геометрия (3)
Оккультизм и уфология (8)
Остальные рефераты (21692)
Педагогика (7850)
Политология (3801)
Право (682)
Право, юриспруденция (2881)
Предпринимательство (475)
Прикладные науки (1)
Промышленность, производство (7100)
Психология (8692)
психология, педагогика (4121)
Радиоэлектроника (443)
Реклама (952)
Религия и мифология (2967)
Риторика (23)
Сексология (748)
Социология (4876)
Статистика (95)
Страхование (107)
Строительные науки (7)
Строительство (2004)
Схемотехника (15)
Таможенная система (663)
Теория государства и права (240)
Теория организации (39)
Теплотехника (25)
Технология (624)
Товароведение (16)
Транспорт (2652)
Трудовое право (136)
Туризм (90)
Уголовное право и процесс (406)
Управление (95)
Управленческие науки (24)
Физика (3462)
Физкультура и спорт (4482)
Философия (7216)
Финансовые науки (4592)
Финансы (5386)
Фотография (3)
Химия (2244)
Хозяйственное право (23)
Цифровые устройства (29)
Экологическое право (35)
Экология (4517)
Экономика (20644)
Экономико-математическое моделирование (666)
Экономическая география (119)
Экономическая теория (2573)
Этика (889)
Юриспруденция (288)
Языковедение (148)
Языкознание, филология (1140)

Курсовая работа: Телефонный справочник

Название: Телефонный справочник
Раздел: Рефераты по информатике, программированию
Тип: курсовая работа Добавлен 11:43:33 30 октября 2008 Похожие работы
Просмотров: 803 Комментариев: 21 Оценило: 3 человек Средний балл: 5 Оценка: неизвестно     Скачать

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

дистанционная форма обучения

Кафедра автоматизированных систем управления (АСУ)

Программирование

Курсовой проект

«телефонный справочник»

Дата выполнения работы ___________________

Дата проверки ___________________

Оценка ___________________

И.О.Фамилия преподавателя ___________________

Подпись преподавателя ___________________


Содержание:

Содержание

Введение

Постановка задачи

Используемые методы

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

Заключение

Список литературы

Приложение 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;

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;

Процедура AddPhone – данная процедура добавляет запись. С помощью операторов Assign и Reset открываем файл phone.dat и устанавливаем указатель в первую позицию. С помощью операторов Writeln и Readln создаем интерфейс для ввода фамилии, имени, номера телефона с клавиатуры и записываем введенные значения в файл. Закрываемфайл.

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;

Процедура 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];

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;

Процедура EditPhone – редактирует запись. Работа данной процедуры аналогична работе процедуры DeletePhone. За исключением того, что во временный файл добавляется новая запись, полученная по средствам ввода с клавиатуры фамилии, имени, номера телефона.

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;

Процедура FindSurname – поиск по фамилии. Для работы данной процедуры нам потребуются дополнительные переменные:

· k – целого типа, в данной переменной будет хранится количество найденных записей;

· Nazv – строкового типа длинной 15 символов, в этой переменной будет храниться значение поля фамилии записи которую необходимо найти.

Переменной k присваиваем значение равное 0. С помощью операторов Assign и Reset открываем файл phone.dat и устанавливаем указатель в первую позицию. С помощью операторов Writeln и Readln создаем интерфейс для ввода фамилии (по фамилии мы будем искать в файле нужную нам запись) с клавиатуры, присваиваем введенное значение переменной Nazv. В цикле при помощи условного оператора сравниваем значение поля SurnameS со значением переменной Nazv и при совпадение выводим данную запись на экран, при каждом совпадении значение переменной k будет увеличиваться на единицу. Выводим значение переменной k на экран. Закрываем файл.

procedureFindSurname;

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;

Процедура FindPhone – поиск по номеру телефона. Работа данной процедуры аналогична работе процедуры FindSurname, за одним лишь исключением: сравнение идет по полю PhoneS, анепополю SurnameS.

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;

Процедура SortSurname – сортировка по фамилии. Данная процедура открывает файл phone.dat, далее в цикле переписывает все записи в массив а. Затем при помощи цикла и условного оператора сравнивает и сортирует записи в алфавитном порядке по полю Фамилия. Далее при помощи цикла выводит на экран уже отсортированные записи из массива.

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;

Процедуры 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, который в свою очередь должен находится в каталоге где установлен язык программирования TurboPascal.


Список литературы.

1. «Основы алгоритмизации и программирование», Е. Н. Сафьянова, учебное пособие, Томск, 2000 г.


Приложение 1. Листинг программы.

{Для корректной работы программы файл phone.dat

должен находиться в каталоге Phone, который в

свою очередь должен находится в каталоге где

установлен язык программирования TurboPascal}

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;

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;

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;

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;

begin

ClrScr;

PhoneMenu;

end.

Оценить/Добавить комментарий
Имя
Оценка
Комментарии:
Хватит париться. На сайте FAST-REFERAT.RU вам сделают любой реферат, курсовую или дипломную. Сам пользуюсь, и вам советую!
Никита13:21:52 02 ноября 2021
.
.13:21:51 02 ноября 2021
.
.13:21:50 02 ноября 2021
.
.13:21:49 02 ноября 2021
.
.13:21:49 02 ноября 2021

Смотреть все комментарии (21)
Работы, похожие на Курсовая работа: Телефонный справочник

Назад
Меню
Главная
Рефераты
Благодарности
Опрос
Станете ли вы заказывать работу за деньги, если не найдете ее в Интернете?

Да, в любом случае.
Да, но только в случае крайней необходимости.
Возможно, в зависимости от цены.
Нет, напишу его сам.
Нет, забью.



Результаты(287656)
Комментарии (4159)
Copyright © 2005-2021 HEKIMA.RU [email protected] реклама на сайте