Cómo compartir Internet con otros equipos

Armar una red hogareña en Linux

Lo que vamos hacer es armar lo que se llama un Proxy NAT ,para ello utilizaremos nuestra PC la cual tiene dos IP una es la que usamos para conectarnos a Internet y otra es la toma nuestra placa de red.

De esta forma cada vez que una quiere conectarse envía un paquete al servidor y este se los acepta/deniega por medio de la placa de red local.

Esto tipo de router se denomina proxies transparentes y para realizar esto lo haremos desde la consola de comandos, claro que también puede hacerse desde el panel de control del sistema operativo, pero si esto no es posible tenemos la alternativa que explicaremos a continuación.


Iptables –F
Iptables –t nat –F
Iptables -A FORWARD –s 10.0.0.0/24 –d


Iptables –t nat –A POSTROUTING –s


Echo 1> /proc/sys/net/ipv4/ip_forward



Como verán la ip 10.0.0.0/24 forma parte de una ip privada y el /24 nos dice que es clase C y solo varia el ultimo dígito para las ip de las PC.


Explicacion de los comandos


En las primeras dos líneas de nuestro comando borramos absolutamente todo lo que tenemos definido en nuestro firewall.


En la tercera línea le damos la aprobación de información entre la red


local 10.0.0.0 remplacen por su ip de red /24 e Internet 0.0.0.0


En la cuarta línea creamos una regla para que el firewall de Linux “enmascara” todo lo que venga de la red local y tenga como destino Internet.


Por ultimo el comando echo habilita el router en el núcleo de Linux, ya hecho la parte mas complicada pasamos a configurar las máquinas clientes con el comando


route add default gw ip


De esta manera ya podrán utilizaran nuestro Proxy para conectarse a Internet.



Fuente

http://www.geekets.com



Seguridad + Debian

Dragora GNU/Linux 1.0 RC1

Dragora

Dragora, es una nueva e independiente distribución GNU/Linux, creada desde cero en Argentina.

El proyecto apunta a mantener las cosas simples y a ser 100% libre, también está compilada para i686 con optimización e incluye su propio formato de paquete es ".tbz2", que no es otra cosa que un archivo tar comprimido con bzip2 y que resultará familiar para los usuarios de Slackware.

Sitio Oficial

Registro de cambios actuales de Dragora


Fuente

http://www.vivalinux.com.ar

Descarga

Dragora GNU/Linux 1.0 RC 1


Suma MD5

2b78c3738fa774148100afd28d02c853




Web con Listas de Comandos

Bueno a continuacion les dejo una pequeña pero muy interesante lista de web que contienen comandos para Linux.


Comandos y Descripcion

Documentación

Una parte importante de un sistema operativo es su documentación, los manuales técnicos que describen la operación y uso de sus programas. Como parte de sus esfuerzos para crear un sistema operativo libre de gran calidad, el Proyecto Debian está esforzándose en proporcionar a todos sus usuarios documentación adecuada y accesible de manera sencilla.

Comienzo rápido

Si es la primera vez que trata con Debian le recomendamos que primero lea:

Téngalos a mano cuando haga su primera instalación de Debian, probablemente contesten a muchas preguntas y le ayuden a trabajar en su nuevo sistema Debian. Más tarde puede que quiera mirar:

Por último, asegurese de imprimir y tener a mano la tarjeta de referencia de Debian GNU/Linux, una lista de las órdenes más importantes de los sistemas Debian.


Fuente

http://www.debian.org

Instalación gráfica de Debian




Debian LiveCD

Existe un proyecto llamado Debian Live. Su intención es la de crear live Cd's, DVD,s, USB-Sticks e imágenes de red tanto para Etch como para las sucesivas versiones de Debian que vayan saliendo.

Sus directrices son:

  • Sólo paquetes oficiales, sin cambios. Sólo usaremos paquetes oficiales de los repositorios de Debian, de la sección Main o tal vez de Contrib (el uso de Contrib no está decidido todavía). La sección non-free no es parte de Debian y por lo tanto no se usará. No cambiaremos ningún paquete. Siempre que necesitemos cambiar algo, lo haremos en coordinación con los mantenedores de los paquetes de Debian. Excepción: nuestros propios paquetes, como libr-apckage o casper pueden ser usados de nuestro propio repositorio por razones de desarrollo (por ejemplo: crear instantáneas de desarrollo). Serán sincronizados con Debian de manera regular.
  • Sin configuración en el sistema en vivo. En esta etapa no liberaremos o instalaremos pruebas o configuraciones alternativas. Todos los paquetes se usan en su configuración por defecto, igual que están después de una instalación típica de Debian. Cuando necesitemos una configuración distinta por defecto, lo haremos en coordinación con los mantenedores de paquetes de Debian. Pronto se proveerá de un sistema para configurar paquetes usando debconf en make-live permitiendo que paquetes con configuración personalizada sean instalados en tu imagen en vivo de tu sistema Debian, pero para imágenes en vivo oficiales sólo se usará la configuración por defecto. Excepción: Hay unos pocos cambios esenciales necesarios para que funcione un sistema en vivo (por ejemplo: configurar pam para permitir contraseñas vacías). Estos cambios esenciales se deben de mantener tan al mínimo como sea posible, y debe ser fusionado con el repositorio de Debian si es posible.
  • No hay instalador del sistema en vivo al disco duro. Por el momento no liberaremos un instalador para copiar el sistema en vivo a una partición del disco duro. Aunque mantenemos los cambios en el sistema en vivo tan drásticamente al mínimo como sea posible comparado con una instalación típica de Debian, el sistema en vivo difiere en unos poco puntos esenciales (ver excepciones de la pauta dos). Por lo tanto liberaremos una copia del instalador de Debian (Instalador de Debian e Instalador Gráfico respectivamente) en vez de permitir a los usuarios realizar una instalación típica de Debian (y, por supuesto, cdebootstrap y debootstrap también están en el sistema).

Enlaces que os pueden interesar:

Descargar la iso

