martes, 3 de febrero de 2015

/*proyecto de programacion*/
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <string.h>//para controlar cadenas
#include <stdio.h>
#include <windows.h>
#include <ctype.h>
using namespace std;
int clave;
//declaracion
void fin();
void modificar(char producto[100][50],float pvp[100],int cantidad[100],int n);
void eliminar(char producto[100][50],float pvp[100],int cantidad[100],int n);
void comprar(char producto[100][50],float pvp[100],int cantidad[100],int n);
void menu(char producto[100][50],float pvp[100],int cantidad[100],int n);
int ValidarPalabra(char* p) ;
//***********************************************************************proceso vañidar palabra***********************************************************
int ValidarPalabra(char* p)
{
     char *temp = p;
     do
     {
          if(!isalpha(*p) && *p)
          {
               printf("%s no es una palabra.\n", temp);
               return 1;
          }
     }
     while(*p++);
     return 0;
}
//********************************************************************************************************************************************************

//*************************************************procedimi salir*****************************************************************
void fin()
{
     system("cls");
     cout<<"00000000   00000      00000    000000   000    00000    00000"<<endl;
     cout<<"000        000 000   000 000   00       000   000 000   00"<<endl;
     cout<<"000 0000   00000     0000000   00       000   0000000   00000"<<endl;
     cout<<"000   00   000000    000 000   00       000   000 000      00"<<endl;
     cout<<"00000000   000 000   000 000   000000   000   000 000   00000...made in 633-649"<<endl;
     cout<<""<<endl;
     cout<<""<<endl;
}
//**********************************************procedimiento modificar************************************************************
void modificar(char producto[100][50],float pvp[100],int cantidad[100],int n)
{
     float pv;
     int can,i,band=0;
     char p;
     i=0;
     cout<<"Producto"<<"             "<<"precio"<<"         "<<"cantidad"<<endl;
                             for(i=0;i<n;i++)
                             {
                                             cout<<i+1<<" "<<producto[i]<<"              "<<"$ "<<pvp[i]<<"               "<<cantidad[i]<<endl;
                             }
                             while(band==0)
                             {
//*************************************************************************validar numero********************************************************************
char Cadena[50];/// Declarar un Char para capturar los datos
int Numero,k; /// i para contador
bool Error=false;


while(band==0)
    {
do{
k=0;
    try{
    cout<<"Que producto desea modificar escoja el numero: ";
         cin>>Cadena;///pedir datos por teclado
       
    while (Cadena[k]){///recorre desde la primera posición hasta la ultima
        if (isalpha(Cadena[k]))/// isalpha es una función que analiza que carácter alfabético
            throw Cadena[k];   /// si existe un carácter alfabético, controlamos el error con throw
            k++;               ///  Contador incrementa en 1
                     }
      Error=false; /// si no hay caracteres alfabéticos entonces el error es falso
       }
     
    catch (char){
    Error=true;
    cout<<"El numero Ingresado no es correcto, por favor ingresa otro numero: "<<endl;
    }

}while(Error==true);
i= atoi(Cadena); /// atoi es una función que convierte una cadena a numero
if(i>0 && i<=n)
         {
band=1;
}
else
{
cout<<"ERROR, el producto no existe por favor escoja un producto existente"<<endl;
}
}
//**************************************************************************fin******************************************************************************
                         }
                         i=i-1;
//************************************************************validar palabra********************************************************************
     char palabra[20];
cout<<"Ha escogido "<<producto[i]<<endl;
     do
     {
          cout<<"producto: ";
          scanf("%s", palabra);
     }
     while(ValidarPalabra(palabra));

     strcpy(producto[i],palabra);
//************************************************************************************************************************************************
                             cout<<"precio de "<<p<<" : ";
                             cin>>pv;
                             pvp[i]=pv;
//*************************************************************************validar numero********************************************************************
/// Declarar un Char para capturar los datos
int Numero; /// i para contador
bool Error=false;
int a,k;
char Cadena[50];
band=0;

while(band==0)
    {
do{
k=0;
    try{
    cout<<"Cantidad: ";
         cin>>Cadena;///pedir datos por teclado
       
    while (Cadena[k]){///recorre desde la primera posición hasta la ultima
        if (isalpha(Cadena[k]))/// isalpha es una función que analiza que carácter alfabético
            throw Cadena[k];   /// si existe un carácter alfabético, controlamos el error con throw
            k++;               ///  Contador incrementa en 1
                     }
      Error=false; /// si no hay caracteres alfabéticos entonces el error es falso
       }
     
    catch (char){
    Error=true;
    cout<<"El numero Ingresado no es correcto, por favor ingresa otro numero: "<<endl;
    }

}while(Error==true);
Numero= atoi(Cadena); /// atoi es una función que convierte una cadena a numero
 if(Numero>0)
         {
band=1;
}
else
{
cout<<"El numero Ingresado no es correcto, por favor ingresa otro numero: "<<endl;
}
}
band=0;
//**************************************************************************fin******************************************************************************
                             cantidad[i]=Numero;
                             cout<<endl;
                             cout<<"____________________________PRODUCTOS_________________________________"<<endl;
                             cout<<endl<<"Producto"<<"             "<<"precio"<<"         "<<"cantidad"<<endl;
                             for(i=0;i<n;i++)
                             {
                                             cout<<i+1<<" "<<producto[i]<<"              "<<"$ "<<pvp[i]<<"               "<<cantidad[i]<<endl;
                             }
                             n=i;
     getch();
     system("cls");
     menu(producto,pvp,cantidad,n);
   
}
//*************************************************procedimiento eliminar**********************************************************
void eliminar(char producto[100][50],float pvp[100],int cantidad[100],int n)
{
     int pos,i,band=0;
                             cout<<"Producto"<<"             "<<"precio"<<"         "<<"cantidad"<<endl;
                             for(i=0;i<n;i++)
                             {
                                             cout<<i+1<<" "<<producto[i]<<"              "<<"$ "<<pvp[i]<<"               "<<cantidad[i]<<endl;
                             }  
//*************************************************************************validar numero********************************************************************
char Cadena[50];/// Declarar un Char para capturar los datos
int Numero,k; /// i para contador
bool Error=false;


while(band==0)
    {
do{
k=0;
    try{
    cout<<"Que producto desea eliminar escoja el numero: ";
         cin>>Cadena;///pedir datos por teclado
       
    while (Cadena[k]){///recorre desde la primera posición hasta la ultima
        if (isalpha(Cadena[k]))/// isalpha es una función que analiza que carácter alfabético
            throw Cadena[k];   /// si existe un carácter alfabético, controlamos el error con throw
            k++;               ///  Contador incrementa en 1
                     }
      Error=false; /// si no hay caracteres alfabéticos entonces el error es falso
       }
     
    catch (char){
    Error=true;
    cout<<"El numero Ingresado no es correcto, por favor ingresa otro numero: "<<endl;
    }

}while(Error==true);
pos= atoi(Cadena); /// atoi es una función que convierte una cadena a numero
if(pos>0 && pos<=n)
         {
band=1;
}
else
{
cout<<"ERROR, el producto no existe por favor escoja un producto existente"<<endl;
}
}
band=0;
//**************************************************************************fin******************************************************************************
                           
                           
                           
                             for(i=pos;i<=n-1;i++)
                             {
                                                strcpy(producto[i],producto[i+1]);
                                                pvp[i]=pvp[i+1];
                                                cantidad[i]=cantidad[i+1];
                             }
                             //eliminacion
                             system("cls");
                             cout<<"El dato fue eliminado con exito"<<endl;
                             cout<<"____________________________PRODUCTOS_________________________________"<<endl;
                             cout<<endl<<"Producto"<<"             "<<"precio"<<"         "<<"cantidad"<<endl;
                             n=n-1;
                             for(i=0;i<n;i++)
                             {
                                              cout<<i+1<<"  "<<producto[i]<<"              "<<"$ "<<pvp[i]<<"               "<<cantidad[i]<<endl;
                             }
                             menu(producto,pvp,cantidad,n);
}
//*****************************************************procedimiento comprar*******************************************************
void comprar(char producto[100][50],float pvp[100],int cantidad[100],int n)
{
    char compra[100][50],productocompra[100][50];
    float cpvp[100];
    int i,can,x,j,pos,fac,cont=0;
    int ccantidad[100],pro,resto;
    float total=0;
    cout<<"                 Tienda Virtual"<<endl;
    char op;
    do
    {
         system("cls");
    cout<<"____________________________PRODUCTOS_________________________________"<<endl;
    cout<<"Producto"<<"             "<<"precio"<<"         "<<"cantidad"<<endl;
    for(i=0;i<n;i++)
    {
                    cout<<i+1<<" "<<producto[i]<<"              "<<"$ "<<pvp[i]<<"               "<<cantidad[i]<<endl;
    }
//*************************************************************************validar numero********************************************************************
/// Declarar un Char para capturar los datos
int Numero; /// i para contador
bool Error=false;
int a,k,band;
char Cadena[50];

while(band==0)
    {
do{
k=0;
    try{
    cout<<"Que producto desea comprar: ";
         cin>>Cadena;///pedir datos por teclado
       
    while (Cadena[k]){///recorre desde la primera posición hasta la ultima
        if (isalpha(Cadena[k]))/// isalpha es una función que analiza que carácter alfabético
            throw Cadena[k];   /// si existe un carácter alfabético, controlamos el error con throw
            k++;               ///  Contador incrementa en 1
                     }
      Error=false; /// si no hay caracteres alfabéticos entonces el error es falso
       }
     
    catch (char){
    Error=true;
    cout<<"El numero Ingresado no es correcto, por favor ingresa otro numero: "<<endl;
    }

}while(Error==true);
pro= atoi(Cadena); /// atoi es una función que convierte una cadena a numero
 if(pro>0 && pro<=n)
         {
band=1;
}
else
{
cout<<"El numero Ingresado no es correcto, por favor ingresa otro numero: "<<endl;
}
}
band=0;
//**************************************************************************fin******************************************************************************
    pro=pro-1;
    strcpy(productocompra[cont],producto[pro]);
    cout<<"ha escogido "<<productocompra[cont]<<endl;
   
   
    //*************************************************************************validar numero********************************************************************
/// Declarar un Char para capturar los datos /// i para contador

while(band==0)
    {
do{
k=0;
    try{
    cout<<"cuantos desea de ese producto: ";
         cin>>Cadena;///pedir datos por teclado
       
    while (Cadena[k]){///recorre desde la primera posición hasta la ultima
        if (isalpha(Cadena[k]))/// isalpha es una función que analiza que carácter alfabético
            throw Cadena[k];   /// si existe un carácter alfabético, controlamos el error con throw
            k++;               ///  Contador incrementa en 1
                     }
      Error=false; /// si no hay caracteres alfabéticos entonces el error es falso
       }
     
    catch (char){
    Error=true;
    cout<<"El numero Ingresado no es correcto, por favor ingresa otro numero: "<<endl;
    }

}while(Error==true);
resto= atoi(Cadena); /// atoi es una función que convierte una cadena a numero
    if(resto<=cantidad[pro])
    {
                            cantidad[pro]=cantidad[pro]-resto;
    cpvp[j]=pvp[pro];
    ccantidad[j]=resto;
    total=(cpvp[j]*resto)+total;
    j=j+1;
    band=1;
}
else
{
    cout<<"ya no hay esa cantidad "<<endl;
}
}
band=0;
//**************************************************************************fin******************************************************************************
cont=cont+1;
    cout<<"desea mas productos: si(1) no(0)   ";
    cin>>op;
}while(op=='1' && op!='0');
n=j-1;

for(i=0;i<=10;i++)
{
                  Sleep(200);
                  cout<<".";
}
system("cls");
cout<<"                               Productos escojidos"<<endl;
cout<<"   Producto"<<"                "<<"precio"<<"            "<<"cantidad"<<endl;
for(j=0;j<=n;j++)
{
cout<<j+1<<"  "<<productocompra[j]<<"              "<<"$ "<<cpvp[j]<<"               "<<ccantidad[j]<<endl;
}
getch();
cout<<"1.- factura a consumidor"<<endl;
cout<<"2.- factura a usuario"<<endl;
cout<<"Escoja la opcion: ";
 //*************************************************************************validar numero********************************************************************
/// Declarar un Char para capturar los datos
char Cadena[50];
int Numero; /// i para contador
bool Error=false;
int a,k;
int band=0;

while(band==0)
    {
do{
k=0;
    try{
    cout<<">> ";
         cin>>Cadena;///pedir datos por teclado
       
    while (Cadena[k]){///recorre desde la primera posición hasta la ultima
        if (isalpha(Cadena[k]))/// isalpha es una función que analiza que carácter alfabético
            throw Cadena[k];   /// si existe un carácter alfabético, controlamos el error con throw
            k++;               ///  Contador incrementa en 1
                     }
      Error=false; /// si no hay caracteres alfabéticos entonces el error es falso
       }
     
    catch (char){
    Error=true;
    cout<<"El numero Ingresado no es correcto, por favor ingresa otro numero: "<<endl;
    }

}while(Error==true);
fac= atoi(Cadena); /// atoi es una función que convierte una cadena a numero
 if(fac<=2 && fac>=1)
         {
band=1;
}
else
{
cout<<"El numero Ingresado no es correcto, por favor ingresa otro numero: "<<endl;
}
}
band=0;
//**************************************************************************fin******************************************************************************




switch(fac)
{
           case 1:
                {
                         system("cls");
                         cout<<"___________________________________________________"<<endl;
                         cout<<"Nombre: Consumidor final"<<endl;
                         cout<<"Cedula: **********"<<endl;
                         cout<<"Lugar: ************"<<endl;
                     cout<<"Libreria Casi te regalamos"<<endl;
                     cout<<"Producto"<<"           "<<"precio"<<"           "<<"cantidad"<<endl;
                     for(j=0;j<=n;j++)
                     {
                                      cout<<j+1<<"  "<<productocompra[j]<<"              "<<"$ "<<cpvp[j]<<"               "<<ccantidad[j]<<endl;
                     }
                     cout<<endl<<endl<<"                   Total: "<<total<<endl;
                     cout<<"                   Firma................."<<endl;
                     cout<<endl<<endl<<"___________________________________________________"<<endl;
                     break;
                }
           case 2:
                {
                     int cedula;
                     char nombre[25];
                     char vive[25];
                     system("cls");
                     cout<<"Datos personales"<<endl;
                     cout<<"Ingrese su nombre: ";
                     cin>>nombre;
//*************************************************************************validar numero********************************************************************
/// Declarar un Char para capturar los datos
int Numero; /// i para contador
bool Error=false;
char Cadena[50];
int a,k;
int band;

while(band==0)
    {
do{
k=0;
    try{
    cout<<"ingrese su cedula: ";
        cin>>Cadena;///pedir datos por teclado
       
    while (Cadena[k]){///recorre desde la primera posición hasta la ultima
        if (isalpha(Cadena[k]))/// isalpha es una función que analiza que carácter alfabético
            throw Cadena[k];   /// si existe un carácter alfabético, controlamos el error con throw
            k++;               ///  Contador incrementa en 1
                     }
      Error=false; /// si no hay caracteres alfabéticos entonces el error es falso
       }
     
    catch (char){
    Error=true;
    cout<<"El numero Ingresado no es correcto, por favor ingresa otro numero: "<<endl;
    }

}while(Error==true);
cedula= atoi(Cadena); /// atoi es una función que convierte una cadena a numero
 if(cedula>100000000)
         {
band=1;
}
else
{
cout<<"El numero Ingresado no es correcto, por favor ingresa otro numero: "<<endl;
}
}
band=0;
//**************************************************************************fin******************************************************************************
                   
                     cout<<"Ingrese donde vive: ";
                     cin>>vive;
                     getch();
                     system("cls");
                     cout<<"___________________________________________________"<<endl;
                     cout<<"Libreria Casi te regalamos"<<endl;
                     cout<<"nombre: "<<nombre<<endl;
                     cout<<"Cedula: "<<cedula<<endl;
                     cout<<"Lugar: "<<vive<<endl;
                     cout<<"Producto"<<"             "<<"precio"<<"         "<<"cantidad"<<endl;
                     for(j=0;j<=n;j++)
                     {
                                      cout<<j+1<<"  "<<productocompra[j]<<"              "<<"$ "<<cpvp[j]<<"               "<<ccantidad[j]<<endl;
                     }
                     cout<<endl<<endl<<"                   Total: "<<total<<endl;
                     cout<<"                   Firma................."<<endl;
                     cout<<endl<<endl<<"___________________________________________________"<<endl;
                     break;
                }
                }
}
//**********************************************procedimiento menu****************************************************************
void menu(char producto[100][50],float pvp[100],int cantidad[100],int n)
{
     int x,i,band=0;
     system("cls");
     cout<<"Espere.";
          for(i=0;i<=10;i++)
{
                  Sleep(100);
                  cout<<".";
}
system("cls");
cout<<"Espere.";
     for(i=0;i<=10;i++)
{
                  Sleep(100);
                  cout<<".";
}
     system("cls");
    cout<<"____________________________PRODUCTOS_________________________________"<<endl;
    cout<<"Producto"<<"             "<<"precio"<<"         "<<"cantidad"<<endl;
    for(i=0;i<n;i++)
    {
                    cout<<i+1<<" "<<producto[i]<<"              "<<"$ "<<pvp[i]<<"               "<<cantidad[i]<<endl;
    }
    cout<<"_______________________________"<<endl;
    cout<<"1.- Modificar algun producto "<<endl;
    cout<<"2.- Eliminar algun producto "<<endl;
    cout<<"3.- Vender productos "<<endl;
    cout<<"4.- Salir "<<endl;
    cout<<"_______________________________"<<endl;
   
    //*************************************************************************validar numero********************************************************************
/// Declarar un Char para capturar los datos
char Cadena[50];
int Numero; /// i para contador
bool Error=false;
int a,k;

while(band==0)
    {
do{
k=0;
    try{
    cout<<">> ";
         cin>>Cadena;///pedir datos por teclado
       
    while (Cadena[k]){///recorre desde la primera posición hasta la ultima
        if (isalpha(Cadena[k]))/// isalpha es una función que analiza que carácter alfabético
            throw Cadena[k];   /// si existe un carácter alfabético, controlamos el error con throw
            k++;               ///  Contador incrementa en 1
                     }
      Error=false; /// si no hay caracteres alfabéticos entonces el error es falso
       }
     
    catch (char){
    Error=true;
    cout<<"El numero Ingresado no es correcto, por favor ingresa otro numero: "<<endl;
    }

}while(Error==true);
x= atoi(Cadena); /// atoi es una función que convierte una cadena a numero
 if(x<=4 && x>=1)
         {
band=1;
}
else
{
cout<<"El numero Ingresado no es correcto, por favor ingresa otro numero: "<<endl;
}
}
band=0;
//**************************************************************************fin******************************************************************************
    switch(x)
    {
             case 1:{
              band=0;
while(band==0)
{
cout<<"ingrese su clave: ";
             cin>>clave;
             if(clave==101)
             {
              band=1;
                           modificar(producto,pvp,cantidad,n);
             }
else
             {
                  cout<<"clave incorrecta"<<endl;
             }
    }
    break;
}
   
             case 2:{
                  int band=0;
                  while(band==0)
                  {cout<<"Ingrese su clave: ";
             cin>>clave;
             if(clave==101)
             {
                           eliminar(producto,pvp,cantidad,n);
                           band=1;
             }else
             {
                 cout<<"clave incorrecto"<<endl;
             }
             }break;
}
             case 3:{comprar(producto,pvp,cantidad,n);break;}
             case 4:{fin();break;}
}
}
//**********************************************************programa_principal*******************************************************    
int main()
{
    char producto[100][50], p;
    float pvp[100],pv;
    int cantidad[100],n,i,can,x,j,pos,band=0;
    system("color b0");
    cout<<"                                    Estado Inicial"<<endl;
    cout<<"00000000   000   0000000   0000   0000    000        0000"<<endl;
    cout<<"  000      000   000       00000  0000    00 00     000 000"<<endl;
    cout<<"  000      000   0000000   000000 0000    00  00   000000000"<<endl;
    cout<<"  000      000   000       000   00000    00 00    000000000"<<endl;
    cout<<"  000      000   0000000   000   00000    000      000   000"<<endl;
   
    //*************************************************************************validar numero********************************************************************
char Cadena[50];/// Declarar un Char para capturar los datos
int Numero,k; /// i para contador
bool Error=false;


while(band==0)
    {
do{
k=0;
    try{
    cout<<"Cuantos Productos desea ingresar en su tienda:  ";
         cin>>Cadena;///pedir datos por teclado
       
    while (Cadena[k]){///recorre desde la primera posición hasta la ultima
        if (isalpha(Cadena[k]))/// isalpha es una función que analiza que carácter alfabético
            throw Cadena[k];   /// si existe un carácter alfabético, controlamos el error con throw
            k++;               ///  Contador incrementa en 1
                     }
      Error=false; /// si no hay caracteres alfabéticos entonces el error es falso
       }
     
    catch (char){
    Error=true;
    cout<<"El numero Ingresado no es correcto, por favor ingresa otro numero: "<<endl;
    }

}while(Error==true);
n= atoi(Cadena); /// atoi es una función que convierte una cadena a numero
 if(n>0)
         {
band=1;
}
else
{
cout<<"El numero Ingresado no es correcto, por favor ingresa otro numero: "<<endl;
}
}
band=0;
//**************************************************************************fin******************************************************************************
   
   
   
   
    for(i=0;i<n;i++)
    {
//************************************************************validar palabra********************************************************************
     char palabra[20];

     do
     {
          cout<<"ingrese producto: ";
          scanf("%s", palabra);
     }
     while(ValidarPalabra(palabra));

     strcpy(producto[i],palabra);
//************************************************************************************************************************************************
              while(band!=1)
              {
                            cout<<"precio de "<<producto[i]<<" : ";
                            cin>>pv;
                            if(pv>=0.1)
                            {
                                     pvp[i]=pv;
                                     band=1;
                            }else
                            {cout<<"dato no valido digite correctamente "<<endl;
                            }
              }
              band=0;
//*************************************************************************validar numero********************************************************************
/// Declarar un Char para capturar los datos
int Numero; /// i para contador
Error=false;
int a;

while(band==0)
    {
do{
k=0;
    try{
    cout<<"Cantidad: ";
         cin>>Cadena;///pedir datos por teclado
       
    while (Cadena[k]){///recorre desde la primera posición hasta la ultima
        if (isalpha(Cadena[k]))/// isalpha es una función que analiza que carácter alfabético
            throw Cadena[k];   /// si existe un carácter alfabético, controlamos el error con throw
            k++;               ///  Contador incrementa en 1
                     }
      Error=false; /// si no hay caracteres alfabéticos entonces el error es falso
       }
     
    catch (char){
    Error=true;
    cout<<"El numero Ingresado no es correcto, por favor ingresa otro numero: "<<endl;
    }

}while(Error==true);
Numero= atoi(Cadena); /// atoi es una función que convierte una cadena a numero
 if(Numero>0)
         {
band=1;
}
else
{
cout<<"El numero Ingresado no es correcto, por favor ingresa otro numero: "<<endl;
}
}
band=0;
//**************************************************************************fin******************************************************************************
cantidad[i]=Numero;
cout<<endl;
    }
    menu(producto,pvp,cantidad,n);
getch();
return 0;
}
//*******************************************************************FIN********************************************************


cpp.