El Guru Programador
Usuario DESCONOCIDO | Registrate Gratis | Usuarios Registrados
Base de Datos II
Autor [pako] Calificacion
Otra vez, Pako uno de los mejores desarrolladores en C, hecho otra vez en con listas circulares doblemete enlazadas y con archivos, ::päko::-->>Cali-Colombia.

/* Programador: Jose Alfredo Sinisterra Rodriguez --->>> by PAKO
Materia: Estructuras de datos II
U.C.C "Universidad Cooperativa de Colombia"
Programa de articulos o inventarios de una empresa
o como una base de datos...
Hecho en listas doblemente enlazadas circulaes con archivos y otras cosas mas.
*/

#include <stdio.h>
#include <conio.h>
#include <alloc.h>
#include <ctype.h>
#include <time.h>
#include <dos.h>
#include <string.h>
#include <io.h>
#include <stdlib.h>


#define gopri(a,b,c) gotoxy(a,b); cprintf(c);
#define color(a,b) textcolor(a);textbackground(b);

typedef struct producto{
long codigo;
char nombre[25];
char descrip[40];
char valor_comp[15];
char cant[10];
struct tm *fecha;
char iva[7];
char porc_venta[7];
float valor_venta;
char proveedor[30];
struct producto *ant, *sig;
};


struct producto *CAB=NULL,*P=NULL;
int n_art=0;
int clave1=200;
int clave2=100;

void cargar();
void guardar();
void menu_principal();
void nodo_producto();
void verifica_nombre_producto();
void verifica_descrip();
void verifica_cantidad();
void verifica_valor_comp();
void verifica_porc_venta();
void verifica_iva();
void verifica_nombre_proveedor();
void boseto_producto();
void listar_act_producto();
void insertar_producto(struct producto *P);
void ventana_menu_productos();
void menu_mostrar_productos();
void mostrar_productos_varios();
void mostrar_productos_uno_uno();
void elimina_producto(struct producto *P);
void modifica_producto(struct producto *P);
void ventana_menu_productos_mostrar();
void menu_buscar_productos();
void buscar_producto_codigo();
void busqueda_exhaustiva();
void buscar_producto_nombre();
struct producto *localiza_nombre_producto(char pnombre[]);
char *minus(char nombre[]);
void ventana_menu_productos_buscar();

/*::::::::::::::::::::..FUNCIONES DE LOS PRODUCTOS..:::::::::::::::::::::*/
/*::::::::::::::::::..MENU PRINCIPAL DE LOS PRODUCTOS..::::::::::::::::::*/



void main()
{

int rclave,i=0;
do{
clrscr();
color(1,0);gopri(33,12,"ENTRE CLAVE: ");
scanf("%d",&rclave);
if(rclave == clave1){
cargar();
menu_principal();
guardar();
break;
}
else{
color(0+128,1);gopri(26,13,"LA CLAVE NO ES CORRECTA }:-(");
getch();
}
i++;
}while(i!=3);
if(i==3){
clrscr();color(0+128,4);gopri(29,14,"AH AH, INTENTA OTRO DIA");
getch();
}
}



void menu_principal()
{
int d,c,s,flar=25,flab=24,fder=17,fizq=16;
d=1;
while(d!=4)
{
time_t timer;
struct tm *tblock;
/* coge el tiempo actual */
timer = time(NULL);
/* convierte el dato del tiempo a una estructura */
tblock = localtime(&timer);
//--------------------------------
textmode(2);
color(10,0);//7
clrscr();
color(0,10);
gotoxy(1,25);
cprintf("PRESIONA FLECHA %c ¢ %c, Y PRESIONA ENTER PARA ESCOJER TU OPCION ->> ART_Pako 1.0",flab,flar);
color(10,0);
ventana_menu_productos();
d=1;
c=1;
do{
color(0,10);
gotoxy(1,1);
cprintf("HAY %d CLASES DE ARTICULOS EN LA LISTA. FECHA Y HORA -> %s",n_art,asctime(tblock));
gotoxy(28,3);
gopri(27,4," PRODUCTOS ");
color(10,0);
gopri(26,6," ADICIONAR ");
gopri(26,8," MOSTRAR ");
gopri(26,10," BUSCAR ");
gopri(26,12," SALIR ");
if(d==0) d=4;
if(d==5) d=1;
color(0,10);
switch(d)
{
case 1 :gopri(26,6," ADICIONAR ");
break;
case 2 :gopri(26,8," MOSTRAR ");
break;
case 3 :gopri(26,10," BUSCAR ");
break;
case 4 :gopri(26,12," SALIR ");
break;
}
c=getch();
if(c==72) d=d-1;
if(c==80) d=d+1;
}while(c!=13);
switch(d)
{
case 1 :nodo_producto();break;
case 2 :if(n_art>0){
menu_mostrar_productos();
}
break;
case 3 :if(n_art>0){
menu_buscar_productos();
}
break;
case 4 :break;

}

}
}

