实验要求
登陆界面
1.登陆 2.注册 3.退出
操作界面
1.存款 2.取款 3.转账 4.查余额 5.退卡
效果图
源代码
ATM类
package com.company;
import java.util.Scanner;
public class ATM {
private Bank bank;
private BankCard bankcard;
private double money;
private int id;
private int passwd;
public ATM(){
bank=new Bank();
}
public void login(int id,int passwd){//登陆
if(bank.contains(id,passwd)){
bankcard=bank.getcard(id,passwd);
start2();
}else{
System.out.println("账号密码错误");
}
}
public boolean register(int id,int passwd){//注册
if(bank.contains(id,passwd)){
System.out.println("账号已经被注册");
return false;
}
BankCard card=new BankCard(id,passwd);
bank.add(card);
System.out.println("注册成功");
return true;
}
public void start() {//菜单页面
while (true){
System.out.println("1. 登陆 2.注册 3.退出");
Scanner scanner = new Scanner(System.in);
int chioce = scanner.nextInt();
if (chioce == 3) {
break;
}
System.out.println("请输入账号:");
int id = scanner.nextInt();
System.out.println("请输入密码:");
int passwd = scanner.nextInt();
switch (chioce) {
case 1:
login(id, passwd);
break;
case 2:
register(id, passwd);
break;
}
}
}
public void start2(){//登陆之后菜单
while (true){
int id1=0;
System.out.println("1. 存款 2.取款 3.转账 4.查余额 5.退卡");
Scanner scanner = new Scanner(System.in);
int chioce = scanner.nextInt();
if (chioce == 5) {//退出
return;
}
switch (chioce) {
case 1://存款
System.out.println("请输入存款金额:");
money = scanner.nextDouble();
bank.deposit(bankcard,money);
System.out.println("存款成功!");
break;
case 2://取款
System.out.println("请输入取款金额:");
money = scanner.nextDouble();
if(bank.withdrawMoney (bankcard,money)) {
System.out.println("取款成功!");
}
break;
case 3://转账
System.out.println("请输入转账用户id:");
id1=scanner.nextInt();
if(!bank.contains2(id1)){//检查账户是否注册
System.out.println("账户未注册");
}else{
System.out.println("请输入转账金额:");
money = scanner.nextDouble();
if(bank.transferAccounts(bankcard,bank.getCard1(id1),money)){
System.out.println("转账成功");
}else{
System.out.println("余额不足,转账失败");
}
}
case 4://查询余额
System.out.println("余额为:"+bank.queryAccounts(bankcard));
}
}
}
}
Bank类
package com.company;
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 void add(BankCard card){//添加一张银行卡
if(cards.length==size){
cards= Arrays.copyOf(cards,cards.length+(cards.length>>1));
}
cards[size]=card;
size++;
}
public boolean contains(int id,int passwd){//查询是否存在银行卡id和passwd
for(int i=0;i<size;i++) {
if (cards[i].getId()== id && cards[i].getPasswd() == passwd) {
return true;
}
}
return false;
}
public boolean contains2(int id){//查询是否存在银行卡id和passwd
for(int i=0;i<size;i++) {
if (cards[i].getId()== id) {
return true;
}
}
return false;
}
public BankCard getcard(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 getCard1(int id) {//输入卡号返回银行卡
for(int i=0;i<size;i++){
if(cards[i].getId()== id ){
return cards[i];
}
}
return null;
}
public boolean deposit(BankCard card, double money) {//存款,利用boolean类型返回两种情况,方便给用户提示;
return card.setMoney(money);
}
public boolean withdrawMoney(BankCard card, double money) {//取款
return card.getMoney(money);
}
public boolean transferAccounts(BankCard card,BankCard card1, double money) {//转账
if (card.getMoney(money)) {
card1.setMoney(money);
return true;
} else {
return false;
}
}
public double queryAccounts(BankCard card) {//查询余额;
return card.getBalance();
}
}
Bankcard类
package com.company;
public class BankCard {
private double money;
private int id;
private int passwd;
public BankCard(int id, int passwd) {
this.id=id;
this.passwd=passwd;
}
public boolean getMoney(double money) {//在账户上取钱
if(this.money>=money){
this.money-=money;
return true;
}else{
return false;
}
}
public boolean setMoney(double money) {//在账户哦上存款
this.money += money;
return true;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getPasswd() {
return passwd;
}
public void setPasswd(int passwd) {
this.passwd = passwd;
}
public double getBalance() {//返回this.money值
return this.money;
}
}