Pascal archivo
Enviado por Gero Antony Gabriel LH Rocha • 28 de Noviembre de 2018 • Apuntes • 483 Palabras (2 Páginas) • 97 Visitas
program tp18ej1;
uses crt;
type
Alumno = record
curso: integer;
legajo: integer;
nya: String;
aportes: integer;
end;
Alumnos = file of Alumno;
Aporte = record
curso: integer;
legajo: integer;
monto: integer;
end;
Aportes = file of Aporte;
procedure cargarAlumnos(var f:Alumnos);
var
k: char;
registro: Alumno;
begin
reset(f);
writeLN('Desea ingresar otro alumno? ');
k:= readkey;
while(upcase(k)='S') do
begin
write('Ingrese curso: ');
readln(registro.curso);
write('Ingrese legajo: ');
readln(registro.legajo);
write('Ingrese nombre y apellido: ');
readln(registro.nya);
registro.aportes:=0;
write(f, registro);
writeLN('Desea ingresar otro alumno? ');
k:= readkey;
end;
close(f);
end;
procedure cargarAportes(var f:Aportes);
var
k: char;
registro: Aporte;
begin
reset(f);
write('Desea ingresar otro aporte? ');
k:= readkey;
while(upcase(k)='S') do
begin
write('Ingrese curso: ');
readln(registro.curso);
write('Ingrese legajo: ');
readln(registro.legajo);
write('Ingrese monto: ');
readln(registro.monto);
write(f, registro);
write('Desea ingresar otro aporte? ');
k:= readkey;
end;
close(f);
end;
procedure crearAlumnos(var f:Alumnos);
begin
{$I-}
reset(f);
if(IOResult <>0)then
begin
rewrite(f);
end;
close(f);
{$I+}
writeln('Proceso de creacion de archivo alumnos finalizado.');
end;
procedure crearAportes(var f:Aportes);
begin
{$I-}
reset(f);
if(IOResult <>0)then
begin
rewrite(f);
end;
close(f);
{$I+}
writeln('Proceso de creacion de archivo de aportes finalizado.');
end;
procedure visualizarAlumnos(var f: Alumnos);
var
registro:Alumno;
begin
reset(f);
while(not eof(f)) do
begin
read(f,registro);
write(registro.curso);
write(' ',registro.legajo);
write(' ',registro.nya);
writeln(' ',registro.aportes);
end;
close(f);
end;
procedure visualizarAportes(var f: Aportes);
var
registro:Aporte;
begin
reset(f);
while(not eof(f)) do
begin
read(f,registro);
write(' ',registro.curso);
write(' ',registro.legajo);
writeln(' ',registro.monto);
end;
close(f);
end;
procedure asignarArchivoAlumno(var archivo:Alumnos);
begin
assign(archivo,'Alumnos.dat');
end;
procedure actualizarAlumnos(var f: Alumnos; var g: Aportes);
var
archivoNuevoAlumnos: Alumnos;
registroAporte: Aporte;
registroAlumno: Alumno;
begin
//preparamos el archivo auxiliar
assign(archivoNuevoAlumnos, 'auxiliar.dat');
rewrite(archivoNuevoAlumnos);
reset(archivoNuevoAlumnos);
//ejecucion de la actualizacion en el archivo auxiliar.
reset(f);
while(not eof(f)) do
begin
read(f, registroAlumno);
registroAlumno.aportes:=0;
reset(g);
while(not eof(g)) do
begin
read(g, registroAporte);
if (registroAporte.legajo=registroAlumno.legajo) then
begin
registroAlumno.aportes := registroAlumno.aportes+registroAporte.monto;
end;
end;
close(g);
write(archivoNuevoAlumnos, registroAlumno);
end;
close(f);
close(archivoNuevoAlumnos);
end;
procedure generarInforme(var f: Alumnos);
var
registroAlumno: Alumno;
cursoAnterior: integer;
total: integer;
contribucion_total:integer;
begin
reset(f);
contribucion_total:=0;
total:=0;
cursoAnterior:=1;
writeln('Curso total');
while(not eof(f)) do
begin
read(f, registroAlumno);
if (cursoAnterior=registroAlumno.curso)then
begin
total:= total + registroAlumno.aportes;
end
else
begin
writeln(' ',cursoAnterior,' ',total);
contribucion_total:= contribucion_total+total;
total:=0;
total:= total + registroAlumno.aportes;
end;
cursoAnterior:=registroAlumno.curso;
end;
contribucion_total:= contribucion_total + total;
writeln(' ',cursoAnterior,' ',total);
writeln(' total ',contribucion_total);
close(f);
end;
var
archivoAlumnos: Alumnos;
archivoAportes: Aportes;
begin
asignarArchivoAlumno(archivoAlumnos);
crearAlumnos(archivoAlumnos);
assign(archivoAportes, 'aportes.dat');
crearAportes(archivoAportes);
cargarAlumnos(archivoAlumnos);
cargarAportes(archivoAportes);
actualizarAlumnos(archivoAlumnos, archivoAportes);
assign(archivoAlumnos, 'auxiliar.dat');
visualizarAlumnos(archivoAlumnos);
generarInforme(archivoAlumnos);
end.
...