模仿银行系统的极简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,可以直接引用,但是数组形式的变量可以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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用docker配置DSP-SLAM

一.Docker环境配置 1.简单介绍 –docker容器技术–。 简单理解:Anaconda用于隔离不同的python环境;docker可以理解成在你的机器里面安装了一个独立的系统,因此它可以隔离不同的CUDA环境,还有着独立的文件系统,防止别…

【中级软件设计师】上午题08-UML(下):序列图、通信图、状态图、活动图、构件图、部署图

上午题08-UML 1 序列图2 通信图3 状态图3.1 状态和活动3.2 转换和事件 4 活动图5 构件图(组件图)6 部署图 UML图总和 静态建模:类图、对象图、用例图 动态建模:序列图(顺序图,时序图)、通信图&a…

百度智能云万源全新一代智能计算操作系统发布:引领AI新纪元,开启智能未来

随着科技的迅猛发展,人工智能(AI)逐渐渗透到我们生活的每个角落,为人类社会带来前所未有的变革。在这场科技革命的浪潮中,百度作为中国AI领域的领军企业,始终站在技术创新的前沿,不断引领行业发…

AI智能体技术突破:引领科技新浪潮

AI智能体技术突破:引领科技新浪潮 基于大模型的 AI Agent 工作流基于大模型的 AI Agent 工作流效果AI Agent 的四种设计模式Reflection 反思设计模式Tool use 工具使用设计模式Planning 规划设计模式Multiagent collaboration 多智能体协作设计模式 吴恩达在红杉美国…

4.16

1.总结keil5下载代码和编译代码需要注意的事项 1.)仿真器设置: 点击魔术棒,选择debug选项,找到使用的仿真器,选择ST-LINK仿真器,点击setting,选择flash download ,勾选reset and run,选择pack…

网络协议——IS-IS协议详解

1. IS-IS是什么 IS-IS是一种基于链路状态并使用最短路径优先算法进行路由计算的一种IGP协议。IS-IS属于内部网关协议,用于自治系统内部。IS-IS是一种链路状态协议,使用最短路径优先算法进行路由计算。 2. 应用场景(园区网和骨干网&#xff0…

工业物联网让“制造”变成“智造”!——青创智通

工业物联网解决方案-工业IOT-青创智通 随着科技的不断进步和工业的持续发展,物联网(IoT)技术的出现为制造业带来了前所未有的变革。工业物联网(IIoT)作为物联网技术在工业领域的应用,正在逐渐改变传统的制…

基于springboot实现图书进销存管理系统项目【项目源码+论文说明】

基于springboot实现图书进销存管理系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了图书进销存管理系统的开发全过程。通过分析图书进销存管理系统管理的不足,创建了一个计算机管理图书进销…

葡萄书--深度学习基础

卷积神经网络 卷积神经网络具有的特性: 平移不变性(translation invariance):不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应,即为“平移不变性”。图像的平移…

QQ怎么录制视频?教你简单几步,轻松录制高清视频

在当今互联网时代,录制视频已经成为人们日常生活中越来越常用的功能。qq录屏作为qq软件内置的一个功能,凭借其便捷性和易用性受到广大用户的喜爱。但是,很多人不知道qq怎么录制视频。本文将深入研究qq录制视频功能,以便读者根据自…

5-pytorch-torch.nn.Sequential()快速搭建神经网络

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言torch.nn.Sequential()快速搭建网络法1 生成数据2 快速搭建网络3 训练、输出结果 总结 前言 本文内容还是基于4-pytorch前馈网络简单(分类&#xf…

南京大学田兴军团队在土壤微生物的功能类群以及在中国土壤生态系统的分解潜力取得进展(两篇)

研究成果一:土壤微生物群落功能是由占据不同生态位的、高度多样化的微生物之间发生的复杂相互作用决定的。这些微生物相互作用对环境变化的反应敏感,并且往往在土壤“暗箱”中悄然发生,故极大地限制了我们对微生物功能的理解。本研究基于微生…