MAIN
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-
[Link] to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/[Link]
to edit this template
*/
package [Link].hey_go;
import [Link];
/**
* @author Gerson
*/
public class AppHEY {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner sc = new Scanner([Link]);
int opc;
Gasto gasto = new Gasto();
do {
[Link]("Menú Principal");
[Link]("1 | Registrar Gasto");
[Link]("2 | Mostrar Gasto");
[Link]("9 | Salir");
opc = [Link]();
switch (opc) {
case 1 ->
[Link]();
case 2 ->
[Link]();
case 9 ->
[Link]("Saliendo del sistema...");
default ->
[Link]("Opción no implemantada.");
} while (opc != 9);
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>
>>>>>>>>>>>>>>>>>>>>>>><
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-
[Link] to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/[Link]
to edit this template
*/
package [Link].hey_go;
import [Link];
/**
* @author Gerson
*/
public abstract class OperacionFinanciera implements
ValidacionOperacion {
protected double monto;
protected int mes; // 1 a 12
protected String descripcion;
protected int categoria; // categoría numérica
protected Scanner sc = new Scanner([Link]);
// Método para registrar datos comunes
public void registrarOperacion() {
do {
[Link]("Ingrese el monto del gasto:");
monto = [Link]();
} while (!validarMonto(monto));
do {
[Link]("Ingrese el mes (1-12) al que
corresponde:");
mes = [Link]();
} while (!validarMes(mes));
[Link]("¿Desea ingresar descripción? 1|Sí 2|No");
int opc = [Link]();
[Link](); // limpiar buffer
if (opc == 1) {
[Link]("Ingrese la descripción:");
descripcion = [Link]();
} else {
descripcion = "Sin descripción";
// Método abstracto: cada hijo mostrará su información
public abstract void mostrarOperacion();
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>
>>>>>>>>>>>>>>>>>>>>>>><
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-
[Link] to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/[Link]
to edit this template
*/
package [Link].hey_go;
/**
* @author Gerson
*/
public interface ValidacionOperacion {
// Validar que el monto sea correcto (ej: mayor a 0)
public boolean validarMonto(double monto);
// Validar que el mes esté en el rango permitido (1-12)
public boolean validarMes(int mes);
// Validar que la categoría sea válida (depende del tipo de
operación)
public boolean validarCategoria(int categoria);
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>
>>>>>>>>>>>>>>>>>>>>>>><
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-
[Link] to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/[Link]
to edit this template
*/
package [Link].hey_go;
/**
* @author Gerson
*/
public class Gasto extends OperacionFinanciera {
private static final String[] categorias = {"Alimentación",
"Transporte", "Servicios", "Otros"};
@Override
public boolean validarMonto(double monto) {
if (monto > 0) {
return true;
} else {
[Link]("Monto inválido. Debe ser mayor a 0.");
return false;
@Override
public boolean validarMes(int mes) {
if (mes >= 1 && mes <= 12) {
return true;
} else {
[Link]("Mes inválido. Ingrese un valor entre 1 y
12.");
return false;
@Override
public boolean validarCategoria(int categoria) {
if (categoria >= 1 && categoria <= [Link]) {
return true;
} else {
[Link]("Categoría inválida. Elija entre 1 y " +
[Link]);
return false;
}
public void registrarGasto() {
registrarOperacion(); // Llama lo común de la clase padre
int opcion;
do {
[Link]("Seleccione la categoría:");
for (int i = 0; i < [Link]; i++) {
[Link]((i + 1) + ". " + categorias[i]);
opcion = [Link]();
} while (!validarCategoria(opcion));
categoria = opcion;
@Override
public void mostrarOperacion() {
[Link]("======= GASTO REGISTRADO
=======");
[Link]("Monto: " + monto);
[Link]("Mes: " + mes);
[Link]("Categoría: " + categorias[categoria - 1]);
[Link]("Descripción: " + descripcion);
[Link]("==============================
==");