void nodo_producto()
{
clrscr();
boseto_producto();
color(10,0);
P=(struct producto *)malloc(sizeof(struct producto));
time_t timer;
//struct tm *tblock;
/* coge el tiempo actual */
timer = time(NULL);
/* convierte el dato del tiempo a una estructura */
P->fecha = localtime(&timer);
if(CAB==NULL){
P->codigo=1001;
}
else{
P->codigo=(CAB->ant->codigo)+1;
}
color(0,10);gopri(27,5," REGISTRANDO PRODUCTO ");color(10,0);
gotoxy(23,7);printf("%ld",P->codigo);
verifica_nombre_producto();//gotoxy(23,8);gets(p->nombre);
verifica_descrip();//gotoxy(23,9);gets(p->descrip);
verifica_cantidad();//gotoxy(23,10);gets(p->cant);
verifica_valor_comp();//gotoxy(23,11);gets(p->valor_comp);
verifica_porc_venta();//gotoxy(23,12);gets(p->porc_venta);
verifica_iva();//gotoxy(23,13);gets(p->iva);
P->valor_venta=(atof(P->valor_comp)*((atof(P->iva)/100)+1)*((atof(P->porc_venta)/100)+1));
delay(50);
gotoxy(23,14);printf("%f",P->valor_venta);
delay(50);
gotoxy(23,15);printf("%s",asctime(P->fecha));
delay(50);
verifica_nombre_proveedor();
insertar_producto(P);
}

void verifica_nombre_producto()
{
int i,jur;
//char code[10];
//struct proveedor *aux;
for(;;)
{
jur=0;
clrscr();
boseto_producto();
color(0,10);gopri(27,5," REGISTRANDO PRODUCTO ");color(10,0);
gotoxy(23,7);printf("%ld",P->codigo);
gotoxy(23,8);gets(P->nombre);//Pide nombre
for(i=0;i<strlen(P->nombre);i++)//Verifica hay caracteres en Codigo
{
if(P->nombre[i]>=0 && P->nombre[i]<=255)
{
jur++;
}
}
if (jur>0){ //si esto se cumple rompe el for(;;)
break;
}
}
}

void verifica_descrip()
{
int i,jur;
//char code[10];
//struct proveedor *aux;
for(;;)
{
jur=0;
clrscr();
boseto_producto();
color(0,10);gopri(27,5," REGISTRANDO PRODUCTO ");color(10,0);
gotoxy(23,7);printf("%ld",P->codigo);
gotoxy(23,8);printf("%s",strupr(P->nombre));
gotoxy(23,9);gets(P->descrip);//Pide descripcion
for(i=0;i<strlen(P->descrip);i++)//Verifica hay caracteres en Codigo
{
if(P->descrip[i]>=0 && P->descrip[i]<=255)
{
jur++;
}
}
if (jur>0){ //si esto se cumple rompe el for(;;)
break;
}
}
}

void verifica_cantidad()
{
int i,jur;
//char code[10];
//struct proveedor *aux;
for(;;)
{
jur=0;
clrscr();
boseto_producto();
color(0,10);gopri(27,5," REGISTRANDO PRODUCTO ");color(10,0);
gotoxy(23,7);printf("%ld",P->codigo);
gotoxy(23,8);printf("%s",strupr(P->nombre));
gotoxy(23,9);printf("%s",strupr(P->descrip));
gotoxy(23,10);gets(P->cant);//Pide cantidad
for(i=0;i<strlen(P->cant);i++)//Verifica hay caracteres en Codigo
{
if(P->cant[i]>=48 && P->cant[i]<=59)
{
jur++;
}
if(P->cant[i]<48 || P->cant[i]>59)
{
jur=0;
}
}
if (jur>0){ //si esto se cumple rompe el for(;;)
break;
}
}
}

void verifica_valor_comp()
{
int i,jur;
//char code[10];
//struct proveedor *aux;
for(;;)
{
jur=0;
clrscr();
boseto_producto();
color(0,10);gopri(27,5," REGISTRANDO PRODUCTO ");color(10,0);
gotoxy(23,7);printf("%ld",P->codigo);
gotoxy(23,8);printf("%s",strupr(P->nombre));
gotoxy(23,9);printf("%s",strupr(P->descrip));
gotoxy(23,10);printf("%s",P->cant);
gotoxy(23,11);gets(P->valor_comp);//Pide valor de la compra
for(i=0;i<strlen(P->valor_comp);i++)//Verifica hay caracteres en Codigo
{
if((P->valor_comp[i]>=48 && P->valor_comp[i]<=59) || (P->valor_comp[i]==46))
{
jur++;
}
if(P->valor_comp[i]<48 || P->valor_comp[i]>59)
{
jur=0;
}
}
if (jur>0){ //si esto se cumple rompe el for(;;)
break;
}
}
}

