Dev - C++ - Una empresa requiere la primer etapa de un sistema de ventas que permita generar tickets de compra d

   
Vista:

Una empresa requiere la primer etapa de un sistema de ventas que permita generar tickets de compra d

Publicado por Martha (1 intervención) el 03/08/2017 21:43:36
Proyecto Integrador
Descripción:
Una empresa requiere la primer etapa de un sistema de ventas que permita generar tickets de
compra de sus ventas de artesanías.
o Existen dos tipos de productos a la venta:
• Productos Nacionales: Son productos que fueron elaborados en México y por las
iniciativas del nuevo gobierno tendrán un descuento por concepto de subsidio. El
subsidio al producto nacional se establece en 10%.
• Productos importados: Son productos que fueron importados al país a los cuales
debe aplicarse un impuesto dependiente del país de origen.
o Se requiere la impresión en pantalla de un ticket de compra y debe contener como
mínimo:
• La información del cliente.
• La fecha.
• La información de cada producto.
• El número de productos que compró.
• El total de la compra.
• El total de puntos acumulados del cliente.
o Cada compra debe abonar puntos de recompensa al cliente. El valor de los puntos a
acumular es exactamente el monto de compra del cliente.
o La información de los clientes y de los productos se encuentra en tres archivos de texto
con extensión “txt”.
o La información de los clientes se encuentra en el archivo “clientes.txt”, la
primera línea del archivo contiene el número de clientes y, posteriormente, cada
línea representa un cliente. Los clientes son representados por tres valores
separados por un espacio. El primer valor corresponde al ID, el segundo al
nombre y el tercero al RFC.
o La información de los productos se encuentra dividida en dos archivos:
§ “productosNacionales.txt”, la primera línea representa el número de
productos contenidos en el archivo y las siguientes líneas representan un
producto, utilizando el formato: ID, nombre, precio unitario. Separados
por un espacio.
§ “productosImportados.txt”, la primera línea representa el número de
productos contenidos en el archivo y las siguientes líneas representan un
Lenguaje de Programación C++
Proyecto integrador
producto, utilizando el formato: ID, nombre, precio unitario, país de
importación, porcentaje de impuesto. Separados por un espacio.
o Un ejemplo de cada uno de los archivos es el siguiente:
clientes.txt
4
1434 Laura_Lopez NA
1655 Juana_Espinosa EIVJ920212342
1743 Carlos_Estrada EAPC710411X19
1799 Victor_Torres TOSV670503H86
productosNacionales.txt
5
14254 No_Identificado 146.47
14255 No_Identificado 176.99
14256 Cuadro_azteca 1154.4
14257 Figura_Maya 452.2
14258 Figura_Otomi 642.9
productosImportados.txt
5
15258 Cuadro_importado_frances 12436.47 FRANCIA 12
15259 No_Identificado 1276.99 CHILE 5
15260 Cuadro_importado 1154.4 USA 20
15261 Figura_minimalista 1452.2 USA 20
15262 Figura_peruana 642.9 PERU 10
Actividad:
Realice un programa que permita modelar la primera etapa del sistema de ventas de la
empresa.
• El programa deberá leer de los archivos .txt una pequeña base de datos de clientes,
productos nacionales y productos importados*.
• Deberá crear las clases Cliente, Producto, ProductoImportado, ProductoNacional y
Ticket para manejar los datos del sistema. Se deben crear tal cuál según la estructura
de clases anexa**.
• Deberá administrar las ventas a un cliente dentro de la clase Ticket.
• El sistema se validará de la siguiente forma (desde el main.cpp)
Lenguaje de Programación C++
Proyecto integrador
o Imprimirá el ticket del cliente 1434 quien realizará una compra como se indica a
continuación. Note que el costo del ticket es calculado precio unitario menos el
porcentaje de subsidio o más el porcentaje de impuesto.
Cliente Laura Lopez <1434> 13/01/2017
Productos Costo
14254
No_identificado $131.82
14254
No_identificado $131.82
14257
Figura_Maya
$406.98
15258 Cuadro_importado_frances $13928.84
ARTICULOS TOTALES 4
TOTAL $14599.46
Puntos acumulados $14599.46
o Imprimirá el ticket del cliente 1743
quien realizará una compra como se indica a
continuación.
Cliente Carlos Estrada <1743> 14/01/2017
Productos Costo
15261 Figura_minimalista $1742.64
15259
No_Identificado
$1340.83
ARTICULOS TOTALES 2
TOTAL $3083.47
Puntos acumulados $3083.47
o Imprimir el ticket del cliente 1434 quien realizará nuevamente una compra con
los siguientes artículos. (Se debe reflejar los puntos de recompensa de las dos
compras).
Cliente Laura Lopez <1434> 14/01/2017
Productos Costo
15261 Figura_minimalista $1742.64
ARTICULOS TOTALES 1
TOTAL $1742.64
Puntos acumulados $16342.1
Lenguaje de Programación C++
Proyecto integrador
Nota: Se calificará de acuerdo a la rúbrica del proyecto integrador.
* Como apoyo se proporcionará un proyecto codeblocks U7_proyectoIntegrador que desarrollará la clase
Cliente y se leerá el archivo clientes.txt para llenar la estructura correspondiente.
A continuación se presenta la estructura de clases del sistema para un mejor desarrollo.
**ESTRUCTURA DE CLASES DEL SISTEMA DE TICKETS
• Los métodos getIdCliente(), getNombre(), getRFC() y getPuntosRecompensa() de la
clase Cliente regresan el valor de los atributos según corresponda.
• El constructor de la clase requiere de forma obligatoria los parámetros id, nombre, rfc,
que serán asignados a los atributos correspondientes en la definición, además de
inicializar el atributo puntosRecompensa con el valor 0.
• El método agregarPuntosRecompensa() acumulará los puntos recompensa de cada
compra del cliente que equivalen al total de la compra y se almacenará en el atributo
puntosRecompensa.
Lenguaje de Programación C++
Proyecto integrador
• El constructor de la clase Producto requiere de forma obligatoria el parámetro
idProducto, que será asignado al atributo idProducto, además de inicializar los atributos
correspondientes.
• Los métodos setNombre() y setPrecioUnitario() de la clase Producto asignan un valor a
los atributos según el parámetro establecido.
• Los métodos getId(), getNombre() y getCosto() de la clase Producto regresan el valor
de los atributos según corresponda.
• La clase ProductoNacional es una clase derivada de la clase Producto.
• El constructor de la clase ProductoNacional requiere de forma obligatoria los
parámetros idProducto, porcentajeSubsidio que será asignado al atributo
correspondiente.
• El getCosto() de la clase ProductoNacional regresa el valor del atributo precioUnitario
descontando el porcentaje del subsidio al productos nacional establecido en el atributo
subsidioProductoNacional.
• La clase ProductoImportado es una clase derivada de la clase Producto.
• El constructor de la clase ProductoImportado requiere de forma obligatoria los
parámetros idProducto, porcentajeImpuesto y país que será asignado al atributo
correspondiente.
• El getCosto() de la clase ProductoImportado regresa el valor del atributo
precioUnitario agregando el porcentaje establecido en el atributo
impuestoProductoImportado.
Lenguaje de Programación C++
Proyecto integrador
• El constructor de la clase Ticket requiere de forma obligatoria los parametros id, fecha y
cliente, que serán asignados a los atributos correspondientes en la definición, además de
inicializar el atributo contadorProductos=0, totalTicket=0 y crear el arreglo de
apuntadores productosComprados para contener 10 elementos como máximo.
• El método agregarProducto() agregará un producto a la lista de productos comprados y
realizará las operaciones para actualizar los parámetros que correspondan y que
afectaran al ticket de compra del cliente. Se deberá utilizar el concepto de polimorfismo
para invocar al método getCosto() del objeto producto, quien deberá llamar al método
correcto según sea el tipo de producto (nacional o importado).
• El método getTotalTicket() regresará el valor del total del ticket hasta el momento de la
consulta quien debe contener la suma del costo de todos los productos comprados.
• El método imprimirTicket() imprime en pantalla el resumen de la compra hasta el
momento. Un ejemplo de salida es el siguiente:
Cliente Laura López <1434> 13/01/2017
Productos Costo
14254
No_identificado $131.82
14254
No_identificado $131.82
14257
Figura_Maya
$406.98
15258 Cuadro_importado_frances $13928.84
ARTICULOS TOTALES 4
TOTAL $14599.46
Puntos acumulados $14599.46
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Una empresa requiere la primer etapa de un sistema de ventas que permita generar tickets de compra d

