java 简易银行系统(数组,继承,面向对象)

## 直接上代码

银行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;
	}
}
  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值