Вот нужно написать программу Записная книжка, как можно быстрее! Условия программы:
Анкетные данные, адреса, телефоны, место работы или учебы, должность знакомых, коллег и родственников, характер знакомства, деловые качества и т.д. Автоматическое форматирование поздравления с днем рождения (по текущей дате). Упорядочение по алфавиту и по дате последней корректировки. Поиск по произвольному шаблону.
Предыдущую программу я тоже делал базой данных, так вот, надо ее подправить под записную книжку. Пожалуйста помогите!!!
Вот код программы из которой нужно сделать записную книжку:
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.