模仿银行系统的极简Java三层结构应用——存钱功能的实现

一,前提:

我们上次做了一个简易的银行系统,初步认识了java结构,目前该系统可以输入要用的数据并且输出。

二,目标:

我们这次的目标是实现一个简易的存钱功能,并输出存钱后的余额,

三,实现:

和上一节做的功能相比多了一个存钱功能,但是也要保留输出的方式。

所以写了一个while和switch语句保证整个项目能循环运行起来,功能让用户自己选择。

 

首先我们要从上面的界面去到业务逻辑层或数据层,就需要把数据都先传到上面的界面存下来,这样不管去哪,更方便调用。 

那他们保存的数据来自哪里呢?就是我们的 ChuZhi,我们给数据赋初值的地方。

在ChuZhi里写下面的代码,完成对User里yonghu和yonghu2的赋值。

我们把初值的赋予和传递解决了, 现在我们要开始解决存款的具体执行。

首先,存款这个功能是一个新的功能,为了美观和简洁,我们写了一个新的类专门解决数据的改变,包括以后的取款,转账问题也都写在这个类里。

我们先来看这个新的类怎么写:

写一个方法来完成存款的功能 

具体执行完成了,那我们要怎么把数据传给这个新类呢?

这就是我们提前将数据从ChuZhi传到User的目的 

 

这样,存款的功能就实现了。里面还有一些是无关痛痒的优化,我都放到下面的代码里。

 四,代码

User:

public class User {
    public static Model yonghu = new Model();
    public static Model yonghu2 = new Model();

    public void UI() {
        Dao dao = new Dao();
        ChuZhi chuZhi = new ChuZhi();
        System.out.println("输入1是输出所有用户信息");
        System.out.println("输入2是存钱");
        System.out.println("输入0是退出程序");
        boolean flage = true;
        while (flage) {
            System.out.println("请输入要执行的功能");
            Scanner scanner = new Scanner(System.in);
            int anInt = scanner.nextInt();
            switch (anInt) {
                case 1:
                    dao.quanshuchu(yonghu, yonghu2);
                    break;
                case 2:
                   boolean a=true;
                    while (a){
                    System.out.println("请输入要存钱的账户卡号,如要退出该功能请输入0");
                    Scanner scanner1 = new Scanner(System.in);
                    int anInt1 = scanner1.nextInt();
                    if (anInt1==yonghu.getId()){
                        dao.cunkuan1(yonghu);
                        a=false;
                    }else if (anInt1==yonghu2.getId()){
                        dao.cunkuan2(yonghu);
                        a=false;
                    }else if (anInt1==0) {
                        System.out.println("已退出存钱功能");
                        a=false;
                    }else {
                        System.out.println("查无此人,请检查卡号是否正确");
                    }
                    }
                    break;
                case 0:
                    System.out.println("程序已退出");
                    System.out.println("欢迎下次使用");
                    flage = false;
                    break;
            }


        }
    }
}

 ChuZhi:

public class ChuZhi {
    public void xinxi() {
        Model yonghu1 = new Model();
        Model yonghu2 = new Model();
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入用户1的卡号");
        int id = scanner.nextInt();
        yonghu1.setId(id);
        System.out.println("输入用户1的钱数");
        int money = scanner.nextInt();
        yonghu1.setMoney(money);
        System.out.println("输入用户2的卡号");
        int id2 = scanner.nextInt();
        yonghu2.setId(id2);
        System.out.println("输入用户2的钱数");
        int money2 = scanner.nextInt();
        yonghu2.setMoney(money2);
        User user = new User();
       //全局静态变量不用new,可以直接引用,但是数组形式的变量可以new
        User.yonghu = yonghu1;
        User.yonghu2 = yonghu2;
    }
}

BankRuKou:

public class BankRuKou {
    public static void main(String[] args) {
        ChuZhi duixiang = new ChuZhi();
        duixiang.xinxi();
        System.out.println("欢迎使用本银行系统");
        User user = new User();
        user.UI();
    }

}

Dao(业务逻辑):

public class Dao {
public void quanshuchu(Model yonghu1,Model yonghu2){
    System.out.println(yonghu1);
    System.out.println(yonghu2);
}
    public void cunkuan1(Model yonghu1) {
        System.out.println("存钱金额:");
        Scanner scanner = new Scanner(System.in);
        int anInt = scanner.nextInt();
        int yue;
        yue=yonghu1.getMoney()+anInt;
        System.out.println("现在余额为:"+yue);
        yonghu1.setMoney(yue);
    }
    public void cunkuan2(Model yonghu2) {
        System.out.println("存钱金额:");
        Scanner scanner = new Scanner(System.in);
        int anInt = scanner.nextInt();
        int yue;
        yue=yonghu2.getMoney()+anInt;
        System.out.println("现在余额为:"+yue);
yonghu2.setMoney(yue);
    }
}

五,结果输出: 

输入用户1的卡号
1
输入用户1的钱数
1
输入用户2的卡号
2
输入用户2的钱数
2
欢迎使用本银行系统
输入1是输出所有用户信息
输入2是存钱
输入0是退出程序
请输入要执行的功能
1
卡号1,  钱数:1
卡号2,  钱数:2
请输入要执行的功能
2
请输入要存钱的账户卡号,如要退出该功能请输入0
1
存钱金额:
110
现在余额为:111
请输入要执行的功能
2
请输入要存钱的账户卡号,如要退出该功能请输入0
111
查无此人,请检查卡号是否正确
请输入要存钱的账户卡号,如要退出该功能请输入0
2
存钱金额:
11
现在余额为:13
请输入要执行的功能
1
卡号1,  钱数:111
卡号2,  钱数:13
请输入要执行的功能
0
程序已退出
欢迎下次使用

Process finished with exit code 0

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值