#include<iostream>
#include<stdlib.h>
#include <locale.h>
#include<stdio.h>
#include<conio.h>
#include<fstream>
#include<iomanip>
#include <windows.h>
using namespace std;
void agregarPro(){ //Función para poder agregar y guardar datos de los productos
setlocale(LC_CTYPE,"Spanish"); // para imprimir la ñ y las tildes
ofstream guardar("productos.txt", ios::app); //Comando para crear un archivo .txt para guardar los datos que se piden al usuaio
//Declaración de variables
string nom, codPro; //variables para guardar los datos de tipo string
float precio, existencias; // variables para guardar los datos de tipo float
system("cls");
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Registrar nuevo producto *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t\nIngrese el nombre del producto: "; //Se ingresa el nombre del producto
cin>>nom;
cout<<"\t\t\t\t\nIngrese el código del producto: "; // Se ingresa el código del producto
cin>>codPro;
cout<<"\t\t\t\t\nIngrese el precio del producto: $"; //Se ingresa el precio del producto
cin>>precio;
cout<<"\t\t\t\t\nIngrese las existencias del producto: "; //Se ingresa la existencia del producto
cin>>existencias;
system("cls");
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Producto registrado exitosamente *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Presione cualquier tecla para volver *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t";
getche();
system("cls");
guardar<<" "<<nom<<" "<<codPro<<" "<<precio<<" "<<existencias<<"\n";
guardar.close();
}
void buscarPro(){ //Función para buscar los productos en el archivo .txt llamado productos
system("cls");
ifstream guardar; //Definimos que la función solo es de lectura
guardar.open("productos.txt", ios::in); //Abrimos el documento .txt creado en la función de agregar
//Declaración de variables
string nom, codPro, codProCom; // variables donde se van almacenar los datos en forma de string
float precio, existencias; // variables donde se van almacenar los datos en forma float
system("cls");
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Buscar producto *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\n\n";
cout<<"\t\t\t\tDigite el código del producto: ";
cin>>codProCom; // Se almacena el código a buscar del archivo
guardar>>nom; // Aquí se va almacenar el dato de nombre del archivo productos.txt
guardar>>codPro; // Aquí se va almacenar el dato de código del archivo productos.txt
guardar>>precio; // Aquí se va almacenar el dato de precio del archivo productos.txt
guardar>>existencias; // Aquí se va almacenar el existencias de nombre del archivo productos.txt
if(codPro == codProCom){ //Se compara si el código ingresado es igual al que se busca
//Se muestran los datos si el código ingresado existe
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t- Nombre del producto: "<<nom<<endl;
cout<<"\t\t\t\t- Codigo del producto: "<<codPro<<endl;
cout<<"\t\t\t\t- Precio del producto: $"<<precio<<endl;
cout<<"\t\t\t\t- Existencia del producto: "<<existencias<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Presione cualquier tecla para volver *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t";
getche();
system("cls");
}else{
// Mensaje si el dato es erroneo o no existe
cout<<"\t\t\t\tDato no encontrado o no existe en la base de datos"<<endl;
cout<<"\n\n";
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Presione cualquier tecla para volver *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t";
getche();
system("cls");
}
guardar.close(); // Cerramos el archivo .txt
}
//Función para poder agregar y guardar datos de informes de cortes de cajas diarios
void agregarInfo(){
ofstream guardarInfo("Informe de caja.txt", ios::app); //Comando para crear un archivo .txt para guardar los datos que se piden al usuaio
//Declaración de variables
string nomIn, fechaIn, numCa; //variables para los datos de tipo string
float venta, total; //variables para los datos de tipo float
system("cls");
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Registrar nuevo informe *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t\nIngrese su nombre: "; // Se ingresa el nombre de la persona encargada de hacer el informe
cin>>nomIn;
cout<<"\t\t\t\t\nIngrese la fecha de hoy (DD/MM/AA): "; //Se ingresa la fecha de hoy
cin>>fechaIn;
cout<<"\t\t\t\t\nIngrese el número de caja: "; // Se ingresa el número de caja correspondiente
cin>>numCa;
cout<<"\t\t\t\t\nIngrese la cantidad de productos vendidos: "; //Se ingresa la cantidad de productos vendidos
cin>>venta;
cout<<"\t\t\t\t\nIngrese la cantidad total en efectivo: $"; //Se ingresa la cantidad total de la caja
cin>>total;
system("cls");
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Informe registrado exitosamente *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Presione cualquier tecla para volver *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t";
getche();
system("cls");
guardarInfo<<fechaIn<<" "<<nomIn<<" "<<numCa<<" "<<venta<<" "<<total<<"\n"; //Se guardan los datos en el archivo .txt que le pedimos al usuario
guardarInfo.close();
}
void modificarPro(){ //Función para modoficar los productos
ifstream modificarPro; //Comando para abrir archivo .txt en forma de lectura
//Declaración de variables
string nom, codPro, codProCam; //variables para guardar los datos de tipo string
float precio, existencias, precioCambio, existenciasCambio; // variables para guardar los datos de tipo float
modificarPro.open("productos.txt", ios::in); //Abrimos el documento .txt creado en la función de agregar
ofstream aux("mod.txt", ios::out); //Creamos un nuevo archivo donde se almacenaran los cambios
if (modificarPro.is_open()){ //Evaluamos si se pudo abrir el archivo .txt
system("cls");
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Modificar datos *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t\nIngrese el código del producto a modificar: ";
cin>>codProCam; //Variable para buscar el producto a modificar por medio del código
modificarPro>>nom; // Se almacena el nombre del producto para poder imprimir los datos buscados
while(!modificarPro.eof()){ //while que nos permite cambiar los datos solo sí el archivo .txt tiene datos
modificarPro>>codPro; //Se almacena el codigo del producto
modificarPro>>precio; //Se almacena el precio del producto
modificarPro>>existencias; //Se almacena la existencia del producto
if(codPro == codProCam){ //Se verifica que el código a buscar es igual al alguno del archivo .txt
cout<<"\t\t\t\t\nDigite el nuevo precio del producto: $";
cin>>precioCambio;
cout<<"\t\t\t\t\nDigite el nuevo número de existencias del producto: ";
cin>>existenciasCambio;
aux<<nom<<" "<<codPro<<" "<<precioCambio<<" "<<existenciasCambio; //Se guardan los datos modificados en el nuevo archivp .txt llamado mod.txt
system("cls");
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Archivos guardados correctamente *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Presione cualquier tecla para volver *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t";
getche();
system("cls");
} else{ //Mensaje en dado caso que no se puedan realizar los cambios
cout<<"\t\t\t\t\nNo se pudieron relizar los cambios.";
aux<<nom<<" "<<codPro<<" "<<precio<<" "<<existencias; //se dejan los datos anteriores en el nuevo archivo
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Presione cualquier tecla para volver *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t";
getche();
system("cls");
}
modificarPro>>nom;
}
modificarPro.close(); //Cerramos el archivo de letura que nos sirvió para buscar
aux.close(); //Cerramos el archivo nuevo llamado mod.txt
remove("productos.txt"); //Elinamos el archivo antiguo
rename ("mod.txt", "productos.txt"); //Llamamos igual que el antiguo archivo .txt para no tener problemas con las demás funciones
}else{ //Mensaje si no se puede abrir el archivo .txt
cout<<"\t\t\t\tError"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Presione cualquier tecla para volver *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t";
getche();
system("cls");
}
void eliminarPro(){
ifstream modificarPro;
system("cls");
string nom;
string codPro;
string codProCam;
eliminarPro.open("productos.txt", ios::in); //Abrimos el documento .txt creado en la función de agregar
ofstream aux("elim.txt", ios::out); //Creamos un nuevo archivo donde se almacenaran los cambios
if (eliminarPro.is_open()){ //Evaluamos si se pudo abrir el archivo .txt
system("cls");
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Eliminar datos *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t\nIngrese el código del producto a eliminar: ";
cin>>codProCam; //Variable para buscar el producto a eliminar por medio del código
eliminarPro>>nom; // Se almacena el nombre del producto para poder imprimir los datos buscados
while(!eliminarPro.eof()){ //while que nos permite eliminar los datos solo sí el archivo .txt tiene datos
eliminarPro>>codPro; //Se almacena el codigo del producto
if(codPro == codProCam){ //Se verifica que el código a buscar es igual al alguno del archivo .txt
cout<<"\t\t\t\t\nEliminado correctamente!!**";
sleep(2);
system("cls");
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Archivos guardados correctamente *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Presione cualquier tecla para volver *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t";
getche();
system("cls");
} else{ //Mensaje en dado caso que no se puedan realizar los cambios
cout<<"\t\t\t\t\nNo se pudieron relizar los cambios.";
aux<<nom<<" "<<codPro; //se dejan los datos anteriores en el nuevo archivo
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Presione cualquier tecla para volver *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t";
getche();
system("cls");
}
eliminarPro>>nom;
}
eliminarPro.close(); //Cerramos el archivo de letura que nos sirvió para buscar
aux.close(); //Cerramos el archivo nuevo llamado mod.txt
remove("productos.txt"); //Elinamos el archivo antiguo
rename ("elim.txt", "productos.txt"); //Llamamos igual que el antiguo archivo .txt para no tener problemas con las demás funciones
}
}
void buscarInfo(){ //Función para buscar los informes en el archivo .txt llamado Informe de caja
system("cls");
ifstream guardarInfo; //Definimos que la función solo es de lectura
guardarInfo.open("Informe de caja.txt", ios::in); //Abrimos el documento .txt creado en la función de agregarInfo
//Declaración de variables
string nomIn, fechaIn, numCa, numCaCom; // variables donde se van almacenar los datos en forma de string
float venta, total; // variables donde se van almacenar los datos en forma float
system("cls");
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Buscar informe *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\n\n";
cout<<"\t\t\t\tDigite el número de caja a buscar: ";
cin>>numCaCom; // Se almacena el número de caja a buscar en el archivo
guardarInfo>>nomIn; // Aquí se va almacenar el dato de nombre de la persona que crea el informe
guardarInfo>>fechaIn; // Aquí se va almacenar el dato de la fecha de creación del informe
guardarInfo>>numCa; // Aquí se va almacenar el dato de número de caja
guardarInfo>>venta; // Aquí se va almacenar el dato de números de prodcutos vendidos
guardarInfo>>total; // Aquí se va almacenar el total obtenido al final del día
if(numCaCom == numCa){ //Se compara si el número de caja ingresado es igual al que se busca
//Se muestran los datos si el número de caja ingresado existe
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t- Nombre del trabajador: "<<nomIn<<endl;
cout<<"\t\t\t\t- Fecha de creación "<<fechaIn<<endl;
cout<<"\t\t\t\t- Número de caja: "<<numCa<<endl;
cout<<"\t\t\t\t- Cantidad de productos vendidos: "<<venta<<endl;
cout<<"\t\t\t\t- Total en efectivo: $"<<total<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Presione cualquier tecla para volver *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t";
getche();
system("cls");
}else{
// Mensaje si el dato es erroneo o no existe
cout<<"\t\t\t\tDato no encontrado o no existe en la base de datos"<<endl;
cout<<"\n\n";
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Presione cualquier tecla para volver *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t";
getche();
system("cls");
}
guardarInfo.close(); // Cerramos el archivo .txt
}
void verInfo(){ //Función para ver todo los datos agregados de informes
ifstream verInfo; //Definimos que la función solo es de lectura
verInfo.open("Informe de caja.txt", ios::in);
//Declaración de variables
string nomIn, fechaIn, numCa; // variables donde se van almacenar los datos en forma de string
float venta, total; // variables donde se van almacenar los datos en forma float
verInfo>>nomIn;
while(!verInfo.eof()){
verInfo>>fechaIn;
verInfo>>numCa;
verInfo>>venta;
verInfo>>total;
cout<<"\n\n";
cout<<"\t\t\t\tNombre del empleado___________________: "<<nomIn<<endl;
cout<<"\t\t\t\tFecha de creación_____________________: "<<fechaIn<<endl;
cout<<"\t\t\t\tNúmero de caja________________________: "<<numCa<<endl;
cout<<"\t\t\t\tCantidad de productos vendidos________: "<<venta<<endl;
cout<<"\t\t\t\tTotal en efectivo_____________________: $"<<total<<endl;
verInfo>>nomIn;
}
verInfo.close();
cout<<"\n\n";
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t* Presione cualquier tecla para volver *"<<endl;
cout<<"\t\t\t\t***********************************************************"<<endl;
cout<<"\t\t\t\t";
getche();
system("cls");
}