Publicado por Andrea (2 intervenciones) el 07/08/2017 01:47:55
Esta algo laborioso...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Una empresa requiere la primer etapa de un sistema de ventas que permita generar tickets de compra d

Publicado por em (1 intervención) el 07/08/2017 02:56:15
Hola compañera, si ya tiene la solucion podria compartirla por favor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de fantasma

Una empresa requiere la primer etapa de un sistema de ventas que permita generar tickets de compra d

Publicado por fantasma fantasma_fast@hotmail.com (3 intervenciones) el 07/08/2017 04:26:38
Espero no sea tarde :)

Archivo main.pp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include <Cliente.h>
#include <Producto.h>
#include <ProductoNacional.h>
#include <ProductoImportado.h>
#include <Ticket.h>
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
int leerClientes(Cliente* arreglo)
{
    ifstream archivoEntrada("clientes.txt");
    int i, n, id;
    string nombre, rfc;
    archivoEntrada >> n; // Lectura del número de clientes
    for (i = 0; i < n; i++)
    {
        archivoEntrada >> id; // Lectura del id
        archivoEntrada >> nombre; // Lectura del nombre
        archivoEntrada >> rfc; // Lectura del RFC
        arreglo[i] = Cliente(id, nombre, rfc);
    }
    return n;
}
 
