packageDay20test;importjava.util.ArrayList;public classTestDay20_1_Bank {private ArrayList customers = new ArrayList<>();;privateString bankName;//定义一个特殊操作参数以便执行特殊操作(例如 直接付款)
private String operation = "";//定义特殊操作的金额
private double operationMoney = 0.0;publicTestDay20_1_Bank() {super();//TODO Auto-generated constructor stub
}publicTestDay20_1_Bank(String bankName) {super();this.bankName =bankName;
}public ArrayListgetCustomers() {returncustomers;
}publicString getBankName() {returnbankName;
}publicString getOperation() {returnoperation;
}public voidsetOperation(String operation) {this.operation =operation;
}public doublegetOperationMoney() {returnoperationMoney;
}public void setOperationMoney(doubleoperationMoney) {this.operationMoney =operationMoney;
}//起始界面
public voidbegin() {
System.out.println("====欢迎使用" + this.bankName + "====");while (true) {
System.out.println("|-----------------------------|");
System.out.println("|请选择您要执行的操作(输入数字): |");
System.out.println("|1.登录 |");
System.out.println("|2.注册 |");
System.out.println("|0.退出 |");//System.out.println("|-----------------------------|");
int operation = TestDay20_1_Tool.getInt("|-----------------------------|");if (operation == 1) {
System.out.println("======请登录======");this.login();
}else if (operation == 2) {this.register();
}else if (operation == 0) {break;
}else{
System.out.println("请输入指定的数字");
}
}
System.out.println("---------------");
System.out.println("已退出");
}//注册方法
public voidregister() {
System.out.println("====" + this.bankName + "注册====");//设置用户名
String registerName;while (true) {
registerName= TestDay20_1_Tool.getString("请设置用户名");//检查用户名是否存在
boolean userExist = false;for(TestDay20_1_Customer customer : customers) {if(customer.getUserName().equals(registerName)) {
userExist= true;
}
}//如果存在
if(userExist) {
System.out.println("用户名已存在,请重试");
}else{break;
}
}//设置密码
String registerPassword = TestDay20_1_Tool.getString("请设置密码");//添加用户对象
customers.add(new TestDay20_1_Customer(registerName, registerPassword, 0.0));
System.out.println("注册成功");
}//登录方法
public voidlogin() {//登录循环
while (true) {//String id = DiyToolsaaa.DiyOperation.getString(i);
String id = TestDay20_1_Tool.getString("请输入用户名:");
String password= TestDay20_1_Tool.getString("请输入密码:");//登录成功标记
boolean access = false;for (TestDay20_1_Customer user : this.getCustomers()) {if (id.equals(user.getUserName()) &&password.equals(user.getPassWord())) {
access= true;if (this.getOperation().equals("付款")) {this.withdraw(user);
}else{this.loginyes(user);
}break;
}
}if (!access) {//登录密码错误执行
int loginerrorreturn = this.loginerror();if (loginerrorreturn == 1) {break;
}
}else{break;
}
}
}//登录成功执行
public voidloginyes(TestDay20_1_Customer c) {
System.out.println("======登录成功======");while (true) {
System.out.println("|-----------------------------|");
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("|0.退出 |");//System.out.println("|-----------------------------|");//获取操作数字
int operationnum = TestDay20_1_Tool.getInt("|-----------------------------|");//判断是否退出
if (operationnum == 0) {break;
}//执行操作数
this.operationnum(c, operationnum);
}
}//登录密码错误执行
public intloginerror() {int x = 0;
System.out.println("|------------------------------------------|");
System.out.println("|用户名或密码错误,请选择您要执行的操作(输入数字):|");
System.out
.println("|1.重试 |");
System.out
.println("|2.退出 |");//System.out.println("|------------------------------------------|");
int operationerror = TestDay20_1_Tool.getInt("|------------------------------------------|");switch(operationerror) {case 1:break;case 2:
x= 1;break;default:
System.out.println("请输入指定的数字");break;
}returnx;
}//具体操作方法
public void operationnum(TestDay20_1_Customer c, intoperationnum) {//具体操作执行
switch(operationnum) {case 1://输出信息
System.out.println(this.toString(c));break;case 2://存款操作
this.deposit(c);break;case 3://取款操作
this.withdraw(c);break;case 4://本行转账
this.transfer(c, this);break;case 5://跨行转账
this.transferStride(c);break;default:
System.out.println("请输入指定的数字");break;
}
}//存款方法
public voiddeposit(TestDay20_1_Customer c) {
System.out.println("请输入存入金额");//获取操作金额
double deposit = Double.parseDouble(TestDay20_1_Tool.getdouble("==================="));
c.setBalance(c.getBalance()+deposit);
System.out.println("成功存入" + deposit + "元");
System.out.println("当前总余额为:" + c.getBalance() + "元");
}//取款方法
public voidwithdraw(TestDay20_1_Customer c) {double balance =c.getBalance();if (this.getOperation().equals("付款")) {if (this.getOperationMoney()
c.setBalance(balance- this.getOperationMoney());
System.out.println("付款成功,当前余额为:" + (balance - this.getOperationMoney()));
System.out.println("==========");
}else{
System.out.println("余额不足,当前余额为:" +balance);
}
}else{
System.out.println("请输入取出金额");//获取操作金额
double withdraw = Double.parseDouble(TestDay20_1_Tool.getdouble("==================="));if (withdraw
c.setBalance(balance-withdraw);
System.out.println("成功取出" + withdraw + "元");
System.out.println("当前总余额为:" + balance + "元");
}else{
System.out.println("余额不足,当前余额为:" +balance);
}
}
}//转账方法
public voidtransfer(TestDay20_1_Customer c, TestDay20_1_Bank b) {//定义被转账人用户名和对象
String transgerName;
TestDay20_1_Customer transgerReceiveName= null;while (true) {
transgerName= TestDay20_1_Tool.getString("请输入转入账户名:");//检查用户名是否存在
boolean userExist = false;//假设不存在//遍历本银行所有客户
for(TestDay20_1_Customer customer : b.getCustomers()) {//对比用户名是否相符
if(customer.getUserName().equals(transgerName)) {//用户对象赋值
transgerReceiveName =customer;//修改标记
userExist = true;//结束遍历
break;
}
}//如果不存在
if (!userExist) {
System.out.println("您输入的账户不存在,请重新输入");
}else{break;
}
}//获取操作金额
double transfer = Double.parseDouble(TestDay20_1_Tool.getdouble("请输入转账金额:"));//转账客户扣钱
c.setBalance(c.getBalance() -transfer);//被转账人客户加钱
transgerReceiveName.setBalance(transgerReceiveName.getBalance() +transfer);
System.out.println("转账成功!");
}//转账方法(跨行)
public voidtransferStride(TestDay20_1_Customer c) {//获取所有银行信息
ArrayList al =TestDay20_1_Tool.getAllBank();intbankChoose;
System.out.println("请选择收款人所在的银行");for (int i = 0; i < al.size(); i++) {
System.out.println(i+ "-" +al.get(i).getBankName());
}
System.out.println("----------");while (true) {
bankChoose= TestDay20_1_Tool.getInt("输入对应的数字(输入-1退出)");if (bankChoose < 0 || bankChoose > al.size() - 1) {
System.out.println("对不起,请重新输入");
}else{break;
}
}this.transfer(c, al.get(bankChoose));
}//查看账户信息方法
publicString toString(TestDay20_1_Customer c) {return "[当前余额:" + c.getBalance() + "]";
}//销户方法
public voidaccountCancellation(TestDay20_1_Customer c) {
System.out.println("====" + this.bankName + "销户====");//登录循环
System.out.println("销户后将无法再次登录本银行系统,账户余额清零,确认执行销户操作吗?");
System.out.println("1、确认");
System.out.println("0、返回");
String operation= TestDay20_1_Tool.getString("请选择:");if (operation.equals("1")) {for (TestDay20_1_Customer user : this.getCustomers()) {if(c.getUserName().equals(user.getUserName())) {this.getCustomers().remove(user);
System.out.println("销户成功");break;
}
}
}
}
}