Desafio numero 015 correspondiente al finalización del curso 01 de la carrera Java Full Stack de la academia Desafío LATAM

Overview

DesafioFinalProgramacionBasicaJava

Desafio numero 015 correspondiente al finalización del curso 01 de la carrera Java Full Stack de la academia Desafío LATAM DesafioFinalProgramacionBasicaJava

Desafio numero 015 correspondiente al finalización del curso 01 de la carrera Java Full Stack de la academia Desafío LATAM Prueba - Sistema de Clientes ● Para realizar esta prueba debes haber estudiado previamente todo el material disponibilizado correspondiente al módulo. ● Una vez terminada la prueba, comprime la carpeta que contiene el desarrollo de los requerimientos solicitados y sube el .zip en el LMS. ● Puntaje total: 10 puntos. ● Desarrollo prueba: ○ La prueba se debe desarrollar de manera Individual. Descripción Durante el último tiempo han ocurrido cambios significativos en nuestras vidas a causa de la tecnología, los pequeños locales han debido adaptarse a esta nueva necesidad y comenzar a mudar sus negocios hacia lo electrónico. Es por ello, que la pastelería “Bon Bon Jovi” le ha contactado a usted para crear un software, donde pueda tener un control de sus clientes, evitando así que vayan a su local rival “Dominic Completto”. Para esto, debemos considerar las siguientes funcionalidades: _ 1 Menú Para poder navegar entre las distintas funciones de la aplicación, deberá existir un menú inicial. El menú permitirá listar, agregar, editar, cargar, exportar datos de clientes y salir de la sección. Agregar Cliente Se debe permitir agregar clientes nuevos e incorporarlos en el listado. Por defecto, deberá venir la opción ”Activo” en la categoría Cliente, cuando éste sea nuevo. _ 2

Listar Clientes
Agregar Cliente
Editar Cliente
Cargar Datos
Exportar Datos
Salir Ingrese una opción: -------------Crear Cliente------------- Ingresa RUN del Cliente: Ingresa Nombre del Cliente: Ingresa Apellido del Cliente: Ingresa años como Cliente:

Listar Cliente Se deben listar a todos los clientes existentes del negocio con su respectiva categoría. En el ejemplo, se muestra la lista para 2 clientes. Editar Cliente Se podrá editar un cliente en caso de tener algún error en sus datos. Para esto, se deberá ingresar la opción de lo que se busca hacer. _ 3 -------------Datos del Cliente------------- RUN del Cliente: 12.123.412-2 Nombre del Cliente: Nicolas Apellido del Cliente: Cake Años como Cliente: 7 años Categoría del Cliente: Activo -------------Datos del Cliente------------- RUN del Cliente: 25.673.022-2 Nombre del Cliente: Taylor Apellido del Cliente: Shift S. Años como Cliente: 1 día Categoría del Cliente: Activo -------------Editar Cliente------------- Seleccione qué desea hacer: 1.-Cambiar el estado del Cliente 2.-Editar los datos ingresados del Cliente Ingrese opcion:

Ingrese RUN del Cliente a editar: En este caso, se buscará cambiar el estado del cliente. Mientras que en este caso, se quiere cambiar los datos ingresados en un cliente, mediante la búsqueda por el RUN Finalmente y en base a la elección del dato a editar, la pantalla arrojará como ejemplo lo siguiente. _ 4 Ingrese RUN del Cliente a editar: -----Actualizando estado del Cliente---- El estado actual es: Activo 1.-Si desea cambiar el estado del Cliente a Inactivo 2.-Si desea mantener el estado del cliente Activo Ingrese opcion: Ingrese RUN del Cliente a editar: ----Actualizando datos del Cliente----- 1.-El RUN del Cliente es: 12.123.412-2 2.-El Nombre del Cliente es: Nicolas 3.-El Apellido del Cliente es:Cake 4.-Los años como Cliente son: 7 años Ingrese opcion a editar de los datos del cliente: Ingrese opcion a editar de los datos del cliente: 1 1.-Ingrese nuevo RUN del Cliente: 24.157.163-K

Datos cambiados con éxito Cargar Datos Mediante la selección del menú se debe cargar información de los clientes previos del negocio desde un archivo llamado “ DBClientes.csv” . El archivo “DBClientes.csv” contiene este formato. _ 5 ---------Cargar Datos en Linux o Mac----------- Ingresa la ruta en donde se encuentra el archivo DBClientes.csv: home/usuario/Desktop Datos cargados correctamente en la lista ---------Cargar Datos en Windows--------------- Ingresa la ruta en donde se encuentra el archivo DBClientes.csv: C:\usuario\equipo\Desktop