void verifica_porc_venta()
{
int i,jur;
//char code[10];
//struct proveedor *aux;
for(;;)
{
jur=0;
clrscr();
boseto_producto();
color(0,10);gopri(27,5," REGISTRANDO PRODUCTO ");color(10,0);
gotoxy(23,7);printf("%ld",P->codigo);
gotoxy(23,8);printf("%s",strupr(P->nombre));
gotoxy(23,9);printf("%s",strupr(P->descrip));
gotoxy(23,10);printf("%s",P->cant);
gotoxy(23,11);printf("%s",P->valor_comp);
gotoxy(23,12);gets(P->porc_venta);//Pide valor de la compra
for(i=0;i<strlen(P->porc_venta);i++)//Verifica hay caracteres en Codigo
{
if((P->porc_venta[i]>=48 && P->porc_venta[i]<=59) || (P->porc_venta[i]==46))
{
jur++;
}
if(P->porc_venta[i]<48 || P->porc_venta[i]>59)
{
jur=0;
}
}
if (jur>0){ //si esto se cumple rompe el for(;;)
break;
}
}
}

void verifica_iva()
{
int i,jur;
//char code[10];
//struct proveedor *aux;
for(;;)
{
jur=0;
clrscr();
boseto_producto();
color(0,10);gopri(27,5," REGISTRANDO PRODUCTO ");color(10,0);
gotoxy(23,7);printf("%ld",P->codigo);
gotoxy(23,8);printf("%s",strupr(P->nombre));
gotoxy(23,9);printf("%s",strupr(P->descrip));
gotoxy(23,10);printf("%s",P->cant);
gotoxy(23,11);printf("%s",P->valor_comp);
gotoxy(23,12);printf("%s",P->porc_venta);
gotoxy(23,13);gets(P->iva);//Pide valor de la compra
for(i=0;i<strlen(P->iva);i++)//Verifica hay caracteres en Codigo
{
if((P->iva[i]>=48 && P->iva[i]<=59) || (P->iva[i]==46))
{
jur++;
}
if(P->iva[i]<48 || P->iva[i]>59)
{
jur=0;
}
}
if(atof(P->iva)>100){
jur=0;
}
if (jur>0){ //si esto se cumple rompe el for(;;)
break;
}
}
}

void verifica_nombre_proveedor()
{
int i,jur;
//char code[10];
//struct proveedor *aux;
for(;;)
{
jur=0;
clrscr();
boseto_producto();
color(0,10);gopri(27,5," REGISTRANDO PRODUCTO ");color(10,0);
gotoxy(23,7);printf("%ld",P->codigo);
gotoxy(23,8);printf("%s",strupr(P->nombre));
gotoxy(23,9);printf("%s",strupr(P->descrip));
gotoxy(23,10);printf("%s",P->cant);
gotoxy(23,11);printf("%s",P->valor_comp);
gotoxy(23,12);printf("%s",P->porc_venta);
gotoxy(23,13);printf("%s",P->iva);
gotoxy(23,14);printf("%f",P->valor_venta);
gotoxy(23,15);printf("%s",asctime(P->fecha));
gotoxy(23,16);gets(P->proveedor);//Pide PORVEEDOR
for(i=0;i<strlen(P->proveedor);i++)//Verifica hay caracteres en Codigo
{
if(P->proveedor[i]>=0 && P->proveedor[i]<=255)
{
jur++;
}
}
if (jur>0){ //si esto se cumple rompe el for(;;)
break;
}
}
}


void boseto_producto()
{
gopri(1,6,"ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ");
gopri(2,7," CODIGO : ");
gopri(2,8," NOMBRE : ");
gopri(2,9," DESCRIPCION : ");
gopri(2,10," CANTIDAD : ");
gopri(2,11," VALOR COMPRA : ");
gopri(2,12," PORCENTAJE VENTA : ");
gopri(2,13," IVA : ");
gopri(2,14," VALOR VENTA : ");
gopri(2,15," FECHA : ");
gopri(2,16," PROVEEDOR : ");
gopri(1,17,"ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ");
}

void listar_act_producto()
{
gotoxy(23,7);printf("%ld",P->codigo);
gotoxy(23,8);printf("%s",strupr(P->nombre));
gotoxy(23,9);printf("%s",strupr(P->descrip));
gotoxy(23,10);printf("%s",P->cant);
gotoxy(23,11);printf("%s",P->valor_comp);
gotoxy(23,12);printf("%s",P->porc_venta);
gotoxy(23,13);printf("%s",P->iva);
gotoxy(23,14);printf("%f",P->valor_venta);
gotoxy(23,15);printf("%s",asctime(P->fecha));
gotoxy(23,16);printf("%s",P->proveedor);
}


