um. Esse sistema simula usuários bancários usando máquinas ATM para abrir uma conta, consultar, depositar e retirar dinheiro e exige que a programação seja implementada usando o idioma Java.
ilustrar:
1. Para exceções de entrada de dados, você pode usar o mecanismo de manuseio de exceção do Java para lidar com isso.
2. A pontuação será avaliada de uma maneira que combine a implementação funcional com a normatividade do código.
3. Se você tiver alguma dúvida sobre os requisitos do projeto, entre em contato comigo a qualquer momento, deixando uma mensagem QQ para consulta.
4. Durante o feriado do Dia Nacional, os professores estão de plantão na empresa todos os dias. Estou de plantão na empresa em 4 de outubro e vou trabalhar normalmente em 7 de outubro. Todos são convidados a vir à empresa para fazer projetos.
dois. Requisitos funcionais do projeto:
O projeto começa a executar e exibe o menu principal como:
Sistema de terminal de autoatendimento do banco
************************************
0.----- Abra uma conta
1.
2 .----- Depósito
3.----- Retirada
4 .-------Exit
************************************
Selecione a função que deseja executar:
No momento, o usuário pode selecionar a função que deseja implementar através da entrada do teclado. Se a entrada não for 0, 1, 2, 3, 4, o sistema solicita:
O menu que você selecionou não existe!
Por favor, seleção:
Peça ao usuário que entre novamente os dados para seleção de menu!
Quando o usuário inserir 0, a função de consulta será inserida: prompt de sistema:
************************************
Você escolheu a função de abertura da conta
Por favor, insira seu nome:
Neste momento, o usuário precisa inserir seu nome. Após a conclusão da entrada, o sistema solicita:
Por favor, insira seu número de identificação:
No momento, o usuário precisa inserir o número de ID de 18 dígitos. Se a verificação falhar e exigir entrada contínua, o sistema solicita:
Por favor, insira sua senha:
No momento, o usuário precisa inserir uma senha digital pura de 6 dígitos. Se a verificação falhar e exigir a entrada contínua, o sistema solicita após a passagem da verificação:
A abertura da conta foi bem -sucedida, obrigado por usá -la!
Sistema de terminal de autoatendimento do banco
************************************
0.----- Abra uma conta
1.
2 .----- Depósito
3.----- Retirada
4 .-------Exit
************************************
Selecione a função que deseja executar:
Quando o usuário inserir 1, a função de consulta será inserida: Prompt System:
************************************
Você escolheu a função de consulta
Por favor, insira o número do cartão que deseja consultar:
No momento, o usuário precisa inserir o número do cartão de consulta e o sistema verificará o número do cartão. Se o número do cartão não existir, ele solicitará: o número do cartão que você inseriu não existe, entre novamente:
Por favor, insira o número do cartão que deseja consultar:
Entre o número do cartão. Quando o usuário insere o número do cartão correto, o prompt é:
Por favor, insira sua senha:
No momento, o usuário precisa inserir uma senha digital pura de 6 dígitos. Se a verificação falhar e exigir entrada contínua (até 3 vezes), o sistema exibirá as informações atuais da conta do usuário e entrará no menu principal após o passado a verificação:
As informações da conta que você está consultando é:
************************************
Nome da identificação do número de cartão do número do cartão
Zhang Sanfeng420106198410112062 111111 12800.0
Sistema de terminal de autoatendimento do banco
************************************
0.----- Abra uma conta
1.
2 .----- Depósito
3.----- Retirada
4 .-------Exit
************************************
Selecione a função que deseja executar:
Quando o usuário inserir 2, a função de depósito será inserida: prompt de sistema:
************************************
Sua escolha é a função de depósito
Por favor, insira o número do cartão que deseja depositar:
No momento, o usuário precisa inserir o número do cartão do depósito e o sistema verificará o número do cartão. Se o número do cartão não existir, o prompt é:
O número do cartão que você inseriu não existe, por favor, volte novamente:
Por favor, insira o número do cartão que deseja depositar:
Entre o número do cartão. Quando o usuário insere o número do cartão correto, o prompt é:
Por favor, insira sua senha:
No momento, o usuário precisa inserir uma senha digital pura de 6 dígitos. Se a verificação falhar e exigir entrada contínua (até 3 vezes), o sistema exibirá as informações atuais da conta do usuário e entrará no menu principal após o passado a verificação:
As informações da conta que você deseja depositar é:
************************************
Nome da identificação do número de cartão do número do cartão
Zhang Sanfeng420106198410112062 111111 12800.0
Por favor, insira o valor que deseja depositar:
No momento, o usuário deve inserir o valor do depósito e o sistema julgará o valor. Se os dados de entrada forem menores ou iguais a 0, serão solicitados:
Os dados inseridos são inválidos e o sistema sairá automaticamente! Obrigado por usar
Sistema de terminal de autoatendimento do banco
************************************
0.----- Abra uma conta
1.
2 .----- Depósito
3.----- Retirada
4 .-------Exit
************************************
Selecione a função que deseja executar:
Se o usuário inserir dados legalmente, o sistema solicitará que o depósito seja bem -sucedido e retorne ao menu principal:
O depósito foi bem -sucedido, obrigado por usá -lo!
Sistema de terminal de autoatendimento do banco
************************************
0.----- Abra uma conta
1.
2 .----- Depósito
3.----- Retirada
4 .-------Exit
************************************
Selecione a função que deseja executar:
Os dados serão depositados na conta de usuário. Se o usuário pesquisar os dados novamente, ele poderá ver o valor da conta alterada. (Nota: este sistema usa arquivos para armazenamento de dados; portanto, se o usuário reiniciar o programa, os dados serão lidos no arquivo e reinacionalizados para a memória! Esta função é opcional, você pode se referir à serialização e desserialização de objetos ou JSON)
Quando o usuário entrar em 3, a função de retirada será inserida: prompt do sistema:
************************************
Por favor, insira o número do cartão que você deseja retirar como a função de retirada:
No momento, o usuário precisa inserir o número do cartão para retirada. O sistema verificará o número do cartão. Se o número do cartão não existir, será solicitado:
O número do cartão que você inseriu não existe, por favor, volte novamente:
Por favor, insira o número do cartão que deseja retirar:
Entre o número do cartão. Quando o usuário insere o número do cartão correto, o prompt é:
Por favor, insira sua senha:
No momento, o usuário precisa inserir uma senha digital pura de 6 dígitos. Se a verificação falhar e exigir entrada contínua (até 3 vezes), o sistema exibirá as informações atuais da conta do usuário e entrará no menu principal após o passado a verificação:
As informações da conta que você deseja retirar é:
************************************
Nome da identificação do número de cartão do número do cartão
Zhang Sanfeng420106198410112062 111111 12800.0
Por favor, insira o valor que deseja retirar:
No momento, o usuário deve inserir o valor da retirada e o sistema julgará o valor. Se os dados de entrada forem inferiores a 0 ou superior ao valor total da conta, o prompt será:
Os dados inseridos são inválidos e o sistema sairá automaticamente! Obrigado por usar
Sistema de terminal de autoatendimento do banco
************************************
0.----- Abra uma conta
1.
2 .----- Depósito
3.----- Retirada
4 .-------Exit
************************************
Selecione a função que deseja executar:
Se o usuário inserir dados legalmente, o sistema solicitará que a retirada seja bem -sucedida e retorne ao menu principal:
A retirada foi bem -sucedida, obrigado por usá -la!
Sistema de terminal de autoatendimento do banco
************************************
0.----- Abra uma conta
1.
2 .----- Depósito
3.----- Retirada
4 .-------Exit
************************************
Selecione a função que deseja executar:
Os dados serão deduzidos da conta do usuário. Se o usuário pesquisar os dados novamente, ele poderá ver o valor da conta alterada.
Quando o usuário entra em 4, o sistema sairá.
três. Requisitos de design
(1) Pacote um: com.bank.unionpay significa UnionPay, adicione -o sob este pacote:
Representa a interface para um cartão bancário, incluindo métodos abstratos, como equilíbrio de consulta, depósito, retirada, etc.
Representa uma classe abstrata que representa a máquina ATM, usa objetos do tipo de cartão bancário como atributos ou parâmetros, implementa métodos de instância, como saldos de consulta, depósitos, retiradas, etc., e adiciona a abertura da conta como um método abstrato.
Representa os tipos de enumeração dos quatro principais bancos: incluindo ABC, ICBC, CCB e BOC; Representa o Banco Agrícola da China, Banco Industrial e Comercial da China, CCB e Banco da China, respectivamente.
(2) Pacote 2: com.bank.abc representa o Banco Agrícola da China, adicione -o sob este pacote:
Defina a classe bancária em um padrão de singleton, incluindo atributos: tipo de banco (tipo de enumeração, constante = ABC), nome do banco (string), lista de cartões bancários (set), etc.
Defina a classe de implementação do cartão bancário - um cartão de poupança, incluindo atributos: tipo de banco (tipo de enumeração = ABC), nome, número de identificação, número do cartão, senha, saldo; Implementar métodos para consultar o saldo, depósito, retirada, etc.
Defina a subclasse da máquina ATM, incluindo atributos: tipo de banco (tipo de enumeração, constante = ABC), implementando o método de abertura da conta, entre os quais: apenas um cartão de poupança pode ser aberto, o número do cartão é um número aleatório de 6 dígitos, que é gerado automaticamente. O cartão bancário recém -aberto é adicionado à lista de cartões bancários do banco.
Defina a subclasse do cartão de poupança - cartão de crédito, adicione atributos: limite de cheque especial, reescrever o método de retirada e controlar o valor máximo de retirada não pode ser maior que a soma do limite de balanço + ovietim.
(3) Pacote 3: com.bank.test representa testes, adicione uma classe de teste com o método principal neste pacote para realizar a função das máquinas de caixas eletrônicos simulados exigidos pelo projeto.
Escolha as seguintes funções:
Implemente o ICBC no modo de estado único, adicione vários cartões bancários à classe de teste por padrão e implemente as funções de consulta e depósito e retirada entre bancos na máquina ATM do Banco Agrícola.
Pacote 1: com.bank.unionpay
1. Classe de resumo do cartão bancário
pacote com.bank.unionpay; interface pública yinhangka {public void cun (); public void qu (); public void getyu ();}2.
pacote com.bank.unionpay; public enum yinhang {ABC ("Banco Agrícola"), ICBC ("Industrial e Comercial"), CCB ("CCB"), BOC ("Banco da China"); this.yinhang;}}3. Classe ATM
pacote com.bank.unionpay; importar com.bank.abc.yinhanglei; classe abstrata pública atm {private yinhanglei yhl; // atribui a classe bancária dupla particular yue; // variável yuepublic duplo getyue () {return yue;} public void Setyue (duplo yue) {this.yue = yue;} // método de consulta public void yue () {System.out.println ("O balanço no cartão é:" +this.yue);} // defrafá -lo. cun) {if (cun <0) {System.out.println ("entrada está incorreta");} else {this.yue+= cun; system.out.println ("Balance no cartão é:"+this.yue);}} // reprodução do método público insuficiente ");} else {this.yue- = Q;4. Classe de interface principal
pacote com.bank.unionpay; importar java.util.ArrayList; importar java.util.list; importar java.util.scanner; public classe zujiemian {public void zhujiemian () {System.out.println ("Banco de auto-serviço terminal System "); System.out.println (); System.out.println (" ****************************** "); System.out.println (); list <tring> li = novo ArrayList <String> (); li.add (" Conta Abertura "); li.add (" consulta "); li.add (" depósito "); li.add (" exit "); li.add (" fatura "); li.add (" exit "); para (int i = 0; i <5; i ++) {System.out.println (i+"------"+li.get (i));} System.out.println (); system.out.println ("************************* executar: ");}}Pacote 2: com.bank.abc
1. Categoria de abertura da conta atm2
pacote com.bank.abc; importar java.util.random; importar java.util.scanner; importar com.bank.unionpay.atm; import com.bank.unionpay.yinhang; classe pública atm2 estende atm {private yinhang yhla = yinhang.abc; @OverridePublic void kaihu () {// Método de abertura da conta // Digite o nome cuxuka cxk = new Cuxuka (); tente {scanner sc1 = new scanner (system.in); system.out.println ("por favor, digite seu nome:"); System.out.println ("Por favor, digite o número do seu cartão de identificação:"); para (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); quebra;} else {System.out.println ("O número de identificação ENTERED não é o número 18-DIGIT (} se set.} senha: "); para (int ig = 0; ig> = 0; ig ++) {scanner sc3 = new scanner (system.in); string passa = sc3.nextLine (); string mm =" // d {6} "; if (pass.matches (mm) {cxk.setpRord (pass); senha ");}} // gerar um número de cartão de poupança de 6 dígitos aleatório a = new Random (); int [] ch = new int [6]; stringbuilder str = new stringbuilder (); string s; para (int i = 0; i <6; i ++) {ch [i] = a.nextInt (9); c: ch) {str.append (c);} s = str.toString (); cxk.setcard (s); // importar os dados gerados para a lista de cartões bancários yinhanglei.getyinhanglei (). Yinhanglei.getyinhanglei (). Map.put (cxk.getcard (), cxk); system.out.println ("seu novo número de cartão é:"+cxk.getcard ()); system.out.println ("a conta é bem -sucedida, agradecer o uso de"); incorreto ");}}}2. Categoria de cartão de poupança
package com.bank.abc;import java.util.Scanner;import com.bank.unionpay.Yinhang;import com.bank.unionpay.Yinhangka;public class Cuxuka implements Yinhangka {//Save card attribute private Yinhang yinhang;private String name;private String shenfen;private String card;private String password;private double balance;//Generate toString ();@SubsteridePublic String tostring () {return "name =" + name + "/t/n" + "id de id =" + shenfen + "/t/n" + "número do cartão =" + card + "/t/n" + "e" + balance;} // obtiver o atributo public yinhang getyhang () () e (// obtiver o atributo yinhang getyhang () () e obter o atributo yinhang getyhang () (} getName () {return name;} public void SetName (nome da string) {this.name = name;} public string getshenfen () {return shenfen;} public void setShenfen (string shenfen) {this.shenfen = shenfen;} public string {) shenfen) {this.shenfen = shenfen;} public string get () {cartão de retorno; Card;} public String getPassword () {return senha;} public void SetPassword (string senha) {this.password = senha;} public duplo getBalance () {return Balance;} public void Setbalance (Balance Double) {this.Balance = Balance;} // Método deposit @OverridePublic Void () {CUN (CUNA Cuxuka (); cu1.chaxun (); scanner sc2 = new scanner (system.in); system.out.println ("Por favor, digite o valor que deseja depositar:"); duplo cun = sc2.nextDouble (); // implementar o método de depósito se (cun <0) {system.out.printlnnnnnn ("o método de depósito (cun <0) {system.out.Printlnnnnnnnn (// implementar o método de depósito if (cun <0) {system.out.Printlnnnnnn (//" cun <0) {system.out.Printlnnnnnn ("o método de depósito <0) {system.out.Printlnnnnnnn (//" cun <0) {system.out.printlnnnnn (" Obrigado por usar ");} else {this.Balance+= cun; yinhanglei.getyinhanglei (). Map.get (cu1.card) .setBalance (balance); system.out.Println (" Incomodante que é bem -sucedido, a quantidade restante "+yinhangi.getyinHanglei (). public void Chaxun () {while (true) {tente {scanner sc = new Scanner (System.in); System.out.println ("Por favor, digite o número do cartão que deseja consultar:"); strings s = sc.nextline (); // transf a coleção de mapa de yinhanglei for (string (stringi (string (string Temp: yinhanglei.getyinhanglei (). map.keyset ()) {if (s.equals (temp)) {this.card = s;}} if (s.equals (card)) // verifique o número do cartão {int i = 0; st1 = sc1.nextLine (); if (st1.equals (yinhanglei.getyinhanglei (). map.get (s) .getpassword ())) {system.out.println ("as informações da conta que você está consultando é: "); system.out.println (); system.out.println (" ************************************** "); System.out.println (); System.out.println (" Número do número de identificação do número de cartão quantidade "); system.out.println (); system.out.println (yinhanglei.getyinhanglei (). map.get (s)); break;} else {i ++; if (i == 3) {System.out.println (erro de entrada de senha mais de 3 vezes"); quebra; error ");}}}} else {System.out.println (" Confirme se o número do cartão foi inserido incorretamente ");}}} catch (Exceção e) {System.out.println (" input está incorreto ");} Break;}} // retirada operação @OverridePublic é"); Cuxuka (); cu.chaxun (); scanner sc1 = new scanner (system.in); system.out.println ("Por favor, insira o valor que deseja retirar:"); duplo qu = sc1.nextDouble (); // implementar o método de retirada if (qu <balance) {this.Balance- = qu; yinhanglei.getyinhanglei (). map.get (cu.card) .setBalance (balanço); system.out.println ("a retirada é bem-sucedida, a quantidade restante é:"+ yinhanglei.getyiNhangiCi (). {System.out.println ("Os dados inseridos são inválidos, o sistema sairá automaticamente! Obrigado por usar ");3. Categoria bancária do modelo Singleton
package com.bank.abc;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import com.bank.unionpay.Yinhang;public class Yinhanglei {//Bank class attribute private Yinhang yinhang=Yinhang.ABC;private String name;public List<String> list=new ArrayList <> (); mapa público <string, cuxuka> map = new hashmap <> (); // método de construção privado private yinhanglei () {super ();} estática privada yinhanglei bancar = new yinhanglei (); public static yinhanglei getyinhanglei () {devolução;}4. Categoria de cartão de crédito
pacote com.bank.abc; classe pública Xinyongka estende Cuxuka {// Construa seu próprio atributo privado duplo touzhi; public duplo getTouzhi () {retorna touzhi;} public void Settouzhi (duplo touzhi) {the theTouzhi = touzhi; Método de retirada if ((touzhi+getBalance ())> = Qu) {System.out.println ("Overdraw Valor"+(qu-getBalance ()));Pacote 3: com.bank.test
1. Classe de teste
pacote com.bank.test; importar java.util.ArrayList; importar java.util.list; importar java.util.scanner; importar com.bank.abc.atm2; import com.bank.abc.cuxuka; import com.bank.unionPay.iS; main (string [] args) {// fabricação de interface principal cuxuka cxk = new Cuxuka (); // instanciam a interface principal zujiemian zjm = new zujiemian (); // cubra uma exceção, tente {// crie um loop morto para (int i = 0; i> = 0 i ++) {zzerz. Scanner (system.in); int in = sc.nextInt (); // defende se o número de entrada atende ao número da interface if (in == 0 || in == 1 || in == 2 || in == 3 || in == 4) {// Função de abertura se (in == 0) {2 atm 2 atm Atm2 (); atm2.kaihu (); system.out.println ("*********************************** if (in == 1) {system.out.println ("********************************"); System.out.println ("Você selecionou como a função de consulta"); cxk.chaxun (); continua;} // Função padrão se (in in in in in ( == 2) {System.out.println ("********************************* if (in == 3) {system.out.println ("*************************** "); quebrar;}} // imprima else {System.out.println (" O menu que você selecionou não existe! ");}} // Exceção lança Print} Catch (Exceção e) {System.out.println (" entrada está incorreta ");}}}}}}}}resultado:
O exposto acima é o sistema de terminal de autoatendimento do Banco Java simulado introduzido pelo editor. Espero que seja útil para todos. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a todos a tempo. Muito obrigado pelo seu apoio ao site wulin.com!