uno. Este sistema simula a los usuarios bancarios que usan cajeros automáticos para abrir una cuenta, consultar, depositar y retirar dinero, y requiere que la programación se implementa utilizando el lenguaje Java.
ilustrar:
1. Para las excepciones de entrada de datos, puede usar el mecanismo de manejo de excepciones Java para manejarlo.
2. La puntuación se evaluará de una manera que combina la implementación funcional con la normación del código.
3. Si tiene alguna pregunta sobre los requisitos del proyecto, puede contactarme en cualquier momento dejando un mensaje QQ para consulta.
4. Durante las vacaciones del Día Nacional, los maestros están de servicio en la empresa todos los días. Estoy de servicio en la compañía el 4 de octubre y voy a trabajar normalmente el 7 de octubre. Todos son bienvenidos a venir a la empresa para hacer proyectos.
dos. Requisitos funcionales del proyecto:
El proyecto comienza a ejecutar y muestra el menú principal como:
Sistema terminal de autoservicio bancario
**************************************
0 .----- Abra una cuenta
1 .-----------------------------------------------------------------------------------------------------------------------
2 .----- Depósito
3 .----- Retiro
4 .------ Salir
**************************************
Seleccione la función que desea realizar:
En este momento, el usuario puede seleccionar la función que desea implementar a través de la entrada del teclado. Si la entrada no es 0, 1, 2, 3, 4, el sistema solicita:
¡El menú que seleccionó no existe!
Por favor, vuelva a seleccionar:
¡Pídale al usuario que vuelva a ingresar los datos para la selección del menú!
Cuando el usuario ingresa 0, se ingresará la función de consulta: Solicitud del sistema:
**************************************
Eligió la función de apertura de la cuenta
Por favor ingrese su nombre:
En este momento, el usuario necesita ingresar su nombre. Después de completar la entrada, el sistema solicita:
Ingrese su número de identificación:
En este momento, el usuario debe ingresar el número de identificación de 18 dígitos. Si la verificación falla y requiere entrada continua, el sistema solicita:
Ingrese su contraseña:
En este momento, el usuario debe ingresar una contraseña digital pura de 6 dígitos. Si la verificación falla y requiere entrada continua, el sistema solicita después de que se aprueba la verificación:
La apertura de la cuenta fue exitosa, ¡gracias por usarla!
Sistema terminal de autoservicio bancario
**************************************
0 .----- Abra una cuenta
1 .-----------------------------------------------------------------------------------------------------------------------
2 .----- Depósito
3 .----- Retiro
4 .------ Salir
**************************************
Seleccione la función que desea realizar:
Cuando el usuario ingrese 1, se ingresará la función de consulta: Solicitud del sistema:
**************************************
Elegiste la función de consulta
Ingrese el número de tarjeta que desea consultar:
En este momento, el usuario debe ingresar el número de tarjeta de consulta, y el sistema verificará el número de tarjeta. Si el número de tarjeta no existe, solicitará: El número de tarjeta que ingresó no existe, vuelva a ingresar:
Ingrese el número de tarjeta que desea consultar:
Vuelva a ingresar el número de tarjeta. Cuando el usuario ingresa el número de tarjeta correcto, el mensaje es:
Ingrese su contraseña:
En este momento, el usuario debe ingresar una contraseña digital pura de 6 dígitos. Si la verificación falla y requiere entrada continua (hasta 3 veces), el sistema mostrará la información actual de la cuenta del usuario e ingresará el menú principal después de que se apruebe la verificación:
La información de la cuenta que está consultando es:
**************************************
Nombre de identificación Número de tarjeta Número de tarjeta Cantidad
Zhang Sanfeng420106198410112062 111111 12800.0
Sistema terminal de autoservicio bancario
**************************************
0 .----- Abra una cuenta
1 .-----------------------------------------------------------------------------------------------------------------------
2 .----- Depósito
3 .----- Retiro
4 .------ Salir
**************************************
Seleccione la función que desea realizar:
Cuando el usuario ingresa 2, se ingresará la función de depósito: Solicitud del sistema:
**************************************
Su elección es la función de depósito
Ingrese el número de tarjeta que desea depositar:
En este momento, el usuario debe ingresar el número de tarjeta del depósito, y el sistema verificará el número de tarjeta. Si el número de tarjeta no existe, el aviso es:
El número de tarjeta que ingresó no existe, por favor vuelva a ingresar:
Ingrese el número de tarjeta que desea depositar:
Vuelva a ingresar el número de tarjeta. Cuando el usuario ingresa el número de tarjeta correcto, el mensaje es:
Ingrese su contraseña:
En este momento, el usuario debe ingresar una contraseña digital pura de 6 dígitos. Si la verificación falla y requiere entrada continua (hasta 3 veces), el sistema mostrará la información actual de la cuenta del usuario e ingresará el menú principal después de que se apruebe la verificación:
La información de la cuenta que desea depositar es:
**************************************
Nombre de identificación Número de tarjeta Número de tarjeta Cantidad
Zhang Sanfeng420106198410112062 111111 12800.0
Ingrese la cantidad que desea depositar:
En este momento, el usuario debe ingresar el monto del depósito, y el sistema juzgará el monto. Si los datos de entrada son inferiores o iguales a 0, se solicitará:
¡Los datos que ingresó no son válidos y el sistema saldrá automáticamente! Gracias por usar
Sistema terminal de autoservicio bancario
**************************************
0 .----- Abra una cuenta
1 .-----------------------------------------------------------------------------------------------------------------------
2 .----- Depósito
3 .----- Retiro
4 .------ Salir
**************************************
Seleccione la función que desea realizar:
Si el usuario ingresa datos legalmente, el sistema solicita que el depósito es exitoso y regresa al menú principal:
El depósito fue exitoso, ¡gracias por usarlo!
Sistema terminal de autoservicio bancario
**************************************
0 .----- Abra una cuenta
1 .-----------------------------------------------------------------------------------------------------------------------
2 .----- Depósito
3 .----- Retiro
4 .------ Salir
**************************************
Seleccione la función que desea realizar:
Los datos se depositarán en la cuenta de usuario. Si el usuario busca nuevamente los datos, puede ver el monto de la cuenta cambiado. (Nota: este sistema usa archivos para el almacenamiento de datos, por lo que si el usuario reinicia el programa, los datos se leerán desde el archivo y se reinicializarán a la memoria! Esta función es opcional, puede consultar la serialización y la deserialización de objetos o JSON)
Cuando el usuario ingresa 3, se ingresará la función de retiro: Solicitud del sistema:
**************************************
Ingrese el número de tarjeta que desea retirar como función de retiro:
En este momento, el usuario debe ingresar el número de tarjeta para el retiro. El sistema verificará el número de tarjeta. Si el número de tarjeta no existe, se le pedirá:
El número de tarjeta que ingresó no existe, por favor vuelva a ingresar:
Ingrese el número de tarjeta que desea retirar:
Vuelva a ingresar el número de tarjeta. Cuando el usuario ingresa el número de tarjeta correcto, el mensaje es:
Ingrese su contraseña:
En este momento, el usuario debe ingresar una contraseña digital pura de 6 dígitos. Si la verificación falla y requiere entrada continua (hasta 3 veces), el sistema mostrará la información actual de la cuenta del usuario e ingresará el menú principal después de que se apruebe la verificación:
La información de la cuenta que desea retirar es:
**************************************
Nombre de identificación Número de tarjeta Número de tarjeta Cantidad
Zhang Sanfeng420106198410112062 111111 12800.0
Ingrese el monto que desea retirar:
En este momento, el usuario debe ingresar el monto del retiro, y el sistema juzgará el monto. Si los datos de entrada son inferiores a 0 o mayores que el monto total de la cuenta, el aviso es:
¡Los datos que ingresó no son válidos y el sistema saldrá automáticamente! Gracias por usar
Sistema terminal de autoservicio bancario
**************************************
0 .----- Abra una cuenta
1 .-----------------------------------------------------------------------------------------------------------------------
2 .----- Depósito
3 .----- Retiro
4 .------ Salir
**************************************
Seleccione la función que desea realizar:
Si el usuario ingresa datos legalmente, el sistema solicita que el retiro es exitoso y vuelve al menú principal:
El retiro fue exitoso, ¡gracias por usarlo!
Sistema terminal de autoservicio bancario
**************************************
0 .----- Abra una cuenta
1 .-----------------------------------------------------------------------------------------------------------------------
2 .----- Depósito
3 .----- Retiro
4 .------ Salir
**************************************
Seleccione la función que desea realizar:
Los datos se deducirán de la cuenta del usuario. Si el usuario busca nuevamente los datos, puede ver el monto de la cuenta cambiado.
Cuando el usuario ingresa 4, el sistema saldrá.
tres. Requisitos de diseño
(1) Paquete uno: com.bank.unionpay significa unionpay, agrégalo debajo de este paquete:
Representa la interfaz de una tarjeta bancaria, incluidos métodos abstractos como el saldo de consulta, el depósito, el retiro, etc.
Representa una clase abstracta que representa el cajero automático, utiliza objetos de tipo de tarjeta bancaria como atributos o parámetros, implementa métodos de instancia como saldos de consulta, depósitos, retiros, etc., y agrega la apertura de la cuenta como un método abstracto.
Representa los tipos de enumeración de los cuatro bancos principales: incluidos ABC, ICBC, CCB y BOC; Representa el Banco Agrícola de China, el Banco Industrial y Comercial de China, el CCB y el Banco de China, respectivamente.
(2) Paquete 2: com.bank.abc representa el Banco Agrícola de China, agrégalo bajo este paquete:
Defina la clase bancaria en un patrón de singleton, incluidos los atributos: tipo bancario (tipo de enumeración, constante = ABC), nombre del banco (cadena), lista de tarjetas bancarias (establecimiento), etc.
Defina la clase de implementación de la tarjeta bancaria: una tarjeta de ahorro, que incluye atributos: tipo bancario (tipo de enumeración = ABC), nombre, número de identificación, número de tarjeta, contraseña, saldo; Implementar métodos para consultar el saldo, depósito, retiro, etc.
Defina la subclase de la máquina de cajero automático, incluidos los atributos: tipo de banco (tipo de enumeración, constante = ABC), implementando el método de apertura de cuenta, entre los cuales: solo se puede abrir una tarjeta de ahorro, el número de tarjeta es un número aleatorio de 6 dígitos, que se genera automáticamente. La tarjeta bancaria recién abierta se agrega a la lista de tarjetas bancarias del banco.
Defina la subclase de la tarjeta de ahorro: tarjeta de crédito, agregue atributos: límite de sobregiro, reescribe el método de retiro y controlar la cantidad máxima de retiro no puede ser mayor que la suma del saldo + límite de sobregiro.
(3) Paquete 3: com.bank.test representa pruebas, agregue una clase de prueba con el método principal en este paquete para realizar la función de los cajeros automáticos simulados requeridos por el proyecto.
Elija las siguientes funciones:
Implemente ICBC en modo de un solo estado, agregue múltiples tarjetas bancarias a la clase de prueba por defecto e implementen funciones de consulta y depósito de depósito y retiro en el banco agrícola.
Paquete 1: com.bank.unionpay
1. Clase abstracta de la tarjeta bancaria
paquete com.bank.unionpay; interfaz pública yinhangka {public void cun (); public void qu (); public void getyu ();}2. Enumerar los tipos bancarios
paquete com.bank.unionPay; public enum yinhang {abc ("banco agrícola"), icbc ("industrial y comercial"), ccb ("ccb"), boc ("banco de china"); cadena final privada yinhang; // metodio de construcción privado yinhang (cadena yinhang) {this.yinhang = yinhang;} string getneN; this.yinhang;}}3. Clase de cajero automático
paquete com.bank.unionpay; import com.bank.abc.yinhanglei; public abstract class atm {private yinhanglei yhl; // atributo de clase bancaria Doble privado yue; // variable YuePublic Double getyue () {return yue;} public void setyue (doble yue) {this.yue = yue;} // método de consulta public void yue () {system.out.println ("El equilibrio en la carta es:" +this.yue);} // Método predeterminado Void CUN (double cun) {if (cun <0) {System.out.println ("La entrada es incorrecta");} else {this.yue+= cun; system.out.println ("balance en la tarjeta es:"+this.yue);}} // retirada método public void qu (double qu) {if (qu> this.yue) {system.out.out.printl ("balance de retretos es insuficiente ");} else {this.yue- = qu; system.out.println (" El equilibrio en la tarjeta es: "+this.yue);}} // Defina el método abstracto de la apertura de cuenta abstract de resumen void kaihu ();}4. Clase de interfaz principal
paquete com.bank.unionpay; import java.util.arrayList; import java.util.list; import java.util.scanner; clase pública Zujiemian {public void zhujiemian () {system.out.println ("Terminal de autoservicio bancario System "); System.out.println (); System.out.println (" ****************************** "); System.out.println (); List <String> Li = New ArrayList <String> (); Li.Add (" Cuenta ("Cuenta (" Cuenta Apertura "); li.add (" consulta "); li.add (" depósito "); li.add (" salir "); li.add (" factura "); li.add (" salir "); para (int (int (int (int (int i=0;i<5;i++){System.out.println(i+"------"+li.get(i));}System.out.println();System.out.println("***************************");System.out.println();System.out.println();System.out.println("Please select the function you want to llevar a cabo: ");}}Paquete 2: com.bank.abc
1. Categoría de apertura de cuenta ATM2
paquete com.bank.abc; import java.util.random; import java.util.scanner; import com.bank.unionpay.atm; import com.bank.unionpay.yinhang; clase pública atm2 extiende atm {yinhang yhang yhl = yinhang.abc; @OverridePublic void kaihu () {// Método de apertura de cuenta // Ingrese el nombre cuuxuka cxk = new cuuxuka (); intente {scanner sc1 = new Scanner (system.in); system.out.println ("Por favor, ingrese su nombre:"); String st = sc1.nextline (); cxk.setName (st); // enterre. Número de tarjeta de id: "); for (int ig = 0; ig> = 0; ig ++) {Scanner sc2 = new Scanner (System.in); String Str = sc2.nextline (); String st1 = "// d {15} | // d {17} [// dxx]"; if (str.matches (st1)) {cxk.setShenFen (str); rompiendo;} else {system.out.println ("El número de identificación ingresado no es el número de identificación de 18 dígitos");} // establece la contraseña de la cuenta. contraseña: "); for (int ig = 0; ig> = 0; ig ++) {Scanner sc3 = new Scanner (System.in); String Pass = sc3.nextline (); String mm =" // d {6} "; if ( contraseña ");}} // Generar un número de tarjeta de ahorro de 6 dígitos aleatorio a = new Random (); int [] ch = new int [6]; stringBuilder str = new StringBuilder (); String S; for (int i = 0; i <6; i ++) {ch [i] = A.NextInt (9);} para (integer c: ch) {str.append (c);} s = str.ToString (); cxk.setcard (s); // Importa los datos generados en la lista de tarjetas bancarias yinhanglei.getyinhanglei (). list.add (cxk.getcard ()); // Importar los datos generados en la lista de mapas de tarjetas bancarias Yinhanglei.getyinhanglei (). Map.put (cxk.getcard (), cxk); system.out.println ("Su nuevo número de tarjeta es:"+cxk.getcard ()); system.out.println ("La apertura de la cuenta es exitosa, gracias por usar");} Catch (excepción) {System.out.println ("Inying Ipra incorrecto ");}}}2. Categoría de tarjeta de ahorro
paquete com.bank.abc; import java.util.scanner; import com.bank.unionpay.yinhang; import com.bank.unionpay.yinhangka; public class cuuxuka implementos yinhangka {// guarda atributo de tarjeta yinhang yinhang ninhang; nombre; ();@OverridePublic string toString () {return "name =" + name + "/t/n" + "id tarjeta =" + shenfen + "/t/n" + "number de tarjeta =" + card + "/n" + "cuenta de cuenta =" + balance;} // se establece para el atributo público yinhang getyinhang () {return yinhang = yinhang.abc; getName () {return name;} public void setName (name de cadena) {this.name = name;} public String getShenFen () {return shenfen;} public void setShenfen (string shenfen) {this.shenfen = shenfen;} public string getCard () {devolte tarjeta;} public String getPassword () {return Password;} public void setPassword (string contraseña) {this.password = contraseña;} public doble getBalance () {Balance de retorno;} public void setBalance (doble balance) {this.balance = balance;} // método de depósito @overridpublic void cun () {cuuxuka cu1 = new1 = new1 = new1 = neo Cuuxuka (); cu1.chaxun (); scanner sc2 = new Scanner (System.in); System.out.println ("Ingrese la cantidad que desea depositar:"); doble cun = sc2.nextDouble (); // Implementar el método de depósito si (cun <0) {system.println ("los datos que ingresó está invalid, el sistema será automáticamente automáticamente! Gracias por usar ");} else {this.balance+= cun; yinhanglei.getyinhanglei (). Map.get (cu1.card) .setbalance (balance); system.out.println (" Descargo tiene éxito, permaneciendo amount"+Yinhanglei.getYinhangLei().map.get(cu1.card).getBalance());}}//Query method public void chaxun(){while(true){try{Scanner sc=new Scanner(System.in);System.out.println("Please enter the card number you want to query:");String s=sc.nextLine();//Transf the Colección de mapas de yinhanglei para (string temp: yinhanglei.getyinhanglei (). Scanner (System.in); String st1 = sc1.nextline (); if (st1.equals (yinhanglei.getyinhanglei (). Map.get (s) .getPassword ())) {System.out.println ("La información de la cuenta que está considerando es: "); System.out.println (); System.out.println (" ****************************************** "); cantidad "); system.out.println (); system.out.println (yinhanglei.getyinhanglei (). map.get (s)); break;} else {i ++; if (i == 3) {System.out.println (" Error de entrada de contraseña más de 3 veces "); break;} el más {System.out.println (" "Entrada de contraseña error ");}}}} else {System.out.println (" Confirme si el número de tarjeta se ingresa incorrectamente ");}}} Catch (Exception e) {System.out.println (" La entrada está incorrecta ");} break;}}} // Método de retiro @OverridPublic Void Void () {Cuxuka Cu = neow = neo Cuuxuka (); cu.chaxun (); scanner sc1 = new Scanner (System.in); System.out.println ("Por favor, ingrese la cantidad que desea retirar:"); Double qu = sc1.nextDouble (); // Implementar el método de retiro de retiro if (qu <balance) {this.balance- = qu; yinhanglei.getyinhanglei (). map.get (cu.card) .setBalance (balance); system.out.println ("El retiro es exitoso, el monto restante es:"+ yinhanglei.getyinhanglei (). map.get (cu.card) .getBalance ();} {System.out.println ("Los datos que ingresó no son válidos, ¡el sistema saldrá automáticamente! Gracias por usar ") ;;} else {System.out.println (" Balance insuficiente ");}}@overRidePublic void getyu () {// Balance Cálculo cuuxuka cu = new cuuxuka (); System.out.Println (" Cantidad retirante "+Cu.getBalance ());}}3. Categoría de banca modelo singleton
paquete com.bank.abc; import java.util.arrayList; import java.util.hashmap; import java.util.list; import java.util.map; import com.bank.unionpay.yinhang; clase pública yinhanglei {// atributo de la clase bancaria yinhang = yinhang = yinhang.abC; ArrayList <> (); public Map <String, cuuxuka> map = new Hashmap <> (); // Método de construcción privada yinhanglei () {super ();} privado estático yinhanglei bank = new yinhanglei (); public static yinhanglei getyinhanglei () {return bank;}}4. Categoría de tarjeta de crédito
paquete com.bank.abc; public class xinyongka extiende cuuxuka {// construye su propio atributo privado doble touzhi; public doble getToUzhi () {return touzhi;} public void setTouzhi (doble touzhi) {this.toUzhi = toUzhi;} // rewrite el método publicitario doble Método de retiro if ((touzhi+getBalance ())> = qu) {System.out.println ("Cantidad de sobregraw"+(qu-getBalance ()))) ;;} else {System.out.println ("no puede retirar más que la cantidad máxima de sobredrawal") ;;}}Paquete 3: com.bank.test
1. Clase de prueba
paquete com.bank.test; import java.util.arrayList; import java.util.list; import java.util.scanner; import com.bank.abc.atm2; import com.bank.abc.cuxuka; import.bank.unionpay.atm; import. args) {// haciendo de la interfaz principal cuuxuka cxk = new cuuxuka (); // Instanciar la interfaz principal zujiemian zjm = new ZuJiemian (); // top A Exception inty {// Crear un bucle muerto para (int i = 0; i> = 0; i ++) {zjm.zhujiemian (); scanner sc = new Scan (System.in); in = sc.nextInt (); // Defiende si el número de entrada cumple con el número de interfaz si (in == 0 || in == 1 || in == 2 || in == 3 || in == 4) {// La función de apertura if (in == 0) {ATM2 ATM2 = nueva Atm2 (); atm2.kaihu (); system.out.println ("*********************************"); System.out.println ("Usted seleccionó como la función de apertura de la cuenta"); System.out.println (); continuar;} // Query Function if(in==1){System.out.println("******************************");System.out.println("You selected as the query function");cxk.chaxun();continue;}//Default function if(in == 2) {System.out.println ("*********************************"); System.out.println ("Su elección es la función de depósito"); cxk.cun (); continuar;} // Función de retiro if (in == 3) {System.out.println ("***************************"); System.out.println ("Su elección es la función de retiro"); cxk.qu (); continuar;} // Función de salida if (in == 4) {System.Println ("¡gracias por usar! "); break;}} // imprime {system.out.println (" El menú que seleccionó no existe! ");}} // Exception lanza imprime} capt (excepción e) {system.out.println (" La entrada es incorrecta ");}}}}resultado:
Lo anterior es el sistema de terminal de autoservicio Bank Simulada Java introducido por el editor. Espero que sea útil para todos. Si tiene alguna pregunta, déjame un mensaje y el editor responderá a todos a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!