void productosNacionales()
{
    ifstream archivoEntrada("productosNacionales.txt");
    int idProducto,n1;
    string nombre;
    float precioUnitario;
    archivoEntrada >> n1;
    cout<<n1<<endl;
    for(int i=0; i<n1; i++)
    {
        archivoEntrada>>idProducto;
        archivoEntrada>>nombre;
        archivoEntrada>>precioUnitario;
        cout<<idProducto<<"\t"<<nombre<<"\t"<<precioUnitario<<endl;
    }
}
 
void productosImportados()
{
    ifstream archivoEntrada("productosImportados.txt");
    int idProducto,n2;
    string nombre,pais;
    float precioUnitario,porcentaje;
    archivoEntrada >> n2;
    cout<<n2<<endl;
    for(int i=0; i<n2; i++)
    {
        archivoEntrada>>idProducto;
        archivoEntrada>>nombre;
        archivoEntrada>>precioUnitario;
        archivoEntrada>>pais;
        archivoEntrada>>porcentaje;
        cout<<idProducto<<"\t"<<nombre<<"\t"<<precioUnitario<<"\t"<<pais<<"\t"<<porcentaje<<endl;
    }
}
void productoNacional(ProductoNacional *arreglo1)
{
    ifstream archivoEntrada("productosNacionales.txt");
    int n3,idNacional;
    float precioUnitario;
    string nombre;
    archivoEntrada>>n3;
    for(int i=0;i<n3;i++)
    {
        archivoEntrada>>idNacional;
        archivoEntrada>>nombre;
        archivoEntrada>>precioUnitario;
        arreglo1[i]=ProductoNacional(idNacional,12);
        arreglo1[i].setNombre(nombre);
        arreglo1[i].setPrecioUnitario(precioUnitario);
    }
}
 
void productoImportado(ProductoImportado *arreglo2)
{
    ifstream archivoEntrada("productosImportados.txt");
    int n4,idImportacion;
    float precioUnitario,impuesto;
    string nombre,pais;
    archivoEntrada>>n4;
    for(int i=0;i<n4;i++)
    {
        archivoEntrada>>idImportacion;
        archivoEntrada>>nombre;
        archivoEntrada>>precioUnitario;
        archivoEntrada>>pais;
        archivoEntrada>>impuesto;
        arreglo2[i]=ProductoImportado(idImportacion,impuesto,pais);
        arreglo2[i].setNombre(nombre);
        arreglo2[i].setPrecioUnitario(precioUnitario);
    }
}
int main()
{
    Cliente arreglo[10];
    int n = leerClientes(arreglo);
    cout<<"CLIENTES"<<endl;
    cout<<n<<endl;
    cout << "ID\tNOMBRE\t\tRFC" << endl;
    for (int i = 0; i < n; i++)
    {
        cout << arreglo[i].getIdCliente() << "\t"<< arreglo[i].getNombre() << "\t"<< arreglo[i].getRFC() << endl;
    }
    cout<<endl<<endl<<"PRODUCTOS NACIONALES"<<endl;
    productosNacionales();
    cout<<endl<<endl<<"PRODUCTOS IMPORTADOS"<<endl;
    productosImportados();
    ProductoNacional arreglo1[10];
    productoNacional(arreglo1);
    ProductoImportado arreglo2[10];
    productoImportado(arreglo2);
    cout<<endl<<endl;
    cout<<"\t\t\tC O M P R A S"<<endl<<endl;
    Ticket compra(01,"06/08/17",&arreglo[0]);
    compra.agregarProducto(&arreglo1[0]);
    compra.agregarProducto(&arreglo1[0]);
    compra.agregarProducto(&arreglo1[3]);
    compra.agregarProducto(&arreglo2[0]);
    compra.imprimirTicket();
 
    Ticket compra2(02,"06/08/17",&arreglo[2]);
    compra2.agregarProducto(&arreglo2[3]);
    compra2.agregarProducto(&arreglo2[1]);
    compra2.imprimirTicket();
 
    Ticket compra3(03,"06/08/17",&arreglo[0]);
    compra3.agregarProducto(&arreglo2[3]);;
    compra3.imprimirTicket();
 
    return 0;
}

