Добавил:
3axap4uk_
brawlherry@gmail.com
Рыльский филиал МГТУ ГА.
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Практические / prakt12 / Program9
.pasPROGRAM KAD;
USES CRT;
var a: integer;
code:char;
n1:array[1..5] of string[20];
TYPE zap=RECORD
FAM: STRING[30];
GOD: 1900 ..2005;
END;
VAR F:FILE OF zap;
Z: ZAP;
D: INTEGER;
K, N ,I: INTEGER;
PROCEDURE CHTENIE;
BEGIN
D:=0;
ASSIGN (F,'KAD.DAT'); {процедура чтения из файла kad.dat}
RESET (F);
I:=1;
WHILE NOT EOF (F) DO
BEGIN
READ (F, Z);
SEEK (F, I);
I:=I+1;
D:=D+1;
WRITELN (D,' ',Z.FAM,' ', Z.GOD);
END;
CLOSE (F)
END;
PROCEDURE VVOD;{процедура ввода данных в поля записи и в файл}
BEGIN
WRITELN('СКОЛЬКО БУДЕМ ВВОДИТЬ ЗАПИСЕЙ?');
READLN (N);
FOR VAR I:=1 TO N DO
BEGIN
WRITELN ('ФАМИЛИЯ'); READLN (Z.FAM); {ввод данных}
WRITELN ('ГОД РОЖД.'); READLN (Z.GOD); { в запись }
WRITE(F,Z); {ввод записи в файл}
END; CLOSE (F);
END;
PROCEDURE NOVY; {процедура открытия файла для записи}
BEGIN
ASSIGN (F,'KAD.DAT');
REWRITE (F);
VVOD; {использование ранее описанной процедуры vvod}
END;
PROCEDURE DOPOLNENIE; {процедура дополнения записей в файл}
BEGIN
ASSIGN(F,'KAD.DAT');
RESET(F); {при таком открытии файла его содержимое не уничтожается}
SEEK (F,FILESIZE(F));
VVOD;
END;
PROCEDURE REDACH;
BEGIN
CHTENIE;
WRITELN('КАКУЮ ЗАПИСЬ РЕДАКТИРУЕМ?');
READ(I);
REPEAT
WRITELN('ЧТО РЕДАКТИРУЕМ?');
WRITELN(' 1 ФАМИЛИЯ');
WRITELN(' 2 ГОД РОЖД.');
WRITELN(' 3 ВЫХОД');
READLN(K);
ASSIGN(F, 'KAD.DAT');
RESET(F);
SEEK(F, I-1);
CASE K OF
1:BEGIN WRITE('РЕДАКТИРУЕМАЯ ФАМИЛИЯ: '); READ(Z.FAM); WRITE(F,Z);
end;
2:BEGIN WRITE('РЕДАКТИРУЕМЫЙ ГОД РОЖД.: '); READ(Z.GOD); WRITE(F,Z); END;
end;
until K=3;
CLOSE(F);
end;
procedure vv;
begin
textbackground(1);
textcolor(4);
gotoxy(30,10+i);
write (n1[i]);
textbackground(6);
textcolor(13);
gotoxy(30,10+i+a);
write(n1[i+a]);
end;
begin
{исполнимая часть программы}
clrscr; {очистка экрана}
n1[1]:=' НОВЫЙ ФАЙЛ ';
n1[2]:=' ЧТЕНИЕ ';
n1[3]:=' ДОПОЛНЕНИЕ ';
n1[4]:='РЕДАКТИРОВАНИЕ ';
n1[5]:=' ЗАКРЫТИЕ ';
i:=1;a:=3;vv;
gotoxy(30,12);
write(n1[2]);
gotoxy(30,13);
write(n1[3]);
gotoxy(30,14);
write(n1[4]);
gotoxy(30,15);
write(n1[5]);
repeat
code:=readkey; {считывание кода нажатой клавиши}
case code of
#38: if i=1 then
begin
i:=5;a:=-4;vv; end {вверх}else begin i:=i-1;a:=1;vv; end;
#40: if i=5 then
begin i:=1;a:=4;vv;end {вниз}else begin i:=i+1;a:=-1;vv; end;
#13: begin gotoxy(30,7); {Enter}
case i of
1:NOVY;
2:CHTENIE;
3:DOPOLNENIE;
4:REDACH;
5:EXIT;
end; end;
end;until code=#27;{ESC}textbackground(0); textcolor(8);
end.