lunes, 12 de mayo de 2014

Programa que simula una base datos de una tienda de abarrotes

/*Programa que simula una base datos de una tienda de abarrotes llamada la pequeña,
  autor: Rafael Damaso Santos,   e-mail: rafa-escorpion@live.com.mx  grupo: O6 */
/*ejecutenlo de preferencia en dev-c++, en caso de que usen el visual, quiten el comentario de la lib "stdafx")  saludos */
//#include "stdafx.h"
#include "fstream"
#include "iostream"
#include "string"
#include "cstdlib"
#include "iomanip"
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

/********************************  FUNCIONES   *******************************/
void escanear();
void consulta();
void modifica();
void pausa();
/*****************************************************************************/

using namespace std;

int main()
{
int opcion=0, i=0;

do
{
system("cls");
                cout<<"***************************************"<<endl;
                cout<<"*BASE DE DATOS DE LA TIENDA LA PEQUEÑA*"<<endl;
                cout<<"***************************************"<<endl;
                cout<<"* Desarrollador: RAFAEL DAMASO SANTOS *"<<endl;
                cout<<"***************************************"<<endl;
                cout<<"\n MENU DE OPCIONES\n";
cout<<" 1. REGISTRO DE LOS PRODUCTOS.\n";
cout<<" 2. CONSULTA DE LOS PRODUCTOS.\n";
cout<<" 3. MODIFICA LA BASE DE DATOS.\n";
cout<<"\n";
cout<<" 0. SALIR";
cout<<"\n\n Elige una opcion: ";
cin>>opcion;

switch(opcion)
{
case 0:
       break;
case 1:
       escanear();
case 2:
       consulta();
case 3:
       modifica();
default:
        cout<<" opcion no disponible mi estimad@"<<endl;
        pausa();
} // switch
}// do

while(opcion !=0);
}//end of main



void pausa() //función que nos ayuda a parar el programa cuando lo necesitemos
{
cout<<"\n\n\n\n Pulsa cualquier tecla... ";
getch();
}//end of pausa



void escanear() //funcion que pide por teclado los datos del producto
{
fstream listacodigo;
string codigo;
string producto;
string precio;
string cantidad;
double cost;
int cont=0;
char option;

listacodigo.open("c:\\Examen de Damaso.txt", ios::out);
if(!listacodigo)
{
   cout<<"******************************************"<<endl;
   cout<<"***      ERROR AL CREAR SU ARCHIVO     ***"<<endl;
   cout<<"***          INTENTE DE NUEVO          ***"<<endl;
   cout<<"*** O PONGASE EN CONTACTO CON NOSOTROS ***"<<endl;
   cout<<"******************************************"<<endl;
   exit (EXIT_FAILURE);
}

   while (cont==0)
   {
    system("cls");
    codigo="";
    producto="";
    precio="";
    cantidad="";
    cost=0;

     cout<<"\n Complete la informacion pedida: \n"<<endl;
     while(codigo=="")
     {
        cout<<"codigo del producto: \n";
        getline(cin,codigo);
     }
     while(producto=="")
     {
         cout<<"nombre del producto: "<<endl;
         getline(cin,producto);
     }
     while(precio=="")
     {
        cout<<"precio del producto: \n";
        getline(cin,precio);
     }
     while(cantidad=="")
     {
         cout<<"cantidad de producto: "<<endl;
         getline(cin,cantidad);
   
listacodigo<<codigo<<"|"<<producto<<"|"<<precio<<"|"<<cantidad <<endl;
   
cout<<"\n REGISTRAR OTRO PRODUCTO? (S/N): ";
cin>>option;
if(option=='n'||option=='N')  {cont=1;}
}
listacodigo.close();
}

void consulta()
{
fstream listacodigo;
string codigo;
string producto;
string precio;
string cantidad;
string linea;

int cod1,cod2,cod3,cod4;

listacodigo.open("c:\\Examen de Damaso.txt", ios::out);
if(!listacodigo)
{
   cout<<"***      ERROR AL CREAR SU ARCHIVO     ***"<<endl;
   cout<<"***          INTENTE DE NUEVO          ***"<<endl;
   cout<<"*** O PONGASE EN CONTACTO CON NOSOTROS ***"<<endl;
   exit (EXIT_FAILURE);
}
cout << setprecision(2) << setiosflags(ios:: fixed);
cout << "Codigo  Producto  precio  cantidad \n"<<endl;
getline(listacodigo, linea, '\n');
while ( !listacodigo.eof())
codigo="";
producto="";
precio="";
cantidad="";
        cod1=linea.find('|');
cod2=linea.find('|', cod1 + 1);
cod3=linea.find('|', cod2 + 1);
cod4=linea.find('|', cod3 + 1);
             
                codigo=linea.substr(0, cod1);
producto=linea.substr(cod1 + 1, cod2 - cod1 - 1);
precio=linea.substr(cod2 + 1, cod3 - cod2 - 1);
                cantidad=linea.substr(cod3 + 1, cod4 - cod3 - 1);
cout<<codigo<<" " <<producto<<" "<<precio<<" "<<cantidad<<getline(codigo,linea,'\n');
}
listacodigo.close();
cout<<"\nPresione cualquier tecla y ENTER para regresar al menu"<<endl;
cin>>linea;

void modifica()
{
fstream listacodigo;
string codigo;
string producto;
string precio;
string cantidad;
string linea;
string modific;
string tmp;
long posicion=0;
 listacodigo.open("c:\\Examen de Damaso.txt", ios::out | ios :: out);
    if(!listacodigo)
       {
   cout<<"******************************************"<<endl;
   cout<<"***      ERROR AL CREAR SU ARCHIVO     ***"<<endl;
   cout<<"***          INTENTE DE NUEVO          ***"<<endl;
   cout<<"*** O PONGASE EN CONTACTO CON NOSOTROS ***"<<endl;
   cout<<"******************************************"<<endl;
   exit (EXIT_FAILURE);
       }
getline(cin,codigo),'n');
cout<<"**********************************************"<<endl;
cout<<"*        MODIFICACION DE LA INFORMACION      *\n";
cout<<"*NOTIFIQUE QUE SE HABRA CAMBIOS EN SU SISTEMA*\n";
cout<<"**********************************************\n"<<endl;
cout<<"PRODUCTO: ";
getline(cin,modific,'n');

getline(listacodigo,tmp,'n');
while(tmp.substr(0, modific.size()) !=modific && !listacodigo.eof())
{
posicion=listacodigo.tellg();
getline(listacodigo,tmp,'\n');
}

if(listacodigo.eof())
{
cout<<"****************************"<<endl;
cout<<"*NO SE ENCONTRO EL PRODUCTO*"<<endl;
cout<<"****************************"<<endl;
listacodigo.clear();
}
else
{
cout<<"Producto: ";
cin>>producto;
cout<<"precio: ";
cin>>precio;
cout<<"cantidad";
cin>>cantidad;

listacodigo.seekg(posicion);
listacodigo<<modific<<"|"<<producto<<"|"<<precio<<"|"<<cantidad<<"|"<<endl;
listacodigo.close();
system("cls");
cosulta();
}
}