Escolar Documentos
Profissional Documentos
Cultura Documentos
Proyecto Libreria
2AM5
Integrantes:
lvarez Ibarra Sergio Aarn
Profesor:
Manuel Alejandro Lopez
INDICE.
Libreria
# salida : ofstream
+ GenerarArchivo (int): void
+ VerificarArchivo(int) :void
+ Resultado (int): void
+ CerrarArchivo (): void
Libros
-
entrada : ifstream
precios: ifstream
n: int
costos[100]: int
articulo[100]: string
Revistas
-
entrada : ifstream
precios: ifstream
n: int
costos[100]: int
articulo[100]: string
+ Libro()
+ Revistas ()
+ LeerArchivo():void
+ LeerArchivo ():void
+ VerificarArchivo(int):void
+ VerificarArchivo (int):void
+ ImprimirContenido():void
+ ImprimirContenido ():void
+ AbrirArchivo(int):void
+ AbrirArchivo(int):void
+ CerrarArchivo():void
+ CerrarArchivo():void
+ GenerarTicket(int a):char
+ Getn():int
+ Getn():int
Este proyecto es una simulacin de una caja en la que se escoge el artculo que
desea comprar y sigue la secuencia hasta que el usuario ya no deseo otro artculo
ms, y al finalizar genera un archivo de salida con todos los datos y el precio a
pagar en caja.
Con el mtodo GenerarArchivo() se abre el archivo de salida de salida con el cual
se va a trabajar y generar el ticket de compra.
En el mtodo Resultado (int) se imprime en el archivo el total a pagar despus de
finalizar todos los pedidos requeridos.
CerrarArchivo() este mtodo tiene como finalidad cerrar todos los archivo
utilizados ya sean de entrada o salida dependiendo que objeto lo llame.
Con el constructor Revistas () o Libro() se inicializan los valores de n que nos sirve
de basa pasa saber cuntos artculos hay en cada archivo seleccionado.
La finalidad de LeerArchivo () es leer de los archivos de entrada los nombres de
libros o revistas que hay en inventario y los costos que le corresponde a cada uno
segn su posicin en el archivo.
Con VerificarArchivo () se checa que no hay ningn error al intentar leer y/o abrir
un archivo de salida o entrada segn sea la situacin de cada archivo.
Con el mtodo ImprimirContenido () se pretende que se imprima el contenido de
los archivos de entrada con un determinado formato en la pantalla principal de
nuestro programa.
El mtodo AbrirArchivo() hace lo que su nombre indica, abre el archivo ya
existente para el inventario de cada uno de los artculos que se tienen en la librera
y abre el archivo que contiene los precios de mismo modo.
CerrarArchivo() este mtodo lo que hace es cerrar cada uno de los archivos que
se est utilizando en el momento de la realizacin del programa cuando ya no los
vamos a utilizar de nuevo en ese mismo instante.
Main.cpp
#include "Libro.h"
#include "Revistas.h"
int main()
{
int a,d=0,b=1,e,n;
char c,z;
Libreria L;
L.GenerarArchivo(b);
L.VerificarArchivo(b);
b++;
L.CerrarArchivo();
do
{
cout << "Bienvenido a la Libreria S.A de C.V." <<endl;
cout << "Que deseas Comprar: " <<endl;
cout << "1.- Libros" <<endl;
cout << "2.- Revistas" <<endl;
cin >> a;
switch(a)
{
case 1:
{
Libro a;
a.AbrirArchivo(b);
a.VerificarArchivo(b);
a.LeerArchivo();
a.ImprimirContenido();
cout << "Cual desea Comprar: " <<endl;
cin >> e;
n = a.Getn();
if (e <= n)
{
z = a.GenerarTicket(e);
if (z=='s'||z=='S')
d = d + a.GenerarPrecio(e);
}
else
cout<<endl<<"Opcion no Existente"<<endl;
a.CerrarArchivo();
break;
}
case 2:
{
Revistas R;
R.AbrirArchivo(b);
R.VerificarArchivo(b);
R.LeerArchivo();
R.ImprimirContenido();
cout << "Cual desea Comprar: " <<endl;
cin >> e;
n = R.Getn();
if (e <= n)
{
z = R.GenerarTicket(e);
if (z=='s'||z=='S')
d = d + R.GenerarPrecio(e);
}
else
cout<<endl<<"Opcion no Existente"<<endl;
R.CerrarArchivo();
break;
default :
cout<<"Opcion no valida"<<endl;
break;
}
cout << "Desea Hacer Otro Pedido S/N"<<endl;
cin.ignore();
cin >> c;
}while (c== 's' || c== 'S');
L.GenerarArchivo(b);
L.Resultado(d);
L.CerrarArchivo();
cout << "Se Genero su ticket con el total a pagar"<<endl;
return 0;
}
Librera.h <Clase Padre>
#ifndef LIBRERIA_H
#define LIBRERIA_H
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
class Libreria
{
public:
void VerificarArchivo(int);
void GenerarArchivo(int);
void Resultado(int);
};
void CerrarArchivo();
protected:
ofstream salida;
#endif // LIBRERIA_H
Librera.cpp
#include "Libreria.h"
void Libreria::GenerarArchivo(int b)
{
switch (b)
{
case 1:
salida.open("Recibo.txt");
break;
case 2:
salida.open("Recibo.txt", ios_base::app);
break;
}
}
void Libreria::VerificarArchivo(int b)
{
if(salida.fail())
{
cerr<<"Error al abrir el archivo" <<endl;
exit(1);
}
switch (b)
{
case 1:
salida << "\t Libreria S.A de C.V."<<endl;
salida << "\t Sucursal ESIME Zacatenco"<<endl;
salida <<endl<<endl<<endl<< "\tComprobante de Pago"<<endl<<endl;
break;
case 2:
salida <<endl<<endl;
break;
}
salida << "Total a Pagar = " << res << " pesos";
}
void Libreria::CerrarArchivo()
{
salida.close();
}
Libro.h <Clase Hija>
#ifndef LIBRO_H
#define LIBRO_H
#include "Libreria.h"
class Libro : public Libreria
{
public:
Libro();
void LeerArchivo();
void VerificarArchivo(int);
void ImprimirContenido();
void AbrirArchivo(int b);
void CerrarArchivo();
int GenerarPrecio(int a);
char GenerarTicket(int a);
int Getn();
protected:
private:
ifstream entrada;
ifstream precios;
int n;
int costos[100];
string articulo[100];
};
#endif // LIBRO_H
Libro.cpp
#include "Libro.h"
Libro::Libro()
{
n=0;
}
void Libro::AbrirArchivo(int b)
{
Libreria::GenerarArchivo(b);
entrada.open("Libros.txt");
precios.open("PLibros.txt");
}
void Libro::LeerArchivo()
{
while(!entrada.eof())
{
getline(entrada,articulo[n]);
precios >> costos[n];
n++;
}
}
void Libro::VerificarArchivo(int b)
{
Libreria::VerificarArchivo(b);
if(entrada.fail())
{
cerr << "Error al leer el archivo" << endl;
exit (1);
}
getline(entrada,articulo[0]);
if(entrada.eof())
{
cerr << "El archivo esta vacio" << endl;
exit(1);
}
if(precios.fail())
{
cerr << "Error al leer el archivo de precios" << endl;
exit (1);
}
precios >> costos[0];
n = 1;
if(precios.eof())
{
cerr << "El archivo de precios esta vacio" << endl;
exit(1);
}
}
void Libro::ImprimirContenido()
10
int i;
cout << "\nLibros en Existencia:\n";
for(i=0; i<n; i++)
cout << "\nLibro #" << i+1 << " " << articulo[i]<<endl<<"Costo =
"<<costos[i]<<endl;
}
char Libro::GenerarTicket(int a)
{
char c;
cout <<endl<< "Libro " << articulo[a-1] <<endl;
cout <<endl<< "Precio " << costos[a-1] <<" pesos" <<endl;
cout << "Es la eleccion correcta S/N"<<endl;
cin.ignore();
cin >> c;
if (c == 's' || c == 'S')
{
salida <<endl<< "Libro " << articulo[a-1];
salida <<endl<< "Precio " << costos[a-1] <<" pesos" <<endl;
}
else
{
cout << "Su eleccion no fue la deseada."<<endl;
}
return c;
}
int Libro::GenerarPrecio(int a)
{
int c;
c = costos[a-1];
return c;
}
void Libro::CerrarArchivo()
{
entrada.close();
precios.close();
Libreria::CerrarArchivo();
}
int Libro::Getn()
{
return n;
}
Revistas.h <Clase Hija>
#ifndef REVISTAS_H
11
#define REVISTAS_H
#include "Libreria.h"
class Revistas : public Libreria
{
public:
Revistas();
void LeerArchivo();
void VerificarArchivo(int b);
void ImprimirContenido();
void AbrirArchivo(int);
void CerrarArchivo();
int GenerarPrecio(int );
char GenerarTicket(int a);
int Getn();
protected:
private:
ifstream entrada;
ifstream precios;
int n;
int costos[100];
string articulo[100];
};
#endif // REVISTAS_H
Revistas.cpp
#include "Revistas.h"
Revistas::Revistas()
{
n = 0;
}
void Revistas::AbrirArchivo(int b)
{
Libreria::GenerarArchivo(b);
entrada.open("Revistas.txt");
precios.open("PRevistas.txt");
}
void Revistas::LeerArchivo()
{
while(!entrada.eof())
{
getline(entrada,articulo[n]);
precios >> costos[n];
12
n++;
}
void Revistas::VerificarArchivo(int b)
{
Libreria::VerificarArchivo(b);
if(entrada.fail())
{
cerr << "Error al leer el archivo" << endl;
exit (1);
}
getline(entrada,articulo[0]);
if(entrada.eof())
{
cerr << "El archivo esta vacio" << endl;
exit(1);
}
if(precios.fail())
{
cerr << "Error al leer el archivo de precios" << endl;
exit (1);
}
precios >> costos[0];
n = 1;
if(precios.eof())
{
cerr << "El archivo de precios esta vacio" << endl;
exit(1);
}
}
void Revistas::ImprimirContenido()
{
int i;
cout << "\nRevistas en Existencia:\n";
for(i=0; i<n; i++)
cout << "\nRevistas #" << i+1 << " " << articulo[i]<<endl<<"Costo =
"<<costos[i]<<endl;
}
char Revistas::GenerarTicket(int a)
{
char c;
cout <<endl<< "Revistas " << articulo[a-1] <<endl;
cout <<endl<< "Precio " << costos[a-1] <<" pesos" <<endl;
cout << "Es la eleccion correcta S/N"<<endl;
cin.ignore();
13
cin >> c;
if (c == 's' || c == 'S')
{
salida <<endl<< "Libro " << articulo[a-1];
salida <<endl<< "Precio " << costos[a-1] <<" pesos" <<endl;
}
else
{
cout << "Su eleccion no fue la deseada."<<endl;
}
return c;
}
int Revistas::GenerarPrecio(int a)
{
int c;
c = costos[a-1];
return c;
}
void Revistas::CerrarArchivo()
{
entrada.close();
precios.close();
Libreria::CerrarArchivo();
}
int Revistas::Getn()
{
return n;
}
14
Captura de Pantalla
15
16
17
18