用类和对象实现的最简单的银行ATM操作系统,不包含继承,多态等概念,对初学类和对象的朋友有很好的借鉴之处,不支持跨行转账,如果想要支持跨行转账也可以单独把各个银行当做对象实现更多功能。大体思路:ATM单独作为一个类,里面组合银行Bank类,Bank里面再组合银行卡BankCard类,层层递进,所有的操作围绕ATM类里面的Operate方法入手,用到什么操作再在外面单独封装好。
import java.util.Scanner;
public class ATM {
private Bank bank;
public ATM(){
bank = new Bank();
}
private BankCard login(int id,int passwd){
// BankCard[] arr = bank.getCards();
// int size = bank.getSize();
// for(int i=0;i<size;i++){
// if(arr[i].getId() == id && arr[i].getPasswd() == passwd){
// System.out.println("登陆成功");
// return;
// }
// }
// System.out.println("登陆失败");
return bank.searchCard(id,passwd);
}
private boolean register(int id,int passwd){
return bank.addCard(id,passwd);
}
private void loginSuccess(BankCard card){
while (true) {
System.out.println("1.存款 2,取款 3.查余额 4 转账 5.退卡");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
if(choice == 5){
break;
}
switch (choice){
case 1:
System.out.println("请输入存款金额:");
int money = scanner.nextInt();
card.saveMoney(money);
break;
case 2:
System.out.println("请输入取款金额:");
money = scanner.nextInt();
card.withdrawMoney(money);
break;
case 3:
System.out.println("当前余额:"+card.getMoney());
break;
case 4:
System.out.println("请输入转账用户id:");
int id = scanner.nextInt();
BankCard cardUser = bank.searchCardOfID(id);
if(cardUser == null){
System.out.println("无此用户");
break;
}
System.out.println("请输入转账金额:");
money = scanner.nextInt();
if(card.withdrawMoney(money)) {
cardUser.saveMoney(money);
}
break;
}
}
}
public void operate() {
while (true) {
System.out.println("1.登陆 2.注册 3.退出");
Scanner scanner = new Scanner(System.in);
int chioce = scanner.nextInt();
if (chioce == 3) {
return;
}
System.out.println("请输入账号,密码:");
int id = scanner.nextInt();
int passwd = scanner.nextInt();
switch (chioce) {
case 1:
BankCard card = login(id,passwd);
if(card==null){
System.out.println("登陆失败");
}else{
System.out.println("登陆成功");
loginSuccess(card);
}
break;
case 2:
boolean bool = register(id,passwd);
if(!bool){
System.out.println("注册失败");
}else{
System.out.println("注册成功");
}
break;
}
}
}
}
import java.util.Arrays;
public class Bank {
private BankCard[] cards;
private int size;
private static final int INITSIZE = 10;
public Bank(){
cards = new BankCard[INITSIZE];
}
public BankCard searchCard(int id,int passwd){
for(int i=0;i<size;i++){
if(cards[i].getId()==id && cards[i].getPasswd()==passwd){
return cards[i];
}
}
return null;
}
public BankCard searchCardOfID(int id){
for(int i=0;i<size;i++){
if(cards[i].getId()==id){
return cards[i];
}
}
return null;
}
public boolean addCard(int id,int passwd){
BankCard card = searchCard(id,passwd);
if(card != null){
return false;
}
card = new BankCard(id,passwd);
if(size == cards.length){
cards = Arrays.copyOf(cards,cards.length*2);
}
cards[size++] = card;
return true;
}
}
public class BankCard {
private int id;
private int passwd;
private int money;
public BankCard(int id, int passwd) {
this.id = id;
this.passwd = passwd;
}
public int getId() {
return id;
}
public int getPasswd() {
return passwd;
}
public void saveMoney(int money){
this.money+=money;
}
public boolean withdrawMoney(int money){
if(this.money >= money) {
this.money -= money;
return true;
}else{
System.out.println("余额不足");
return false;
}
}
public int getMoney(){
return money;
}
}
public class TestDemo {
public static void main(String[] args) {
ATM atm = new ATM();
atm.operate();
}
}