void insertar_producto(struct producto *P)
{
struct producto *aux;/*,*ap;*/ /* puntero auxiliar */
aux=CAB;

if (CAB == NULL) /* insertar el primer registro de una lista */
{
CAB= P;
CAB->ant = CAB;
CAB->ant = P;
CAB->ant->sig = CAB;
} else
for (;;)
{
if (P->codigo < aux->codigo)
{
if (aux == CAB) /* insertar registro al principio de la lista */
{
P->sig = aux;
P->ant = CAB->ant;
aux->ant = P;
CAB = P;
CAB->ant->sig = P;
break;
}
else
{
P->ant = aux->ant; /* insertar registros en el medio de la lista */
P->sig = aux;
aux->ant->sig = P;
aux->ant = P;
break;
}
}
else{
if (aux->sig == CAB) /* insertar registros al final de la lista */
{
aux->sig = P;
P->sig = CAB;
CAB->ant = P;
P->ant = aux;
CAB->ant = P;
break;
}
}
aux = aux->sig;
} /* fin de for(;;) */
n_art++;
}


/*:::::::::::::::..MARCO DEL MENU DE LOS PRODUCTOS..:::::::::::::::::*/

void ventana_menu_productos()
{
gopri(24,5,"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿");
gopri(24,6,"³ ³");
gopri(24,7,"³ ³");
gopri(24,8,"³ ³");
gopri(24,9,"³ ³");
gopri(24,10,"³ ³");
gopri(24,11,"³ ³");
gopri(24,12,"³ ³");
gopri(24,13,"³ ³");
gopri(24,14,"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ");
}

/*::::::::::::::::::..MENU MOSTRAR DE LOS PRODUCTOS..:::::::::::::::::::*/

void menu_mostrar_productos()
{
int d,c,s,flar=25,flab=24,fder=17,fizq=16;
d=1;
while(d!=3)
{
time_t timer;
struct tm *tblock;
/* coge el tiempo actual */
timer = time(NULL);
/* convierte el dato del tiempo a una estructura */
tblock = localtime(&timer);
//--------------------------------
textmode(2);
color(10,0);//7
clrscr();
color(0,10);
gotoxy(1,25);
cprintf("PRESIONA FLECHA %c ¢ %c, Y PRESIONA ENTER PARA ESCOJER TU OPCION ->> ART_Pako 1.0",flab,flar);
color(10,0);
ventana_menu_productos_mostrar();
d=1;
c=1;
do{
color(0,10);
gotoxy(1,1);
cprintf("HAY %d CLASES DE ARTICULOS EN LA LISTA. FECHA Y HORA -> %s",n_art,asctime(tblock));
gopri(24,4," MOSTRAR PRODUCTOS ");
color(10,0);
gopri(26,6," UNO POR UNO ");
gopri(26,8," VARIOS ");
gopri(26,10," SALIR ");
if(d==0) d=3;
if(d==4) d=1;
color(0,10);
switch(d)
{
case 1 :gopri(26,6," UNO POR UNO ");
break;
case 2 :gopri(26,8," VARIOS ");
break;
case 3 :gopri(26,10," SALIR ");
break;
}
c=getch();
if(c==72) d=d-1;
if(c==80) d=d+1;
}while(c!=13);
switch(d)
{
case 1 :P=CAB;mostrar_productos_uno_uno();break;
case 2 :mostrar_productos_varios();break;
case 3 :break;


}

}
}

void mostrar_productos_varios()
{
clrscr();
P=CAB;
int i=4;
float vt;
clrscr();
color(10,0);gopri(17,1,"..::MOSTRANDO LISTADO DE PRECIOS Y PRODUCTOS::..");color(0,10);
gopri(1,2,"ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ");
gopri(1,i-1,"CODIGO");gopri(9,i-1,"NONBRE");gopri(39,i-1,"IVA");gopri(43,i-1,"P/V");
gopri(47,i-1,"PRE/IVA");gopri(60,i-1,"CANT");gopri(66,i-1,"PREC/T/IVA");
do{
gotoxy(1,i);printf("%ld",P->codigo);gotoxy(9,i);printf("%s",P->nombre);printf(" %s",P->descrip);
gotoxy(38,i);printf(" %s",P->iva);gotoxy(43,i);printf("%s",P->porc_venta);gotoxy(47,i);printf("%f",P->valor_venta);
gotoxy(60,i);printf("%s",P->cant);gotoxy(66,i);printf("%f",vt=(P->valor_venta)*(atoi(P->cant)));
i++;
if(i==20)
{
i=4;
gopri(1,24,"PRESIONE ENTER PARA VER LOS PROXIMOS PRODUCTOS");
getch();
clrscr();
color(10,0);gopri(17,1,"..::MOSTRANDO LISTADO DE PRECIOS Y PRODUCTOS::..");color(0,10);
gopri(1,2,"ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ");
gopri(1,i-1,"CODIGO");gopri(9,i-1,"NONBRE");gopri(39,i-1,"IVA");gopri(43,i-1,"P/V");
gopri(47,i-1,"PRE/IVA");gopri(60,i-1,"CANT");gopri(66,i-1,"PREC/T/IVA");
}
P=P->sig;
}while(P!=CAB);
getch();
}



void mostrar_productos_uno_uno()
{
int d,c,s,act=1;
int rclave;
char elim;
d=1;
while(d!=5)
{
flushall();
textmode(2);
color(10,0);//7

clrscr();
boseto_producto();
listar_act_producto();
color(0,10);
gopri(10,5," MOSTRANDO PRODUCTOS CON SUS OPCIONES CORRESPONDIENTES ");
color(10,0);
gopri(1,2,"ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ");
/*color(0,10);gotoxy(1,25);cprintf("PRESIONA FLECHA - ¢ -, Y PRESIONA ENTER PARA ESCOJER TU OPCION ->> ³ %d DE %d",act,n_art);
color(10,0);*/
//gopri(2,1," SIGUIENTE ANTERIOR ELIMINAR MODIFICAR SALIR ");
d=1;
c=1;
do{
color(0,10);gotoxy(1,25);cprintf("PRESIONA FLECHA - ¢ -, Y PRESIONA ENTER PARA ESCOJER TU OPCION ->> ³ %d DE %d",act,n_art);
color(10,0);
//color(6+BLINK,0);
//gopri(8,3," MENU DE BUSQUEDA ");
color(10,0);
gopri(6,1," SIGUIENTE ");
gopri(20,1," ANTERIOR ");
gopri(35,1," ELIMINAR ");
gopri(49,1," MODIFICAR ");
gopri(64,1," SALIR ");
if(d==0) d=5;
if(d==6) d=1;
color(0,10);
switch(d)
{
case 1 :gopri(6,1," SIGUIENTE ");break;
case 2 :gopri(20,1," ANTERIOR ");break;
case 3 :gopri(35,1," ELIMINAR ");break;
case 4 :gopri(49,1," MODIFICAR ");break;
case 5 :gopri(64,1," SALIR ");break;
}
c=getch();
if(c==75) d=d-1;
if(c==77) d=d+1;
}while(c!=13);
switch(d)
{
case 1 :P=P->sig;
boseto_producto();
listar_act_producto();
act++;
if(act>n_art) act=1;
break;
case 2 :P=P->ant;
boseto_producto();
listar_act_producto();
act--;
if(act==0); act=n_art;
break;
case 3 :
gopri(10,20,"ENTRE CLAVE DE ELIMINAR: ");
scanf("%d",&rclave);
if(rclave==clave2)
{
gotoxy(10,20);
printf("ESTA TOTALMENTE SEGURO DE ELIMINAR ESTOS DATOS SI(S), NO(N)");
elim=tolower(getch());
if (elim=='s')
{
elimina_producto(P);
n_art--;
if(n_art<=0)
{
clrscr();
//color(10,0);
gotoxy(25,12);printf(" SE ELIMINARON TODOS LOS DATOS ");
sleep(2);
CAB=P=NULL;//guardar();
d=5;
}
else{
P=P->sig;
}
}
}
else{
color(0,1);gopri(10,21,"ENTRASTE MAL LA CLAVE");
getch();
}
break;
case 4 :gopri(10,20,"ENTRE CLAVE DE MODIFICAR: ");
scanf("%d",&rclave);
if(rclave==clave2)
{
modifica_producto(P);
}
else{
color(0,1);gopri(10,21,"ENTRASTE MAL LA CLAVE");
getch();
}
break;
case 5 :break;
}
}
}


void elimina_producto(struct producto *P)
{
flushall();
//fflush(fp);
struct producto *q;
if(P==CAB){
CAB=CAB->sig;
}
q = P->ant;
q->sig = P->sig;
P->sig->ant = q;
free(P);
// p=q->sig;
// if (!(cab))
// {
// cab=q->sig;
// }
}

