## 直接上代码
银行Bank类
package com.qf.day12.t1.bank;
import java.util.Scanner;
public class Bank {
int size = 4;
Scanner input = new Scanner(System.in);
User[] users = new User[5];//存储所有银行用户信息
/*
* 初始化信息
*/
public void initial() {
User user = new User();
user.setCardNo("6222020200001234567");
user.setPassword("123456");
user.setUsername("tom");
user.setPhone("12345676561");
user.setIdentityCard("371425199812760982");
user.setBalance(1000.0);
users[0] = user;
User user2 = new User("6222020200001234667","123456","mary","12345676569","371425199812760999",3999.0);
users[1] = user2;
users[2] = new User("6222020200001234999","123456","my","12345676560","371425199812760988",9999.0);
users[3] = new User("6222020200001234888","123456","tank","12345676555","37142519981276666",8999.0);
users[4] = new User("6222020200001234111","123456","heeby","12345676444","371425199812760222",4999.0);
}
/*
* 欢迎页菜单
*/
public void welcomeMenu() {
System.out.println("**************欢迎使用ATM自动银行系统************************");
System.out.println("1,开户 ,2,登录");
System.out.println("请输入操作编号:");
int choice = input.nextInt();
switch(choice) {
case 1:
System.out.println("执行开户");
this.showall();
this.register();
this.showall();
break;
case 2:
this.login();//调用登录
break;
}
}
/*
* 输入用户名密码登录
*/
public void login() {
//用户输入卡号,密码
System.out.println("请输入卡号:");
String no = input.next();
System.out.println("请输入密码:");
String pwd = input.next();
User myAccount = this.check(no,pwd);
if(myAccount != null) {
System.out.println("登陆成功");
this.showMenu(myAccount);
}else {
System.out.println("卡号或密码错误");
}
}
/*
* 验证用户名密码
*/
public User check(String no, String pwd) {
//验证卡密与开户时一致
for(int i = 0 ; i < users.length; i++) {
if(users[i] != null) {//非空判断
if(no.equals(users[i].getCardNo()) && pwd.equals(users[i].getPassword())) {
//System.out.println("登陆成功!欢迎您" + users[i].getUsername());
//记录登录成功用户
return users[i];//查找到与账号密码匹配的账号
}
}
}
return null;
}
/*
* 开户功能
*/
public void register() {
//做数组长度判断,是否扩容
if(users.length == size) {
User[] newNums = new User [users.length*2];
System.arraycopy(users, 0 , newNums, 0 , users.length);
//地址的替换(数组是引用数据类型)
users = newNums;
}
System.out.println("请输入密码");
String pwd = input.next();
System.out.println("请输入姓名");
String name = input.next();
System.out.println("请输入身份证号");
String id = input.next();
System.out.println("请输入电话");
String phone = input.next();
//生成卡号
//固定前缀(622202020000)+自动生成7位数
String prefix = "622202020000";
int suffix = (int)(Math.random()*1000000) +1000000;
String no = prefix + suffix;//生成卡号
User user = new User();
user.setCardNo(no);
user.setIdentityCard(id);
user.setPassword(pwd);
user.setPhone(phone);
user.setUsername(name);
users[size] = user;
size++;
}
/*
* 取款功能
*/
public void getMoney(User myAccount) {
System.out.println("取款功能操作中.......");
System.out.println("输入取款金额:.");
double money = input.nextDouble();
if(money > 0 && money < myAccount.getBalance()) {
double currentBalance = myAccount.getBalance() - money;
myAccount.setBalance(currentBalance);
System.out.println("取款成功。当前余额为:"+myAccount.getBalance());
}else {
System.out.println("余额不足!");
}
}
/*
* 存款功能
*/
public void setMoney(User myAccount) {
System.out.println("存款功能操作中.......");
System.out.println("输入存款金额:.");
double money = input.nextDouble();
if(money > 0) {
double currentBalance = myAccount.getBalance() + money;
myAccount.setBalance(currentBalance);
System.out.println("存款成功。当前余额为:"+myAccount.getBalance());
}else {
System.out.println("输入有误!");
}
}
/*
* 转账功能
*/
public void giveMoney(User myAccount) {
//判断对方卡号姓名
System.out.println("输入对方卡号:.");
String youcard = input.next();
System.out.println("输入对方卡号:.");
String youname = input.next();
User toUser = this.checkToAccount(youcard,youname);
//输入金额,判断自己余额
if(toUser != null) {
System.out.println("输入转账金额");
double givemoney = input.nextDouble();
if(givemoney > 0 && givemoney <= myAccount.getBalance()) {
double newBalance = myAccount.getBalance() - givemoney;
double newBalanceto = toUser.getBalance() + givemoney;
myAccount.setBalance(newBalance);
toUser.setBalance(newBalanceto);
System.out.println("转账成功。当前余额为:"+myAccount.getBalance());
}
}else {
System.out.println("未找到对方账户");
}
//双方余额数量变化
}
public User checkToAccount(String youcard , String youname) {
//验证卡密与开户时一致
for(int i = 0 ; i < users.length; i++) {
if(users[i] != null) {//非空判断
if(youcard.equals(users[i].getCardNo()) && youname.equals(users[i].getUsername())) {
//System.out.println("登陆成功!欢迎您" + users[i].getUsername());
//记录登录成功用户
return users[i];//查找到与账号密码匹配的账号
}
}
}
return null;
}
/*
* 查询余额功能
*/
public void lookMoney(User myAccount) {
System.out.println("查询余额功能操作中.......");
System.out.println("查询成功。当前余额为:"+myAccount.getBalance());
}
/*
*修改密码功能
*/
public void updatePassword(User myAccount) {
System.out.println("修改密码功能操作中.......");
String oldpassword,newpassword,newpassword2;
do {
System.out.println("输入旧密码:.");
oldpassword = input.next();
if(!oldpassword.equals(myAccount.getPassword())) {
System.out.println("旧密码输入错误,请重试");
}}while(!oldpassword.equals(myAccount.getPassword()));
do {
System.out.println("输入新密码:.");
newpassword = input.next();
System.out.println("再输一次:.");
newpassword2 = input.next();
if(!newpassword.equals(newpassword2)) {
System.out.println("两次密码输入不一致,请重试");
}
}while(!newpassword.equals(newpassword2));
myAccount.setPassword(newpassword);
System.out.println("修改成功,当前密码"+myAccount.getPassword());
}
/*
*修改预留手机号功能
*/
public void updatePhone(User myAccount) {
System.out.println("修改预留手机号功能操作中.......");
System.out.println("输入新手机号码:.");
String newphone = input.next();
myAccount.setPhone(newphone);
System.out.println("修改成功。当前预留手机号为:"+myAccount.getPhone());
}
/*
*注销账户功能
*/
public void delete(User myAccount) {
int position = findmyaccount(myAccount);
if(position < 0||position >size){
System.out.println("非法位置,稍后重试。。。");
return ;//含义编码(没有对应下标)
}
//1,目标位置后一个值,前移一个(多次循环,直至所有有效值移动完毕)
for(int i = position; i < size - 1; i++){
users[i] = users[i+1];
}
//2,有效值--
size--;
}
/*
* 展示业务菜单
*/
public void showMenu(User myAccount) {
int choice;
while(true){
Scanner input = new Scanner(System.in);
System.out.println("----------------欢迎使用ATM自动银行系统----------------------------");
System.out.println("2,存款 3,取款 4,转账 5,查询余额 6,修改密码 7,修改预留手机号 8,注销账户 0,退出 ");
System.out.println("------------------------------------");
System.out.println("请输入操作编号");
choice = input.nextInt();
switch(choice) {
case 2:
System.out.println("执行存款");
this.setMoney(myAccount);
break;
case 3:
System.out.println("执行取款");
this.getMoney(myAccount);
break;
case 4:
System.out.println("执行转账");
this.giveMoney(myAccount);
break;
case 5:
System.out.println("执行查询余额");
this.lookMoney(myAccount);
break;
case 6:
System.out.println("执行修改密码");
this.updatePassword(myAccount);
break;
case 7:
System.out.println("执行修改预留手机号");
this.updatePhone(myAccount);
break;
case 8:
System.out.println("执行注销账户");
this.delete(myAccount);
break;
case 0:
System.out.println("执行退出");
return;//退出整个方法
default:
System.out.println("输入有误,请重新输入");
}
}
}
public int findmyaccount(User myAccount) {
int position=0;
for(int i = 0 ; i < users.length; i++) {
if(myAccount.getCardNo().equals(users[i].getCardNo())) {
position = i;
}
}
return position;
}
public void showall() {
for(int i = 0 ; i < size; i++) {
System.out.println(users[i].getCardNo()+"\t"+users[i].getUsername()+"\t"+users[i].getBalance());
}
}
}
测试类TestBank
package com.qf.day12.t1.bank;
/*
* 测试类
*/
public class TestBank {
public static void main(String[] args) {
//0,完成过开户工作(卡号,密码,姓名,身份证号,电话号,余额)
//1,输入卡号,输入密码
//2,卡密校验,成功展示下菜单,失败重输
//3,显示菜单,完成业务编号选择
//4,完成具体业务操作
//程序起始
Bank bank = new Bank();
// User user = null;//对象类型的变量中没有指向一个具体存在的地址,而保存了一个null值
// System.out.print(user.getCardNo());
bank.initial();//初始化信息
bank.welcomeMenu();//用户登录
//bank.showMenu();
// outer:for(int i = 0; i < 5; i++) {
// System.out.println("当前值:"+i);
// switch(i) {
// case 3:
// System.out.print("满足条件,请退出");
// break;
// }
// }
}
}
用户类User
package com.qf.day12.t1.bank;
/*
* 用户类
* 存储用户相关信息
*/
public class User {
private String cardNo;
private String password;
private String username;
private String identityCard;
private String phone;
private double balance;
public User() {}
public User(String cardNo,String password, String username, String identityCard, String phone, double balance) {
this.cardNo = cardNo;
this.password = password;
this.username = username;
this.identityCard = identityCard;
this.phone = phone;
this.balance = balance;
}
public String getCardNo() {
return cardNo;
}
public void setCardNo(String cardNo) {
this.cardNo = cardNo;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getIdentityCard() {
return identityCard;
}
public void setIdentityCard(String identityCard) {
this.identityCard = identityCard;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}