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

news2024/11/27 23:55:15

一,前提:

我们上次做了一个简易的银行系统,初步认识了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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1599505.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaSE】搞定String类

前言 本篇会细致讲解String类的常见用法,让小伙伴们搞定String类~ 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 前言 常用的三种字符串构造 字符串长度length 字符串比较 比较 比较字符串的内容equals…

赢战2024!炼石天津落地暨开年冲锋启动会圆满成功

天津,因河而生,凭海而兴,京杭大运河穿城而过,黄崖关长城迤逦壮观。2024年3月8日,“炼石天津落地暨开年冲锋启动会”在天津圆满成功举行,天津天开发展集团有限公司、中国电信股份有限公司天津分公司、中国联…

LeetCode 94 二叉树的中序遍历

题目描述 二叉树的中序遍历 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[1,3,2]示例 2: 输入:root [] 输出:[]示例 3: 输入…

微信小程序-长按显示,点击空白区域关闭

<view bind:tap"closeLongAction"><view bind:longpress"openAction></view><view wx:if"{{longActionIsShow}}"> 长按显示的区域 </view> </view>openAction(e) {console.log(322,e);this.setData({longActionI…

Python疑难杂症(17)---介绍Python的pandas模块特点、安装以及series的创建和元素值的获取等。对于一维数据和使用有了初步的概念

1、定义 什么是Pandas&#xff1a;Pandas是Python中用于数据分析和挖掘的基础模块&#xff0c;它提供了丰富的功能和方法&#xff0c;使用 Pandas 包可以完成数据读入、数据清洗、数据准备、图表呈现等内容&#xff0c;使普通的非数据专业人员也能够处理和分析大型数据集&…

多传感器时间序列信号的无监督深度异常检测

论文地址&#xff1a;https://ieeexplore.ieee.org/abstract/document/9507359 论文源码&#xff1a;未开源 期刊&#xff1a;IEEE Transactions on Knowledge and Data Engineering 如今&#xff0c;多传感器技术被应用于许多领域&#xff0c;如医疗保健(HC)、人体活动识别(…

二.吊打面试官系列-数据库优化-Explain索引分析

1.如何定位慢SQL 我们知道数据库瓶颈80%都在查询上&#xff0c;数据库优化有一个比较重要的环节就是定位系统中的慢SQL&#xff0c;那么我们如何快速定位到哪些查询语句比较耗时呢&#xff1f;Mysql有自己的慢SQL定位功能 MySQL的慢查询日志&#xff0c;用来记录在MySQL中响应…

Postman 环境变量配置初始调用登录脚本赋值Token

效果 新建环境 切换 Environments 标签下 点击上面加号增加环境变量 使用环境变量 使用{{变量名}}引用变量使用 Pre-request Script 全局 一般授权接口都需要再调用接口前&#xff0c;进行登录授权&#xff0c;这里使用了全局的请求前脚本调用。 脚本示例 // 基础地址 var…

【火猫TV】NBA:赛季数据王总结,国王双雄爆冷入选

NBA常规赛已经全部结束,各项数据王诞生,我们发现不少新人球星开始挑大梁,他们用出色的发挥证明了自己的实力。下面,为大家简单盘点下各项数据的最佳球员! 得分王:东契奇(场均33.9分) 本赛季独行侠低开高走,东契奇保持了出色发挥,他场均贡献33.9分,比第二的字母哥场均多出3.5分…

CAN网络管理(网络节点)

什么是CAN的网络节点 网络节点是指连接到CAN总线上的设备或模块,每个网络节点都具有唯一的标识符,称为节点ID,用于在CAN总线上进行通信和识别。 如何判断CAN的网络节点是多少 可以根据DBC来定义查看, 以ADCU为例,域控作为主节点,一般外部的像雷达,camera的数据都是向…

Tomcat下载配置地址

IntelliJ IDEA是一个强大的集成开发环境&#xff0c;能够大大简化Java应用程序的开发和部署过程。而Tomcat作为一个流行的Java Web服务器&#xff0c;其与IntelliJ IDEA的整合能够提供便捷的开发环境&#xff0c;让开发人员更专注于代码的创作与优化。 在配置IntelliJ IDEA以使…

鸿蒙应用开发之滑动选择组件

前面学习了下拉选择菜单组件,现在来学习滑动选择组件,它是提供快速调节设置值,如音量调节、亮度调节等应用场景。也就是说,这个组件可以通过滑动条来设置对应的数值,而不需要用户手动输入数字。 比如像下面的界面: 可以用手滑动上面的滑块,就可以调节对应的数字。这个组…

OpenHarmony轻量系统开发【7】驱动之I2C显示OLED屏幕

7.1实验效果 Hispark WiFi开发套件又提供一个oled屏幕&#xff0c;但是鸿蒙源码中没有这个屏幕的驱动&#xff0c;我们需要自己去移植。 以下是移植效果&#xff1a; 接口&#xff1a;I2C 使用引脚&#xff1a;HI_IO_NAME_GPIO_13 、 HI_IO_NAME_GPIO_14 7.2代码 这里我直…

Webrtc 信令服务器实现

webrtc建联流程图 由上图可知&#xff0c;所谓的信令服务器其实就是将peer的offer/candidate/answer传给对端而已。这样的话实现方式就有很多种了&#xff0c;目前普遍的方式HTTP/HTTPS&#xff0c;WS/WSS。像webrtc-demo-peerconnection就是实现HTTP这种方式。本文使用WS&…

微信小程序订阅消息授权弹窗问题整理

文档 小程序订阅消息&#xff08;用户通过弹窗订阅&#xff09;开发指南 | 微信开放文档 1.报错10004 errCode: 10004errMsg: "requestSubscribeMessage:fail Invalid template id" 真机调试也不行 wx.requestSubscribeMessage({tmplIds: result,// 用户同意与否…

天池酒瓶瑕疵检测数据集分析及完整baseline

以下内容为还没思路的小伙伴牵个头提供一个demo,大佬勿喷,线上成绩0.7,留空间给小伙伴们发挥自己的力量 ps:markdown不怎么熟悉,代码中如有明显缩进问题,自行斟酌改正,编辑好几次都改不过来,请原谅.... 数据分析瑕疵大类: 瓶盖瑕疵、标贴瑕疵、喷码瑕疵、瓶身瑕疵、酒液瑕疵瑕…

【canvas】canvas基础使用(九):文本绘制

简言 canvas除了能够绘制图形外&#xff0c;也可以绘制文本。 绘制文本 fillText() 填充文本 CanvasRenderingContext2D 对象的方法 fillText() 是 Canvas 2D API 的一部分&#xff0c;它在指定的坐标上绘制文本字符串&#xff0c;并使用当前的 fillStyle 对其进行填充。存…

ChatGPT深度科研应用、数据分析及机器学习、AI绘图与高效论文撰写教程

原文链接&#xff1a;ChatGPT深度科研应用、数据分析及机器学习、AI绘图与高效论文撰写教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247601506&idx2&sn5dae3fdc3e188e81b8a6142c5ab8c994&chksmfa820c85cdf58593356482880998fc6eb98e6889b261bf62…

如何解决DDoS攻击?

DDoS攻击&#xff08;分布式拒绝服务攻击&#xff09;是一种恶意利用多台傀儡机协同发起大规模网络流量&#xff0c;旨在压垮目标系统或网络资源&#xff0c;使其无法正常服务的网络攻击手段。由于现代计算机和网络性能的提升&#xff0c;单点发起的DoS攻击已难以奏效&#xff…

基于ssm缪斯乐器购物网站的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本缪斯乐器购物网站就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…