IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> ООП на Turbo Pascal, Переход от процедурного программирования к модульному.
сообщение
Сообщение #1


Бывалый
****

Группа: Пользователи
Сообщений: 318
Пол: Мужской

Репутация: -  0  +


Всем привет. Возникла такая проблема...Дана задача написать телефонный справочник на Турбо Паскале принципом Объектного Ориентированного Программирования.(модульное программирование). у меня есть листинг программы...но проблема в том что программа написанна вроде не принципом Объектного Ориентированного Программирования а процедурным... я незнаю как перевести этот код в Объектно Ориентированное программирование(модульное программирование) т.е. к проге наверно должны быть привязаны модули.

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


{Для корректной работы программы файл 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;
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.


Сообщение отредактировано: dron4ik -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.04.2024 23:46
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name