void modifica_producto(struct producto *P)
{
struct producto info;
int d,c,s,i,jur;
char modif;
d=1;
while(d!=11)
{
flushall();
textmode(2);
color(10,0);//7
clrscr();
boseto_producto();
listar_act_producto();
color(0,10);
gopri(29,5," MODIFICANDO PRODUCTOS ");
color(10,0);
gopri(1,2,"ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ");
gopri(6,1," SIGUIENTE ");
gopri(20,1," ANTERIOR ");
gopri(35,1," ELIMINAR ");
gopri(49,1," MODIFICAR ");
gopri(64,1," SALIR ");
d=1;
c=1;
do{
color(10,0);
gopri(2,7," CODIGO ");
gopri(2,8," NOMBRE ");
gopri(2,9," DESCRIPCION ");
gopri(2,10," CANTIDAD ");
gopri(2,11," VALOR COMPRA ");
gopri(2,12," PROCENTAJE VENTA ");
gopri(2,13," IVA ");
gopri(2,14," VALOR VENTA ");
gopri(2,15," FECHA ");
gopri(2,16," PROVEEDOR ");
gopri(2,18," SALIR ");
if(d==0) d=11;
if(d==12) d=1;
color(0,10);
switch(d)
{
case 1 :gopri(2,7," CODIGO ");break;
case 2 :gopri(2,8," NOMBRE ");break;
case 3 :gopri(2,9," DESCRIPCION ");break;
case 4 :gopri(2,10," CANTIDAD ");break;
case 5 :gopri(2,11," VALOR COMPRA ");break;
case 6 :gopri(2,12," PROCENTAJE VENTA ");break;
case 7 :gopri(2,13," IVA ");break;
case 8 :gopri(2,14," VALOR VENTA ");break;
case 9 :gopri(2,15," FECHA ");break;
case 10:gopri(2,16," PROVEEDOR ");break;
case 11:gopri(2,18," SALIR ");break;
}
c=getch();
if(c==72) d=d-1;
if(c==80) d=d+1;
}while(c!=13);
switch(d)
{
case 1 :gopri(10,20,"AH AH, IMPOSIBLE!!!");
sleep(2);
break;
case 2 :for(;;){
jur=0;
gopri(23,8," ");
gotoxy(23,8);gets(info.nombre);
for(i=0;i<strlen(info.nombre);i++){
if(info.nombre[i]>=0 && info.nombre[i]<=255)
{
jur++;
}
}
if (jur>0){ //si esto se cumple rompe el for(;;)
break;
}
}
gopri(10,20,"ESTA SEGURO DE MODIFICAR EL NOMBRE SI(S) NO(N)");
modif=tolower(getch());
if(modif=='s'){
strcpy(P->nombre,info.nombre);
}
break;
case 3 :for(;;){
jur=0;
gopri(23,9," ");
gotoxy(23,9);gets(info.descrip);
for(i=0;i<strlen(info.descrip);i++){
if((info.descrip[i]>=0 && info.descrip[i]<=255))
{
jur++;
}
}
if (jur>0){ //si esto se cumple rompe el for(;;)
break;
}
}
gopri(10,20,"ESTA SEGURO DE MODIFICAR LA DESCRIPCION SI(S) NO(N)");
modif=tolower(getch());
if(modif=='s'){
strcpy(P->descrip,info.descrip);
}
break;
case 4 :for(;;){
jur=0;
gopri(23,10," ");
gotoxy(23,10);gets(info.cant);
for(i=0;i<strlen(info.cant);i++){
if((info.cant[i]>=48 && info.cant[i]<=59))
{
jur++;
}
if(info.cant[i]<48 || info.cant[i]>59)
{
jur=0;
}
}
if (jur>0){ //si esto se cumple rompe el for(;;)
break;
}
}
gopri(10,20,"ESTA SEGURO DE MODIFICAR LA CANTIDAD SI(S) NO(N)");
modif=tolower(getch());
if(modif=='s'){
strcpy(P->cant,info.cant);
}
break;
case 5 :for(;;){
gopri(23,11," ");
gotoxy(23,11);gets(info.valor_comp);
for(i=0;i<strlen(info.valor_comp);i++)//Verifica hay caracteres en Codigo
{
if((info.valor_comp[i]>=48 && info.valor_comp[i]<=59) || (info.valor_comp[i]==46))
{
jur++;
}
if(info.valor_comp[i]<48 || info.valor_comp[i]>59/*|| info.valor_comp[i]!=46*/)
{
jur=0;
}
}
if (jur>0){ //si esto se cumple rompe el for(;;)
break;
}
}
gopri(10,20,"ESTA SEGURO DE MODIFICAR EL VALOR DE LA COMPRA SI(S) NO(N)");
modif=tolower(getch());
if(modif=='s'){
strcpy(P->valor_comp,info.valor_comp);
P->valor_venta=(atof(P->valor_comp)*((atof(P->iva)/100)+1)*((atof(P->porc_venta)/100)+1));
}
break;
case 6 :for(;;){
gopri(23,12," ");
gotoxy(23,12);gets(info.porc_venta);
for(i=0;i<strlen(info.porc_venta);i++)//Verifica hay caracteres en Codigo
{
if((info.porc_venta[i]>=48 && info.porc_venta[i]<=59) || (info.porc_venta[i]==46))
{
jur++;
}
if(info.porc_venta[i]<48 || info.porc_venta[i]>59/* || info.porc_venta[i]!=46*/)
{
jur=0;
}
}
if (jur>0){ //si esto se cumple rompe el for(;;)
break;
}
}
gopri(10,20,"ESTA SEGURO DE MODIFICAR EL PORCENTAJE DE LA VENTA SI(S) NO(N)");
modif=tolower(getch());
if(modif=='s'){
strcpy(P->porc_venta,info.porc_venta);
P->valor_venta=(atof(P->valor_comp)*((atof(P->iva)/100)+1)*((atof(P->porc_venta)/100)+1));
}
break;
case 7 :for(;;){
gopri(23,13," ");
gotoxy(23,13);gets(info.iva);
for(i=0;i<strlen(info.iva);i++)//Verifica hay caracteres en Codigo
{
if((info.iva[i]>=48 && info.iva[i]<=59) || (info.iva[i]==46))
{
jur++;
}
if(info.iva[i]<48 || info.iva[i]>59/* || info.iva[i]!=46*/)
{
jur=0;
}
}
if(atof(info.iva)>100){
jur=0;
}
if (jur>0){ //si esto se cumple rompe el for(;;)
break;
}
}
gopri(10,20,"ESTA SEGURO DE MODIFICAR EL PORCENTAJE DEL IVA SI(S) NO(N)");
modif=tolower(getch());
if(modif=='s'){
strcpy(P->iva,info.iva);
P->valor_venta=(atof(P->valor_comp)*((atof(P->iva)/100)+1)*((atof(P->porc_venta)/100)+1));
}
break;
case 8 :gopri(10,20,"AH AH, IMPOSIBLE!!!");
sleep(2);
break;
case 9 :gopri(10,20,"AH AH, IMPOSIBLE!!!");
sleep(2);
break;
case 10:for(;;){
gopri(23,16," ");
gotoxy(23,16);gets(info.proveedor);
for(i=0;i<strlen(info.proveedor);i++)//Verifica hay caracteres en Codigo
{
if(info.proveedor[i]>=0 && info.proveedor[i]<=255)
{
jur++;
}
}
if (jur>0){ //si esto se cumple rompe el for(;;)
break;
}
}
gopri(10,20,"ESTA SEGURO DE MODIFICAR EL PROVEEDOR SI(S) NO(N)");
modif=tolower(getch());
if(modif=='s'){
strcpy(P->proveedor,info.proveedor);
}
break;
case 11:break;
}
}
}




