类和对象的两个例子(2)

第二个例子(本例包含3个类,实现了对多个银行账号的循环操作。)

1、KB类,自定义的一个类,该类中定义了两个静态方法,分别用Scanner类实现键盘输入一个字符串或一个整数。

import java.util.Scanner;
public class KB_1 {
	public static String scan() {//获取输入的一行字符串
		String str="";
		Scanner s=new Scanner(System.in);
		s.close();
		try {
			str=s.next();
		}
		catch(Exception e) {
		}
		return str;
	}
	public static int scanInt() {//获取输入的整数,如果输入格式错误,默认返回0
		int n=0;
		Scanner s=new Scanner(System.in);
		s.close();
		try {
			n=s.nextInt();
		}
		catch(Exception e) {
		}
		return n;
	}
}

2、Cust类,自定义的一个银行账号类,该类中定义了银行账号的属性,带参数的构造方法和其他的一些操作方法。该类中比5.7.1中的Cust类多一个run方法,该方法实现循环输出菜单并根据用户输入使用switch结构调用本类的各种方法。

public class Cust_1 {
	private String name;
	private int ID;
	private String PWD;
	private int money;
	static String bankname="建设银行";
	private int selfNum=0;
	static int allNum=0;
	public Cust_1(String name,int ID,String PWD,int money) {
		this.name=name;
		this.ID=ID;
		this.PWD=PWD;
		this.money=money;
		allNum++;
		selfNum=allNum;
	}
	public void getMoney() {
		System.out.println("请输入要取出的金额:");
		int n=KB_1.scanInt();
		money=money-n;
	}
	public void saveMoney() {
		System.out.println("请输入储蓄的金额:");
		int n=KB_1.scanInt();
		money=money+n;	
	}
	public void search() {
		System.out.println("所属银行:"+Cust.bankname);
		System.out.println("您是本银行"+allNum+"个顾客中的第"+selfNum+"个顾客");
		System.out.println("用户姓名:"+name);
		System.out.println("用户账号:"+ID);
		System.out.println("账户余额:"+money);
		System.out.println("账户密码:"+PWD);
	}
	public void changePWD() {
		System.out.print("请输入修改后的用户密码:");
		String p=KB_1.scan();
		PWD=p;
	}
	int getID() {
		return ID;
	}
	public void run() {//显示当前账号的菜单并执行
		boolean flag=true;
		while(flag) {
			System.out.print("1存款");
			System.out.print("2取款");
			System.out.print("3修改密码");
			System.out.print("4查询");
			System.out.print("5退出");
			int n=KB_1.scanInt();
			switch(n) {
			case 1:saveMoney();
				break;
			case 2:getMoney();
				break;
			case 3:changePWD();
				break;
			case 4:search();
				break;
			case 5:flag=false;
			}
		}
	}
}

3、Demo类中的main方法中创建了一个数组,数组中包含多个Cust对象,通过while语句实现循环输入多个账户,允许用户循环操作多个银行账号。

public class Demo_1 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i,j=0;
		Cust_1 st[]=new Cust_1[4];//创建数组
		//给数组元素赋值
		st[0]=new Cust_1("Mike",1000,"111",111);
		st[1]=new Cust_1("Bob",2000,"222",222);
		st[2]=new Cust_1("Cindy",3000,"333",333);
		st[3]=new Cust_1("Ruby",4000,"444",444);
		boolean flag=false;//用于判断是都是合法的账户
		while(true) {//循环操作多个账号
			System.out.println("请输入您的ID");
			int ID=KB_1.scanInt();
			for(i=0;i<4;i++) {//判断账号是否存在
				if(ID==st[i].getID()) {
					flag=true;
					j=i;
				}
			}
			if(flag) {//若账号存在,则运行该账号的菜单
				st[j].run();
			}
			else {
				System.out.println("您输入的账号不正确,请重新输入");
				continue;//若不存在,则重新输入
			}
			System.out.println("是否还有顾客,有按任意键继续,没有请按N");
			String str=KB_1.scan();
			if(str.equals("N")||str.equals("n")) {
				break;//跳出循环
			}
		}
	}
}

你可能感兴趣的:(笔记)