Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Proyecto de Curso: Sistema de Generación de Boletas para Pequeñas Empresas de Abarrotes, Guías, Proyectos, Investigaciones de Sistemática

proyectos a base de recopiaciones de datos importantes dados por los docentes en clases, por ejemplo

Tipo: Guías, Proyectos, Investigaciones

2018/2019

Subido el 12/07/2023

rayser-rubina-rengifo
rayser-rubina-rengifo 🇵🇪

2 documentos

1 / 28

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
UNIVERSIDAD NACIONAL AGRARIA DE LA SELVA
FACULTAD DE INGENIERA EN INFORMÁTICA Y SISTEMAS
ESCUELA ACADÉMICA PROFESIONAL DE INGENIERÍA EN
INFORMÁTICA Y SISTEMAS
Proyecto de curso
AUTOR : - León Arteaga, Diego Anghello
- Almerco Machado, Jhostin Fabrizio
- Rubina Rengifo, Rayser Branco
ASIGNATURA : Programación Básica
DOCENTE : Christian García Villegas
SEMESTRE: : 2022-II
Tingo María-Perú
Febrero - Mayo 2023
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c

Vista previa parcial del texto

¡Descarga Proyecto de Curso: Sistema de Generación de Boletas para Pequeñas Empresas de Abarrotes y más Guías, Proyectos, Investigaciones en PDF de Sistemática solo en Docsity!

UNIVERSIDAD NACIONAL AGRARIA DE LA SELVA

FACULTAD DE INGENIERA EN INFORMÁTICA Y SISTEMAS

ESCUELA ACADÉMICA PROFESIONAL DE INGENIERÍA EN

INFORMÁTICA Y SISTEMAS

Proyecto de curso

AUTOR : - León Arteaga, Diego Anghello

  • Almerco Machado, Jhostin Fabrizio
  • Rubina Rengifo, Rayser Branco

ASIGNATURA : Programación Básica

DOCENTE : Christian García Villegas

SEMESTRE: : 2022-II

Tingo María-Perú

Febrero - Mayo 2023

Rellenar a los integrantes, donde se describe sus funciones y tareas encargadas

INTEGRANTES FUNCIONES TAREAS RESPONSABLES

León Arteaga, Diego Anghello

Función de documentación

-Mantener actualizada la

documentación del

proyecto

Función de diseño y arquitectura

-Estructura de clases,

diagramas UML y la

definición de interfaces.

Almerco Machado, Jhostin Fabrizio

Función de reuniones y comunicación

-Establecer una

comunicación fluida entre

los miembros y gestionar

cualquier problema o

conflicto que pueda surgir

durante el desarrollo del

proyecto.

Función de integración de código

-Responsabilidad de

integrar y fusionar el

código desarrollado por

los diferentes miembros.

Función de gestión de tareas

-Mantener el seguimiento

de las tareas pendientes de

los demás integrantes.

Rubina Rengifo, Rayser Branco

Función de pruebas

-Ejecutar pruebas

unitarias y de integración

para garantizar que el

código funcione

correctamente.

Función de optimización de rendimiento

-Analizar el rendimiento

del código y buscar

formas de mejorarlo.

ÍNDICE

  • ÍNDICE..........................................................................................................................................
    1. Descripción del programa....................................................................................................
    • 1.1 Interfaz intuitiva...........................................................................................................
    • 1.2 Registro de productos y ventas....................................................................................
    • 1.3 Generación de boletas..................................................................................................
    1. Representación de las clases en diagrama UML...................................................................
    1. Lista de módulos propuestos.............................................................................................
    • 3.1 Módulo de boleta
    • 3.2 Módulo de cliente
    • 3.3 Módulo de Producto
    • 3.4 Módulo de gestión de inventario
    • 3.5 Módulo de reporte
    • 3.6 Módulo de Venta
    • 3.7 Módulo de Permisos
    1. Descuero del proyecto presentado....................................................................................
    1. Colocar el código de la clase más grande creada dentro del código..................................
    1. Valores agregados al proyecto...........................................................................................
    1. Funcionalidades nuevas.....................................................................................................