(en la web principal hay réplicas (mirrors)

Fuente

http://www.esdebian.org/


Debian 5.0 “Lenny”


En el día de ayer, el proyecto Debian ha anunciado la publicación oficial de la versión 5.0 de Debian GNU/Linux, nombre en clave Lenny, tras 22 meses de desarrollo constante.

Debian GNU/Linux es un sistema operativo libre que soporta un total de doce arquitecturas de procesador e incluye los entornos de escritorio KDE, GNOME, Xfce y LXDE.

lennybanner_indexed Debian 5.0 Lenny

Esta versión incluye una gran cantidad de paquetes de programas actualizados como: el entorno de escritorio K Desktop Environment 3.5.10 (KDE), una versión actualizada del entorno de escritorio GNOME 2.22.2, el entorno de escritorio Xfce 4.4.2, LXDE 0.3.2.1, el escritorio GNUstep 7.3, X.Org 7.3, OpenOffice.org 2.4.1, GIMP 2.4.7, Iceweasel 3.0.6 (una versión de Mozilla Firefox que no utiliza la marca registrada), Icedove 2.0.0.19 (una versión de Mozilla Thunderbird que no utiliza la marca registrada), PostgreSQL 8.3.6, MySQL 5.0.51a, la colección de compiladores del GNU (GCC) 4.3.2, el núcleo de Linux versión 2.6.26, Apache 2.2.9, Samba 3.2.5, Python 2.5.2 y 2.4.6, Perl 5.10.0, PHP 5.2.6, Asterisk 1.4.21.2, Emacs 22, Inkscape 0.46, Nagios 3.06, Xen Hypervisor 3.2.1 (con soporte tanto para dom0 como para domU), OpenJDK 6b11 y más de otros 23.000 paquetes de programas listos para usarse (contruídos a partir de 12.000 paquetes fuente).

Precisamente con la integración de X.Org 7.3 el servidor X se configura de forma automática con la mayor parte de hardware existente. La introducción de nuevos paquetes permiten dar soporte completo al sistema de ficheros NTFS, así como utilizar la mayor parte de las teclas multimedia sin configuración adicional. Se dispone de soporte para el formato de archivos Flash® de Adobe® a través de los complementos swfdec o Gnash. Se han introducido una serie de mejoras generales para ordenadores portátiles, como es el soporte integrado del escalado de frecuencia de la CPU. Se han añadido distintos juegos entre ellos rompecabezas y juegos de acción en primera persona. Un cambio notable es la introducción de goplay, un navegador gráfico de juegos que incluye filtros, capacidad de búsqueda, descripciones e instantáneas de los juegos en Debian.

La disponibilidad de OpenJDK, el compilador Java de GNU, el intérprete de bytecodes Java de GNU, Classpath, y otras versiones libre de la tecnología Java de Sun, en Debian GNU/Linux 5.0 hace posible la distribución de las aplicaciones basadas en Java dentro del repositorio principal (main) de Debian.

Puedes instalar Debian GNU/Linux utilizando distintos mecanismos de instalación, como DVDs, CDs, memorias USB y diskettes y hasta discos Blu-ray, e incluso directamente desde la red. El entorno de escritorio predeterminado es el de GNOME, y se encuentra en el primer CD. Se pueden instalar otros entornos de escritorio, como KDE, Xfce y LXDE, utilizando las dos nuevas imágenes de CD alternativas. De nuevo se encuentran disponible CDs y DVDs multi-arquitectura para Debian GNU/Linux 5.0, que permiten la instalación de varias arquitecturas desde un solo disco.

Se puede actualizar desde la versión anterior automáticamente.

Para conocer todas las novedades sigan el siguiente link hacia las notas de publicación:

http://www.debian.org/News/2009/20090214

Y por supuesto para descargar:

http://www.debian.org/CD

Fuente

http://www.ubuntips.com.ar

Linux+Seguridad+Vulnerabilidad

Herramientas para controlar el uso de disco

philesight1

En Linux no somos la excepción, pero afortunadamente disponemos como siempre de varias formas de poder analizar ese consumo de disco duro que realizamos con herramientas que van desde la línea de comandos a preciosas aplicaciones visuales con opciones realmente potentes.

La lista -adaptada de MakeUseOf- de las 6 herramientas para monitorizar el uso del disco son las siguientes:

Línea de comandos

Si quieres ir a lo sencillo y rápido, lo mejor es que hagas uso de la terminal, que como siempre es la verdadera navaja suiza de Linux. Bastará con abrir una nueva y escribir

df -h

para que se nos muestre (incluso desde una cuenta de usuario) el espacio disponible en cada una de las particiones que están montadas en el sistema.

dfscreenshot

No es que haya muchas más opciones, pero al menos sí tendremos esa información crítica.

Baobab

Si eres usuario de una distro con GNOME probablemente tengas instalado en ella la herramienta Baobab, que también se conoce como Disk Usage Analyzer, y que es una de las mas conocidas en este apartado.

baobab

La solución es mucho más visual y presenta, por ejemplo, información sobre el tamaño de carpetas y direcciones, además de clasificar el espacio ocupado por distintos tipos de archivo, tales como vídeos, musica, imágenes o documentos convencionales.

KDirStat y GDMap

Estas dos soluciones son caras de la misma moneda: la primera está disponible para el entorno de escritorio KDE, mientras que la segunda lo está para GNOME, pero en ambos casos accederemos a una solución con una interfaz visual muy directa: en seguida podremos comprobar qué archivos o directorios son los que más ocupan y porqué.

kdirstat

Y eso, claro está, nos permitirá realizar una "limpieza" mucho más apropiada de contenidos que realmente no necesitemos en el disco duro.

Filelight

La representación visual de esta herramienta es similar a la de Baobab: muy artística pero menos práctica para localizar rápidamente qué ocupa más y dónde se encuentran esos contenidos.

filelight

Aún así, representa una alternativa interesante.

Philesight

El desarrollo anterior tiene una especie de versión web con Philesight: dicho servicio puede ser usado incluso en un servidor remoto en el que ni siquiera tengamos instalado una interfaz grafica de usuario.

philesight

Philesight utiliza un comando en nuestra consola preferida para generar imágenes PNG en el navegador, y luego navegamos por dichas imagenes a través de un script CGI que, la verdad, tiene un aspecto fantástico.

xdiskusage

Este pequeño programa muestra un diagrama de bloques de izquierda a derecha similar en concepto a GDMap pero que en realidad es mucho más espartano.

xdiskusage1

Aún así, el tamaño de cada rectángulo permite detectar rapidamente cuáles son los ficheros y directorios más voluminosos, y actuar en consecuencia. Si tienes una máquina mas limitada en recursos, esta es una buena opción.


Publicado por Picajoso

Papirux (Revistas 1-3)

Papirux nº1

Descarga: Papirux nº1

Publicado el número 1 de la revista Papirux.

En este número podemos encontrar:

  • Instalación de OpenSUSE 11
  • Distribuciones ligeras para tu viejo ordenador
  • Instala Wordpress en tu servidor
  • Juego: Frets on Fire
  • Java al bolsillo: JDBC


Papirux nº2


Descarga Papirux nº2

Publicado el número 2 de la revista Papirux (Diciembre 2008)

En este número podemos encontrar:

  • Wikimedia
  • Juego: Torus Trooper
  • KTechLab: Simulador de circuitos eléctricos
  • Review: Blender
  • Review: Ubuntu Intrepid Ibex (8.10)
  • Instalando Ubuntu Intrepid Ibex (8.10)
  • Comandos en GNU/Linux (I parte)
  • Reinicio de Emergencia: SysRq


Papirux nº3

Descarga Papirux nº3

Publicado el número tres de la revista Papirux.

En este número podemos encontrar:

  • Presentación de TuxTankamón.
  • Software Libre Explicado

Mi Trabajo Final de Archivos


Bueno aca les dejo mi trabajo final para la materia algoritmo y estructuras de datos , el cual esta realizado en lenguaje Turbo Pascal 7.0 .

En el codifuente se aclara de quien fue tomada la estructura del programa , nosotros le agregamos las unit, los arboles binarios de busqueda, los arboles AVL, y algunas modificaciones en el almacenamiento del archivo, asi que agradesco a Eduardo Chongkan por haber subido su programa en la webdelprogramador.

Este trabjo fue realizado con el fin de dar de alta , baja , consulta de socios, tambien listarlos por numero de socio y apellido y nombre(anda un poco mal xD).

Almacena la informacion en un archivo cliente.dat el cual despues se puede reutilizarse en caso de cerrar el programa tan solo con escribir cliente, o sino se puede almacenar con otro nombre tan solo escribir el nombre en el inicio.

El programa acepta pantalla completa en winXP pero en versiones como Vista no...(que le vamos hacer en la facultad todo es win lamentablemte.)



Posee:

-Arboles Binarios de Busqueda

-Arboles AVL

-Archivos

-Unit para visualizar

-Unit para AVL

Descarga

El programas se encuentra subido a mi disco virtual FreeDrive por si lo quieren descargar

Codigo Fuente de todo lo comentado

Arbol AVL

UNIT AVL; { Se indica el nombre de la unidad }

INTERFACE { Comienza la interface }
type
{*************Arbol AVL DNI **************}
t_ele=record
dni: string[10];
pos: integer;
end;

ap=^nodo_avl;

nodo_avl = record
ele : t_ele;
izq : ap;
der : ap;
altura : integer;
end;

arbol = ^nodo_avl;

{***************Arbol AVL AYN ************}
t_ele2=record
nom: string[25];
pos: integer;
end;

ap2=^nodo2_avl;

nodo2_avl = record
ele : t_ele2;
izq : ap2;
der : ap2;
altura : integer;
end;

arbol2 = ^nodo2_avl;

var
{Declaraciones de Variables Arboles : Tipo }
x : t_ele;
x2 : t_ele2;
ar : arbol;
ar2 : arbol2;


{ Se define la "cabecera" del procedimiento }
{*********************************** AVL de D.N.I******************************}
function altura(p:ap):integer; {Funcion determina cual es la altura del arbol }
function max(a,b:integer):integer; {Funcion determina cual es el mayor de dos elementos }
procedure rotar_s_izq(var a:ap); {Procedure para efectuar una rotacion simple a izq}
procedure rotar_s_der(var a:ap); {Procedure para efectuar una rotacion simple a izq}
procedure rotar_d_izq(var a:ap); {Procedure para efectuar una rotacion doble a izq}
procedure rotar_d_der(var a:ap); {Procedure para efectuar una rotacion doble a der}
{*********************************** AVL de AYN********************************}
function altura2(p:ap2):integer; {Funcion determina cual es la altura del arbol }
function max2(a,b:integer):integer; {Funcion determina cual es el mayor de dos elementos }
procedure rotar_s_izq2(var a:ap2); {Procedure para efectuar una rotacion simple a izq}
procedure rotar_s_der2(var a:ap2); {Procedure para efectuar una rotacion simple a der}
procedure rotar_d_izq2(var a:ap2); {procedure para efectuar una rotacion doble a izq}
procedure rotar_d_der2(var a:ap2); {procedure para efectuar una rotacion doble a der}

IMPLEMENTATION { Comienza la implementacion }

uses crt; { Se va a utilizar la unidad crt }

{ Desarrollo del procedimiento }

{--------------------Procedimientos y Funciones Arboles------------------------}


{*********************************** AVL de D.N.I******************************}

{Funcion determina cual es la altura del arbol }
function altura(p:ap):integer;
begin
if p = nil then
altura := -1
else
altura := p^.altura;
end;

{Funcion determina cual es el mayor de dos elementos }
function max(a,b:integer):integer;
begin
if a > b then
max := a
else
max := b;
end;

{Procedure para efectuar una rotacion simple a izq}
procedure rotar_s_izq(var a:ap);
var b:ap;
begin
b:=a^.izq;
a^.izq:=b^.der;
b^.der:=a;
a^.altura := max(altura(a^.izq),altura(a^.der)) +1;
b^.altura := max(altura(b^.izq),a^.altura)+1;
a:=b;
end;

{Procedure para efectuar una rotacion simple a izq}
procedure rotar_s_der(var a:ap);
var b:ap;
begin
b:=a^.der;
a^.der:=b^.izq;
b^.izq:=a;
a^.altura := max(altura(a^.der),altura(a^.izq)) +1;
b^.altura := max(altura(b^.der),a^.altura)+1;
a:=b;
end;

{Procedure para efectuar una rotacion doble a izq}
procedure rotar_d_izq(var a:ap);
begin
rotar_s_der(a^.izq);{rota entre c y b}
rotar_s_izq(a);{rota entre a y b}
end;

{Procedure para efectuar una rotacion doble a der}
procedure rotar_d_der(var a:ap);
begin
rotar_s_izq(a^.der);{rota entre c y b}
rotar_s_der(a);{rota entre a y b}
end;


{*********************************** AVL de AYN********************************}
{Funcion determina cual es la altura del arbol }
function altura2(p:ap2):integer;
begin
if p = nil then
altura2 := -1
else
altura2 := p^.altura;
end;

{Funcion determina cual es el mayor de dos elementos }
function max2(a,b:integer):integer;
begin
if a > b then
max2 := a
else
max2 := b;
end;

{Procedure para efectuar una rotacion simple a izq}
procedure rotar_s_izq2(var a:ap2);
var b:ap2;
begin
b := a^.izq;
a^.izq := b^.der;
b^.der := a;
a^.altura := max2(altura2(a^.izq),altura2(a^.der)) +1;
b^.altura := max2(altura2(b^.izq),a^.altura)+1;
a := b;
end;

{Procedure para efectuar una rotacion simple a der}
procedure rotar_s_der2(var a:ap2);
var b:ap2;
begin
b:=a^.der;
a^.der:=b^.izq;
b^.izq:=a;
a^.altura := max2(altura2(a^.der),altura2(a^.izq)) +1;
b^.altura := max2(altura2(b^.der),a^.altura)+1;
a:=b;
end;

{procedure para efectuar una rotacion doble a izq}
procedure rotar_d_izq2(var a:ap2);
begin
rotar_s_der2(a^.izq);{rota entre c y b}
rotar_s_izq2(a); {rota entre a y b}
end;

{procedure para efectuar una rotacion doble a der}
procedure rotar_d_der2(var a:ap2);
begin
rotar_s_izq2(a^.der);{rota entre c y b}
rotar_s_der2(a); {rota entre a y b}
end;

{-------------------- Fin Procedimientos y Funciones Arboles-------------------}

end. { Fin de la unidad }

Unit para Visualizar

UNIT Pantalla; { Se indica el nombre de la unidad }

INTERFACE { Comienza la interface }

{ Se define la "cabecera" del procedimiento }
procedure Imprime( x, y, color: integer; msg: string );

IMPLEMENTATION { Comienza la implementacion }

uses crt; { Se va a utilizar la unidad crt }

{ Desarrollo del procedimiento }
procedure Imprime( x, y, color: integer; msg: string );
begin
textcolor( color );
gotoxy( x, y );
write( msg );
end;

end. { Fin de la unidad }


Programa Principal

{******************************************************************************}
{ Programa basado en el Codigo Fuente del Programa hecho por Eduardo Chongkan }
{ Integrantes: }
{ Guillaume Ariel }
{ Martinez Vilar Enrique Gabriel }
{ Ronconi Luciano }
{******************************************************************************}

Program Club ;

Uses Crt,Dos,PANTALLA,AVL;

Type

Persona = Record
N_soc : integer; {Numero de socio}
AYN : string[25]; {Apellido y Nombre}
Dir : string[25]; {Direccion}
Dir_cobro : string[25]; {Direccion de cobro}
dni : string[10]; {numero de documento}
Concepto : string[10]; {Tipo : Idividual o Familiar}
Cuota : real; {Cuota}
Cuotas_pagas : integer; {Meses que pago la Cuota}
Activo : 0..1; {Si esta activo o dado de baja}
end;



Var
{Declaraciones de Variables Archivo : Tipo }
archivo : file of persona;
cliente : persona;

{Declaraciones de Variables Registro : Tipo }
dir ,ayn ,dir_cobro ,concepto ,dni : string;
dir2,ayn2,dir_cobro2,concepto2,dni2 : string;
Cuota,cuota2 : real;
cuotas_pagas,cuotas_pagas2,n_soc,n_soc2 : integer;
activo : 0..1;

{Declaraciones de Variables Estadisticas : Tipo }
conts,conti,contf,contd,conta,contalta,contbaja : word;

{Declaraciones de Variables Getdate : Tipo }
dia,mes,ano : word;

{Declaraciones de Variables Generales : Tipo }
opcion : char;
tam,car,dow,i : word;
dat,num,numero,pos,a,b : integer;
letra : string;

{Declaraciones de Variables Generales : Tipo }
S :string;
Resul :integer;


{*************************Procedure Cuadro Principal***************************}
procedure cuadro;
begin
Imprime(25, 6 ,red, 'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»' );
Imprime(25, 7 ,red, 'º º' );
Imprime(25, 8 ,red, 'ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹' );
Imprime(25, 9 ,red, 'º º' );
Imprime(25, 10 ,red, 'º º' );
Imprime(25, 11 ,red, 'º º' );
Imprime(25, 12 ,red, 'º º' );
Imprime(25, 13 ,red, 'º º' );
Imprime(25, 14 ,red, 'º º' );
Imprime(25, 15 ,red, 'º º' );
Imprime(25, 16 ,red, 'º º' );
Imprime(25, 17 ,red, 'º º' );
Imprime(25, 18 ,red, 'º º' );
Imprime(25, 19 ,red, 'º º' );
Imprime(25, 20 ,red, 'º º' );
Imprime(25, 21 ,red, 'º º' );
Imprime(25, 22 ,red, 'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ[ ]ͼ' );
normvideo;
end;

{***************************Procedure Cuadro Modificar*************************}
procedure cuadro_mod;
begin
Imprime(50, 4 ,red, 'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»' );
Imprime(50, 5 ,red, 'º º' );
Imprime(50, 6 ,red, 'ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹' );
Imprime(50, 7 ,red, 'º º' );
Imprime(50, 8 ,red, 'º º' );
Imprime(50, 9 ,red, 'º º' );
Imprime(50, 10 ,red, 'º º' );
Imprime(50, 11 ,red, 'º º' );
Imprime(50, 12 ,red, 'º º' );
Imprime(50, 13 ,red, 'º º' );
Imprime(50, 14 ,red, 'º º' );
Imprime(50, 15 ,red, 'º º' );
Imprime(50, 16 ,red, 'º º' );
Imprime(50, 17 ,red, 'º º' );
Imprime(50, 18 ,red, 'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ[ ]ͼ' );
normvideo;
Imprime(53, 5 ,lightblue, 'Selecionar Opcion' );
normvideo;
Imprime(53, 7 ,white, 'A) Nombre y Apellido' );
Imprime(53, 9 ,white, 'B) Direccion' );
Imprime(53, 11 ,white, 'C) Direccion de cobro' );
Imprime(53, 13 ,white, 'D) Concepto' );
Imprime(53, 15 ,green, 'E) Volver' );
normvideo;
gotoxy (76,18);
readln (opcion);
end;

{Procedure para insertar Nodo por DNI}
procedure insertardni(x:t_ele;var a:arbol);
begin
if a = nil then
begin
new(a);{se crea un arbol con un nodo}
if a = nil then
writeln('Memoria Llena')
else
begin
a^.ele.dni := x.dni;
a^.ele.pos := x.pos;
a^.izq := nil;
a^.der := nil;
a^.altura := 0;
end;
end{if a = nil}
else
begin
if x.dni <> a^.ele.dni then
begin
insertardni(x,a^.der);
if altura(a^.der) - altura(a^.izq) = 2 then
begin
if x.dni > a^.der^.ele.dni then
rotar_s_der(a)
else
rotar_d_der(a)
end
else
a^.altura := max(altura(a^.der),altura(a^.izq)) + 1
end;
end;
end;
end;

{Procedure para insertar Nodo por AYN}
procedure insertarnom(x:t_ele2;var a:arbol2);
begin
if a = nil then
begin
new(a);{se crea un arbol con un nodo}
if a = nil then
writeln('Memoria Llena')
else
begin
a^.ele.nom := x.nom;
a^.ele.pos := x.pos;
a^.izq := nil;
a^.der := nil;
a^.altura := 0;
end;
end{if a = nil}
else
begin
if x.nom <> a^.ele.nom then
begin
insertarnom(x,a^.der);
if altura2(a^.der) - altura2(a^.izq) = 2 then
begin
if x.nom > a^.der^.ele.nom then
rotar_s_der2(a)
else
rotar_d_der2(a)
end
else
a^.altura := max2(altura2(a^.der),altura2(a^.izq)) + 1
end;
end;
end;
end;


{Funcion para buscar en el arbol }
function buscardni(x:string;var a:arbol):integer;
begin
if a = nil then
buscardni:= -1
else
begin
if x <> a^.ele.dni then
buscardni:=buscardni(x,a^.der)
else
buscardni:= a^.ele.pos;
end;
end;
end;



{Funcion para buscar en el arbol }
function buscarnom(x:string;var a:arbol2):integer;
begin
if a = nil then
buscarnom:= -1
else
begin
if x <> a^.ele.nom then
buscarnom:=buscarnom(x,a^.der)
else
buscarnom:= a^.ele.pos;
end;
end;
end;



{************************Procedure Nuevo Socio*********************************}

procedure nuevo;
begin
assign(archivo,'cliente.dat');
reset(archivo);
Seek(archivo,filesize(archivo));
with cliente do
begin
clrscr;
textbackground (lightblue);
Imprime(1,1,white,' .: Ingrese Datos para Nuevo Socio :. ' );
normvideo;
getdate(ano,mes,dia,dow);
dia := dia;
mes := mes;
ano := ano;
Imprime(1,3,white,'Apellido y Nombre: [ ][25] Fecha: [ / / ]' );
gotoxy(67,3);
if dia < letra ="'i')or" letra ="'I')" letra ="'f')or" letra ="'F')"> -1 then
begin
seek(archivo,pos);
read(archivo,cliente);
with cliente do
begin
if activo = 0 then
begin
clrscr;
imprime(3,6,white,'Se encontro el Socio Numero : ');
gotoxy(33,6);
textcolor (lightblue);
writeln(n_soc);
imprime(3,8,white,'Apellido y Nombre : ');
gotoxy(23,8);
textcolor (lightblue);
writeln(AYN);
imprime(3,10,white,'Cuotas Pagas :');
gotoxy(18,10);
textcolor (lightblue);
writeln(cuotas_pagas);
imprime(3,12,white,'Direccion : ');
gotoxy(15,12);
textcolor (lightblue);
writeln(dir);
imprime(3,14,white,'Direccion de Cobro : ');
gotoxy(24,14);
textcolor (lightblue);
writeln(dir_cobro);
imprime(3,16,white,'Concepto : ');
gotoxy(14,16);
textcolor (lightblue);
writeln(concepto);
imprime(3,18,white,'D.N.I :');
gotoxy(11,18);
textcolor (lightblue);
writeln(dni);
imprime(28,20,green,'Desea darlo de Alta(S/N)');
gotoxy(40,22);
readln(opcion);
if (opcion = 's') or (opcion = 'S') then
begin
clrscr;
imprime(16,22,white,'*** EL Socio ha sido dado de Alta con Exito ***');
Activo:=1;
contalta:=contalta+1;
contbaja := contbaja - 1;
seek(archivo,filepos(archivo)-1);
write(archivo,cliente);
end
else{If opcion = n}
begin
clrscr;
imprime(28,12,white,'*** Accion Cancelada ***');
end;
end {If activo = 1}
else
begin
clrscr;
imprime(21,12,white,'*** Socio se encuetra dado de Alta ***');
end;
end;
end;
if pos = -1 then
nuevo;
readkey;
end;

{***************************Procedure Modificar AYN****************************}
Procedure modificarayn;
begin
assign(archivo,'cliente.dat');
reset(archivo);
clrscr;
textcolor (white);
textbackground (lightblue);
imprime(1,1,white,' .: Modificar Socio :. ');
normvideo;
imprime(13,12,white,'Ingrese Apellido Y Nombre: [ ][25] ');
gotoxy(41,12);
textcolor (lightblue);
readln (ayn);
pos := buscarnom(ayn,ar2);
if pos <> -1 then
begin
seek(archivo,pos);
read(archivo,cliente);
with cliente do
begin
if activo = 1 then
begin
clrscr;
imprime(3,6,white,'Se encontro el Socio Numero : ');
gotoxy(33,6);
textcolor (lightblue);
writeln(n_soc);
imprime(3,8,white,'Apellido y Nombre : ');
gotoxy(23,8);
textcolor (lightblue);
writeln(AYN);
imprime(3,10,white,'Cuotas Pagas :');
gotoxy(18,10);
textcolor (lightblue);
writeln(cuotas_pagas);
imprime(3,12,white,'Direccion : ');
gotoxy(15,12);
textcolor (lightblue);
writeln(dir);
imprime(3,14,white,'Direccion de Cobro : ');
gotoxy(24,14);
textcolor (lightblue);
writeln(dir_cobro);
imprime(3,16,white,'Concepto : ');
gotoxy(14,16);
textcolor (lightblue);
writeln(concepto);
imprime(3,18,white,'D.N.I :');
gotoxy(11,18);
textcolor (lightblue);
writeln(dni);
n_soc2:=n_soc;
ayn2:=ayn;
dir2:=dir;
dir_cobro2:=dir_cobro;
dni2:=dni;
concepto2:=concepto;
cuota2:=cuota;
cuotas_pagas2:=cuotas_pagas;
repeat
cuadro_mod;
case upcase(opcion) of
'A' : begin
clrscr;
imprime(13,12,white,'Nuevo Apellido y Nombre : [ ][25]');
textcolor(lightblue);
gotoxy(26,12);
readln(AYN);
x2.nom:=AYN;
x2.pos:=(filepos(archivo)-1);
insertarnom(x2,ar2);
n_soc:=n_soc2;
dir:=dir2;
dir_cobro:=dir_cobro2;
dni:=dni2;
concepto:=concepto2;
cuota:=cuota2;
cuotas_pagas:=cuotas_pagas2;
activo:=1;
seek(archivo,filepos(archivo)-1);
write(archivo,cliente);
clrscr;
end;
'B' : begin
clrscr;
imprime(20,10,white,'Nueva Direccion : [ ][25]');
textcolor(lightblue);
gotoxy(39,10);
readln(dir);
n_soc:=n_soc2;
ayn:=ayn2;
dir_cobro:=dir_cobro2;
dni:=dni2;
concepto:=concepto2;
cuota:=cuota2;
cuotas_pagas:=cuotas_pagas2;
activo:=1;
seek(archivo,filepos(archivo)-1);
write(archivo,cliente);
clrscr;
end;
'C' : begin
clrscr;
imprime(20,10,white,'Nueva Direccion de Cobro: [ ][25]');
textcolor(lightblue);
gotoxy(47,10);
readln(dir_cobro);
n_soc:=n_soc2;
ayn:=ayn2;
dir:=dir2;
dni:=dni2;
concepto:=concepto2;
cuota:=cuota2;
cuotas_pagas:=cuotas_pagas2;
activo:=1;
seek(archivo,filepos(archivo)-1);
write(archivo,cliente);
clrscr;
end;
'D' : begin
clrscr;
imprime(10,10,white,'Nuevo Concepto: [ ](Familiar/Individual)');
textcolor(lightblue);
gotoxy(27,10);
readln(concepto);
n_soc:=n_soc2;
ayn:=ayn2;
dir:=dir2;
dir_cobro:=dir_cobro2;
dni:=dni2;
cuota:=cuota2;
cuotas_pagas:=cuotas_pagas2;
activo:=1;
seek(archivo,filepos(archivo)-1);
write(archivo,cliente);
clrscr;
end;
end;
until upcase(opcion) = 'E'
end{If activo = 1}
else
begin
clrscr;
imprime(25,15,white,'*** El Socio se encuentra dado de Baja ***');
readkey;
end;
end;
end;
if pos = -1 then {socio no existe}
begin
clrscr;
imprime(30,15,white,'*** El Socio no Existe ***');
readkey;
end;

end;

{***************************Procedure Modificar DNI***************************}
Procedure modificardni;
begin
assign(archivo,'cliente.dat');
reset(archivo);
clrscr;
textbackground (lightblue);
imprime(1,1,white,' .: Modificar Socio :. ');
normvideo;
imprime(11,12,white,'Ingrese D.N.I: [ ][10] ');
gotoxy(27,12);
textcolor (lightblue);
readln (dni);
pos := buscardni(dni,ar);
if pos <> -1 then
begin
seek(archivo,pos);
read(archivo,cliente);
with cliente do
begin
if activo = 1 then
begin
clrscr;
imprime(3,6,white,'Se encontro el Socio Numero : ');
gotoxy(33,6);
textcolor (lightblue);
writeln(n_soc);
imprime(3,8,white,'Apellido y Nombre : ');
gotoxy(23,8);
textcolor (lightblue);
writeln(AYN);
imprime(3,10,white,'Cuotas Pagas :');
gotoxy(18,10);
textcolor (lightblue);
writeln(cuotas_pagas);
imprime(3,12,white,'Direccion : ');
gotoxy(15,12);
textcolor (lightblue);
writeln(dir);
imprime(3,14,white,'Direccion de Cobro : ');
gotoxy(24,14);
textcolor (lightblue);
writeln(dir_cobro);
imprime(3,16,white,'Concepto : ');
gotoxy(14,16);
textcolor (lightblue);
writeln(concepto);
imprime(3,18,white,'D.N.I :');
gotoxy(11,18);
textcolor (lightblue);
writeln(dni);
n_soc2:=n_soc;
ayn2:=ayn;
dir2:=dir;
dir_cobro2:=dir_cobro;
dni2:=dni;
concepto2:=concepto;
cuota2:=cuota;
cuotas_pagas2:=cuotas_pagas;
repeat
cuadro_mod;
case upcase(opcion) of
'A' : begin
clrscr;
imprime(13,12,white,'Nuevo Apellido y Nombre : [ ][25]');
textcolor(lightblue);
gotoxy(26,12);
readln(AYN);
x2.nom:=AYN;
x2.pos:=(filepos(archivo)-1);
insertarnom(x2,ar2);
n_soc:=n_soc2;
dir:=dir2;
dir_cobro:=dir_cobro2;
dni:=dni2;
concepto:=concepto2;
cuota:=cuota2;
cuotas_pagas:=cuotas_pagas2;
activo:=1;
seek(archivo,filepos(archivo)-1);
write(archivo,cliente);
clrscr;
end;
'B' : begin
clrscr;
imprime(20,10,white,'Nueva Direccion : [ ][25]');
textcolor(lightblue);
gotoxy(39,10);
readln(dir);
n_soc:=n_soc2;
ayn:=ayn2;
dir_cobro:=dir_cobro2;
dni:=dni2;
concepto:=concepto2;
cuota:=cuota2;
cuotas_pagas:=cuotas_pagas2;
activo:=1;
seek(archivo,filepos(archivo)-1);
write(archivo,cliente);
clrscr;
end;
'C' : begin
clrscr;
imprime(20,10,white,'Nueva Direccion de Cobro: [ ][25]');
textcolor(lightblue);
gotoxy(47,10);
readln(dir_cobro);
n_soc:=n_soc2;
ayn:=ayn2;
dir:=dir2;
dni:=dni2;
concepto:=concepto2;
cuota:=cuota2;
cuotas_pagas:=cuotas_pagas2;
activo:=1;
seek(archivo,filepos(archivo)-1);
write(archivo,cliente);
clrscr;
end;
'D' : begin
clrscr;
imprime(10,10,white,'Nuevo Concepto: [ ](Familiar/Individual)');
textcolor(lightblue);
gotoxy(27,10);
readln(concepto);
n_soc:=n_soc2;
ayn:=ayn2;
dir:=dir2;
dir_cobro:=dir_cobro2;
dni:=dni2;
cuota:=cuota2;
cuotas_pagas:=cuotas_pagas2;
activo:=1;
seek(archivo,filepos(archivo)-1);
write(archivo,cliente);
clrscr;
end;
end;
until upcase(opcion) = 'E'
end{If activo = 1}
else
begin
clrscr;
imprime(25,15,white,'*** El Socio se encuentra dado de Baja ***');
readkey;
end;
end;
end;
if pos = -1 then {socio no existe}
begin
clrscr;
imprime(30,15,white,'*** El Socio no Existe ***');
readkey;
end;

end;




{****************************Procedure Consulta DNI****************************}
procedure consultadni;
VAR
a:integer;
begin
clrscr;
textbackground (lightblue);
imprime(1,1 ,white,' .: Busqueda de Socio por D.N.I :. ');
normvideo;
imprime(1,3 ,white,'Ingrese Numero de D.N.I del Socio: [ ][10]');
gotoxy(37,3);
textcolor (lightblue);
readln (dni);
pos := buscardni(dni,ar);
if pos <> -1 then
begin
seek(archivo,pos);
read(archivo,cliente);
with cliente do
begin
if activo = 0 then
begin
clrscr;
normvideo;
imprime(3,6,white,'Socio Numero : ');
gotoxy(18,6);
textcolor (lightblue);
writeln(n_soc);
imprime(3,8,white,'Apellido y Nombre : ');
gotoxy(23,8);
textcolor (lightblue);
writeln(AYN);
imprime(3,10,white,'Cuotas Pagas : ');
gotoxy(18,10);
textcolor (lightblue);
writeln(cuotas_pagas);
imprime(3,12,white,'Direccion : ');
gotoxy(15,12);
textcolor (lightblue);
writeln(dir);
imprime(3,14,white,'Direccion de cobro : ');
gotoxy(24,14);
textcolor (lightblue);
writeln(dir_cobro);
imprime(3,16,white,'Concepto :' );
gotoxy(14,16);
textcolor (lightblue);
writeln(concepto);
imprime(3,18,white,'D.N.I : ');
gotoxy(14,18);
textcolor (lightblue);
writeln(dni);
imprime(3,20,white,'Estado : ');
imprime(14,20,lightblue,'Inactivo');
end{If activo = 0}
else
begin
clrscr;
imprime(3,6,white,'Socio Numero : ');
gotoxy(18,6);
textcolor (lightblue);
writeln(n_soc);
imprime(3,8,white,'Apellido y Nombre : ');
gotoxy(23,8);
textcolor (lightblue);
writeln(AYN);
imprime(3,10,white,'Cuotas Pagas : ');
gotoxy(18,10);
textcolor (lightblue);
writeln(cuotas_pagas);
imprime(3,12,white,'Direccion : ');
gotoxy(15,12);
textcolor (lightblue);
writeln(dir);
imprime(3,14,white,'Direccion de cobro : ');
gotoxy(24,14);
textcolor (lightblue);
writeln(dir_cobro);
imprime(3,16,white,'Concepto :' );
gotoxy(14,16);
textcolor (lightblue);
writeln(concepto);
imprime(3,18,white,'D.N.I : ');
gotoxy(14,18);
textcolor (lightblue);
writeln(dni);
imprime(3,20,white,'Estado : ');
imprime(14,20,lightblue,'Activo');
end; {Else}
end;{With }
end;{If pos <> 0}
if pos = -1 then
begin
clrscr;
imprime(30,12,white,'*** Socio no Existe ***');
end;
readkey;
end;

{****************************Procedure Consulta AYN****************************}
procedure consultanom;
VAR
a:integer;
begin
clrscr;
textbackground (lightblue);
imprime(1,1,white,' .: Busqueda de Socio por Apellido y Nombre :. ');
normvideo;
imprime(1,3,white,'Ingrese Apellido y Nombre del Socio: [ ][25');
gotoxy(39,3);
textcolor (lightblue);
readln (ayn);
pos := buscarnom(ayn,ar2);
if pos <> -1 then
begin
seek(archivo,pos);
read(archivo,cliente);
with cliente do
begin
if activo = 0 then
begin
clrscr;
normvideo;
imprime(3,6,white,'Socio Numero : ');
gotoxy(18,6);
textcolor (lightblue);
writeln(n_soc);
imprime(3,8,white,'Apellido y Nombre : ');
gotoxy(23,8);
textcolor (lightblue);
writeln(AYN);
imprime(3,10,white,'Cuotas Pagas : ');
gotoxy(18,10);
textcolor (lightblue);
writeln(cuotas_pagas);
imprime(3,12,white,'Direccion : ');
gotoxy(15,12);
textcolor (lightblue);
writeln(dir);
imprime(3,14,white,'Direccion de cobro : ');
gotoxy(24,14);
textcolor (lightblue);
writeln(dir_cobro);
imprime(3,16,white,'Concepto : ');
gotoxy(14,16);
textcolor (lightblue);
writeln(concepto);
imprime(3,18,white,'D.N.I : ');
gotoxy(14,18);
textcolor (lightblue);
writeln(dni);
imprime(3,20,white,'Estado : ');
imprime(14,20,lightblue,'Inactivo');
end{If activo = 0}
else
begin
clrscr;
imprime(3,6,white,'Socio Numero : ');
gotoxy(18,6);
textcolor (lightblue);
writeln(n_soc);
imprime(3,8,white,'Apellido y Nombre : ');
gotoxy(23,8);
textcolor (lightblue);
writeln(AYN);
imprime(3,10,white,'Cuotas Pagas : ');
gotoxy(18,10);
textcolor (lightblue);
writeln(cuotas_pagas);
imprime(3,12,white,'Direccion : ');
gotoxy(15,12);
textcolor (lightblue);
writeln(dir);
imprime(3,14,white,'Direccion de cobro : ');
gotoxy(24,14);
textcolor (lightblue);
writeln(dir_cobro);
imprime(3,16,white,'Concepto : ');
gotoxy(14,16);
textcolor (lightblue);
writeln(concepto);
imprime(3,18,white,'D.N.I : ');
gotoxy(14,18);
textcolor (lightblue);
writeln(dni);
imprime(3,20,white,'Estado : ');
imprime(14,20,lightblue,'Activo');
end; {Else}
end;{With }
end;{If pos <> 0}
if pos = -1 then
begin
clrscr;
imprime(30,12,white,'*** Socio no Existe ***');
end;
readkey;
end;

{******************Procedure Alta-Modificaciones-Consulta**********************}
Procedure socios;
begin
repeat
clrscr;
Imprime(25, 4 ,red, 'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»' );
Imprime(25, 5 ,red, 'º º' );
Imprime(25, 6 ,red, 'ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹' );
Imprime(25, 7 ,red, 'º º' );
Imprime(25, 8 ,red, 'º º' );
Imprime(25, 9 ,red, 'º º' );
Imprime(25, 10 ,red, 'º º' );
Imprime(25, 11 ,red, 'º º' );
Imprime(25, 12 ,red, 'º º' );
Imprime(25, 13 ,red, 'º º' );
Imprime(25, 14 ,red, 'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ[ ]ͼ' );
Imprime(28, 5 ,lightblue, 'Selecionar Opcion' );
Imprime(28, 7 ,white, 'A) Alta' );
Imprime(28, 9 ,white, 'B) Modificar' );
Imprime(28, 11 ,white, 'C) Consulta' );
Imprime(28, 13 ,green, 'D) Volver' );
gotoxy (51,14);
readln (opcion);
case upcase(opcion) of
'A' : alta;
'B' : begin
repeat
clrscr;
normvideo;
assign(archivo,'cliente.dat');
reset(archivo);
Imprime(25, 10 ,red, 'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»' );
Imprime(25, 11 ,red, 'º º' );
Imprime(25, 12 ,red, 'ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹' );
Imprime(25, 13 ,red, 'º º' );
Imprime(25, 14 ,red, 'º º' );
Imprime(25, 15 ,red, 'º º' );
Imprime(25, 16 ,red, 'º º' );
Imprime(25, 17 ,red, 'º º' );
Imprime(25, 18 ,red, 'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ[ ]ͼ' );
Imprime(28, 11 ,lightblue, 'Selecionar Opcion' );
Imprime(28, 13 ,white, 'A) D.N.I' );
Imprime(28, 15 ,white, 'B) Apellido y Nombre' );
Imprime(28, 17 ,green, 'C) Volver' );
gotoxy (51,18);
readln (opcion);
case upcase(opcion) of
'A' :modificardni;
'B' :modificarayn;
end
until upcase(opcion) = 'C'
end;
'C' : begin
repeat
clrscr;
normvideo;
assign(archivo,'cliente.dat');
reset(archivo);
Imprime(25, 10 ,red, 'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»' );
Imprime(25, 11 ,red, 'º º' );
Imprime(25, 12 ,red, 'ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹' );
Imprime(25, 13 ,red, 'º º' );
Imprime(25, 14 ,red, 'º º' );
Imprime(25, 15 ,red, 'º º' );
Imprime(25, 16 ,red, 'º º' );
Imprime(25, 17 ,red, 'º º' );
Imprime(25, 18 ,red, 'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ[ ]ͼ' );
Imprime(28, 11 ,lightblue, 'Selecionar Opcion' );
Imprime(28, 13 ,white, 'A) D.N.I' );
Imprime(28, 15 ,white, 'B) Apellido y Nombre' );
Imprime(28, 17 ,green, 'C) Volver' );
gotoxy (51,18);
readln (opcion);
case upcase(opcion) of
'A' :consultadni;
'B' :consultanom;
end
until upcase(opcion) = 'C'
end;
end
until upcase(opcion) = 'D'
end;

{****************************Procedure Baja DNI********************************}
procedure bajadni;
begin
clrscr;
textbackground (lightblue);
Imprime(1, 1 ,white, ' .: Dar de Baja un Socio por D.N.I :. ' );
normvideo;
Imprime(37, 3 ,green, 'Ingrese Numero de D.N.I del Socio: [ ][10]' );
gotoxy(37,3);
textcolor (lightblue);
readln (dni);
pos := buscardni(dni,ar);
if pos <> - 1 then
begin
seek(archivo,pos);
read(archivo,cliente);
with cliente do
begin
if activo = 1 then
begin
clrscr;
imprime(3,6,white,'Socio Numero : ');
gotoxy(18,6);
textcolor (lightblue);
writeln(n_soc);
imprime(3,8,white,'Apellido y Nombre : ');
gotoxy(23,8);
textcolor (lightblue);
writeln(AYN);
imprime(3,10,white,'Cuotas Pagas : ');
gotoxy(18,10);
textcolor (lightblue);
writeln(cuotas_pagas);
imprime(3,12,white,'Direccion : ');
gotoxy(15,12);
textcolor (lightblue);
writeln(dir);
imprime(3,14,white,'Direccion de cobro : ');
gotoxy(24,14);
textcolor (lightblue);
writeln(dir_cobro);
imprime(3,16,white,'Concepto :' );
gotoxy(14,16);
textcolor (lightblue);
writeln(concepto);
imprime(3,18,white,'D.N.I : ');
gotoxy(14,18);
textcolor (lightblue);
writeln(dni);
imprime(20,20,green,'Desea darlo de Baja(S/N)');
gotoxy(20,22);
readln(opcion);
if (opcion = 's') or (opcion = 'S') then
begin
clrscr;
imprime(20,15,white,'*** EL Socio ha sido dado de Baja con Exito ***');
Activo:=0;
contalta := contalta - 1;
contbaja := contbaja + 1;
seek(archivo,filepos(archivo)-1);
write(archivo,cliente);
end
else{si opcion = n}
begin
clrscr;
imprime(32,15,white,'*** Accion Cancelada ***');
end;
end {Si activo = 1}
else
begin
clrscr;
imprime(20,15,white,'*** Socio se encuetra dado de Baja ***');
end;
end; {Termina cuando encuentra archivo}
end;
if pos = -1 then
begin
clrscr;
imprime(20,15,white,'*** Socio no Existe ***');
end;
readkey;
end;

{****************************Procedure Baja AYN********************************}
procedure bajanom;
begin
clrscr;
textbackground (lightblue);
imprime(1,1,white,' .: Dar de Baja un Socio por Apellido y Nombre :. ');
normvideo;
imprime(1,3,white,'Ingrese Apellido y Nombre del Socio: [ ][25]');
gotoxy(39,3);
textcolor (lightblue);
readln (AYN);
pos := buscarnom(AYN,ar2);
if pos <> - 1 then
begin
seek(archivo,pos);
read(archivo,cliente);
with cliente do
begin
if activo = 1 then
begin
clrscr;
imprime(3,6,white,'Socio Numero : ');
gotoxy(18,6);
textcolor (lightblue);
writeln(n_soc);
imprime(3,8,white,'Apellido y Nombre : ');
gotoxy(23,8);
textcolor (lightblue);
writeln(AYN);
imprime(3,10,white,'Cuotas Pagas : ');
gotoxy(18,10);
textcolor (lightblue);
writeln(cuotas_pagas);
imprime(3,12,white,'Direccion : ');
gotoxy(15,12);
textcolor (lightblue);
writeln(dir);
imprime(3,14,white,'Direccion de cobro : ');
gotoxy(24,14);
textcolor (lightblue);
writeln(dir_cobro);
imprime(3,16,white,'Concepto :' );
gotoxy(14,16);
textcolor (lightblue);
writeln(concepto);
imprime(3,18,white,'D.N.I : ');
gotoxy(14,18);
textcolor (lightblue);
writeln(dni);
imprime(20,20,green,'Desea darlo de Baja(S/N)');
gotoxy(20,22);
readln(opcion);
if (opcion = 's') or (opcion = 'S') then
begin
clrscr;
imprime(20,15,white,'*** EL Socio ha sido dado de Baja con Exito ***');
Activo:=0;
contalta := contalta - 1;
contbaja := contbaja + 1;
seek(archivo,filepos(archivo)-1);
write(archivo,cliente);
end
else{si opcion = n}
begin
clrscr;
imprime(32,15,white,'*** Accion Cancelada ***');
end;
end {Si activo = 1}
else
begin
clrscr;
imprime(20,15,white,'*** Socio se encuetra dado de Baja ***');
end;
end; {Termina cuando encuentra archivo}
end;
if pos = -1 then
begin
clrscr;
imprime(20,15,white,'*** Socio no Existe ***');
end;
readkey;
end;

{************************Procedure Listar Por Nombre de Socio******************}
procedure listarnom(var ar:arbol2);
var a:word;
begin

if ar <> nil then
begin
listarnom(ar^.izq);
begin
assign(archivo,'cliente.dat');
reset(archivo);
seek(archivo,ar^.ele.pos);
read(archivo,cliente);
with cliente do
begin
if activo = 1 then
begin
writeln(' ');
textcolor(green);
gotoxy(1,a);
write (n_soc);
gotoxy(3,a);
write (' º ',ayn);
gotoxy(21,a);
write (' º ',dir);
gotoxy(37,a);
write (' º ',dir_cobro);
gotoxy(54,a);
write (' º ',concepto);
gotoxy(68,a);
write (' º ' ,cuotas_pagas,' ');
a := a+1;
end
end;
end;
listarnom(ar^.der);
end;{If}
end;


{************************Procedure Lista Por Numero de Socio*******************}
procedure lista;
var a:word;
begin
clrscr;
textbackground (lightblue);
Imprime(1, 1,white, ' .: Lista de Socios del Club :. ' );
normvideo;
textbackground (lightgray);
Imprime(1, 2,red, 'ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ' );
Imprime(1, 3,red, '# º ApellidoyNombre º Direccion º Dir.de Cobro º Concepto ºCuotas Pagas' );
Imprime(1, 4,red, 'ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ' );
normvideo;
assign(archivo,'cliente.dat');
reset(archivo);
a:= 5;
while not eof(archivo) do
begin
read(archivo,cliente);
with cliente do
begin
a := a+1;
car:= filepos(archivo);
gotoxy(1,a);
if activo = 1 then
begin
textcolor(green);
writeln (n_soc);
gotoxy(3,a);
write ('º ',ayn);
gotoxy(21,a);
write ('º ',dir);
gotoxy(37,a);
write ('º ',dir_cobro);
gotoxy(54,a);
write ('º ',concepto);
gotoxy(68,a);
write ('º ' ,cuotas_pagas);
end
else
begin
textcolor(green);
writeln (n_soc);
Imprime(3, a,green, 'º El socio se encuntra dado de baja' );
end;
end;
end;
Readkey;
end;


{****************************Procedure Imputacion por DNI**********************}
procedure imputaciondni; {Para que se imprima se debe agregar el comando lst a los writln}
var a:word;
begin
clrscr;
textbackground (lightblue);
imprime(1,1,white,' .: Imputacion de Pago por D.N.I :. ');
normvideo;
imprime(1,3,white,'Ingrese Numero de D.N.I del Socio: [ ][10]');
gotoxy(37,3);
textcolor (lightblue);
readln (dni);
pos := buscardni(dni,ar);
if pos <> -1 then
begin
seek(archivo,pos);
read(archivo,cliente);
with cliente do
begin
if activo = 1 then
begin
a:= 6;
textbackground (lightblue);
imprime(1,1,white,' .: Imputacion de Pago :. ');
normvideo;
textbackground (lightgray);
imprime(1,2,red,'ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ');
imprime(1,3,red,'# Socio º Nombre º Direccion º Cuotas pagas º D.N.I ');
imprime(1,4,red,'ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ');
imprime(1,5,red,'');
normvideo;
car := filepos(archivo) ;
if activo = 1 then
begin
if cuotas_pagas = 0 then
begin
normvideo;
textcolor(white);
gotoxy(1,a);
writeln (n_soc);
gotoxy(9,a);
write ('º ',ayn);
gotoxy(28,a);
write ('º ',dir);
gotoxy(51,a);
write ('º ',cuotas_pagas);
gotoxy(67,a);
write ('º ',dni);
gotoxy(25,16);
write ('Fecha de Emision:');
gotoxy(43,16);
getdate(ano,mes,dia,dow);
dia := dia;
mes := mes;
ano := ano;
write ('[',dia,'/',mes,'/',ano,']');
Seek (archivo,car);
imprime(17,20,green,' Ingrese Meses que usted decea pagar : (1..12)');
gotoxy(35,22);
readln(cuotas_pagas);
textcolor (white);
if cuotas_pagas > 0 then
begin
if cuotas_pagas <= 12then begin seek(archivo,filepos(archivo)-1); write(archivo,cliente); clrscr; imprime(30,13,white,'*** Pago Efectuado ***'); readkey; end else begin clrscr; imprime(25,15,white,'*** Supera los pagos de este Ano ***'); readkey; end; end else {si escribis 0 al imputar un pago} begin clrscr; imprime(30,13,white,'*** Accion cancelada ***'); readkey; end; end else {si ya posee pagos efectuados...} begin normvideo; textcolor(white); gotoxy(1,a); writeln (n_soc); gotoxy(8,a); write ('º ',ayn); gotoxy(28,a); write ('º ',dir); gotoxy(51,a); write ('º ',cuotas_pagas); gotoxy(67,a); write ('º ',dni); gotoxy(25,16); write ('Fecha de Emision:'); gotoxy(43,16); getdate(ano,mes,dia,dow); dia := dia; mes := mes; ano := ano; write ('[',dia,'/',mes,'/',ano,']'); Seek (archivo,car); imprime(15,20,green,' Ingrese Meses que usted decea pagar : (1..12)'); textcolor(lightblue); gotoxy(35,22); readln(num); if (num + cuotas_pagas) <= 12 then begin cuotas_pagas := cuotas_pagas + num; seek(archivo,filepos(archivo)-1); write(archivo,cliente); clrscr; imprime(30,15,white,'*** Pago Efectuado ***'); readkey; clrscr; end else {si es mayor a 12 las cuotas} begin clrscr; imprime(25,15,white,'*** Supera los pagos de este Ano ***'); readkey; end; end; end; end else{si esta inactivo o no existe} begin if activo = 0 then begin clrscr; imprime(30,12,white,'*** Socio se encuetra dado de Baja ***'); readkey; end; end; end; end; if pos = -1 then begin clrscr; imprime(30,12,white,'*** Socio no Existe ***'); readkey end; end; {****************************Procedure Imputacion por AYN**********************} procedure imputacionnom; {Para que se imprima se debe agregar el comando lst a los writln} var a:word; begin clrscr; textbackground (lightblue); imprime(1,1,white,' .: Imputacion de Pago por Apellido y Nombre :. '); normvideo; imprime(1,3,white,'Ingrese Apellido y Nombre del Socio: [ ][25]'); gotoxy(39,3); textcolor (lightblue); readln (AYN); pos := buscarnom(AYN,ar2); if pos <> -1 then
begin
seek(archivo,pos);
read(archivo,cliente);
with cliente do
begin
if activo = 1 then
begin
a:= 6;
textbackground (lightblue);
imprime(1,1,white,' .: Imputacion de Pago :. ');
normvideo;
textbackground (lightgray);
imprime(1,2,red,'ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ');
imprime(1,3,red,'# Socio º Nombre º Direccion º Cuotas pagas º D.N.I ');
imprime(1,4,red,'ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ');
imprime(1,5,red,'');
normvideo;
car := filepos(archivo) ;
normvideo;
car := filepos(archivo) ;
if activo = 1 then
begin
if cuotas_pagas = 0 then
begin
normvideo;
textcolor(white);
gotoxy(1,a);
writeln (n_soc);
gotoxy(9,a);
write ('º ',ayn);
gotoxy(28,a);
write ('º ',dir);
gotoxy(51,a);
write ('º ',cuotas_pagas);
gotoxy(67,a);
write ('º ',dni);
gotoxy(25,16);
write ('Fecha de Emision:');
gotoxy(43,16);
getdate(ano,mes,dia,dow);
dia := dia;
mes := mes;
ano := ano;
write ('[',dia,'/',mes,'/',ano,']');
Seek (archivo,car);
imprime(17,20,green,' Ingrese Meses que usted decea pagar : (1..12)');
gotoxy(35,22);
readln(cuotas_pagas);
textcolor (white);
if cuotas_pagas > 0 then
begin
if cuotas_pagas <= 12then begin seek(archivo,filepos(archivo)-1); write(archivo,cliente); clrscr; imprime(30,13,white,'*** Pago Efectuado ***'); readkey; end else begin clrscr; imprime(25,15,white,'*** Supera los pagos de este Ano ***'); readkey; end; end else {si escribis 0 al imputar un pago} begin clrscr; imprime(30,13,white,'*** Accion cancelada ***'); readkey; end; end else {si ya posee pagos efectuados...} begin normvideo; textcolor(white); gotoxy(1,a); writeln (n_soc); gotoxy(8,a); write ('º ',ayn); gotoxy(28,a); write ('º ',dir); gotoxy(51,a); write ('º ',cuotas_pagas); gotoxy(67,a); write ('º ',dni); gotoxy(25,16); write ('Fecha de Emision:'); gotoxy(43,16); getdate(ano,mes,dia,dow); dia := dia; mes := mes; ano := ano; write ('[',dia,'/',mes,'/',ano,']'); Seek (archivo,car); imprime(15,20,green,' Ingrese Meses que usted decea pagar : (1..12)'); textcolor(lightblue); gotoxy(35,22); readln(num); if (num + cuotas_pagas) <= 12 then begin cuotas_pagas := cuotas_pagas + num; seek(archivo,filepos(archivo)-1); write(archivo,cliente); clrscr; imprime(30,15,white,'*** Pago Efectuado ***'); readkey; clrscr; end else {si es mayor a 12 las cuotas} begin clrscr; imprime(25,15,white,'*** Supera los pagos de este Ano ***'); readkey; end; end; end; end else{si esta inactivo o no existe} begin if activo = 0 then begin clrscr; imprime(30,12,white,'*** Socio se encuetra dado de Baja ***'); readkey; end; end; end; end; if pos = -1 then begin clrscr; imprime(30,12,white,'*** Socio no Existe ***'); readkey end; end; {***************************Procedure Estadistica******************************} procedure estadistica; begin clrscr; begin contbaja:=0; contalta:=0; conts:=0; conta:=0; contd:=0; conti:=0; contf:=0; getdate(ano,mes,dia,dow); dia := dia; mes := mes; ano := ano; assign(archivo,'cliente.dat'); reset(archivo); begin while not eof(archivo) do begin read(archivo,cliente); with cliente do begin if cuotas_pagas <>= mes then
conta := conta +1 ;
letra := concepto[1];
if (Letra ='i')or (Letra ='I') then
conti:=conti+1;
if (Letra ='f')or (Letra ='F') then
contf:=contf+1;
if (activo = 1) then
contalta:=contalta + 1
else
contbaja:=contbaja + 1;
conts:=n_soc;
end;
end;
end;
end;
repeat
normvideo;
Imprime(25, 5 ,red, 'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»' );
Imprime(25, 6 ,red, 'º º' );
Imprime(25, 7 ,red, 'ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹' );
Imprime(25, 8 ,red, 'º º' );
Imprime(25, 9 ,red, 'º º' );
Imprime(25, 10 ,red, 'º º' );
Imprime(25, 11 ,red, 'º º' );
Imprime(25, 12 ,red, 'º º' );
Imprime(25, 13 ,red, 'º º' );
Imprime(25, 14 ,red, 'º º' );
Imprime(25, 15 ,red, 'º º' );
Imprime(25, 16 ,red, 'º º' );
Imprime(25, 17 ,red, 'º º' );
Imprime(25, 18 ,red, 'º º' );
Imprime(25, 19 ,red, 'º º' );
Imprime(25, 20 ,red, 'º º' );
Imprime(25, 21 ,red, 'º º' );
Imprime(25, 22 ,red, 'º º' );
Imprime(25, 23 ,red, 'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ[ ]ͼ' );
Imprime(28, 6 ,lightblue, 'Estadisticas del Club ' );
textcolor (white);
gotoxy(27,8);
writeln ('Total Socios : ',conts);
gotoxy(27,10);
writeln ('Socios Individuales : ',conti);
gotoxy(27,12);
writeln ('Socios Familiares : ',contf);
gotoxy(27,14);
writeln ('Socios al Dia : ',conta);
gotoxy(27,16);
writeln ('Socios Deudores : ',contd);
gotoxy(27,18);
writeln ('Socios Activos : ',contalta);
gotoxy(27,20);
writeln ('Socios Inactivos : ',contbaja);
Imprime(28,22 ,green, 'A) Volver' );
gotoxy (55,23);
readln (opcion);
until upcase (opcion) = 'A';
end;



{**************************Procedure Limpieza de Base de Datos*****************}
Procedure limpieza;
var a,b:word;
begin
repeat
clrscr;
Imprime(25, 4 ,red, 'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»' );
Imprime(25, 5 ,red, 'º º' );
Imprime(25, 6 ,red, 'ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹' );
Imprime(25, 7 ,red, 'º º' );
Imprime(25, 8 ,red, 'º º' );
Imprime(25, 9 ,red, 'º º' );
Imprime(25, 10 ,red, 'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ[ ]ͼ' );
Imprime(30, 5 ,lightblue, 'Limpiar Archivo' );
Imprime(27, 7 ,white, 'A) Socios.TXT' );
Imprime(27, 9 ,green, 'B) Volver' );
gotoxy (45,10);
readln (opcion);
case upcase(opcion) of
'A': begin
assign(archivo,'cliente.dat');
rewrite(archivo);
clrscr;
Imprime(28, 5 ,red, 'Limpiando Base de Datos...' );
Imprime(28, 6 ,red, 'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»' );
Imprime(28, 7 ,red, 'º º' );
Imprime(28, 8 ,red, 'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍ[ %]ͼ' );
a := 29;
b := 0;
repeat
gotoxy(a,7);
textbackground (lightblue);
write(' ');
delay(15);
normvideo;
a := a+1;
gotoxy(44,8);
write(b/20*100:0:0);
b := b+1;
ar :=nil;
ar2:=nil;
until b = 21;
Imprime(35, 10 ,green, 'Volver...' );
gotoxy(43,10);
readkey;
end;
end;
until upcase(opcion) = 'B' ;
end;


{**********************Cuerpo Principal****************************************}
BEGIN
{Encontrar archivo}
repeat
imprime(10,13,white,'Si no sabe el nombre del archivo se generara con el nombre ingresado' );
imprime(20,15,green,'Introducir nombre de archivo : ' );
gotoxy(25,17);
readln (S);
assign (archivo,S);
{$I-}
rewrite (archivo);
resul:=IOResult;
{$I+}
if resul<> 0 then
imprime(20,15,green,'*** El archivo no se ha encontrado ***' );
until resul=0;
ar:= nil;
ar2:=nil;
while not eof(archivo) do
begin
read(archivo,cliente);
with cliente do
begin
x.dni:=dni;
x.pos:=n_soc - 1; {arbol por dni (insercion)}
insertardni(x,ar);
x2.nom := ayn;
x2.pos := n_soc - 1; {arbolpornombre(insercion)}
insertarnom(x2,ar2);
end;
end;{Fin encontrar archivo}
repeat
normvideo;
clrscr;
cuadro;
Imprime(28, 7 ,lightblue, 'Seleccionar Opcion' );
Imprime(28, 9 ,white, 'A) AMC de Socios' );
Imprime(28, 11 ,white, 'B) Baja de Socios' );
Imprime(28, 13 ,white, 'C) Listado de Socios' );
Imprime(28, 15 ,white, 'D) Imputacion de Pago' );
Imprime(28, 17 ,white, 'E) Estadistica' );
Imprime(28, 19 ,white, 'F) Limpiar Datos' );
Imprime(28, 21 ,green, 'G) Salir' );
gotoxy(51,22);
readln (opcion);
case upcase(opcion) of
'A': socios;
'B': begin
repeat
clrscr;
assign(archivo,'cliente.dat');
reset(archivo);
Imprime(25, 10 ,red, 'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»' );
Imprime(25, 11 ,red, 'º º' );
Imprime(25, 12 ,red, 'ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹' );
Imprime(25, 13 ,red, 'º º' );
Imprime(25, 14 ,red, 'º º' );
Imprime(25, 15 ,red, 'º º' );
Imprime(25, 16 ,red, 'º º' );
Imprime(25, 17 ,red, 'º º' );
Imprime(25, 18 ,red, 'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ[ ]ͼ' );
Imprime(28, 11 ,lightblue, 'Selecionar Opcion' );
Imprime(28, 13 ,white, 'A) D.N.I' );
Imprime(28, 15 ,white, 'B) Apellido y Nombre' );
Imprime(28, 17 ,green, 'C) Volver' );
gotoxy (51,18);
readln (opcion);
case upcase(opcion) of
'A' :bajadni;
'B' :bajanom;
end
until upcase(opcion) = 'C'
end;
'C': begin
repeat
clrscr;
Imprime(25, 10 ,red, 'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»' );
Imprime(25, 11 ,red, 'º º' );
Imprime(25, 12 ,red, 'ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹' );
Imprime(25, 13 ,red, 'º º' );
Imprime(25, 14 ,red, 'º º' );
Imprime(25, 15 ,red, 'º º' );
Imprime(25, 16 ,red, 'º º' );
Imprime(25, 17 ,red, 'º º' );
Imprime(25, 18 ,red, 'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ[ ]ͼ' );
Imprime(28, 11 ,lightblue, 'Selecionar Opcion' );
Imprime(28, 13 ,white, 'A) Numero de Socio' );
Imprime(28, 15 ,white, 'B) Apellido y Nombre' );
Imprime(28, 17 ,green, 'C) Volver' );
gotoxy (51,18);
readln (opcion);
case upcase(opcion) of
'A' : lista;
'B' :begin
a := 5;
clrscr;
textbackground (lightblue);
Imprime(1, 1,white, ' .: Lista de Socios del Club ordenada por Apellido y Nombre :. ' );
normvideo;
textbackground (lightgray);
Imprime(1, 2,red, 'ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ' );
Imprime(1, 3,red, '# º ApellidoyNombre º Direccion º Dir.de Cobro º Concepto º Cuotas' );
Imprime(1, 4,red, 'ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ' );
normvideo;
listarnom(ar2);
readkey;
end;
end
until upcase(opcion) = 'C'
end;
'D': begin
repeat
clrscr;
assign(archivo,'cliente.dat');
reset(archivo);
Imprime(25, 10 ,red, 'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»' );
Imprime(25, 11 ,red, 'º º' );
Imprime(25, 12 ,red, 'ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹' );
Imprime(25, 13 ,red, 'º º' );
Imprime(25, 14 ,red, 'º º' );
Imprime(25, 15 ,red, 'º º' );
Imprime(25, 16 ,red, 'º º' );
Imprime(25, 17 ,red, 'º º' );
Imprime(25, 18 ,red, 'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ[ ]ͼ' );
Imprime(28, 11 ,lightblue, 'Selecionar Opcion' );
Imprime(28, 13 ,white, 'A) D.N.I' );
Imprime(28, 15 ,white, 'B) Apellido y Nombre' );
Imprime(28, 17 ,green, 'C) Volver' );
gotoxy (51,18);
readln (opcion);
case upcase(opcion) of
'A' :imputaciondni;
'B' :imputacionnom;
end
until upcase(opcion) = 'C'
end;
'E': estadistica;
'F': limpieza;
'G': begin
clrscr;
Imprime( 36, 6 ,white, 'Autores: ' );
Imprime( 32, 8 ,lightblue, 'Guillaume Ariel; ' );
Imprime( 25, 10 ,lightblue, 'Martinez Vilar Enrique Gabriel ;' );
Imprime( 32, 12 ,lightblue, 'Ronconi Luciano; ' );
Imprime( 25, 14 ,white, 'Universidad Tecnologica Nacional ' );
Imprime( 19, 16 ,white, 'Facultad Regional de Concepcion del Uruguay; ' );
end;
end
until upcase (opcion) = 'G';
close(archivo);
END.