一,前提:
我们上次做了一个简易的银行系统,初步认识了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,可以直接引用,但是数组形式的变量可以newUser.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