Archivo Cliente.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#ifndef CLIENTE_H
#define CLIENTE_H
#include<iostream>
#include <string>
using namespace std;
 
class Cliente
{
    public:
        Cliente(){};
        Cliente(int id, string nombre, string rfc);
        void agregarPuntosRecompensa(float puntos);
        int getIdCliente();
        string getNombre();
        string getRFC();
        float getPuntosRecompensa();
    private:
        int idCliente;
        string nombre;
        string RFC;
        float puntosRecompensa;
};
 
#endif // CLIENTE_H

Archivo Cliente.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <Cliente.h>
 
Cliente::Cliente(int id, string nombre, string rfc)
{
    this->idCliente = id;
    this->nombre = nombre;
    this->RFC = rfc;
    this->puntosRecompensa = 0;
}
 
void Cliente::agregarPuntosRecompensa(float puntos)
{
    if (puntos > 0)
    {
        this->puntosRecompensa =puntosRecompensa+puntos;
    }
}
 
int Cliente::getIdCliente()
{
    return idCliente;
}
 
string Cliente::getNombre()
{
    return nombre;
}
 
string Cliente::getRFC()
{
    return RFC;
}
 
float Cliente::getPuntosRecompensa()
{
    return puntosRecompensa;
}

Archivo Producto.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#ifndef PRODUCTO_H_INCLUDED
#define PRODUCTO_H_INCLUDED
#include<iostream>
#include <string>
using namespace std;
 
class Producto
{
    public:
        Producto(){};
        Producto(int idProducto);
        void setNombre(string nombre);
        void setPrecioUnitario(float precio);
        int getId();
        string getNombre();
        virtual float getCosto();
    protected:
        int idProducto;
        string nombre;
        float precioUnitario;
};
 
#endif // PRODUCTO_H_INCLUDED

Archivo Producto.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include<Producto.h>
 
Producto::Producto(int idProducto)
{
    nombre="No_Identificado";
    precioUnitario=0;
    this->idProducto=idProducto;
 
}
void Producto::setNombre(string nombre)
{
    this->nombre=nombre;
}
void Producto::setPrecioUnitario(float precio)
{
    this->precioUnitario=precio;
}
int Producto::getId()
{
    return idProducto;
}
string Producto::getNombre()
{
    return nombre;
}
float Producto::getCosto()
{
    return precioUnitario;
}

Archivo ProductoNacional.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#ifndef PRODUCTONACIONAL_H_INCLUDED
#define PRODUCTONACIONAL_H_INCLUDED
#include <Producto.h>
using namespace std;
class ProductoNacional:public Producto
{
    public:
        ProductoNacional(){};
        ProductoNacional(int idProducto,float porcentajeSubsidio);
        virtual float getCosto();
    private:
        float subsidioProductoNacional;
};
#endif // PRODUCTONACIONAL_H_INCLUDED

Archivo ProductoNacional.cpp

1
2
3
4
5
6
7
8
9
10
#include<ProductoNacional.h>
 
ProductoNacional::ProductoNacional(int idProducto,float porcentajeSubsidio):Producto(idProducto)
{
    this->subsidioProductoNacional=porcentajeSubsidio;
}
float ProductoNacional::getCosto()
{
    return (Producto::getCosto()-(Producto::getCosto()*.10));
}

