Ну вот. Не очень красиво конечно, но работает вроде как по замыслу, осталось только процедуру редактирования написать и дописать поиск.
Если кто-нибудь обнаружит дикие ошибки
сообщите пожалуйста.
Код
program DataBase;
uses crt;
const n=30;
type
STUD=record
NAME1 : string; {Имя}
NAME2 : string; {Фамилия}
NAME3 : string; {Отчество}
DOB : string; {Дата рождения}
HT : string; {Домашний телефон}
MT : string; {Мобильный телефон}
EMail : string; {E-mail адрес}
ICQ : string; {Номер ICQ}
end;
var
s : stud;
i,all : byte;
studs : array[1..n] of stud;
EndRec : boolean;
file_s : file of stud;
EndInput : boolean;
{-------------------------------------------------}
procedure menu; forward;
procedure search;
var nfind:byte;
lastname:string;
SearchPoint:boolean;
Begin
clrscr;
assign(file_s,'Data.dat');
reset(file_s);
writeln('Введите Фамилию для поиска :');
readln(lastname);
SearchPoint:=false;
i:=1;
nfind:=0;
while (not(eof(file_s)))and(not(SearchPoint)) do
begin
read(file_s,s);
with s do
if name2=lastname then
begin
nfind:=i;
SearchPoint:=True;
end;
inc(i);
end;
writeln('nfind=',nfind);
close(file_s);
repeat
keypressed;
until keypressed;
menu;
end;
{-------------------------------------------------}
procedure output;
Begin
clrscr;
writeln;
assign(file_s,'Data.dat');
reset(file_s);
i:=1;
while (not(eof(file_s))) do
begin
read(file_s,s);
with s do
begin
writeln(i,'-й студент :');
write('ФИО : ');writeln(name2,' ',name1,' ',name3);
write('Дата рождения :');writeln(dob);
write('Домашний телефон :');writeln(ht);
write('Мобилный телефон :');writeln(mt);
write('ICQ : ');writeln(icq);
write('E-mail : ');writeln(email);
writeln;
inc(i);
end;
end;
close(file_s);
repeat
keypressed;
until keypressed;
menu;
end;
{-------------------------------------------------}
procedure if_next;
var ch:char;
Begin
writeln('Будете вводить еще студента [Y/N] ?');
repeat
ch:=upcase(readkey);
until (ch in ['Y','N']);
clrscr;
if ch in ['Y'] then
begin
inc(i);
inc(all);
EndRec:=true;
end
else
begin
close(file_s);
exit;
EndInput:=true;
end;
end;
{--------------------------------------------------}
procedure rewr; forward;
procedure menu;
var ch:char;
begin
clrscr;
writeln('Выберите номер из пункта меню');
writeln;
writeln('1). Просмотр информации');
writeln('2). Поиск');
writeln('3). Редактирование');
writeln('4). Выход');
repeat
ch:=readkey;
until ch in ['1','2','3','4'];
case ch of
'1': output;
'2': search;
'3': rewr;
'4': exit;
end;
end;
{--------------------------------------------------}
procedure rewr;
begin
writeln('тут что-то будет');
repeat keypressed;
until keypressed;
menu;
end;
{--------------------------------------------------}
Begin
clrscr;
assign(file_s,'Data.dat');
reset(file_s);
if not(IOResult<>0) then
begin
close(file_s);
menu;
end
else
begin
assign(file_s,'Data.dat');
rewrite(file_s);
i:=1;
all:=1;
EndRec:=true;
while (i<=n)and(EndRec) do
with s do
begin
writeln('Введите информацию для ',i,'-го студента');
write('Введите Имя : ');readln(name1);
write('Введите Фамилию : ');readln(name2);
write('Введите Отчество :');readln(name3);
writeln('Введите Дату Рождения');
readln(DOB);
writeln('Введите Номер Домашнего Телефона');
readln(HT);
writeln('Введите Номер Мобильного Телефона');
readln(MT);
writeln('Введите E-mail Адрес');
readln(EMail);
writeln('Введите Номер ICQ');
readln(ICQ);
studs[i]:=s;
write(file_s,s);
EndRec:=false;
if_next;
end;
end;
End.