// 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
*/