Archivo ProductoImportado.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef PRODUCTOIMPORTADO_H_INCLUDED
#define PRODUCTOIMPORTADO_H_INCLUDED
#include<Producto.h>
using namespace std;
class ProductoImportado: public Producto
{
    public:
        ProductoImportado(){};
        ProductoImportado(int idProducto, float porcentajeImpuesto,string pais);
        virtual float getCosto();
    private:
        float impuestoProductoImportado;
        string pais;
};
 
#endif // PRODUCTOIMPORTADO_H_INCLUDED

Archivo ProductoImportado.cpp

1
2
3
4
5
6
7
8
9
10
11
#include<ProductoImportado.h>
 
ProductoImportado::ProductoImportado(int idProducto, float porcentajeImpuesto, string pais):Producto(idProducto)
{
    this->impuestoProductoImportado=porcentajeImpuesto;
    this->pais=pais;
}
float ProductoImportado::getCosto()
{
    return (Producto::getCosto()+(Producto::getCosto()*(impuestoProductoImportado/100)));
}

Archivo Ticket.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#ifndef TICKET_H_INCLUDED
#define TICKET_H_INCLUDED
#include<Cliente.h>
#include<Producto.h>
#include <string>
using namespace std;
class Ticket
{
    public:
        Ticket(){};
        Ticket(int id,string fecha,Cliente* cliente);
        void agregarProducto(Producto* producto);
        float getTotalTicket();
        void imprimirTicket();
    private:
        int idTicket;
        int contadorProductos;
        string fechaCompra;
        float totalTicket;
        Cliente* cliente;
        Producto* productosComprados[10];
};
#endif // TICKET_H_INCLUDED


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include<Ticket.h>
#include<Cliente.h>
#include<ProductoNacional.h>
#include<ProductoImportado.h>
#include <fstream>
#include <string>
 
using namespace std;
Ticket::Ticket(int id,string fecha,Cliente* cliente)
{
    this->idTicket=id;
    this->fechaCompra=fecha;
    this->cliente=cliente;
    contadorProductos=0;
    totalTicket=0;
}
void Ticket::agregarProducto(Producto* producto)
{
    productosComprados[contadorProductos]=producto;
    totalTicket=totalTicket+producto->getCosto();
    contadorProductos++;
}
float Ticket::getTotalTicket()
{
    return totalTicket;
}
void Ticket::imprimirTicket()
{
    int idClient;
    string nombre;
    nombre=cliente->getNombre();
    idClient=cliente->getIdCliente();
    cliente -> agregarPuntosRecompensa(getTotalTicket());
    cout<<"----------------------------------------------------------------------------------------------------------"<<endl;
    cout<<"CLIENTE "<<nombre<<"  <"<<idClient<<">\t\t\t"<<fechaCompra<<endl;
    cout<<"PRODUCTOS\t\t\t\t\tCOSTO"<<endl;
    for(int i=0;i<contadorProductos;i++)
    {
        cout<<productosComprados[i]->getId()<<" "<<productosComprados[i]->getNombre()<<"\t\t\t\t"<<"$"<<productosComprados[i]->getCosto()<<endl;
    }
    cout<<endl<<"ARTICULOS TOTALES\t\t\t\t  "<<contadorProductos<<endl;
    cout<<"TOTAL\t\t\t\t\t\t"<<getTotalTicket()<<endl;
    cout<<"PUNTOS ACUMULADOS\t\t\t\t"<<cliente->getPuntosRecompensa()<<endl;
    cout<<"-----------------------------------------------------------------------------------------------------------"<<endl<<endl;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Maria Ema

Una empresa requiere la primer etapa de un sistema de ventas que permita generar tickets de compra d

Publicado por Maria Ema (2 intervenciones) el 07/08/2017 05:37:30
error

no me funciona
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Una empresa requiere la primer etapa de un sistema de ventas que permita generar tickets de compra d

Publicado por la mano peluda 3 (2 intervenciones) el 07/08/2017 06:01:05
copea tus archivos .txt dentro de tu mismo proyecto por eso no te funciona espero no sea demasiado tarde y puedas ver este msn antes de la hrs. de la muerte jajaja
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Maria Ema

Una empresa requiere la primer etapa de un sistema de ventas que permita generar tickets de compra d

Publicado por Maria Ema (2 intervenciones) el 07/08/2017 06:11:06
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Una empresa requiere la primer etapa de un sistema de ventas que permita generar tickets de compra d

Publicado por Mariel (1 intervención) el 18/11/2017 22:22:38
Me podrías explicar como se agrega el archivo .txt en el proyecto

por fa ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar