Java面向对象练习--- ATM机应用

先看一下题目描述:
ATM机功能:能让用户重复进行申请新卡、存款、取款、查看余额以及转账等操作
实现步骤:

  1. 建立atm包(可略)
  2. 编写卡类,卡类中包括卡号、金额两个属性,以及存款,取款,查看余额,转帐四个方
    法。
  3. 编写ATM应用主函数:
    3.1. 实例化一个长度为10 的数组,用来保存多张银行卡对象 (用数组保存对象,一个很好的思路,通过数组下标与卡号建立联系)
    3.2. 重复以下过程,直到用户输入 0结束循环
    3.3. 提示用户选择要进行的操作(1:申请新卡 2:存款 3:取款 4:查余额 5:
    转账 0:结束循环)
    3.4.
    用户输入 1,那么实例化一张新卡,并将卡放入数组
    用户输入 2,那么提示用户输入卡号和要存入的金额,然后在数组中查找到这张卡对象,并调用这张卡对象的存款方法进行存款
    用户输入 3,那么提示用户输入卡号和要取出的金额,然后在数组中查找到这张卡对象,并调用这张卡对象的取款方法进行取款
    用户输入 4,那么提示用户输入卡号,然后在数组中查找到这张卡对象,并调用这张卡对象的查余额方法得到余额,并输出给用户看
    用户输入 5,那么提示用户输入卡号和转账目标卡的卡号以及转账金额,然后在数组中查找到这两张张卡对象,并调用信用卡类的转账函数

下面给出程序运行截图:
Java面向对象练习--- ATM机应用_第1张图片
Java面向对象练习--- ATM机应用_第2张图片
其中想了最久的是如何将Atm类中的卡号实例化之后如何进行对应,类似于数据库的主键,
我个人认为是因为卡号 stuNo仅仅是一个类的属性,无法像类的实例那样仅仅代表一个实例,这种利用数组将属性与实例绑定的方法实在是妙极.
下面给出代码
说实话代码封装性极差,感觉像是练习面向过程编程了,不太像面向对象进行编程.


```java
public class HomeWork {
   
	public static void main(String[] args) {
   
		Card[] cardSql = new Card[10];
		int count = 0;//记录申请卡的次数
		while (true) {
   //满足题目循环进入功能选择界面的要求
			System.out.println("1:申请新卡  2:存款   3:取款  4:查余额  5:转账  0:结束循环");
			
			Scanner scanner = new Scanner(System.in);
			int temp = scanner.nextInt();
			if(temp == 0)//选择0 则退出循环
				break;
			switch (temp) {
   
			case 1:
				int cardNo = 10086 + count;//投机取巧 对id进行
				cardSql[count] = new Card(cardNo, 0);//对象数组的每一个对象,这两步是联系的关键
				System.out.println("你的卡号是:" + cardNo + "余额是" + 0.00);
				count++;//在下一次申请时,方便卡的编号自增
				break;
			case 2:

				try {
   
					showCard();
					int cardNo1 = scanner.nextInt();
					boolean flag = true;

你可能感兴趣的:(java,oop)