Datos cargados correctamente en la lista 17.162.856-5,Iron,Manjar,1 año,Activo 10.513.821-6,Thor,Tita ,4 años,Activo 17.151.677-8,Capitán,Marraqueta,9 años,Inactivo Exportar datos Mediante la selección del menú se debe exportar información de los clientes y sus respectivas categorías. El archivo debe ser “ clientes.txt” o “ clientes.csv” dependiendo del formato elegido. Dependiendo del formato y del equipo, las rutas quedarán así: Consideraciones ● Se puede optar por los tipos de datos con los que se sienta más cómodo. ● Crear los métodos que se estimen convenientes, además de los expresados en los requerimientos. ● Crear la clase Main que contenga método main para iniciar el programa. Debe iniciar con el menú. ● Se deben utilizar iteraciones de la librería Streams. ● Utilizar biblioteca JUnit 4 para realizar testing (implementación detallada en anexos). _ 6 ---------Exportar Datos----------- Seleccione el formato a exportar: 1.-Formato csv 2.-Formato txt Ingrese una opción para exportar: ---------Exportar Datos en Linux o Mac----------- Ingresa la ruta en donde desea exportar el archivo clientes.csv: home/usuario/Desktop Datos de clientes exportados correctamente en formato csv. ---------Exportar Datos en Windows--------------- Ingresa la ruta en donde desea exportar el archivo clientes.txt: C:\usuario\equipo\Desktop

Datos de clientes exportados correctamente en formato txt. Requerimientos A) Crear proyecto en Java y generar versionamiento con Git y Github (1 Punto)

Crear un proyecto nuevo a través de eclipse como proyecto Java: ● Nuevo Proyecto > Proyecto Java > Ingresar nombre proyecto > Finalizar.
Crear 6 paquetes sobre los cuales trabajaremos: ● Package main ● Package modelo ● Package servicio ● Package test ● Package utilidades ● Package vista
Crear el enum CategoríaEnum en el package Modelo, la cual contendrá 2 posibles valores: Activo e Inactivo.
Crear la clase Cliente en package modelo, con los siguientes requisitos: ● String runCliente ● String nombreCliente ● String apellidoCliente ● String aniosCliente (se puede cambiar a int si lo desea) ● CategoriaEnum nombreCategoria ● Generar el constructor con parámetros ● Generar los getter y setter correspondientes ● Generar el toString para los parámetros
Crear la clase Main con método public static void en el package main, la cual usará una instancia para iniciar el menú. _ 7

B) Utilizar Ciclos y métodos (2 Puntos) 6. Crear clase Menu en el package vistas, que debe contener los siguientes atributos: ● clienteServicio, instancia de ClienteServicio. ● archivoServicio, instancia de ArchivoServicio. ● exportadorCsv, instancia de ExportarCsv. ● exportarTxt, instancia de ExportarTxt. ● Definir un String fileName = “Clientes” (para exportar el archivo) ● Definir un String fileName1 = “DBClientes.csv” (para importar el archivo) ● scanner, instancia de Scanner para recibir valores a través del teclado. ● iniciarMenu, muestra el menu principal y recibe la entrada del teclado a través del scanner. Contiene la lógica para denotar los demás métodos en base a la entrada del teclado. 7. La clase Menu debe contener los siguientes métodos para la construcción y selección del menu: ● listarCliente. ● agregarCliente. ● editarCliente. ● importarDatos. ● exportarDatos. ● terminarPrograma. 8. Se deben sobreescribir los métodos nombrados previamente en el punto 7, dentro de la misma clase Menu de la siguiente manera: ● listarClientes, muestra lista de clientes agregados, ya sea por importación o agregando a mano. ● agregarCliente, solicita ingreso de datos y llena objeto de tipo Cliente. ● editarCliente, permite la edición de algún cliente en caso de requerirlo o cambiar el estado del cliente. ● cargarDatos, ejecuta la carga de datos del archivo “DBClientes.csv”. ● exportarDatos, llama a método para exportar clientes en formato “.txt” o “.csv”. ● terminarPrograma, el cual finaliza la ejecución del sistema. _ 8