1. Descripción del programa

El programa de generación de boletas para pequeñas empresas de venta de abarrotes es

una solución informática diseñada específicamente para ayudar a estas empresas a

emitir boletas de manera fácil, rápida y precisa. El objetivo principal es garantizar el

cumplimiento de las obligaciones fiscales y legales, así como mejorar la transparencia

en las transacciones comerciales. Como propietario de una empresa, existen ciertos

privilegios y responsabilidades que se derivan de tu posición

Características clave del programa:

1.1 Interfaz intuitiva: El programa cuenta con una interfaz amigable y fácil de usar,

lo que permite a los empleados aprender rápidamente a utilizarlo sin necesidad

de una capacitación exhaustiva. La navegación y las funciones son claras y

accesibles.

1.2 Registro de productos y ventas: El programa permite registrar todas las ventas

realizadas en la tienda de abarrotes de forma sistemática. Los empleados pueden

ingresar los productos vendidos, las cantidades y los precios correspondientes.

1.3 Generación de boletas: Una vez que se registra una venta, el programa genera

automáticamente una boleta electrónica o impresa con todos los detalles

necesarios, como el nombre, la fecha y hora de la transacción, los productos

vendidos, los montos y los impuestos correspondientes.

3. Lista de módulos propuestos

3.1 Módulo de boleta -. Trataremos de definir detalladamente una estructura a la

boleta, a base de información pública tanto del cliente y de la empresa, para

colocar los siguientes datos:

 El logo  Eslogan  Datos del cliente  Número de serie  Lista de productos vendidos  Precio total.

3.2 Módulo de cliente-. Almacenará la información personal de los

consumidores o compradores, para luego implementarlo en la boleta al finalizar

su compra.

Los datos personales que se almacenaran:

 Numero de usuario  DNI

3.3 Módulo de Producto-. Nos encargaremos de adecuar el programa a la

tienda, colocando todos los productos que la tienda esté dispuesta a vender.

 Nombre del producto  Cantidad disponible  Precio de producto

3.4 Módulo de gestión de inventario-. Este módulo permitirá al administrador

y al dueño de la empresa agregar, eliminar y ver el stock disponible, lo que

permitirá mantener un mejor control del inventario y optimizar la gestión de los

productos.

 Agregar productos  Eliminar productos  Mostrar Stock disponible  Mostrar precio de los productos (Precio costo, Precio venta y Precio ganancia) 

3.5 Módulo de reporte-. Se hará el monitoreo de las ganancias durante el día.

 Informe financiero (Total de ventas del día)

4. Descuero del proyecto presentado DESCRIPCIÓN NUMERO Nro de Clases creadas 5 Nro de Objetos creados 14 Nro de Vectores 18 Nro de métodos utilizados 12 Nro de métodos utilizados 14 Nro de constantes 22 Nro de variables 18 Nro de funciones virtuales 0 Nro de funciones amigas 3 Nro de Clases amigas 6 Nro de Super clases creadas 1 Nro de excepciones propias creadas -- Nro de excepciones por defecto creadas --

