// INVENTARIO VERSION 1.0 #include <stdio.h> #include <stdlib.h> #include <string.h> // SECCION DE PROTOTIPOS DE FUNCION //========================================== void Encabezado( ); void Muestra( char MENSAJE[] ); void Ciclo( ); void CargaInv(); char *Lee(char[]); void GuardaInv(void); int LeeExistencia(char MENSAJE[]); float LeePrecio(char MENSAJE[]); void Grafica(); void Compra(); //========================================== #define Color printf("\x1b[%d;%dm",31,43); #define Normal printf("\x1b[%d;%dm",30,43); #define Titulo printf("\x1b[%d;%dm",32,43); struct Inventario { char *Clave; char *Nombre_Art; float Precio_Compra; float Precio_Venta; int Existencia; }; struct Inventario INV[100]; int N=0; // LA CANTIDAD DE COMPONENTES void Encabezado() { int k=0, x; system("clear"); Muestra("====================================================================\n"); Muestra("CLAVE DESCRIPCION P_COMPRA P_VENTA EXISTENCIA\n"); Muestra("====================================================================\n"); while( k < N ) { printf("%s\t%s\t%f\t%f\t%i\n", INV[k].Clave, INV[k].Nombre_Art, INV[k].Precio_Compra, INV[k].Precio_Venta, INV[k].Existencia); k++; } scanf("%d", &x); } void Muestra( char MENSAJE[] ) { int k = 0; printf("%s", MENSAJE); } float LeePrecio(char MENSAJE[]) { float PRECIO; Muestra(MENSAJE); scanf("%f", &PRECIO); return PRECIO; } char *Lee(char MENSAJE[]) { char *SALIDA=(char*)malloc(sizeof(char)*6); Muestra(MENSAJE); scanf("%s", SALIDA); return SALIDA; } int LeeExistencia(char MENSAJE[]) { int PRECIO; Muestra(MENSAJE); scanf("%i", &PRECIO); return PRECIO; } void Compra() { system("clear"); Muestra("Introduce los datos de la nueva compra: \n"); INV[N].Clave=(char*)malloc(sizeof(char)*10); INV[N].Clave = Lee("Clave del producto: "); INV[N].Nombre_Art = (char*)malloc(sizeof(char)*30); INV[N].Nombre_Art = Lee("Nombre del articulo: "); INV[N].Precio_Compra = LeePrecio("Precio de compra: "); INV[N].Precio_Venta = LeePrecio("Precio de venta: "); INV[N].Existencia = LeeExistencia("Cantidad: "); N++; } void GuardaInv(void) { FILE *Escritura = fopen("Inventario.txt","w"); int k =0; // variable del ciclo if ( Escritura == NULL ) { printf( "Problemas con los ficheros.\n" ); exit( 1 ); } while( k < N ) { fprintf(Escritura, "%s:%s:%f:%f:%i\n", INV[k].Clave, INV[k].Nombre_Art, INV[k].Precio_Compra, INV[k].Precio_Venta, INV[k].Existencia); k++; } fclose( Escritura ); } void CargaInv() { int k=0; N = 0; char *CAD = (char*)malloc(sizeof(char)*80); char *Token; FILE *Lectura = fopen("Inventario.txt","r"); if ( Lectura != NULL ) { while ( feof(Lectura) == 0 ) { fscanf(Lectura,"%s",CAD); k=1; //if ( strlen(CAD) > 20 ) for ( Token = strtok(CAD,":"); Token != NULL; Token = strtok(NULL, ":") ) { if (k==1) { INV[N].Clave = (char*)malloc(sizeof(char)*10); strcpy(INV[N].Clave, Token); } if (k==2) { INV[N].Nombre_Art = (char*)malloc(sizeof(char)*30); strcpy(INV[N].Nombre_Art, Token); } if (k==3) INV[N].Precio_Compra = (float) atoll(Token); if (k==4) INV[N].Precio_Venta = (float) atoll(Token); if (k==5) INV[N].Existencia = (int) atoi(Token); k++; } printf("\n"); N++; } } if ( Lectura != NULL ) fclose( Lectura ); if (k < 5 ) N--; // TRUQUITO } void Ciclo( ) { char *Comando = (char*)malloc(sizeof(char)*6); CargaInv(); while( 1 ) { system("clear"); if ( strcmp( (Comando = Lee("grafica o reporte o compra o venta o salir?: ")), "salir" ) == 0) { GuardaInv(); exit(1); // EL 1 SIGNIFICA QUE CORRIO EXITOSAMENTE } if ( strcmp( Comando, "compra" ) == 0) Compra(); if ( strcmp( Comando, "reporte" ) == 0) {Encabezado( );} if ( strcmp( Comando, "venta" ) == 0); if ( strcmp( Comando, "grafica" ) == 0) Grafica(); } } void Grafica() { int x =0, y=0; Normal; system("clear"); for(x=0; x < N; x++) { Titulo; printf("%s\t", INV[x].Clave); Normal; for(y=0; y< INV[x].Existencia; y++) { Color; printf("."); Normal; } printf("\n"); } printf("\n"); scanf("%d",&y); } int main() { Ciclo(); } /* struct Inventario { char *Clave; char *Nombre_Art; float Precio_Compra; float Precio_Venta; int Existencia; } CARACTERISTICAS DEL SISTEMA 1.- LLEVAR UN INVENTARIO 2.- REGISTRO DE VENTAS a.- REGISTRO DEL CLIENTE b.- VENTAS (ACTUALIZACION DEL INVENTARIO) - obvio 3.- REGISTRO DE PROOVEDORES obvio ... son las compras a.- COMPRAS 4.- GRAFICO ESTADISTICO --- barras a colores a.- CLIENTES - POR PRODUCTO - POR PESOS b.- INVENTARIO c.- VENTAS - POR PRODUCTO - EN PESOS d.- VENDEDORES 5.- REPORTES VARIOS TABULADO a.- CLIENTES - POR PRODUCTO - POR PESOS b.- INVENTARIO c.- VENTAS - POR PRODUCTO - EN PESOS 6.- REGISTRO DE VENDEDORES --- chalanes a.- CONTRATAR VENDEDORES b.- CORRER VENDEDORES c.- REPORTES - POR PRODUCTO - POR PESOS - SALARIO (10% DE CADA VENTA) EJEMPLO DE USO: - ESTRUCTURAS - APUNTADORES - ARCHIVOS - GRAFICOS */