Hint: El único método que no se debe sobreescribir es iniciarMenu, ya que contiene su implementación al inicio de la clase para formar el menú. C) Utilizar Arreglos y archivos (2 Puntos) 9. Crear la clase ClienteServicio en el package servicio con los siguientes requisitos: ● Crear un atributo llamado List listaClientes. ● Generar un constructor de ClienteServicio que tenga esta listaClientes como una nueva ArrayList. ● Generar el método público sin valor de retornolistarClientes e implementar el ciclo más idóneo para recorrer cada uno de los clientes. ● Generar un public void del método agregarCliente y pasarle los parámetros de la clase Cliente. Utiliza este método para guardar clientes en una instancia de cliente. ● Generar un public void del método editarCliente y pasarle los parámetros de la clase Cliente. ● Crear un getter de listaCliente y que pueda retornar una listaClientes. D) Aplicar Polimorfismo y Herencia según el Paradigma Orientado a Objetos (POO) (2 Puntos) 10. Crear una clase abstracta de nombre Exportador en package Servicio, que contenga un método abstracto para exportar, cuyos parámetros serán String fileName y List listaClientes. 11. Crear una clase ExportadorCsv en el package servicio, que contenga un método exportar, cuyos parámetros serán String fileName y una List listaClientes. Se deben realizar las implementaciones correspondientes al interior del método usando PrintWriter y Filewriter para la exportación de archivos. 12. Crear una clase ExportadorTxt en el package servicio, que contenga un método exportar, cuyos parámetros serán String fileName y una List listaClientes. _ 9

Se deben realizar las implementaciones correspondientes al interior del método usando PrintWriter y Filewriter para exportación de archivos. Hint: Los pasos 8, 9 y 10 buscan tener una clase abstracta (Exportador), con un solo método exportar, cuyas clases ExportadorCsv y ExportadorTxt extienden de esta clase e implementan su método. Por lo tanto, los métodos declarados serán pertenecientes a cada Exportador bajo el concepto de herencia. Al utilizarlo, se instancia alguno de los exportadores en la clase menu ocupando polimorfismo. E) Aplicar instancias al Paradigma Orientado a Objetos (POO) (2 Puntos) 13. Crear la clase ArchivoServicio en el package servicio que extiende a la clase Exportador. Esta contiene los siguientes requisitos: ● Crear el método cargarDatos que recibe por parámetro un String fileName, el cual indica el nombre del archivo a cargar. Se deben realizar las implementaciones correspondientes al interior del método usando FileReader y BufferedReader (para lectura de archivos). ● Crear el método exportar que será una herencia proveniente de la clase Exportador, cuyos parámetros serán los mismos que se van a implementar en el paso 8. 14. Crear una clase Utilidad en package utilidades, que contenga métodos reutilizables para el menú como limpiar pantalla, mostrar mensajes, etc. F) Aplicar pruebas unitarias(1 Punto) 15. Añadir dependencias para pruebas Unitarias, ver ejemplo en apartado Anexos al final del documento. 16. Escribir pruebas unitarias para ClienteServicio. ● Método agrearClienteTest para verificar el funcionamiento de agregarCliente (se debe agregar un cliente para que el test corra de manera correcta). ● Método agrearClienteNullTest para verificar el funcionamiento de agregarCliente en caso que vengan casos nulos (se debe agregar un cliente nulo para que el test corra de manera correcta). _ 10

ANEXOS Para poder aplicar y correr los test solicitados en el punto 15 y 16, debemos agregar las bibliotecas correspondientes de “JUnit”. Para ello debemos seguir los siguientes pasos:

Nos posicionamos sobre el proyecto creado entre los package (Que en el ejemplo se llama “PruebaIntento1”) > Hacemos click derecho, buscamos "propiedades y le damos click nuevamente. Debería desplegar la siguiente pestaña. Imagen 1: Pestaña de apertura propiedades Fuente: Desafío Latam _ 11

Hacemos click sobre “Java Build Path”, buscamos la pestaña “Libraries” (bibliotecas) como se muestra en la imagen y luego colocamos “Add Library” manteniendo la opción “Module Path” marcada. Imagen 2: Selección de ModulePath pestaña propiedades Fuente: Desafío Latam _ 12

Cuando hacemos click sobre “Add library” se despliega la siguiente pestaña. Imagen 3: Selección JUnit en la pestaña Add Library Fuente: Desafío Latam _ 13

Damos click a next, seleccionamos la biblioteca “JUnit 4” y le damos a finish. Imagen 4: Selección JUnit 4 en la pestaña Add Library Fuente: Desafío Latam

Luego le damos click en “Apply and Close”. _ 14
You might also like...

Coupon Management System - Full-Stack Project Based in Spring & React

Coupon Management System Full-Stack Project Based in Spring & React Coupon Management System: Final project by Shachaf Izhaki. This project was built

Jan 9, 2022

DSMovie is a full stack web and mobile application built during Spring React Week, an event organized by DevSuperior

DSMovie is a full stack web and mobile application built during Spring React Week, an event organized by DevSuperior

projeto-DSMovie Sobre o projeto DSMovie é uma aplicação full stack web e mobile construída durante a Semana Spring React, evento organizado pela DevSu

Apr 18, 2022

Construction System is a Ecommerce Full stack web development project.

Construction-system- Construction System is a Ecommerce Full stack web development project. Construction System is a project to ensure that there is a

Oct 17, 2021

Desafio Alura Challenge para backend. Criando uma API REST de controle de orçamento utilizando JAVA.

