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

我们今天来给系统加上转账功能。转账功能说白了就是给两个账户同时存取款,相对于存取款就多了一个账户的比对。

首先,用户表现层:

是用户表现界面要添加一条转账功能的提示:

这没什么说的,下面就是在switch里写相应的语句 :

主要是对于输入账户的判断 ,分为了四种情况,第一种和最后一种写好退出和循环就好,主要是中间两种,我们将两个账户传递给了dao类里面的zhuanzhang方法。

其次,数据访问层:

在第一层判断完谁是输出账户,在下一层就要进行输入账户与转账金额的判断,

 

 

 

这样关于转账的所有情况我们就考虑到了。 

两个层的代码都解析完毕,现在我将完整的代码放出来,虽然这里只有两个类,但是其实整个项目还有其他类,只是这里没有涉及也就没有展示,但是代码我一并放在下面。

代码:

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();}}

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;}
}

Model:

public class Model {//定义要用到的属性private Integer id;private Integer money;public Model() {}public Model(Integer id, Integer money) {this.id = id;this.money = money;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public Integer getMoney() {return money;}public void setMoney(Integer money) {this.money = money;}public String toString() {return "卡号" + id + ",  钱数:" + money;}
}

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("输入3是转账");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;Scanner scanner1 = new Scanner(System.in);while (a){System.out.println("请输入要存钱的账户卡号,如要退出该功能请输入0");int anInt1 = scanner1.nextInt();if (anInt1==yonghu.getId()){dao.cunkuan1(yonghu);a=false;}else if (anInt1==yonghu2.getId()){dao.cunkuan2(yonghu2);a=false;}else if (anInt1==0) {System.out.println("已退出存钱功能");a=false;}else {System.out.println("查无此人,请检查卡号是否正确");}}break;case 3:boolean flag=true;while (flag) {System.out.println("请输入要转出的账号,输入0退出该功能:");Scanner scanner2 = new Scanner(System.in);int anInt1 = scanner2.nextInt();if (anInt1==0){flag=false;}else if (yonghu.getId()==anInt1){dao.zhuanzhang(yonghu,yonghu2);flag=false;}else if(yonghu2.getId()==anInt1){dao.zhuanzhang(yonghu2,yonghu);flag=false;}else {System.out.println("账号不存在,请检查");}}break;case 0:System.out.println("程序已退出");System.out.println("欢迎下次使用");flage = false;break;}}}
}

 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);}public void zhuanzhang(Model yonghu, Model yonghu2) {boolean flag = true;while (flag) {System.out.println("请输入转入账号,输入0退出该功能:");Scanner scanner = new Scanner(System.in);int anInt = scanner.nextInt();if (anInt == 0) {flag=false;} else if (anInt != yonghu.getId() && anInt != yonghu2.getId()) {System.out.println("账户不存在请检查:");} else if (anInt == yonghu2.getId()) {int a=0;while (a==0){System.out.println("请输入转账金额:");int anInt2 = scanner.nextInt();if (anInt2<=yonghu.getMoney()) {int yue1, yue2;yue1 = yonghu.getMoney() - anInt2;yue2 = yonghu2.getMoney() + anInt2;yonghu.setMoney(yue1);yonghu2.setMoney(yue2);System.out.println("转出账户余额为"+yonghu.getMoney());System.out.println("转入账户余额为"+yonghu2.getMoney());a=1;flag = false;}else {System.out.println("账户"+yonghu.getId()+"的余额为"+yonghu.getMoney()+",余额不足,转账失败");}}} else {System.out.println("不能给自己转账");flag = false;}}}}

输出结果: 

输入用户1的卡号
123
输入用户1的钱数
123
输入用户2的卡号
456
输入用户2的钱数
456
欢迎使用本银行系统
输入1是输出所有用户信息
输入2是存钱
输入3是转账
输入0是退出程序
请输入要执行的功能
1
卡号123,  钱数:123
卡号456,  钱数:456
请输入要执行的功能
2
请输入要存钱的账户卡号,如要退出该功能请输入0
0
已退出存钱功能
请输入要执行的功能
3
请输入要转出的账号,输入0退出该功能:
123
请输入转入账号,输入0退出该功能:
123
不能给自己转账
请输入要执行的功能
123
请输入要执行的功能
456
请输入要执行的功能
3
请输入要转出的账号,输入0退出该功能:
123
请输入转入账号,输入0退出该功能:
456
请输入转账金额:
900
账户123的余额为123,余额不足,转账失败
请输入转账金额:
100
转出账户余额为23
转入账户余额为556
请输入要执行的功能
0
程序已退出
欢迎下次使用Process finished with exit code 0

 

 

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

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

