FDPG034 - Delivery where more technical concepts of the project and the interaction with PDF

Title FDPG034 - Delivery where more technical concepts of the project and the interaction with
Author Alejandro Cano
Course Fundamentos de programación
Institution Universidad EAFIT
Pages 19
File Size 1.2 MB
File Type PDF
Total Downloads 52
Total Views 115

Summary

Delivery where more technical concepts of the project and the interaction with the user are developed....


Description

PRÁCTICA

ENTREGA 1

ALEJANDRO CANO MUNERA

FUNDAMENTOS DE PROGRAMACIÓN GRUPO: 034 INGENIERÍA DE SISTEMAS

MEDELLÍN 2017

PRÁCTICA

ENTREGA 1 En práctica de fundamentos de programación se realizara una aplicación de colección de datos, la cual simulara un sistema de venta de comida (Productos básicos principalmente). Las tres entidades en las que se basara la aplicación serán “Productos”, “Clientes” y “Ventas”, donde se manejaran los datos de instancia, además se crearan las clases “ColeccionProductos”, “ColeccionClientes” y “ColeccionVentas” para manejar las colecciones de cada tipo de datos. A continuación se detallara la información que se manejara en cada entidad anteriormente mencionada: -

Productos: En esta clase se manejaran todos los datos de instancia referentes a los productos que se ofrecerán en el sistema de venta. Los atributos que se manejaran para esta clase serán los siguientes: ➢ Referencia del producto o código. (En este campo se almacena un número de tipo entero que hace referencia al código del producto, y cada producto tendrá un código único.) ➢ Nombre del producto. (En este campo se almacena un String con el nombre genérico del producto que se va a crear) ➢ Valor de producción del producto. (En este campo se almacena un número de tipo entero que corresponde al valor de producción del producto) ➢ Valor de venta del producto. (En este campo se almacena un número de tipo entero que corresponde al valor de venta del producto) ➢ Observaciones o notas sobre el producto. (En este campo se almacenara un String que corresponde a las notas importantes que se deben de tener en cuenta para determinado producto)

-

Clientes: En esta clase se manejaran todos los datos de instancia referentes a los clientes del sistema de venta. Los atributos que se manejaran para esta clase serán los siguientes:

➢ Nombre del cliente. (En este campo se almacena un String con el nombre del cliente que se va a crear) ➢ Cedula o número de identificación del cliente. (En este campo se almacenara un número de tipo entero que corresponderá al número de identificación (CC) de un determinado cliente, funciona como número único de identificación del cliente) ➢ Dirección del cliente. (En este campo se almacenara un String que contendrá la dirección del cliente) ➢ Ciudad de residencia. (En este campo se almacenara un String con el nombre de la ciudad de residencia del cliente) ➢ Teléfono del cliente. (En este campo se almacenara un número de tipo entero que contendrá el número de contacto de un cliente) ➢ Correo electrónico del cliente. (En este campo se almacenara un String que contendrá el correo electrónico del cliente) ➢ Fecha de cumpleaños del cliente. (En este campo se almacenara se almacenara un número de tipo entero que contendrá la fecha de cumpleaños de un cliente, el formato que se manejara será “diames” es decir, para hacer referencia al día 22 de Junio se deberá ingresar por consola el número 2206; Día 22, Mes 06) ➢ Cliente preferencial. (En este campo se almacenara un dato de tipo boolean que hará referencia a si el cliente es preferencial o no, es decir, si el cliente es preferencia, la variable será true, de lo contrario será false.)

-

Ventas: En esta clase se manejaran todos los datos de instancia referentes a las ventas del sistema de venta. Los atributos que se manejaran para esta clase serán los siguientes: ➢ Número o código de venta. (En este campo se almacena un número de tipo entero que hace referencia al código de la venta, y cada venta tendrá un código único.)