Desafio Alura Challenge para backend. Criando uma API REST de controle de orçamento utilizando JAVA.

Jun 16, 2022

Sito del gurppo 1 per il progetto facoltativo di "Programmazione II" AA 2021/22

Skeleton of the project src/base_classes/ will be used for all abstract classes and interfaces. src/game/ is where all other classes are. src/game/mak

Mar 11, 2022

RescateDePatitas - Repositorio del proyecto integrador de Diseño de Sistemas UTN FRBA

RescateDePatitas - Repositorio del proyecto integrador de Diseño de Sistemas UTN FRBA

Rescate de Patitas Trabajo Práctico - GRUPO 7 - Diseño de Sistemas - 2021 - Jueves Mañana Resumen El siguiente trabajo consiste en una aplicación web

Jan 3, 2022

PROG2-21-Gruppo-2 - Sito del gurppo 2 per il progetto facoltativo di "Programmazione II" AA 2021/22

PROGETTO PROGRAMMAZIONE 2 - GRUPPO 2 SPECIFICHE Deadline : Marzo Progetto : Rogue-like Spiegazione generale E' un gioco a turni. Movimento in 4 direzi

Jan 3, 2022

Crud sobre el mundo del cine, y listado de películas que un usuario puede tener en su casa.

Crud sobre el mundo del cine, y listado de películas que un usuario puede tener en su casa.

FilmHome 🎬 🎞️ Crud sobre el mundo del cine, y listado para gestionar las películas que un usuario puede tener como colección en su casa. 📽️ VIDEO Y

May 16, 2022

Materiale didattico per il Tutorato di Ingegneria del Software A.A. 2021/2022

Tutorato_IDS Materiale didattico per il Tutorato di Ingegneria del Software A.A. 2021/2022 Installazione ambiente di sviluppo Java Scegliete una delle

Jul 5, 2022
Owner
null
Repositorio de los microservicios desarrollados como parte del Proyecto Final de la academia de microservicios en IBM

Microservicio_ProyectoFinal_IBM Repositorio de los microservicios desarrollados como parte del Proyecto Final de la academia de microservicios en IBM

Cesar Martin 2 Oct 18, 2021
Bot de Telegram que informa del precio del combustible en las gasolineras más próximas a tu ubicación

Telegram BOT Bot de Telegram en JAVA y SQLite. Sirve para consultar los precios de las gasolineras más cercanas a tu ubicación. Los datos son proceden

null 6 Jan 12, 2022
Projeto final curso Let's Code Web Full Stack

E-Commerce Description Microservices-based backend application to manage an e-commerce. Please see the project statement (pt-BR) for details. How-To R

Iuri Lopes Almeida 3 May 31, 2022
SDK java permettant de valider et qualifier un numéro de téléphone calédonien.

❔ phonenumber-validator SDK Java permettant de valider, qualifier un numéro de téléphone calédonien. ⬇️ Import de la dépendance publique Cette dépenda

OPT Nouvelle Caledonie 2 Oct 22, 2022
Ap Android cujo a funcionalidade é sortear um numero

Sorteia números Apliquei meus conhecimentos para criar um programa cujo a finalidade é sortear um número de 1 a 10. Chega de ficar procurando sites na

Lúcio Israel 1 Feb 3, 2022
Curso da Stack Quarkus - Alura

bitcoin Project This project uses Quarkus, the Supersonic Subatomic Java Framework. If you want to learn more about Quarkus, please visit its website:

null 2 Oct 29, 2021
Spring Boot Full Stack with React for Professionals

Spring Boot allows to take an idea/prototype and turn it into a real thing in matters minutes hours of months and years. A lot of companies use Spring Boot because it's easy to setup, learn and write code very fast without having to setup the low level platform code

Amigoscode 318 Dec 29, 2022
Spring Boot Full Stack with React for Professionals

Spring Boot allows to take an idea/prototype and turn it into a real thing in matters minutes hours of months and years. A lot of companies use Spring Boot because it's easy to setup, learn and write code very fast without having to setup the low level platform code. Recently, Netflix has decided to switch their entire backend to Spring Boot.

Amigoscode 26 Mar 25, 2021
In this course, we will learn how to build a complete full-stack web application using Spring boot as backend and React (React Hooks) as frontend

In this course, we will learn how to build a complete full-stack web application using Spring boot as backend and React (React Hooks) as frontend. We will use MySQL database to store and retrieve the data.

Ramesh Fadatare 43 Dec 22, 2022
Full Stack Employee Management Application Using ReactJS and Spring Boot

Full Stack Employee Management Application Using ReactJS and Spring Boot Tech We Used ReactJs Spring Boot MySql Database Spring Security REST API Feat

Alan Binu 53 Nov 18, 2022