相关文章

浏览器工作原理与实践--HTTPS:让数据传输更安全

浏览器安全主要划分为三大块内容&#xff1a;页面安全、系统安全和网络安全。前面我们用四篇文章介绍了页面安全和系统安全&#xff0c;也聊了浏览器和Web开发者是如何应对各种类型的攻击&#xff0c;本文是我们专栏的最后一篇&#xff0c;我们就接着来聊聊网络安全协议HTTPS。…

如何把npm切换成yarn管理项目

1.删掉项目中package-lock.json和依赖包 这一步手动删掉就好 2.全局安装yarn npm install -g yarn 3.可以开始执行yarn install安装依赖 1&#xff09;执行yarn init 这一步是修改npm生成的package.json文件&#xff0c;可能会遇到这个问题&#xff1a; 这个查了一下是有…

Zabbix6.0监控入门

1. Zabbix 监控系统入门简介 Zabbix 是一个基于 WEB 界面的提供分布式系统监控的企业级的开源解决方案&#xff0c;Zabbix 能监视各种网络参数&#xff0c;保证服务器系统的安全稳定的运行&#xff0c;并提供灵活的通知机制以让 SA 快速定位并解决存在的各种问题。Zabbix 分布式…

[openGL] 高级光照-Gamma矫正

目录 一 Gamma是什么? 二 感知光度和物理光度 2.1 与Gamma的关系 2.3 存在问题和弊端? 三 Gamma矫正(逆Gamma) 3.1 Gamma矫正的两种方法 3.2 sRGB空间 3.3 重复校正 3.3.1 在着色器中处理重复校正 3.3.2 在加载纹理时就重复校正 3.3.3 校正前后效果 本章节Qt源码点…

第3关 - GoC模拟题3

GoC测试模拟题(2017.4.18)第1题&#xff1a;棱形(lx) 题目描述 棱形是四条边相等的四边形&#xff0c;但角度不确定。请编程画出如下图的边长为50&#xff0c;内角分别是45度和135度的棱形。 说明&#xff1a; 上图中红色数字是标明尺寸的&#xff0c;不需要画出。 输入格式…

SAM2695 法国追梦DREAM 音频DSP芯片

法国追梦/DERAM SAM5504/5704/5716/5808音频DSP芯片,开发板&#xff0c;方案 可用于电子鼓、电子琴、电吉他、效果器、均衡器、啸叫抑制器等电声产品领域 提供服务 全系列芯片&#xff1a; SAM2634 SAM2695 SAM5504B SAM5704B SAM5708B SAM5808B SAM5716B SAM5916B…

2024年五一杯数学建模C题思路分析

文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

GPT国内能用吗

2022年11月&#xff0c;Open AI发布ChatGPT&#xff0c;ChatGPT展现了大型语模型在自然语言处理方面的惊人进步&#xff0c;其生成文本的流畅度和连贯性令人印象深刻&#xff0c;为AI应用打开了新的可能性。 ChatGPT的出现推动了AI技术在各个领域的应用&#xff0c;例如&#x…

postman汉化

一、postman历史版本下载&#xff1a;Postman 10.24.16 Download for Windows / Old Versions / FileHorse.comhttps://www.filehorse.com/download-postman/old-versions/ 二、汉化包下载&#xff1a; Releases hlmd/Postman-cn GitHubPostman汉化中文版. Contribute to h…

【详细】OSPF vs RIP

目录 内部网关协议IGP 按照算法原理分 按照适用范围分 两者优缺点比较 RIP协议 RIP的两个版本区别 RIPv2认证功能 RIP协议优缺点 RIP协议路由环路发生原理及处理方式 造成路由环路的原因&#xff1a; 路由环路的危害 路由环路解决方法​编辑 OSPF协议 Router-ID&a…

