First commit 31/01/1996
This commit is contained in:
297
PRUEBA.CPP
Normal file
297
PRUEBA.CPP
Normal file
@ -0,0 +1,297 @@
|
||||
/*************************************************************************\
|
||||
| |
|
||||
| Programa para probar el buen funcionamiento de la libreria BDatos .(JD) |
|
||||
| |
|
||||
| 12.03.96 |
|
||||
\*************************************************************************/
|
||||
#include <conio.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "BDatos.hh"
|
||||
|
||||
void Altas(void);
|
||||
void Bajas(void);
|
||||
void Listar(void);
|
||||
void Modificar(void);
|
||||
void MuestraMenu(void);
|
||||
int Busca( char *nombre );
|
||||
void Insertar_Especial(void);
|
||||
|
||||
void RellenaBase(void);
|
||||
int fcmp( const void *A, const void *B );
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char nombre[15];
|
||||
char apellidos[50];
|
||||
long DNI;
|
||||
int Grupo;
|
||||
} DummyStruct;
|
||||
|
||||
DummyStruct dummy;
|
||||
|
||||
BDatos DummyBase;
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int ok = 0;
|
||||
|
||||
strcpy( DummyBase.MyHeader.ProgName, "Dummy Prog..." );
|
||||
DummyBase.MyHeader.VerHi = 1;
|
||||
DummyBase.MyHeader.VerLow = 0;
|
||||
if ( DummyBase.AbrirReg( "dummy.fil", sizeof( DummyStruct ) ) != OK )
|
||||
{
|
||||
cprintf("\r\nSe producio un error: %d", DummyBase.lError );
|
||||
cprintf("\r\n%s\r\n", DummyBase.cError );
|
||||
DummyBase.CerrarReg();
|
||||
return 1;
|
||||
}
|
||||
|
||||
do
|
||||
{
|
||||
MuestraMenu();
|
||||
switch( getch() )
|
||||
{
|
||||
// Altas
|
||||
case '1':
|
||||
Altas();
|
||||
break;
|
||||
// Bajas
|
||||
case '2':
|
||||
Bajas();
|
||||
break;
|
||||
// Modificaciones
|
||||
case '3':
|
||||
Modificar();
|
||||
break;
|
||||
// Listar
|
||||
case '4':
|
||||
Listar();
|
||||
break;
|
||||
// CortarRegistros
|
||||
case '5':
|
||||
DummyBase.ShortReg();
|
||||
break;
|
||||
// Altas
|
||||
case '6':
|
||||
Insertar_Especial();
|
||||
break;
|
||||
// Ordena la base segun nombre
|
||||
case '7':
|
||||
DummyBase.SortReg( fcmp );
|
||||
break;
|
||||
case '8':
|
||||
RellenaBase();
|
||||
break;
|
||||
|
||||
// Fin
|
||||
case '0':
|
||||
ok = 1;
|
||||
break;
|
||||
|
||||
};
|
||||
}while( !ok );
|
||||
|
||||
DummyBase.CerrarReg();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void MuestraMenu(void)
|
||||
{
|
||||
clrscr();
|
||||
cprintf(" M E N <20> P R I N C I P A L \r\n");
|
||||
cprintf("-------------------------------\r\n");
|
||||
|
||||
cprintf(" 1 Altas <20> nReg: %ld \r\n", DummyBase.Registros() );
|
||||
cprintf(" 2 Bajas <20> nRegT: %ld \r\n", DummyBase.NRegTotal() );
|
||||
cprintf(" 3 Modificaciones <20> CReg: %ld \r\n", DummyBase.RegActual() );
|
||||
cprintf(" 4 Listar <20> --- \r\n");
|
||||
cprintf(" 5 Cortar Fichero <20> _-<2D> J.D <20>-_\r\n");
|
||||
cprintf(" <20> <20>-_ F.V _-<2D>\r\n");
|
||||
cprintf(" 0 Salir al DOS <20> --- \r\n");
|
||||
cprintf(" <20> F R i \r\n");
|
||||
cprintf(" 6 Ins. Especial <20> u e S \r\n");
|
||||
cprintf(" 7 Ordenar Campo <20> T N i \r\n");
|
||||
cprintf(" <20> u O V \r\n");
|
||||
}
|
||||
|
||||
void RellenaBase(void)
|
||||
{
|
||||
int ficha;
|
||||
|
||||
cprintf("\r\nRellenando base con 800 fichas. Por favor, espere...");
|
||||
|
||||
for( ficha=0; ficha<800; ficha++ )
|
||||
{
|
||||
sprintf( dummy.nombre, "P%03d", (800-ficha) );
|
||||
sprintf( dummy.apellidos, "P%03d", ficha );
|
||||
dummy.DNI = ficha;
|
||||
dummy.Grupo = ficha;
|
||||
|
||||
// Inserta un Reg por arriba de pos.
|
||||
if ( DummyBase.InsReg( (void *)&dummy, ficha, ARRIBA ) != OK )
|
||||
{
|
||||
cprintf("\r\nSe producio un error: %d", DummyBase.lError );
|
||||
cprintf("\r\n%s\r\n", DummyBase.cError );
|
||||
DummyBase.CerrarReg();
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Altas(void)
|
||||
{
|
||||
cprintf("\r\nIntroduzca: ( nombre, apellidos, DNI, Grupo ) \r\n");
|
||||
scanf( "%14s %49s %ld %d", dummy.nombre, dummy.apellidos, &dummy.DNI, &dummy.Grupo );
|
||||
|
||||
// Inserta un Reg por arriba de pos.
|
||||
if ( DummyBase.InsReg( (void *)&dummy, DummyBase.Registros(), ARRIBA ) != OK )
|
||||
{
|
||||
cprintf("\r\nSe producio un error: %d", DummyBase.lError );
|
||||
cprintf("\r\n%s\r\n", DummyBase.cError );
|
||||
DummyBase.CerrarReg();
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
void Insertar_Especial(void)
|
||||
{
|
||||
int PorDonde, Adonde;
|
||||
|
||||
cprintf("\r\nIntroduzca: ( nombre, apellidos, DNI, Grupo ) \r\n");
|
||||
scanf( "%14s %49s %ld %d", dummy.nombre, dummy.apellidos, &dummy.DNI, &dummy.Grupo );
|
||||
fflush(stdin);
|
||||
|
||||
cprintf("\r\nIntroduzca donde y por donde insertar (1==ARRIBA)(0==ABAJO): ");
|
||||
scanf( "%d %d", &Adonde, &PorDonde );
|
||||
fflush(stdin);
|
||||
|
||||
PorDonde = ( PorDonde == 1 ) ? ARRIBA : ABAJO ;
|
||||
|
||||
// Inserta un Reg por arriba de pos.
|
||||
if ( DummyBase.InsReg( (void *)&dummy, Adonde, PorDonde ) != OK )
|
||||
{
|
||||
cprintf("\r\nSe producio un error: %d", DummyBase.lError );
|
||||
cprintf("\r\n%s\r\n", DummyBase.cError );
|
||||
|
||||
cprintf("\r\nRegistros aun abiertos, condici<63>n metaestable");
|
||||
}
|
||||
}
|
||||
|
||||
void Bajas(void)
|
||||
{
|
||||
char nombTMP[80];
|
||||
cprintf("\r\nIntroduzca nombre a eliminar: ");
|
||||
scanf( "%14s", nombTMP );
|
||||
|
||||
if ( Busca( nombTMP ) != OK )
|
||||
{
|
||||
cprintf( "\r\nFichero no se encuentra en la base" );
|
||||
getch();
|
||||
return;
|
||||
}
|
||||
|
||||
if ( DummyBase.LeeReg( (void *)&dummy, DummyBase.RegActual() ) != OK )
|
||||
{
|
||||
cprintf("\r\nSe producio un error: %d", DummyBase.lError );
|
||||
cprintf("\r\n%s\r\n", DummyBase.cError );
|
||||
DummyBase.CerrarReg();
|
||||
exit(1);
|
||||
}
|
||||
|
||||
cprintf( "%14s %40s %5ld %5d\n\r", dummy.nombre, dummy.apellidos, dummy.DNI, dummy.Grupo );
|
||||
|
||||
if ( getch() == 32 ) return;
|
||||
|
||||
// Borra el registro de la posicion actual
|
||||
if ( DummyBase.DelReg( DummyBase.RegActual() ) != OK )
|
||||
{
|
||||
cprintf("\r\nSe producio un error: %d", DummyBase.lError );
|
||||
cprintf("\r\n%s\r\n", DummyBase.cError );
|
||||
DummyBase.CerrarReg();
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
void Modificar(void)
|
||||
{
|
||||
char nombTMP[80];
|
||||
|
||||
cprintf("\r\nIntroduzca nombre a modificar: ");
|
||||
scanf( "%14s", nombTMP );
|
||||
|
||||
if ( Busca( nombTMP ) != OK )
|
||||
{
|
||||
cprintf( "\r\nFichero no se encuentra en la base" );
|
||||
getch();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
cprintf("\r\nIntroduzca: ( nombre, apellidos, DNI, Grupo ) \r\n");
|
||||
scanf( "%14s %49s %ld %d", dummy.nombre, dummy.apellidos, &dummy.DNI, &dummy.Grupo );
|
||||
|
||||
// Escribe el Reg en la base
|
||||
if ( DummyBase.EscribeReg( (void *)&dummy, DummyBase.RegActual() ) != OK )
|
||||
{
|
||||
cprintf("\r\nSe producio un error: %d", DummyBase.lError );
|
||||
cprintf("\r\n%s\r\n", DummyBase.cError );
|
||||
DummyBase.CerrarReg();
|
||||
exit(1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void Listar( void )
|
||||
{
|
||||
int i;
|
||||
cprintf( " Nombre Apelidos D.N.I Grupo \n\r" );
|
||||
cprintf( "------------------------------------------------------------------------------\n\r" );
|
||||
|
||||
|
||||
for( i=0; i<DummyBase.Registros(); i++ )
|
||||
{
|
||||
if ( DummyBase.LeeReg( (void *)&dummy, i ) != OK )
|
||||
{
|
||||
cprintf("\r\nSe producio un error: %d", DummyBase.lError );
|
||||
cprintf("\r\n%s\r\n", DummyBase.cError );
|
||||
DummyBase.CerrarReg();
|
||||
exit(1);
|
||||
}
|
||||
|
||||
cprintf( "%14s %40s %5ld %5d\n\r", dummy.nombre, dummy.apellidos, dummy.DNI, dummy.Grupo );
|
||||
|
||||
}
|
||||
getch();
|
||||
|
||||
}
|
||||
|
||||
int Busca( char *nombre )
|
||||
{
|
||||
int i, enc = ERROR;
|
||||
|
||||
for( i=0; i<DummyBase.Registros() && enc != OK; i++ )
|
||||
{
|
||||
if ( DummyBase.LeeReg( (void *)&dummy, i ) != OK )
|
||||
{
|
||||
cprintf("\r\nSe producio un error: %d", DummyBase.lError );
|
||||
cprintf("\r\n%s\r\n", DummyBase.cError );
|
||||
DummyBase.CerrarReg();
|
||||
exit(1);
|
||||
}
|
||||
if ( strcmp( dummy.nombre, nombre ) == 0 )
|
||||
enc = OK;
|
||||
}
|
||||
|
||||
return enc;
|
||||
}
|
||||
|
||||
int fcmp( const void *A, const void *B )
|
||||
{
|
||||
return strcmp( ((DummyStruct *)A) -> nombre, ((DummyStruct *)B) -> nombre );
|
||||
}
|
||||
|
Reference in New Issue
Block a user