¡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..........................................................................................................................................
- Descripción del programa....................................................................................................
- 1.1 Interfaz intuitiva...........................................................................................................
- 1.2 Registro de productos y ventas....................................................................................
- 1.3 Generación de boletas..................................................................................................
- Representación de las clases en diagrama UML...................................................................
- 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
- Descuero del proyecto presentado....................................................................................
- Colocar el código de la clase más grande creada dentro del código..................................
- Valores agregados al proyecto...........................................................................................
- 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)