分类预测 | Matlab实现SSA-LSSVM麻雀算法优化最小二乘支持向量机数据分类预测

分类预测 | Matlab实现SSA-LSSVM麻雀算法优化最小二乘支持向量机数据分类预测 目录 分类预测 | Matlab实现SSA-LSSVM麻雀算法优化最小二乘支持向量机数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现SSA-LSSVM麻雀算法优化最小二乘支持向量机数据…

为什么用云渲染农场?3D云渲染农场助力影视动画行业发展

​计算机图形技术的进步使得3D渲染成为多个产业发展的重要推动力。设计师和艺术家利用这项技术将创意实现&#xff0c;创造出震撼的视觉作品。但是&#xff0c;高质量的渲染需要大量的计算资源。云渲染农场通过提供这些资源&#xff0c;有效提高了渲染的速度和效率&#xff0c;…

8.Jetson AGX Orin Ubuntu20.04 gRPC编译安装

Jetson AGX Orin Ubuntu20.04 gRPC编译安装 一、CMake版本检查 grpc编译cmake要求最低版本为3.15。首先&#xff0c;cmake -version 查看当前cmake版本&#xff0c;如果低于3.15&#xff0c;按照以下步骤进行安装。 1.1 卸载已经安装的旧版的CMake sudo apt-get autoremove…

【408直通车】C+Python赋能数据结构:从底层原理到高级应用的蜕变之路——线性表

本专栏旨在通过使用C语言和Python分别实现各种考研常见数据结构&#xff0c;从底层原理和应用两个角度深入探索数据结构。通过深入理解数据结构的底层原理和掌握Python的高级特性&#xff0c;读者将能够全面掌握数据结构的知识&#xff0c;并且学会如何在实际应用中灵活运用。 …

网工交换技术基础——VLAN原理

1、VLAN的概念&#xff1a; VLAN(Virtual LAN)&#xff0c;翻译成中文是“虚拟局域网”。LAN可以是由少数几台家用计算机构成的网络&#xff0c;也可以是数以百计的计算机构成的企业网络。VLAN所指的LAN特指使用路由器分割的网络——也就是广播域。 2、VLAN的主要作用&#xf…

假期必备!一款超级强大的视频终端下载工具,简洁又强大,24.5K star【文末送福利】

马上要五一了&#xff0c;假期想必少不了娱乐看电影电视剧&#xff0c;之前介绍了 Gopeed 这个支持全平台的下载神器。 今天再给大家介绍一个超级棒的命令行下载神器项目&#xff1a;Lux。 项目简介 Lux是一款用 Go 语言开发的视频下载库和 ClI 工具&#xff0c;拥有简洁的命…

【已解决】CondaError: Downloaded bytes did not match Content-Length

&#x1f60e; 作者介绍&#xff1a;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff0c;视频号&#xff1a;AI-行者Sun &#x1f388; 本文专栏&#xff1a;本文收录于《AI实战中的各种bug…

springboot 人大金仓 kingbase-备份还原,命令中带密码,支持window和linux

命令带密码参考 Java代码实现国产人大金仓数据库备份还原需求-CSDN博客文章浏览阅读818次&#xff0c;点赞16次&#xff0c;收藏12次。本人在一次项目中&#xff0c;遇到了需要在系统管理中提供给用户备份还原系统数据的功能&#xff0c;由于项目特殊性&#xff0c;项目底层数…

vue实现文字转语音的组件,class类封装,实现项目介绍文字播放(2024-04-17)

1、项目界面截图 2、封装class类方法&#xff08;实例化调用&#xff09; // 语音播报的函数 export default class SpeakVoice {constructor(vm, config) {let that thisthat._vm vmthat.config {text: 春江潮水连海平&#xff0c;海上明月共潮生。滟滟随波千万里&#xf…

开展在即!中银富登邀您共赴雄安2024数字城市展览会(雄安建博会)

中银富登村镇银行&#xff1a;雄安新区金融创新的领航者 在即将举办的2024雄安数字城市建设展览会上&#xff0c;中银富登村镇银行将以其在金融创新和普惠金融服务领域的卓越表现&#xff0c;成为展会的一大亮点。作为雄安新区首家全国性银行业金融机构总部&#xff0c;中银富…