/*:::::::::::::::::..MARCO DEL MENU MOSTRAR DE LOS PROVEEDORES..:::::::::::*/

void ventana_menu_productos_mostrar()
{
gopri(24,5,"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿");
gopri(24,6,"³ ³");
gopri(24,7,"³ ³");
gopri(24,8,"³ ³");
gopri(24,9,"³ ³");
gopri(24,10,"³ ³");
gopri(24,11,"³ ³");
gopri(24,12,"³ ³");
gopri(24,13,"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ");
}

/*::::::::::::::::..MENU BUSCAR DE LOS PROVEEDORES..::::::::::::::::::::::*/

void menu_buscar_productos()
{
int d,c,s,flar=25,flab=24,fder=17,fizq=16;
d=1;
while(d!=4)
{
time_t timer;
struct tm *tblock;
/* coge el tiempo actual */
timer = time(NULL);
/* convierte el dato del tiempo a una estructura */
tblock = localtime(&timer);
//--------------------------------
textmode(2);
color(10,0);//7
clrscr();
color(0,10);
gotoxy(1,25);
cprintf("PRESIONA FLECHA %c ¢ %c, Y PRESIONA ENTER PARA ESCOJER TU OPCION ->> ART_Pako 1.0",flab,flar);
color(10,0);
ventana_menu_productos_buscar();
d=1;
c=1;
do{
color(0,10);
gotoxy(1,1);
cprintf("HAY %d CLASES DE ARTICULOS EN LA LISTA. FECHA Y HORA -> %s",n_art,asctime(tblock));
gopri(24,4," BUSCAR PRODUCTOS ");
color(10,0);
gopri(26,6," POR CODIGO ");
gopri(26,8," POR NOMBRE ");
gopri(26,10," EXHAUSTIVA ");
gopri(26,12," SALIR ");
if(d==0) d=4;
if(d==5) d=1;
color(0,10);
switch(d)
{
case 1 :gopri(26,6," POR CODIGO ");
break;
case 2 :gopri(26,8," POR NOMBRE ");
break;
case 3 :gopri(26,10," EXHAUSTIVA ");
break;
case 4 :gopri(26,12," SALIR ");
break;
}
c=getch();
if(c==72) d=d-1;
if(c==80) d=d+1;
}while(c!=13);
switch(d)
{
case 1 :buscar_producto_codigo();break;
case 2 :buscar_producto_nombre();break;
case 3 :busqueda_exhaustiva();break;
case 4 :break;

}

}
}

void buscar_producto_codigo()
{
clrscr();
long num,ban=0;
P=CAB;
gotoxy(2,12);printf("ENTRA EL CODIGO DEL PROVEEDOR: ");
scanf("%ld",&num);
while(P!=NULL && num<=P->codigo)
{
if(P->codigo==num){
mostrar_productos_uno_uno();
ban=1;
break;
}
P=P->sig;
if(P==CAB) break;
}
if(ban==0){
gotoxy(2,14);printf("EL CODIGO %ld NO EXISTE INTENTA POR EL NOMBRE O POR EXHAUSTIVA",num);
getch();
}
}


