Código:
program ficheiros_alunos;
uses crt, windos;
Type registo=record
nome: string[40];
idade:integer;
peso:real;
end;
var ficheiro :File of registo;
aluno: registo;
quant, conta, req: integer;
S:array[0..200] of char;
opcao: char;
Procedure insere;
var opcao:char;
begin
Filesearch(s,'aluno.dat','');
if s[0] =#0 then
begin
writeln('o ficheiro nÆo existe e vai ser criado');
rewrite(ficheiro);
end
else
begin
writeln('o ficheiro ja existe e contem os seguintes registos: ');
reset(ficheiro);
while not Eof(ficheiro) do
begin
read(ficheiro,aluno);
writeln('Registo n: ' ,Filepos(ficheiro),' Nome: ',aluno.nome);
end;
writeln;
write('pretende (A)crescentar dados ou (E) eliminar o ficheiro e inicializar');
repeat
opcao:=readkey;
until (upcase(opcao)='A') or (upcase(opcao)='œ');
if upcase(opcao)='A' then reset(ficheiro)
else
begin
erase(ficheiro);
writeln('ficheiro eliminado');
rewrite(ficheiro);
writeln('ficheiro criado');
writeln('prima uma tecla para continuar');
clrscr;
end;
end;
writeln;
writeln;
write('Quantos registos pretende introduzir?: '); readln(quant);
writeln;
if quant <=0 then
begin
while not Eof(ficheiro) do
begin
read(ficheiro,aluno);
end;
for conta := 1 to quant do
begin
writeln('Registo n; ',filepos(ficheiro)+1);
write('Nome: '); readln(aluno.nome);
write('Idade: '); readln(aluno.idade);
write('Peso: '); readln(aluno.peso);
write(Ficheiro,aluno);
writeln;
end;
end;
write;
close (ficheiro);
writeln('Prima uma tecla para continuar');
readln;
end;
Procedure lista;
begin
reset(ficheiro);
writeln('O ficheiro cont, m ', filesize(ficheiro),'registos');
writeln;
while not Eof(ficheiro) do
begin
read(ficheiro,aluno);
writeln('Registo n:' , filepos(ficheiro));
writeln('Nome: ',aluno.nome,'Idade: ',aluno.idade,'Peso',aluno.peso:2:2);
write('---------------------------------------------------------');
if (filepos(ficheiro) mod 6)=0 then
begin
write('prime uma tecla para continuar');
readkey;
clrscr;
end;
end;
close(ficheiro);
writeln('prime qualquer tecla para continuar');
readkey;
end;
Procedure consulta;
begin
write('que registo pretende consultar?: '); readln(req);
if req <>0 then
begin
reset(ficheiro);
seek(ficheiro,req-1);
read(ficheiro,aluno);
writeln;
writeln('Registon: ', filepos(ficheiro));
writeln('Nome ',aluno.nome, 'Idade: ',aluno.idade,'Peso: ',aluno.peso:2:2);
writeln('---------------------------------------------------');
close(ficheiro);
end;
writeln('Prime qualquer tecla para continuar');
readln;
end;
Procedure altera;
var reg: integer;
begin
clrscr;
reset(ficheiro);
writeln('O ficheiro contem',filesize(ficheiro),'registos');
writeln;
while not Eof(ficheiro) do
begin
read(ficheiro,aluno);
writeln('registos n ',filepos(ficheiro),'Nome: ',aluno.nome);
end;
writeln;
write('Que registos pretende alterar?: ');
readln(req);
if (req>0) and (req=filesize(ficheiro)) then
begin
seek(ficheiro,req-1);
read(ficheiro,aluno);
writeln('informacao actual do registo n$',filepos(ficheiro));
writeln('-----------------------');
writeln('Nome: ',aluno.nome);
writeln('idade: ',aluno.idade);
writeln('Peso: ',aluno.peso:2:2);
writeln('-----------------------');
writeln;
seek(ficheiro,req-1);
writeln('novos dados');
writeln('-----------------------');
write('Nome: '); read(aluno.nome);
write('idade: '); read(aluno.idade);
write('Peso: '); read(aluno.peso);
writeln('-----------------------');
write(ficheiro,aluno);
end;
close(ficheiro);
writeln('Prima qualquer tecla para continuar');
readkey;
end;
Function desenha_menu: char;
Begin
clrscr;
writeln('*****Menu de opcoes*****');
writeln('------------------------');
writeln('1 - Inserir registos');
writeln('2 - Alterar um registo');
writeln('3 - Listagem de todos os registos');
writeln('4 - Consultar um registo');
writeln('5 - Sair');
writeln('------------------------');
write('Opcao: ');
repeat
opcao:=readkey;
until (upcase(opcao)='I') or (upcase(opcao)= 'A') or (upcase(opcao)='L') or (upcase(opcao)='C');
desenha_menu:=upcase(opcao);
end;
begin
clrscr;
assign(ficheiro,'aluno.dat');
repeat
opcao:=desenha_menu;
clrscr;
case opcao of
'I': Insere;
'A': Altera;
'L': Lista;
'C': Consulta;
end;
until opcao='S';
end.