0% encontró este documento útil (0 votos)
18 vistas13 páginas

Proyecto Fundamentos de Programacion

Este documento describe un programa Java que simula una máquina expendedora. El programa permite al usuario seleccionar productos de una lista, mostrar los productos disponibles y sus precios, y agregar más productos a la máquina como personal técnico. El programa almacena la información de productos y cantidades en matrices bidimensionales y realiza cálculos de ventas totales.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
18 vistas13 páginas

Proyecto Fundamentos de Programacion

Este documento describe un programa Java que simula una máquina expendedora. El programa permite al usuario seleccionar productos de una lista, mostrar los productos disponibles y sus precios, y agregar más productos a la máquina como personal técnico. El programa almacena la información de productos y cantidades en matrices bidimensionales y realiza cálculos de ventas totales.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 13

PROYECTO FUNDAMENTOS DE

PROGRAMACION- ALUMNO GERARDO


DOMINGUEZ AVILA
package maquinaexpendedora;

import java.util.InputMismatchException;
import java.util.Scanner;

/**
* Desarrollamos un software de una maquina expendedora
*
* @author gerardodmz
*/
public class MaquinaExpendedora {

//Declaramos un scanner statico


static Scanner entrada = new Scanner(System.in);

public static void main(String[] args) {


System.out.println("--------------------------------------------------");
System.out.println("");
System.out.println("***** BIENVENIDO/A A LA MAQUINA EXPENDEDORA DE
PRODUCTOS COMESTIBLES ****");
System.out.println("");
System.out.println("--------------------------------------------------");

// Llamamos al metodo menu


menu();
}

/**
* Muestra el menu, solicita la opcion y las ejecuta
*/
public static void menu() {

//Array Bidimensional del tipo String con el nombre de cada producto


String[][] productos
= {{"REFRESCO 700ML", "SABRITAS PICANTES", "DONITAS",
"CHOCOLATES CRUNCH"},
{"REFRESCO TORONJA 400ML", "DORITOS PIZZEROLA", "CACAHUATES
PICANTES", "AGUA 500ML"},
{"PEPSI LATA", "CHETOS BOLA", "CHETOS TORCIDITOS", "PASTILLAS
HALLS"},
{"CAFE DESCAFEINADO", "PAN DE DULCE", "PALETA PAYASO", "PAPAS
PRINGLESS"}};

//Array Bidimensional con el precio de cada producto de tipo Double


double[][] precio
= {{1.20, 0.50, 3.10, 2.20},
{1.70, 1.25, 0.90, 3.00},
{1.40, 1.30, 0.80, 1.80},
{1.20, 1.50, 2.50, 2.60}};

//Declaramos un array con las filas y las columnas (4 por el nombre) y (4 por el
precio)
int cantidad[][] = new int[4][4];

//Rellenamos el array con la cantidad, en este caso con 5


rellenarArray(cantidad, 5);
//Indica si salimos o no
boolean salir = false;
//Declaramos las variables
int opcion, fila, columna, cantidadNueva;
String posicion, contraseña = "Gerardo90201";
double ventasTotales = 0.0;

//Bucle para pedir las opciones hasta que elijamos salir


while (!salir) {

//Presentamos opciones al usuario


System.out.println("1:MOSTRAR PRODUCTOS.");
System.out.println("2:SOLICITAR PRODUCTOS.");
System.out.println("3:OPCION SOLO PARA PERSONAL TECNICO");
System.out.println("4:APAGAR LA MAQUINA");

try {

//Pedimos una opcion al usuario


System.out.print("SELECCIONE UNA OPCION: ");
opcion = entrada.nextInt();

//Realiza una de las opciones


switch (opcion) {
case 1:

//Mostrar el listado de productos


mostrarProductos(productos, precio);

break;
case 2:

//Pido la posicion
posicion = pedirCadena("INTRODUCE LA POSICION DESEADA: ");

//Valido la posicion
if (validarPos(productos, posicion)) {

//Extraigo la fila y columna


fila = extraerNumero(posicion, 0);
columna = extraerNumero(posicion, 1);

//Indico si hay valores en la matriz


if (valorPosicion(cantidad, fila, columna)) {
//Muestro el producto seleccionado
System.out.println("PRODUCTO ELEGIDO: " +
productos[fila][columna] + ". PRECIO: " + precio[fila][columna] + "Dollars.");
System.out.println("DISFRUTE SU PRODUCTO Y GRACIAS POR SU
COMPRA!");

//Reduzco la cantidad en 1
reducirPosicion(cantidad, fila, columna, 1);

//Aumentamos la cantidad
ventasTotales += precio[fila][columna];

} else {
System.out.println("PRODUCTO AGOTADO. ESPERANDO AL
TECNICO A QUE RELLENE LA CANTIDAD NECESARIA.");
}
} else {
System.out.println("POSICION INCORRECTA,VUELVA A
INTENTARLO.");
}

break;

case 3:

//Solicitamos la contraseña
contraseña = pedirCadena("OPCION TECNICA, INTRODUZCA LA CLAVE
DE ACCESO AL SISTEMA: ");

//Comprobamos si es correcta la contraseña


if (cadenaIguales(contraseña, "Gerardo90201")) {

//Pido la posicion
posicion = pedirCadena("INTRODUZCA LA POSICION DEL
PRODUCTO: ");

//Extraigo los numeros


fila = extraerNumero(posicion, 0);
columna = extraerNumero(posicion, 1);

//Validamos la posicion dada


if (validarPos(productos, posicion)) {
//Introducimos la cantidad a rellenar
cantidadNueva = pedirInteger("INTRODUZCA LA CANTIDAD A
RELLENAR");
//Aumentamos la cantidad en el valor dado
aumentarPosicion(cantidad, fila, columna, cantidadNueva);

System.out.println("SE HA INCREMENTADO LA CANTIDAD EN: " +


cantidadNueva + " UNIDAD/ES.");

} else {
System.out.println("LA POSICION NO ES VALIDA");
}

} else {
System.out.println("CONTRASEÑA INCORRECTA");
}

break;
case 4:
//Solicitamos la contraseña
contraseña = pedirCadena("OPCION TECNICA, INTRODUZCA LA CLAVE
DE ACCESO AL SISTEMA: ");

//Comprobamos si es correcta la contraseña


if (cadenaIguales(contraseña, "Gerardo90201")) {

}
//Mostramos el total de las ventas producidas
System.out.println("TOTAL VENTAS: " + ventasTotales + " Dollars.");

salir = true;
break;
default:
System.out.println("LAS OPCIONES SON ENTRE 1 Y 4.");
}

//En caso de producirse un valor incorrecto en las opciones capturamos la


excepcion
} catch (InputMismatchException e) {
System.err.println("OPCION INCORRECTA, POR FAVOR ELIJA UNA OPCION
VALIDA.");
entrada.next();
}

}
//Salimos del menu y del programa
System.out.println("SALIENDO DEL SISTEMA. APAGANDO MAQUINA...");

/**
* Rellenamos el array con un numero
*
* @param array
* @parm numero
*/
public static void rellenarArray(int[][] array, int numero) {

for (int[] array1 : array) {


for (int j = 0; j < array.length; j++) {
array1[j] = numero;
}
}

}
/**
* Pedimos una cadena
*
* @param mensaje
* @return
*/
public static String pedirCadena(String mensaje) {

System.out.println(mensaje);
String cadena = entrada.next();

return cadena;

/**
* Pedimos un numero entero
*
* @param mensaje
* @return
*/
public static int pedirInteger(String mensaje) {

System.out.println(mensaje);
int numero = entrada.nextInt();

return numero;

}
/**
* Valida si una posicion es correcta
*
* @param matriz
* @param pos
* @return
*/
public static boolean validarPos(String[][] matriz, String pos) {

if (pos.length() != 2) {
return false;
}

if (!(esNumero(pos.substring(0, 1)) && esNumero(pos.substring(1, 2)))) {


return false;
}

int fila = extraerNumero(pos, 0);


int columna = extraerNumero(pos, 1);

return (fila >= 0 && fila < matriz.length) && (columna >= 0 && columna <
matriz[0].length);

/**
* Indicamos si un String es un numero
*
* @param numero
* @return
*/
public static boolean esNumero(String numero) {

try {
Integer.parseInt(numero);
return true;
} catch (NumberFormatException e) {
return false;
}

/**
*
* Extraemos el numero -1 si ha habido un error
*
* @param numero
* @param pos
* @return
*/
public static int extraerNumero(String numero, int pos) {
int num = -1;
if (esNumero(numero)) {
num = Integer.parseInt(numero.substring(pos, pos + 1));

}
return num;
}
/**
*
* Rendimos la cantidad de una posicion en concreto
*
* @param array
* @param fila
* @param columna
* @param cantidad
*/
public static void reducirPosicion(int[][] array, int fila, int columna, int cantidad) {

array[fila][columna] -= cantidad;
}

/**
*
*
* Indicamos si en una posicion hay un valor mayor que 0
*
* @param array
* @param fila
* @param columna
* @return
*/
public static boolean valorPosicion(int[][] array, int fila, int columna) {
return array[fila][columna] > 0;
}

/**
*
*
* Metodo para mostrar los productos y los precios
*
* @param nombres
* @param precios
*/
public static void mostrarProductos(String[][] nombres, double[][] precios) {

for (int i = 0; i < nombres.length; i++) {


for (int j = 0; j < nombres[i].length; j++) {
System.out.println(i + "" + j + " " + nombres[i][j] + " " + precios[i][j]);
}
}
}

/**
* Indicamos si dos cadenas son iguales
*
* @param cadena1
* @param cadena2
* @return
*/
public static boolean cadenaIguales(String cadena1, String cadena2) {

if (cadena1.equals(cadena2)) {
return true;
}else{
return false;
}
}
/**
*
* Aumentamos la cantidad de una posicion
*
* @param array
* @param fila
* @param columna
* @param cantidad
*/
public static void aumentarPosicion(int[][] array, int fila, int columna, int cantidad) {
array[fila][columna] += cantidad;
}
}
//Final de la clase

También podría gustarte