void busqueda_exhaustiva()
{
clrscr();
P=CAB;
int i=4,jur=0;
float vt;
char code_nomb[10];
gotoxy(2,12);printf("DIGITE NOMBRE DEL PRODUCTO A BUSCAR: ");
gets(code_nomb);
clrscr();
color(10,0);gopri(20,1,"..::MOSTRANDO PRODUCTOS ENCONTRADOS::..");color(0,10);
gopri(1,2,"ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ");
gopri(1,i-1,"CODIGO");gopri(9,i-1,"NONBRE");gopri(39,i-1,"IVA");gopri(43,i-1,"P/V");
gopri(47,i-1,"PRE/IVA");gopri(60,i-1,"CANT");gopri(66,i-1,"PREC/T/IVA");
do{
if((tolower(P->nombre[1]) && tolower(P->nombre[2])) == (tolower(code_nomb[1]) && tolower(code_nomb[2])))
{
gotoxy(1,i);printf("%ld",P->codigo);gotoxy(9,i);printf("%s",P->nombre);printf(" %s",P->descrip);
gotoxy(38,i);printf(" %s",P->iva);gotoxy(43,i);printf("%s",P->porc_venta);gotoxy(47,i);printf("%f",P->valor_venta);
gotoxy(60,i);printf("%s",P->cant);gotoxy(66,i);printf("%f",vt=(P->valor_venta)*(atoi(P->cant)));
jur=1;i++;
}
if(i==20)
{
i=4;
gopri(1,24,"PRESIONE ENTER PARA VER LOS PROXIMOS PRODUCTOS ENCONTRADOS");
getch();
clrscr();
color(10,0);gopri(20,1,"..::MOSTRANDO PRODUCTOS ENCONTRADOS::..");color(0,10);
gopri(1,2,"ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ");
gopri(1,i-1,"CODIGO");gopri(9,i-1,"NONBRE");gopri(39,i-1,"IVA");gopri(43,i-1,"P/V");
gopri(47,i-1,"PRE/IVA");gopri(60,i-1,"CANT");gopri(66,i-1,"PREC/T/IVA");
}
P=P->sig;
}while(P!=CAB);
if(jur==0){
clrscr();
gopri(2,12,"IMPOSIBLE BUSCALO UNO POR UNO");
}
getch();
}


void buscar_producto_nombre()
{
clrscr();
struct producto *aux;
char code_nomb[10];
//int jur=0;
gotoxy(2,12);printf("DIGITE NOMBRE DEL PRODUCTO A BUSCAR: ");
gets(code_nomb);
//-----------------------------------
aux=localiza_nombre_producto(code_nomb);
if(aux){
P=aux;
mostrar_productos_uno_uno();
}
else{
gotoxy(2,14);printf("EL NOMBRE %s NO EXISTE INTENTA POR EL CODIGO O POR EXHAUSTIVA",code_nomb);
getch();
}
}

struct producto *localiza_nombre_producto(char pnombre[])//busca si esta el nombre en la lista...
{
struct producto *aux;
register char temp2[50];
char temp1[50];

aux = CAB;
strcpy(temp1,minus(pnombre));

do
{
strcpy(temp2,minus(aux->nombre));
if (!strcmp(temp1,temp2))
return (aux);
else
aux = aux->sig;
} while (aux != CAB);
return (aux = NULL);
}

char *minus(char nombre[])
{
register int i;
register char *temp;

for (i = 0; i <= strlen(nombre) + 1; i++)
temp[i] = tolower(nombre[i]);
return(temp);
}


/*..::::::::::::::..MARCO DEL MENU BUSCAR DE LOS PROVEEDORES..::::::::::::*/

void ventana_menu_productos_buscar()
{
gopri(24,5,"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿");
gopri(24,6,"³ ³");
gopri(24,7,"³ ³");
gopri(24,8,"³ ³");
gopri(24,9,"³ ³");
gopri(24,10,"³ ³");
gopri(24,11,"³ ³");
gopri(24,12,"³ ³");
gopri(24,13,"³ ³");
gopri(24,14,"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ");
}

/*--------------------FUNCION DE CARGAR EL ARCHIVO---------------------*/
void cargar()
{
flushall();
FILE *fp;
fflush(fp);
CAB = P = NULL;
fp = fopen("pro2003.txt","rb");
rewind(fp); //recorre el archivo y se devuelve al principio del archivo
for(;;)//while(feof(fp))
{
P = (struct producto *) malloc (sizeof(struct producto));
if (fread(P,sizeof(struct producto),1,fp) != 1)
break;
insertar_producto(P);
} /* termina for */
fclose(fp);
if (n_art == 0)
{
CAB = P = NULL;
}
}



void guardar()
{
FILE *fp;
int tam;
//tam = sizeof(struct nodo);
fp = fopen("pro2003.txt","wb");
P = CAB;
if(n_art<=0)
{
remove("pro2003.txt");
}
else{
for(;;)
{
fwrite(P,sizeof(struct producto),1,fp);
P = P->sig;
if (P == CAB) break;
}
}
fclose(fp);
//guardado=0;
}


 
Terminos de Uso

1 - Copiar o Descargarse este contenido implica aceptar los terminos aqui detallados.

2 - Usted puede utilizar este contenido en sus propios programas y puede compilarlo en un programa y modificarlo a su gusto.

3 - Usted NO PUEDE redistribuir este contenido tal como se presenta aqui sin el permiso del autor original del mismo.

4 - Usted seguirá cualquier restricción adicional del copyright que el autor pudo haber puesto en la descripción del contenido.

 

Contactos myStudio Network