- 服務端
服務端包括賬戶和銀行
創建賬戶和銀行的類
package com.bank.account;
//賬戶
public class Account {
//賬戶名稱
private String name;
//賬戶餘額
private double balance;
//賬戶密碼
private String password;
//賬戶狀態,默認是激活的狀態
private boolean status = true;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
}
銀行代碼實現
package com.bank.account;
//初始設置銀行有1000個賬戶
private Account[] accounts = new Account[1000];
//判斷是否存在該賬戶,注意此處異常
public Account isExits(String name){
try {
for (Account account : accounts) {
if(account.getName().equals(name)){
return account;
}
}
} catch (Exception e) {
return null;
}
return null;
}
//添加銀行賬戶
public int addAccount(Account acc){
int index=-1;
for(int i=0;i<accounts.length;i++){
if(accounts[i]==null){
index = i;
break;
}
}
if(index!=-1){
accounts[index]=acc;
return 1;
}else{
return -1;
}
}
//驗證ATM機輸入的信息是否正確,如果正確返回該賬戶
public Account validate(String usename,
String password){
try {
for (Account account : accounts) {
if(account.getName().equals(usename)&&
account.getPassword().equals(password)){
return account;
}
}
} catch (Exception e) {
return null;
}
return null;
}
//顯示銀行所有的賬戶信息
public void show(){
System.out.println("賬戶名"+"\t賬戶狀態");
for(int i=0;i<accounts.length;i++){
if(accounts[i]!=null){
System.out.println("-------------------------");
System.out.println(accounts[i].getName()+"\t"+
accounts[i].isStatus());
}
}
}
}
- ATM端
package com.bank.atm;
import java.util.Scanner;
import com.bank.account.Account;
import com.bank.account.Bank;
public class ATM {
private Bank bank = new Bank();
private Scanner sc = new Scanner(System.in);
//開始界面
public void start() {
System.out.println("請選擇菜單項:");
System.out.println("1.創建賬戶");
System.out.println("2.插卡");
System.out.println("3.系統管理");
System.out.println("4.退出系統");
switch (sc.nextInt()) {
case 1:
//創建賬戶
creatAccount();
break;
case 2:
//插卡
insertCard();
break;
case 3:
//銀行管理賬戶
manager(bank);
break;
case 4:
//退出系統
System.exit(0);
break;
}
}
//銀行管理賬戶
private void manager(Bank bank) {
System.out.println("請輸入管理員口令");
if (sc.next().equals("123456")) {
System.out.println("登錄成功!");
manageItem(bank);
} else {
System.out.println("口令錯誤");
manager(bank);
}
}
public void manageItem(Bank bank) {
System.out.println("請選擇菜單項:");
System.out.println("1.顯示所有賬戶");
System.out.println("2.凍結賬戶");
System.out.println("3.恢復賬戶");
System.out.println("4.返回主菜單");
switch (sc.nextInt()) {
case 1:
bank.show();
manageItem(bank);
break;
case 2:
freezAccount(bank);
break;
case 3:
reback(bank);
break;
case 4:
start();
break;
}
}
//恢復凍結的賬戶
private void reback(Bank bank) {
System.out.println("請輸入要恢復賬戶的名字:");
String name = sc.next();
Account account = bank.isExits(name);
if(account==null){
System.out.println(name+"不存在");
reback(bank);;
}else{
account.setStatus(true);
manageItem(bank);
}
}
//凍結賬戶
private void freezAccount(Bank bank) {
System.out.println("請輸入要凍結賬戶的名字:");
String name = sc.next();
Account account = bank.isExits(name);
if(account==null){
System.out.println(name+"不存在");
freezAccount(bank);
}else{
account.setStatus(false);
manageItem(bank);
}
}
//插卡驗證
private void insertCard() {
System.out.println("請輸入用戶名和密碼");
String usename = sc.next();
String password = sc.next();
Account account = bank.validate(usename, password);
if (account != null) {
System.out.println("登錄成功!");
operation(account);
} else {
System.out.println("登錄失敗");
insertCard();
}
}
//賬戶操作界面
private void operation(Account acc) {
System.out.println("請選擇菜單項:");
System.out.println("1、查詢餘額:");
System.out.println("2、取款:");
System.out.println("3、轉賬:");
System.out.println("4、存款:");
System.out.println("5、修改密碼:");
System.out.println("6、返回主菜單:");
switch (sc.nextInt()) {
case 1:
//獲取賬戶餘額
System.out.println(acc.getBalance());
operation(acc);
break;
case 2:
//取款
withdraw(acc);
break;
case 3:
//轉賬
transfer(acc);
break;
case 4:
//存款
deposit(acc);
break;
case 5:
//修改密碼
modifyPassword(acc);
break;
case 6:
//返回系統界面
start();
break;
}
}
//修改密碼方法
private void modifyPassword(Account acc) {
System.out.println("請輸入新的密碼:");
acc.setPassword(sc.next());
}
//存款
private void deposit(Account acc) {
System.out.println("請輸入存款金額");
double d = sc.nextDouble();
acc.setBalance(acc.getBalance() + d);
System.out.println("您現在卡上有金額" + acc.getBalance());
operation(acc);
}
//轉賬
private void transfer(Account acc) {
System.out.println("請輸入要轉賬的賬戶名");
String name = sc.next();
Account account = bank.isExits(name);
if (account != null) {
trans(acc, account);
}
}
private void trans(Account acc, Account acc1) {
System.out.println("請輸入轉賬金額:");
double d = sc.nextDouble();
if (d > acc.getBalance()) {
System.out.println("超出賬戶餘額!轉賬失敗!");
operation(acc);
} else {
acc.setBalance(acc.getBalance() - d);
acc1.setBalance(acc1.getBalance() + d);
operation(acc);
}
}
//取款
private void withdraw(Account acc) {
System.out.println("請輸入取款金額:");
double money = sc.nextDouble();
if (money > acc.getBalance()) {
System.out.println("餘額不足,取款失敗。");
withdraw(acc);
} else {
acc.setBalance(acc.getBalance() - money);
System.out.println("取款成功,還剩餘額" + acc.getBalance());
operation(acc);
}
}
//創建賬戶
private void creatAccount() {
System.out.println("請輸入新賬號:");
String name = sc.next();
System.out.println("請輸入新密碼:");
String password = sc.next();
//從Bank類中調用驗證方法,判斷賬戶是否存在
Account accou = bank.isExits(name);
if (accou != null) {
System.out.println("賬號已經存在,請重新輸入:");
creatAccount();
} else {
Account account = new Account();
account.setName(name);
account.setPassword(password);
//用戶不存在添加用戶
int i = bank.addAccount(account);
if (i > 0) {
System.out.println("存儲成功");
start();
} else {
System.out.println("系統繁忙……存儲失敗!");
}
}
}
}
package com.bank.account;
public class Bank {
private Account[] accounts = new Account[1000];
public Account isExits(String name){
try {
for (Account account : accounts) {
if(account.getName().equals(name)){
return account;
}
}
} catch (Exception e) {
return null;
}
return null;
}
public int addAccount(Account acc){
int index=-1;
for(int i=0;i
測試
package com.bank.test;
import com.bank.atm.ATM;
public class Test {
public static void main(String[] args) {
ATM atm = new ATM();
atm.start();
}
}
“`