Você está na página 1de 18

Instituto Politcnico Nacional

Escuela Superior de Ingeniera Mecnica y


Elctrica
Unidad Zacatenco
Ingeniera en Control y Automatizacin

Programacin Orientada a Objetos

Proyecto Libreria

2AM5

Integrantes:
lvarez Ibarra Sergio Aarn

Profesor:
Manuel Alejandro Lopez

INDICE.

Diagrama a Bloque ____________________________________ 3

Explicacin del Diagrama a Bloques __________________ 4

Cdigo en C++ _______________________________________ 6

Capturas de Pantalla _________________________________ 15

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

+ GenerarPrecio(int a): int

+ GenerarPrecio(int a): int

+ GenerarTicket(int a): char

+ 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.

El mtodo GenerarPrecio(int a) como su nombre lo indica genera el precio del


libro o bien lo indica y regresa el valor para que con el valor regresado se realiza
una suma para generar el total a pagar de todos los artculos comprados

Con el mtodo GenerarTicket(int a) en primera instancia se le pregunta al usuario


que si es el artculo que desea comprar y si es el artculo se imprime en el ticket
que se realiza y si la respuesta es no, manda un error para que no se sume el costo
del articulo al total.
Con el Getn() se utiliza para que recuperar el valor de n del archivo, donde n es el
nmero total de artculos y si el numero elegido por el usuario es mayor al nmero
total de artculos se manda un error.

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;
}

void Libreria::Resultado(int res)

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

Você também pode gostar