program ejercicio6;
uses
tad_fijo, sysutils;
procedure leer_info(var reg : tPersona);
var
ok : char;
begin
repeat
begin
write('Ingrese un número de DNI: ');
readln(reg.DNI);
write('Ingrese el apellido: ');
readln(reg.Apellido);
write('Ingrese los nombres: ');
readln(reg.Nombres);
write('Ingrese la fecha de nacimiento {AAAAMMDD}: ');
readln(reg.FechaNac);
writeln();
write('¿Los datos ingresados son correctos? (s/n): ');
readln(ok);
end
until ((ok = 's') or (ok = 'S'));
writeln();
end;
procedure crear_archivo(var control: ctrl_pers);
var
nom: string [15];
begin
write('Escriba el nombre del archivo a crear (máximo 15 caracteres): ');
readln(nom);
while (FileExists(nom)) do
begin
writeln('El nombre ingresado ya pertenece a un archivo, por favor ingrese otro nombre: ');
readln(nom);
end;
crear(control.a_persona, nom);
assign(control.a_libre, 'libres');
rewrite(control.a_libre);
close(control.a_libre);
writeln();
end;
procedure cargar_archivo(var control : ctrl_pers);
var
ok : char;
begin
leer_info(control.persona);
cargar(control);
write('¿Desea continuar la carga?(s/n): ');
readln(ok);
while ((ok = 's') or (ok = 'S')) do
begin
leer_info(control.persona);
insertar(control);
if (control.ok = false) then
writeln('Carga fallida; la persona ya existe');
write('¿Desea continuar la carga?(s/n): ');
readln(ok);
end;
writeln();
end;
procedure recorrer_archivo(var control: ctrl_pers);
var
opc : char;
begin
primero(control);
if (control.ok = false) then
begin
writeln('No existe un primero; archivo vacio');
close(control.a_persona);
end
else
begin
writeln(' DNI Apellido Nombres Fecha de nacimiento');
writeln('============================================================================');
writeln(control.persona.DNI: 11, control.persona.Apellido: 20, control.persona.Nombres: 20, control.persona.FechaNac:10);
write('¿Desea ver la siguiente persona?(s/n): ');
readln(opc);
while ((opc = 's') or (opc = 'S')) do
begin
siguiente(control);
if (control.ok = false) then
begin
write('No hay un siguiente; se acabaron las personas del archivo');
opc := 'n';
end
else
begin
writeln(control.persona.DNI: 11, control.persona.Apellido: 20, control.persona.Nombres: 20, control.persona.FechaNac:10);
write('¿Desea ver la siguiente persona?(s/n): ');
readln(opc);
end;
end;
end;
writeln();
end;
procedure generar_txt(var control : ctrl_pers; var arch_texto: text);
var
nom : string[15];
begin
write('Ingrese el nombre seguido de .txt (nombre.txt): ');
readln(nom);
assign(arch_texto, nom);
exportar(control.a_persona, arch_texto);
writeln('¡TXT generado!');
writeln();
end;
procedure alta(var control: ctrl_pers);
begin
writeln('Ingrese los datos de la persona a dar de alta');
leer_info(control.persona);
insertar(control);
if (control.ok = false) then
begin
writeln('No se pudo realizar el alta; la persona ya se encuentra en el archivo');
end
else
begin
writeln('¡Dado de alta!');
end;
writeln();
end;
procedure baja(var control: ctrl_pers);
var
dni : longword;
begin
write('Ingrese el dni de la persona a dar de baja: ');
readln(dni);
eliminar(control, dni);
if (control.ok = false) then
begin
writeln('No se pudo realizar la baja; la persona no está en el archivo');
end
else
begin
writeln('¡Eliminada!');
end;
writeln();
end;
procedure modificar_archivo(var control: ctrl_pers);
begin
writeln('Ingrese los datos de la persona');
leer_info(control.persona);
modificar(control);
if (control.ok = false) then
begin
writeln('No se pudo modificar; persona no encontrada');
end
else
begin
writeln('¡Modificación realizada!');
end;
end;
procedure buscar_persona(var control: ctrl_pers);
var
dni : longword;
begin
write('Ingrese el dni de la persona que desea buscar: ');
readln(dni);
recuperar(control, dni);
if (control.ok = false) then
begin
writeln('El dni ingresado no se encuentra en el archivo');
end
else
begin
writeln(' DNI Apellido Nombres Fecha de nacimiento');
writeln('============================================================================');
writeln(control.persona.DNI: 11, control.persona.Apellido: 20, control.persona.Nombres: 20, control.persona.FechaNac:10);
end;
writeln();
end;
procedure respaldar_archivo(var control: ctrl_pers; var backup : arch_persona; var arch_texto : text);
var
nom : string[15];
opc : char;
begin
write('Escriba el nombre del archivo a crear (máximo 15 caracteres): ');
readln(nom);
while (FileExists(nom)) do
begin
writeln('El nombre ingresado ya pertenece a un archivo, por favor ingrese otro nombre: ');
readln(nom);
end;
crear(backup, nom);
writeln();
respaldar(control, backup);
writeln('¿Desea crear un .txt con todas las personas del respaldo?(s/n): ');
readln(opc);
if ((opc = 's') or (opc = 'S')) then
begin
writeln('Ingrese el nombre que desea darle al respaldo seguido de .txt (nombre.txt): ');
readln(nom);
while (FileExists(nom)) do
begin
writeln('El nombre ingresado ya pertenece a un archivo, por favor ingrese otro nombre: ');
readln(nom);
end;
assign(arch_texto, nom);
exportar(backup, arch_texto);
end;
writeln();
end;
var
control : ctrl_pers;
backup : arch_persona;
arch_texto: text;
respaldo_texto : text;
opc : longword;
begin
repeat
writeln('Opciones del programa: ');
writeln('==============================X=======================================');
writeln('(1)---Crear un archivo de personas');
writeln('(2)---Cargar un archivo de personas vacio');
writeln('(3)---Generar un .txt con todos los elementos de un archivo de personas');
writeln('(4)---Recorrer el archivo de personas');
writeln('(5)---Realizar una alta');
writeln('(6)---Realizar una baja');
writeln('(7)---Realizar una modificación');
writeln('(8)---Realizar una busqueda');
writeln('(9)---Realizar una copia de seguridad de un archivo de personas');
writeln('(10)--Salir');
writeln('==============================X=======================================');
write('¿Qué opción desea realizar? ');
readln(opc);
case opc of
1: begin
crear_archivo(control);
end;
2: begin
cargar_archivo(control);
end;
3: begin
generar_txt(control, arch_texto);
end;
4: begin
recorrer_archivo(control);
end;
5: begin
alta(control);
end;
6: begin
baja(control);
end;
7: begin
modificar_archivo(control);
end;
8: begin
buscar_persona(control);
end;
9: begin
respaldar_archivo(control, backup, respaldo_texto);
end;
end;
until (opc = 10);
readln();
readln();
end.