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

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

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

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

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

Текст из документа "49215"

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

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

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

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

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

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

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

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

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

Оценка ___________________

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

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

Содержание:

Содержание

Введение

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

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

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

Заключение

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

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

Введение:

Целью курсовой работы является углубление знаний и расширение навыков по разработке алгоритмов и их реализации на персональном компьютере.

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

Необходимо написать программу, которая будет работать с базой телефонных номеров. При этом программа должна уметь добавлять, изменять, удалять, искать записи. Также, для упрощения работы с программой, необходимо создать интуитивно понятный интерфейс.

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

В программе используется следующий алгоритм работы с данными: все данные хранятся в файле phone.dat и загружаются в программу при вызове той или иной процедуры. При удалении или изменении записи создается временный файл с именем temp.dat, в него записываются все данные из файла phone.dat кроме тех которые были удалены или записываются уже измененные данные, затем файл phone.dat удаляется, а файл temp.dat переименовывается в phone.dat.

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

Создадим запись 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 на экран. Закрываем файл.

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;

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

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