➢ Cliente de la venta. (En este campo se almacena una referencia al cliente a quien se le hizo la venta) ➢ Fecha de la venta. (En este campo se almacenara se almacenara un número de tipo entero que contendrá la fecha de la venta, el formato que se manejara será “diames” es decir, para hacer referencia al día 22 de Junio se deberá ingresar por consola el número 2206; Día 22, Mes 06) ➢ Productos en la venta. (En este campo de tipo ArrayList, se contendrán la referencia a los productos de la venta realizada) ➢ Cantidad por cada producto en la venta. (En este campo de tipo ArrayList, se contendrán las cantidades de los productos de la venta realizada) ➢ Tipo de descuento. (En este campo se almacenara un número de tipo entero que contendrá el porcentaje de descuento de determinada venta) ➢ Precio Total. (En este campo se almacena el valor recuperado por el método calcularPrecioTotal() que con los precios de venta de los productos, su cantidad y el descuento calcula cual es el valor total de la venta) ➢ Precio Total de Producción. (En este campo se almacena el valor recuperado por el método calcularPrecioTotalProduccion() que con los precios de producción de los productos y su cantidad cual es el valor total de producción de la venta) En las clases “ColeccionProductos”, “ColeccionClientes” y “ColeccionVentas”, se implementó la funcionalidad CRUD (Create, Read, Update and Delete), que funcionan de la siguiente manera genérica de cada colección: ➢ Create: Este método recibe una referencia a un objeto (Producto, cliente o venta), verifica que el código de dicho objeto no se encuentre registrado, y si no lo está lo agrega a la colección correspondiente. ➢ Read: Este método recibe un código (Ya sea de un producto, de un cliente o de una venta y retorna una referencia a este objeto. ➢ Update: Este método recibe la referencia a un objeto (Producto, cliente, y venta), luego busca por su código su existencia en la

colección y posteriormente procede a actualizar los valores del objeto en la colección. ➢ Delete: Recibe un código de determinado objeto, lo busca dentro de la colección y lo elimina de ella. Además en estas mismas clases de colecciones se manejaran los métodos que nos permitirán generar informes de la información previamente almacenada. Los principales informes que se generaran serán los siguientes: -

Mostrar lista detallada de clientes: Se muestran en pantalla todos los clientes con toda su información registrados en la aplicación.

-

Mostrar lista de clientes: Se muestran en pantalla todos los clientes con la información más elemental de estos mismos registrados en la aplicación.

-

Mostrar clientes preferenciales: Se muestra en pantalla todos los clientes preferenciales registrados en la aplicación.

-

Mostrar clientes no preferenciales: Se muestra en pantalla todos los clientes no preferenciales registrados en la aplicación.

-

Mostrar cliente Premium: Se muestra en pantalla el cliente que mayor cantidad de pedidos (ventas) ha hecho con su información completa.

-

Mostrar clientes de cumpleaños: Se muestra en pantalla los clientes que estén de cumpleaños en la fecha indicada.

-

Mostar correos electrónicos: Se muestra en pantalla una lista de todos los correos electrónicos de los clientes registrados en la aplicación.

-

Mostrar lista detallada de productos: Se muestra en pantalla todos los productos con toda su información registrados en la aplicación.

-

Mostar lista de productos: Se muestra en pantalla todos los productos con la información más elemental registrados en la aplicación.

-

Mostrar productos por valor: Se pide al usuario que digite un valor que corresponderá al valor máximo de un producto, y se mostraran en pantalla los productos que tengan un valor inferior o igual a dicho valor ingresado.

-

Mostrar lista detallada de ventas: Se muestra en pantalla todas las ventas realizadas con toda su información registrados en la aplicación.

-

Mostar lista de ventas: Se muestra en pantalla todas las ventas con la información más elemental registradas en la aplicación.

-

Mostrar mayor venta: Se muestra en pantalla la mayor venta hecha hasta el momento registrada en la aplicación junto con toda su información.

-

Mostrar rentabilidad de productos: Se muestra una lista de todos los productos registrados de manera descendente según las ganancias que deje la venta unitaria de cada uno de estos.

-

Mostrar ganancias: Se muestra en pantalla las ganancias por ventas registradas en la aplicación, además se muestra cuanto ha sido el valor total de la producción o adquisición de los productos, y el valor del total de las ventas, siendo la ganancia la diferencia entre estos dos factores.

Interacción con el usuario: La interacción con el usuario se hará por menús numéricos que se presentaran en la consola, es decir, se presentaran las opciones que puede realizar el usuario, y este tomara las decisiones mediante la digitación de un comando numérico, y el ingreso de información a la aplicación también se hará por este mismos medio; el programa le pedirá al usuario digitar la información cuando sea pertinente. Persistencia en archivos tipo texto: El programa contara con persistencia, es decir, que una vez el usuario cierre la aplicación los datos se guardaran en un archivo de texto (Archivo plano) para así asegurar que la información no se perderá, en un posterior uso. Cabe resalta que a medida que se ejecuta alguna acción referente al CRUD, la información creada también se almacenara en el archivo. Al iniciar la aplicación, esta leerá la información de los archivos y cargara cada una de las entidades a las colecciones para posteriores consultas.

Algoritmo más importante de la aplicación, implementado en Java: El principal algoritmo de la aplicación es el de imprimir las ventas con detalle; aquí se relaciones todas las entidades de la aplicación, es decir, cliente, producto y venta. El algoritmo toma los datos de las diferentes entidades y los imprime a manera de informe. Prueba de validación del algoritmo: Se realizó una prueba en otra clase llamada TestAlgoritmo, donde se crearon las instancias necesarias de la clase, y se probó el funcionamiento del mismo.

Prueba de validación del algoritmo en JUnit: Para la prueba de validación en JUnit se tomó el algoritmo de calcular precio total, se realizó el test, y se comprobó que los resultados fueran los esperados. El algoritmo recibe un ArrayList de productos y otro de cantidad y calcula el precio total de venta.

El Test del algoritmo se encuentra en el paquete Proyecto (Anexo), en la clase TestAlgoritmo. El Test del algoritmo con JUnit se encuentra en la carpeta Test Packages en el paquete Proyecto (Anexo), en la clase AlgoritmoIT.

Diagrama de objetos (relacionado con las clases):

Diagrama de objetos (relacionado con otros objetos):

Mockups de la interfaz de usuario:

Mockup: mensaje de Bienvenida. (Se ejecuta al iniciar la aplicación)

Mockup: mensaje de cierre. (Se ejecuta cuando se está cerrando la aplicación)

Mockup: Menú, sección clientes (El menú principal se abre, luego de dar clic en el botón ingresar del mensaje de bienvenida, este mockup hace referencia a la sección cliente del menú principal)

Mockup: Menú, sección productos (Este mockup hace referencia a la sección producto del menú principal)

Mockup: Menú, sección ventas (Este mockup hace referencia a la sección ventas del menú principal)

Mockup: Informe general de datos. (Este mockup hace referencia a la forma general de un informe de datos que se ejecute en la aplicación)

Mockup: Ingresar cliente. (Este mockup hace referencia a la forma de agregar clientes a la aplicación).

Mockup: Ingresar producto. (Este mockup hace referencia a la forma de agregar productos a la aplicación).

Mockup: Ingresar venta. (Este mockup hace referencia a la forma de agregar ventas a la aplicación).

Mockup: Buscar (Este mockup hace referencia a la forma genérica de la aplicación para buscar clientes, productos o ventas usando como referente el código de estos).

Mockup: Eliminar. (Este mockup hace referencia a la forma genérica de la aplicación para eliminar clientes, productos o ventas usando como referente el código de estos).

Mockup: Actualizar cliente (Este mockup hace referencia a la forma de actualizar un cliente en la aplicación).

Mockup: Actualizar producto (Este mockup hace referencia a la forma de actualizar un producto en la aplicación).

Mockup: Actualizar venta. (Este mockup hace referencia a la forma de actualizar una venta en la aplicación).

Diseño de los archivos de texto que le proveerán persistencia a la aplicación, en estos se podrá leer y escribir los datos de la aplicación:

Archivo de texto que le proveerán persistencia a la colección de Clientes. Esquema: La información se separara por el carácter de valor absoluto ( | ). Id | nombre | dirección | ciudad | teléfono | correo | cumpleaños | preferencial

Archivo de texto que le proveerán persistencia a la colección de productos. Esquema: La información se separara por el carácter de valor absoluto ( | ). Código | nombre | valorProduccion | valorVenta | nota

Archivo de texto que le proveerán persistencia a la colección de ventas. Esquema: La información se separara por el carácter de valor absoluto ( | ), entre llaves ( { } ) ira almacenado y separados con comas los datos que pertenecen a un arreglo de datos. Código | codigoCliente | fecha | {CodigoProd1, CodigoProd2...CodigoProdN} | {Cant1, Cant2...CantN} | descuento

Herramientas usadas para el desarrollo de la entrega 1: -

Entorno de desarrollo de la aplicación: Netbeans Pruebas del algoritmo: Netbeans y JUnit. Mockups: Balsamiq [online] Diagrama de objetos: Cacoo [online] Archivos de texto: Bloc de notas (Notepad)...


Similar Free PDFs