Program
F1;
Uses
wincrt;
Type
Work=record
ceh:byte;
name:string[20];
pol:char;
zar:real;
vik:byte
end;
Var
z,p:Work;
f:file of
Work;
k,c:byte;
fam:string[20];
{Процедура вывода базы}
procedure
vivod;
begin
reset(f);
{открываем файл для чтения}
writeln(‘
Список работающих’);
while not (eof(f))
do {вывод на
экран содержимого файла}
begin
read(f,z);
write(z.ceh); gotoxy(10,wherey);
write(z.name);
gotoxy(30,wherey);
write(z.vik);
gotoxy(35,wherey);
write(z.zar:3:2);
gotoxy(45,wherey);
write(z.pol);
writeln;
end;
end;
Begin
assign(f,’work.dan’);
vivod; {вывод на экран базы}
Writeln(‘
КОРРЕКТИРОВКА’);
reset(f);
writeln(‘Введите номер цеха’);
readln(c);
writeln(‘Введите фамилию’);
readln(fam);
k:=0;
{признак равен 0, если запись не найдена,
1 –
запись найдена}
while
not(eof(f)) do
begin
read(f,p);
if (fam=p.name)and(c=p.ceh)
then {если номер цеха в записи и фамилия совпадают со значением запроса,
проводим корректировку}
begin
writeln(p.name, ‘ ‘,p.zar:4:2);
k:=1;
writeln(‘введите новую зарплату’);
readln(p.zar);
seek(f,filepos(f)-1); {перемещаем указатель файла на 1 вверх}
write(f,p); {записываем новую запись в файл}
end;
end;
if
k=0 then
writeln(‘запись не найдена’)
else
writeln(‘корректировка
проведена’);
vivod; {вывод на экран базы}
close(f);
End.
Program
F2;
Uses
crt;
Type
Work=record
ceh:byte;
name:string[20];
pol:char;
zar:real;
vik:byte
end;
Var
p:Work;
f:file of
Work;
k:byte;
fam:string[20];
Begin
Writeln(‘
Добавление данных в файл’);
assign(f,’work.dan’);
reset(f);
seek(f,filesize(f));
repeat
write(‘Введите цех’);
readln(p.ceh);
write(‘Введите Ф.И.О.’);
readln(p.name);
write(‘Введите пол’);
readln(p.pol);
write(‘Введите зарплату’);
readln(p.zar);
write(‘Введите
возраст’);
readln(p.vik);
write(f,p);
until
keypressed;
close(f);
End.
Program
F1;
Uses
wincrt;
Type
Work=record
ceh:byte;
name:string[20];
pol:char;
zar:real;
vik:byte
end;
Var
z,p:Work;
f:file of
Work;
k,c:byte;
fam:string[20];
nom:integer;
s:char;
{Процедура вывода базы}
procedure
vivod;
begin
reset(f);
{открываем файл для чтения}
writeln(‘
Список работающих’);
while not (eof(f))
do {вывод на
экран содержимого файла}
begin
read(f,z);
write(z.ceh); gotoxy(10,wherey);
write(z.name);
gotoxy(30,wherey);
write(z.vik);
gotoxy(35,wherey);
write(z.zar:3:2);
gotoxy(45,wherey);
write(z.pol);
writeln;
end;
end;
Begin
assign(f,’work.dan’);
vivod; {вывод на экран базы}
reset(f);
Writeln(‘
Удаление записи’);
writeln(‘Введите номер цеха’);
readln(c);
writeln(‘Введите фамилию’);
readln(fam);
k:=0;
{признак: найдена ли запись}
while
not(eof(f)) do
begin
read(f,p);
if (fam=p.name)and(c=p.ceh)
then {если номер цеха в записи и фамилия совпадают со значением запроса,
проводим удаление}
begin
writeln(p.ceh,‘ ‘,p.name,‘ ‘,
p.zar:4:2); {выводим поля записи}
k:=1; {запись с заданными параметрами найдена}
writeln(‘удалять ? (д/н)’);
readln(s);
if s=’д’
then
nom:=filepos(f)-1;
{запоминаем
номер записи, которую надо удалить}
seek(f,filesize(f)-1); {устанавливаем
указатель файла на последнюю запись}
read(f,p); {считываем последнюю
запись}
seek(f,nom); {устанавливаем
указатель файла на удаляемую запись}
write(f,p); {записываем вместо
удаляемой записи последнюю}
seek(f,filesize(f)-1); {устанавливаем
указатель файла на последнюю запись}
truncate(f);
{усекаем размер файла до
текущей позиции. Все элементы,
расположенные после текущей позиции
в файле, удаляются, и текущая позиция в
файле становится его концом}
end;
end;
if
k=0 then
writeln(‘запись
не найдена’)
else
writeln(‘запись
удалена ’);
vivod; {вывод на экран базы}
close(f);
End.
readln(p.zar);
readln(p.vik);
readln(p.ceh);
{и т.д.}
write(f,p);{запись новой инфы}
это я понимаю, но нужно чтобы пользователь не все менял, а одну, на выбор! Чтобы все поменять, я сам бы написалКод:readln(p.zar); readln(p.vik); readln(p.ceh); {и т.д.} write(f,p);{запись новой инфы}