java模拟银行存取款系统

实验要求:
1、假定银行的一个存取款系统有两类客户,一类是现金用户,一类是信用卡用户。银行对每个客户都要登记其姓名name,并为之分配一个唯一的账户号码aid,现金用户还要记录其卡的类型(工资卡、借记卡、理财卡),而信用卡用户则根据其信用级别有一定的透支限额lineOfCredit(A级10000元、B级5000元、C级2000元、D级1000元)。每种客户都可以实现存deposit、取withdraw、和查询余额getBalance,信用卡用户还可以查询透支情况findOverdraw。对于现金用户,每次取款操作只能在账户实际额度balance内操作,允许现金用户改变自己的帐户类型。
1)分析有哪些属性和方法可以作为两个子类的共同属性和方法,然后写出抽象类Account的定义。
2)分析CashAccount有那些新增的属性和方法,定义一个继承于Account的子类CashAccount。
3)分析CreditAccount有那些新增的属性和方法,然后定义一个继承于Account的子类CreditAccount,添加增加的属性和方法。
4)请按照要求编写一个程序Test,用你所定义的类完成下列业务操作。
(1)用Account作为类型定义两个变量credit和debit,分别引用CreditAccount和CashAccount的对象,并完成存款500元的操作。
(2)每个对象完成取款200元的操作后再次取款400元,请输出各自的余额。
(3)可以通过credit查看引用对象的透支额吗,如果不能,怎样修改可以查看?

2、为上面题目的银行操作添加一个取款异常WithdrawException,请定义异常类WithdrawException,要求:
1)异常对象记录取款发生时的帐户余额、取款额还有取款人。
2)覆盖继承于超类的方法getMessage(),按以下格式返回信息:
取款人,账号余额,取款额,原因:透支。
3)修改CashAccount的取款方法,当用户取款超出额度时,抛出异常。
4)编写一个可执行类Test,创建一个CashAccount的对象,其初始余额为500,连续取款2次,每次300,写出运行结果。

3、继续前面实验,如果为Account类添加一个String类型的属性 status,当它的值为“blocked”时,取款时发生BlockedException,重写上面实验(注,取款方法要抛出上述两个异常),写出异常类BlockedException、新的取款方法,并编写程序验证。

参考:

import java.io.File;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

/*
 * 1. 客户登录或注册用户 2. 查询个人账户余额 3. 取入钱款交易 4. 存入钱款交易 5. 转账交易 6. 退出账户 7. 注销账户 
 * 要求:1.Switch语句,循环语句,集合,继承,构造方法,抽象方法,
 * super,this,Scanner,静态方法等的运用、呈现。2.添加注释
 * */
public class BankTest {

    public static void main(String[] args) {
        int num;
        Scanner input = new Scanner(System.in);
        UserData u=null;
        Map<String,UserData> userList = new HashMap<String,UserData>();
        while(true) {
            System.out.println("***************中国银行系统***************\n");
            System.out.println("1、注册                                                                                                  *\n");
            System.out.println("2、登录                                                                                                  *\n");
            System.out.println("3、查询个人账户                                                                                  *\n");
            System.out.println("4、存款                                                                                                   *\n");
            System.out.println("5、取钱                                                                                                  *\n");
            System.out.println("6、转账                                                                                                  *\n");
            System.out.println("7、退出**********************************\n");
            System.out.println("请选择(1~7):");
            num = input.nextInt();
            switch(num) {
                case 1:
                    System.out.println("你选择的是开户:请输入卡号,密码,存款金额:");
                    u = new UserData(input.next(),input.next(),input.nextFloat());
                    System.out.println("开户成功,信息如下:敲任意键继续....");
                    System.out.println(u);
                    userList.put(u.getId(), u);
                    input.next();
                    break;
                case 2:
                    System.out.println("你选择的是登录:请输入卡号,密码:");
                    String id = input.next();
                    String pwd = input.next();
                    u = userList.get(id);
                    if(u==null) {
                        System.out.println("卡号不存在:");
                        return;
                    }
                    if(u.getPassword().equals(pwd)) {
                        System.out.println("登录成功,你的信息如下:");
                        System.out.println(u);
                    }
                    break;
                case 3:
                    if(u==null) {
                        System.out.println("用户不存。");
                        break;
                    }
                    System.out.println("你选择的是查询个人账户:信息如下:");
                    System.out.println(u);
                    break;
                case 4:
                    if(u==null) {
                        System.out.println("用户不存。");
                        break;
                    }
                    System.out.println("你选择的是存款:请输入存款金额:");
                    float money = input.nextFloat();
                    u.setMoney(u.getMoney()+money);
                    System.out.println("存款后的信息如下:");
                    System.out.println(u);
                    break;
                case 5:
                    if(u==null) {
                        System.out.println("用户不存。");
                        break;
                    }
                    System.out.println("你选择的是取钱:请输入取款金额:");
                    money = input.nextFloat();
                    u.setMoney(u.getMoney()-+money);
                    System.out.println("取款后的信息如下:");
                    System.out.println(u);
                    break;
                case 6:
                    if(u==null) {
                        System.out.println("用户不存。");
                        break;
                    }
                    System.out.println("你选择的是转账:请输入对方账号:");
                    id = input.next();
                    UserData other = userList.get(id);
                    if(other==null) {
                        System.out.println("对方账号不存在:");
                        break;
                    }
                    System.out.println("请输入转账金额:");
                    money = input.nextFloat();
                    u.setMoney(u.getMoney()-money);
                    other.setMoney(other.getMoney()+money);
                    System.out.println(u);
                    System.out.println(other);
                    
                    break;
                case 7:
                    break;
                
            }
            if(num==7)
                break;
            
        }
    }
    
}


class UserData implements Serializable{
    private String id;
    private String password;

    private float money;

    public UserData() {
        
    }
    public UserData(String id,String password,float money) {
        this.id = id;
        this.password = password;
        this.money = money;

    }
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public float getMoney() {
        return money;
    }

    public void setMoney(float money) {
        this.money = money;
    }
    @Override
        public String toString() {
            return "id:"+this.id+",密码:"+this.password+",账户余额:"+this.money;
        }
    
    
}


你好,这个题目你写出来了嘛?