Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2020
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.03 KB | None | 0 0
  1. public class Banco
  2. {
  3. public static void main(String[] args)
  4. {
  5. try(Scanner sc = new Scanner(System.in))
  6. {
  7. System.out.println("¿Cuál procedimiento desea realizar?");
  8. System.out.println("Elija uno de los siguientes comandos:");
  9. System.out.println("Agregar cuenta: ncuenta");
  10. System.out.println("Borrar cuenta: bcuenta");
  11. System.out.println("Añadir saldo a la cuenta: addS");
  12. System.out.println("Buscar cuenta: buscar");
  13. System.out.println("Listar cuentas: listar");
  14. String resp = sc.nextLine();
  15. while(resp != null && !resp.isBlank() && !resp.isEmpty() && (!resp.equals("no") || !resp.equals("n")))
  16. {
  17. if(resp.equals("si") || resp.equals("s"))
  18. {
  19. System.out.println("¿Cuál procedimiento desea realizar?");
  20. System.out.println("Elija uno de los siguientes comandos:");
  21. System.out.println("Agregar cuenta: ncuenta");
  22. System.out.println("Borrar cuenta: bcuenta");
  23. System.out.println("Añadir saldo a la cuenta: addS");
  24. System.out.println("Buscar cuenta: buscar");
  25. System.out.println("Listar cuentas: listar");
  26. resp = sc.nextLine();
  27. }
  28. if(resp.equalsIgnoreCase("ncuenta"))
  29. {
  30. System.out.println("Digite el tipo de cuenta: Caja de ahorro = 0, Corriente = 1");
  31. int option = Integer.valueOf(sc.nextLine());
  32. switch(option)
  33. {
  34. case 0:
  35. case 1:
  36. System.out.println("Digite el nombre del usuario:");
  37. String nombre = sc.nextLine();
  38. System.out.println("Digite la constraseña de la cuenta:");
  39. String cont = sc.nextLine();
  40. BancoManager.getInstance().agregarCuenta(option == 0 ? new CajaAhorro(nombre, cont) : new CuentaCorriente(nombre, cont));
  41. break;
  42. }
  43. System.out.println("Cuentas registradas: "+ BancoManager.getInstance().getCuentas().size());
  44. }
  45. if(resp.equalsIgnoreCase("listar"))
  46. {
  47. BancoManager.getInstance().getCuentas().stream().forEach(cuenta ->{
  48. System.out.print("Nombre: "+ cuenta.getUsuarioNombre());
  49. System.out.print(" Tipo de cuenta: "+ cuenta.getTipoCuenta());
  50. System.out.println();
  51. });
  52. }
  53. if(resp.equalsIgnoreCase("addS"))
  54. {
  55. System.out.println("Digite los datos de su cuenta: ");
  56. System.out.println("Usuario: ");
  57. String usuario = sc.nextLine();
  58. System.out.println("Contraseña: ");
  59. String cont = sc.nextLine();
  60. var cuenta = BancoManager.getInstance().filtrarByNombre(usuario);
  61. if(usuario != null)
  62. {
  63. if(cuenta.getContrase().equals(cont))
  64. {
  65. System.out.println("Digite el monto que desea agregar: ");
  66. double monto = sc.nextDouble();
  67. cuenta.addSaldo(monto);
  68. System.out.println("Sus datos Bancarios actuales: " + cuenta.getUsuarioNombre() + " " + cuenta.getContrase() + " " + cuenta.getSaldo());
  69. }
  70. else
  71. {
  72. System.err.println("El Usuario y/o Contraseña no existen...");
  73. }
  74. }
  75. }
  76. if(resp.equalsIgnoreCase("buscar"))
  77. {
  78. System.out.println("Digite el nombre de la cuenta:");
  79. String nombre = sc.nextLine();
  80. var cuenta = BancoManager.getInstance().filtrarByNombre(nombre);
  81. if(cuenta != null)
  82. {
  83. System.out.println("Se encontró esta cuenta:");
  84. System.out.print("Nombre: "+ cuenta.getUsuarioNombre());
  85. System.out.print(" Tipo de cuenta: "+ cuenta.getTipoCuenta());
  86. System.out.println();
  87. }
  88. else
  89. {
  90. System.out.println("Disculpe no se encontró ninguna coincidencia.");
  91. }
  92. }
  93.  
  94. System.out.println("Desea continuar? si/no");
  95. resp = sc.nextLine();
  96. }
  97. sc.close();
  98. }
  99. }
  100.  
  101. protected static class BancoManager implements IManager<AbstractCuenta>
  102. {
  103. private static final List<AbstractCuenta> _cuentas = new CopyOnWriteArrayList<>();
  104.  
  105. @Override
  106. public void agregarCuenta(AbstractCuenta cuenta)
  107. {
  108. _cuentas.add(cuenta);
  109. }
  110.  
  111. @Override
  112. public List<AbstractCuenta> getCuentas()
  113. {
  114. return _cuentas;
  115. }
  116.  
  117. public static BancoManager getInstance()
  118. {
  119. return INSTANCE;
  120. }
  121. protected static final BancoManager INSTANCE = new BancoManager();
  122. }
  123.  
  124. protected static interface IManager<E extends AbstractCuenta>
  125. {
  126. void agregarCuenta(E cuenta);
  127.  
  128. default E filtrarByNombre(String nombre)
  129. {
  130. return getCuentas().stream().filter(c -> c.getUsuarioNombre().equalsIgnoreCase(nombre)).findFirst().orElse(null);
  131. }
  132. List<E> getCuentas();
  133. }
  134.  
  135.  
  136. protected static class CajaAhorro extends AbstractCuenta
  137. {
  138.  
  139. public CajaAhorro(String _usuarioNombre, String _contrase)
  140. {
  141. super(_usuarioNombre, _contrase);
  142. }
  143.  
  144. @Override
  145. CuentaType getTipoCuenta()
  146. {
  147. return CuentaType.CAJA_AHORRO;
  148. }
  149.  
  150. @Override
  151. public void addSaldo(double saldo) {
  152. super.addSaldo(saldo);
  153. }
  154.  
  155.  
  156. }
  157.  
  158. public static class CuentaCorriente extends AbstractCuenta
  159. {
  160.  
  161. public CuentaCorriente(String _usuarioNombre, String _contrase)
  162. {
  163. super(_usuarioNombre, _contrase);
  164. }
  165.  
  166. @Override
  167. CuentaType getTipoCuenta()
  168. {
  169. return CuentaType.CORRIENTE;
  170. }
  171.  
  172. }
  173.  
  174.  
  175. protected static abstract class AbstractCuenta
  176. {
  177. private final String _usuarioNombre;
  178. private final String _contrase;
  179. private double saldo;
  180.  
  181. public AbstractCuenta(String _usuarioNombre, String _contrase)
  182. {
  183. this._usuarioNombre = _usuarioNombre;
  184. this._contrase = _contrase;
  185. }
  186.  
  187. public void addSaldo(double saldo) {
  188.  
  189. }
  190. abstract CuentaType getTipoCuenta();
  191.  
  192. public String getContrase()
  193. {
  194. return _contrase;
  195. }
  196.  
  197. public String getUsuarioNombre()
  198. {
  199. return _usuarioNombre;
  200. }
  201.  
  202. public double getSaldo()
  203. {
  204. return saldo;
  205. }
  206.  
  207. public void setSaldo(double saldo)
  208. {
  209. this.saldo = saldo;
  210. }
  211.  
  212. @Override
  213. public boolean equals(Object obj)
  214. {
  215. AbstractCuenta ac = (AbstractCuenta) obj;
  216. return ac.getUsuarioNombre().equalsIgnoreCase(_usuarioNombre) && ac.getTipoCuenta() == getTipoCuenta();
  217. }
  218.  
  219. }
  220.  
  221. protected static enum CuentaType
  222. {
  223. CORRIENTE,
  224. CAJA_AHORRO;
  225. }
  226.  
  227. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement