- 服务端
服务端包括账户和银行
创建账户和银行的类
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();
}
}
“`