5. Colocar el código de la clase más grande creada dentro del código class registroventa { public: friend class Venta; // Función para guardar una venta en el archivo "ventas.txt" void guardarVenta(const vector &productos, const vector &seleccionados, const vector &cantidadesVendidas, double totalVenta) { ifstream archivo("costo.txt"); if (!archivo.is_open()) { cerr << "No se pudo abrir el archivo de costos." << endl; return; } // Crear un mapa para almacenar los precios de costo y ganancias por nombre de producto map<string, pair<double, double>> preciosGanancias; string nombreProducto; double ganancia; while (archivo >> nombreProducto >> ganancia) { preciosGanancias[nombreProducto].second = ganancia; } archivo.close(); ofstream archivoVentas("ventas.txt", ios_base::app); if (!archivoVentas.is_open()) { cerr << "No se pudo abrir el archivo de ventas." << endl; return; } // Obtener fecha y hora actual time_t tiempoActual = time(nullptr); tm *fechaHoraActual = localtime(&tiempoActual); char buffer[ 80 ]; strftime(buffer, 80 , "%d/%m/%Y %H:%M:%S", fechaHoraActual); archivoVentas << setfill('-') << setw( 73 ) << "" << setfill(' ') << endl; // Escribir información de la venta en el archivo archivoVentas << "Numero de usuario :" << cliente.usuario << endl;

if (permisoderegistro == "empleado") // Utilizando la variable global permiso de registro { string nombreArchivo = ventanombreUsuario + "_ventas.txt"; ifstream archivo("costo.txt"); if (!archivo.is_open()) { cerr << "No se pudo abrir el archivo de costos." << endl; return; } ofstream archivoVentas(nombreArchivo, ios_base::app); if (!archivoVentas.is_open()) { cerr << "No se pudo abrir el archivo de ventas." << endl; return; } // Obtener fecha y hora actual time_t tiempoActual = time(nullptr); tm *fechaHoraActual = localtime(&tiempoActual); char buffer[ 80 ]; strftime(buffer, 80 , "%d/%m/%Y %H:%M:%S", fechaHoraActual); archivoVentas << setfill('-') << setw( 73 ) << "" << setfill(' ') << endl; // Escribir información de la venta en el archivo archivoVentas << "Numero de usuario :" << cliente.usuario << endl; archivoVentas << "DNI DEL CLIENTE: " << cliente.n_dni << endl; archivoVentas << "Fecha y hora: " << buffer << endl; archivoVentas << "Productos vendidos:" << endl; archivoVentas << left << setw(CODIGO) << "CODIGO" << setw(ESPACIO_NOMBRE) << "Nombre" << setw(ESPACIO_CANTIDAD) << "Cantidad" << setw(ESPACIO_PRECIO) << "Precio" << setw(ESPACIO_PRECIO) << "Ganancia" << endl; archivoVentas << setfill('-') << setw( 73 ) << "" << setfill(' ') << endl; for (std::vector::size_type i = 0 ; i < seleccionados.size(); i++) { int indiceProducto = seleccionados[i] - 1 ; archivoVentas << left << setw(CODIGO) <<

seleccionados[i] << ". " << setw(ESPACIO_NOMBRE) << productos[indiceProducto].nombre << setw(ESPACIO_CANTIDAD) << cantidadesVendidas[i] << "$" << setw(ESPACIO_PRECIO) << fixed << setprecision( 2 ) << productos[indiceProducto].precio << "$"; // Obtener la ganancia del producto actual double ganancia = preciosGanancias[productos[indiceProducto].nombre].second; // Calcular la ganancia por producto double gananciaProducto = ganancia * cantidadesVendidas[i]; archivoVentas << setw(ESPACIO_PRECIO) << fixed << setprecision( 2 ) << gananciaProducto << endl; } archivoVentas << "" << setfill(' ') << endl; archivoVentas << "Total de venta: $" << totalVenta << endl; archivoVentas << "Ganancia total: $" << gananciaTotal << endl; cout << endl; struct TotalesVentas { double total_venta; double ganancia_total; }; TotalesVentas totales; std::ifstream archivo_ventas(nombreArchivo); if (archivo_ventas.is_open()) { std::string linea; bool encontrados_encabezados = false; while (std::getline(archivo_ventas, linea)) { if (!encontrados_encabezados) { if (linea.find("CODIGO Nombre") != std::string::npos) { encontrados_encabezados = true; } continue; } size_t pos = linea.find("$"); if (pos != std::string::npos)