Помощь - Поиск - Пользователи - Календарь
Полная версия: Записная книжка
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
nesh
Все привет!
Вот нужно написать программу Записная книжка, как можно быстрее! Условия программы:
Анкетные данные, адреса, телефоны, место работы или учебы, должность знакомых, коллег и родственников, характер знакомства, деловые качества и т.д. Автоматическое форматирование поздравления с днем рождения (по текущей дате). Упорядочение по алфавиту и по дате последней корректировки. Поиск по произвольному шаблону.
Предыдущую программу я тоже делал базой данных, так вот, надо ее подправить под записную книжку. Пожалуйста помогите!!!
Вот код программы из которой нужно сделать записную книжку:

USES CRT;
TYPE PNODE=^NODE;
NODE=RECORD
POL:ARRAY[1..10]OF STRING;
NEXT:PNODE
END;
VAR P,PEND,PF,PN: PNODE;
S: STRING;
I,J: BYTE;
F: TEXT;
PROCEDURE SHOW(P:PNODE);
BEGIN
IF P<>NIL THEN
BEGIN
WRITE('POL: ',P^.POL[1],', ');
WRITE('NR: ',P^.POL[2],', ');
WRITE('DR: ',P^.POL[3],', ');
WRITE('O: ',P^.POL[4],', ');
WRITELN('TREB: ',P^.POL[5]);
SHOW(P^.NEXT)
END
END;
FUNCTION NIN(P:PNODE):BYTE;
BEGIN
IF P=NIL THEN
NIN:=0
ELSE
NIN:=1+NIN(P^.NEXT)
END;
BEGIN
NEW(PEND);
NEW(PF);
NEW(PN);
PF:=NIL;
PEND:=NIL;
ASSIGN(F,'O:\spis.TXT');
RESET(F);
REPEAT NEW(P);
IF PF=NIL THEN
BEGIN
PF:=P;
PEND:=P
END
ELSE
BEGIN
PEND^.NEXT:=P;
PEND:=P
END;
I:=0;
READLN(F,S);
REPEAT
I:=I+1
UNTIL S[I]=' ';
P^.POL[1]:=COPY(S,1,I-1);
J:=I;
REPEAT
I:=I+1
UNTIL S[I]=' ';
P^.POL[2]:=COPY(S,J+1,I-J-1);
J:=I;
REPEAT
I:=I+1
UNTIL S[I]=' ';
P^.POL[3]:=COPY(S,J+1,I-J-1);
J:=I;
REPEAT
I:=I+1
UNTIL S[I]=' ';
P^.POL[4]:=COPY(S,J+1,I-J-1);
P^.POL[5]:=COPY(S,I+1,LENGTH(S)-I)
UNTIL EOF(F);
REPEAT
CLRSCR;
WRITELN('1: +');
WRITELN('2: -');
WRITELN('3: FIND');
WRITELN('4: SHOW');
WRITELN('5: CLEAR');
WRITELN('ESC: EXIT');
CASE READKEY OF
'1':BEGIN
NEW(P);
CLRSCR;
WRITE('POL>');
READLN(P^.POL[1]);
WRITE('NR>');
READLN(P^.POL[2]);
WRITE('DR>');
READLN(P^.POL[3]);
WRITE('O>');
READLN(P^.POL[4]);
WRITE('TREB>');
READLN(P^.POL[5]);
IF PF=NIL THEN
BEGIN
PF:=P;
PEND:=P
END
ELSE
BEGIN
WRITE('N? >');
READLN(I);
IF I=1 THEN
BEGIN
P^.NEXT:=PF;
PF:=P
END
ELSE
IF I>NIN(PF) THEN
BEGIN
PEND^.NEXT:=P;
PEND:=P
END
ELSE
BEGIN
PN:=PF;
FOR J:=1 TO I-2 DO
PN:=PN^.NEXT;
P^.NEXT:=PN^.NEXT;
PN^.NEXT:=P
END
END
END;
'2':BEGIN
CLRSCR;
WRITE('N? >');
READLN(I);
IF I>NIN(PF) THEN
BEGIN
PN:=PF;
FOR J:=1 TO NIN(PF)-2 DO
PN:=PN^.NEXT;
PEND:=PN;
PEND^.NEXT:=NIL
END
ELSE
IF I=1 THEN
PF:=PF^.NEXT
ELSE
BEGIN
PN:=PF;
FOR I:=1 TO I-2 DO
PN:=PN^.NEXT;
PN^.NEXT:=PN^.NEXT^.NEXT
END
END;
'3':BEGIN
CLRSCR;
WRITE('POL?> ');
READLN(I);
WRITE('> ');
READLN(S);
PN:=PF;
REPEAT
IF PN^.POL[I]=S THEN
SHOW(PN);
PN:=PN^.NEXT
UNTIL PN=NIL;
READKEY
END;
'4':BEGIN
CLRSCR;
WRITELN('EMPTY');
GOTOXY(1,1);
SHOW(PF);
READKEY
END;
'5':PF:=NIL;
#27:HALT
END
UNTIL
FALSE
END.

nesh
Ну кто-нибудь мне поможет???
maksimla
а ты чтонибуть сделал както записную книшку что тебе тут непонятного

и за тебя некто нечего незделает
nesh
Помогите вот в этой программе:

program zap_kniga;
type TPhoneBook=record
nam: string[20];
surname: string[30];
phone: string[10];
end;
var F: file of TPhoneBook;
PhoneBook: TPhoneBook;
function Correct: boolean;
begin
writeln;
with PhoneBook do
begin
write('Enter name: ');
readln(Nam);
write('Enter surname: ');
readln(SurName);
write('Enter phone: ');
readln(Phone);
Correct:=(Nam<>'') and (SurName<>'') and (Phone<>'');
end;
end;
procedure CreateBook;
begin
assign(F,'d:\kniga.txt');
rewrite(F);
if IOresult=0 then
while Correct do
write(F, PhoneBook);
close(F);
end;
procedure Find;
var who: string[30];
found: boolean;
begin
write('What found?'); readln(who);
if who='' then exit;
found:=false;
assign(F,'d:\kniga.txt');
reset(F);
if IOresult=0 then
with PhoneBook do
while Not EOF(F) do
begin
read(F,PhoneBook);
if nam=who then
begin
writeln(Nam:30,SurName:30,Phone:10);
found:=true;
end;
end;
close(f);
if Not Found then
writeln(Who,' not found!');
end;
begin
CreateBook;
Find;
writeln(#13#10'Please press Enter');
readln;
end.


реализовать следующее: автоматическое поздровление с днем рождения (по текущей дате), упорядочение по алфавиту и по дате последней корректировки. Пожалуйста!!! smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.