银行ATM机系统

article/2025/8/20 16:46:10

模拟Atm机的一些简单功能

UserInfo类

public class UserInfo {private int id;         //idprivate String name;    //姓名private String password; //密码private String idCard;  //卡号private String bank;    //银行名称private double money;      //余额@Overridepublic String toString() {return "UserInfo{" +"id=" + id +", name='" + name + '\'' +", password='" + password + '\'' +", idCard='" + idCard + '\'' +", bank='" + bank + '\'' +", money=" + money +'}';}public UserInfo() {}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getIdCard() {return idCard;}public void setIdCard(String idCard) {this.idCard = idCard;}public String getBank() {return bank;}public void setBank(String bank) {this.bank = bank;}public double getMoney() {return money;}public void setMoney(double money) {this.money = money;}public UserInfo(int id, String name, String password, String idCard, String bank, double money) {this.id = id;this.name = name;this.password = password;this.idCard = idCard;this.bank = bank;this.money = money;}
}

方法接口:

public interface controllerDemo {//登录方法public void login(UserInfo tom);//主页面public void showMenu(UserInfo tom);//查询余额public void Balance(UserInfo tom);//取款public void Withdraw(UserInfo tom);//存款public void deposit(UserInfo tom);//转账public void Transfer(UserInfo tom);//打印public void prints() throws IOException;
}

后台方法实现类:

public class controllerDemoImpl implements controllerDemo {static Scanner sc = new Scanner(System.in);static UserInfo tom = new UserInfo(1, "汤姆", "1", "1", "邮政", 10000);static UserInfo jack = new UserInfo(2, "张三", "1", "1", "招商", 10000);@Overridepublic void login(UserInfo tom) {System.out.println("请输入您的卡号:");String idCard = sc.next();System.out.println("请输入您的密码:");String password = sc.next();if (idCard.equals(tom.getIdCard()) && password.equals(tom.getPassword())) {//如果账号密码正确,则进入主页面showMenu(tom);} else {System.out.println("请使用指定账号");login(tom);}}/*** 主界面;* 判断用户进行的何种操作** @param tom*/@Overridepublic void showMenu(UserInfo tom) {System.out.println("***********************************");System.out.println("*******请输入你想要操作类型*************");System.out.println("******1.余额查询                  2.取款*******");System.out.println("******3.存款                        4.转账*******");System.out.println("******5.打印                        6.退卡*******");System.out.println("*****************7.查询转账信息******************");System.out.println("***********************************");int next = sc.nextInt();switch (next) {case 1:System.out.println("查询余额" + next);Balance(tom);showMenu(tom);break;case 2:System.out.println("取款" + next);Withdraw(tom);showMenu(tom);break;case 3:System.out.println("存款" + next);deposit(tom);showMenu(tom);break;case 4:System.out.println("转账" + next);Transfer(tom);showMenu(tom);break;case 5:System.out.println("打印" + next);prints();showMenu(tom);break;case 6:System.out.println("退卡" + next);System.exit(0);break;case 7:System.out.println("查询转账信息" + next);prints();showMenu(tom);break;default:break;}}/*** 查询余额*/@Overridepublic void Balance(UserInfo tom) {System.out.println("您当前的余额为:" + tom.getMoney() + "元");}/*** 取款** @param tom*/@Overridepublic void Withdraw(UserInfo tom) {System.out.println("*****请选择你要操作菜单的序号*****");System.out.println("*****1.100                        2.200****");System.out.println("*****3.500                        4.800****");System.out.println("*****5.1000                      6.2000***");System.out.println("*****7.其它                       8.返回****");String next = sc.next();switch (next) {case "1":if (tom.getMoney() < 100) {System.out.println("卡余额不足,请先充值");}tom.setMoney(tom.getMoney() - 100);Balance(tom);break;case "2":if (tom.getMoney() < 200) {System.out.println("卡余额不足,请先充值");}tom.setMoney(tom.getMoney() - 200);Balance(tom);showMenu(tom);break;case "3":if (tom.getMoney() < 500) {System.out.println("卡余额不足,请先充值");}tom.setMoney(tom.getMoney() - 500);Balance(tom);showMenu(tom);break;case "4":if (tom.getMoney() < 800) {System.out.println("卡余额不足,请先充值");}tom.setMoney(tom.getMoney() - 800);Balance(tom);showMenu(tom);break;case "5":if (tom.getMoney() < 1000) {System.out.println("卡余额不足,请先充值");}tom.setMoney(tom.getMoney() - 1000);Balance(tom);showMenu(tom);break;case "6":if (tom.getMoney() < 2000) {System.out.println("卡余额不足,请先充值");}tom.setMoney(tom.getMoney() - 2000);Balance(tom);showMenu(tom);break;case "7":System.out.println("请输入您要操作的金额:");double i = sc.nextDouble();if (i > tom.getMoney()) {System.out.println("卡余额不足,请先充值");} else {tom.setMoney(tom.getMoney() - i);Balance(tom);showMenu(tom);}break;case "8":showMenu(tom);break;default:System.out.println("请输入正确数字");showMenu(tom);break;}}/*** 存钱** @param tom*/@Overridepublic void deposit(UserInfo tom) {System.out.println("请输入您需要存入的金额:");double i = sc.nextDouble();tom.setMoney(tom.getMoney() + i);}@Overridepublic void Transfer(UserInfo tom) {System.out.println("输入如对方卡号:");String next = sc.next();//验证卡号是否存在if (jack.getIdCard().equals(next)) {System.out.println("请输入您要转账的金额:");double i = sc.nextDouble();if (tom.getMoney() < i) {System.out.println("卡余额不足,请先充值!!!");} else {tom.setMoney(tom.getMoney() - i);jack.setMoney(jack.getMoney() + i);System.out.println("您当前的余额为:" + tom.getMoney() + "元");System.out.println("jack当前的余额为:" + jack.getMoney() + "元");}} else {System.out.println("对方卡号不存在,请核对后重输;");}}/*** 打印*/@Overridepublic void prints(){System.out.println("文件存放路径:G:\\桌面\\Java复习\\111.txt");File fi = new File("G:\\桌面\\Java复习\\111.txt");//判断该路径下是否有该文件if (fi.exists()) {//如果有则删除fi.delete();} else {try {//没有就新建一个,并写入tom的个人信息FileWriter fw = new FileWriter(fi);fw.write(tom.toString());//flush:Java中的IO流中的输出流一般都有flush这个操作,这个操作的作用是强制将缓存中的输出流(字节流,字符流等)强制输出。fw.flush();} catch (Exception e) {e.printStackTrace();}}}

测试类:

public class AtmOperation {static UserInfo tom = new UserInfo(1, "汤姆", "1", "1", "邮政", 10000);static UserInfo jack = new UserInfo(2, "张三", "1", "1", "招商", 10000);static List<UserInfo> users = new ArrayList<>();static controllerDemoImpl con = new controllerDemoImpl();public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("*****************");System.out.println("****欢迎使用ATM****");System.out.println("*****************");con.login(tom);}

代码执行结果
部分测试结果


http://chatgpt.dhexx.cn/article/EGgrsRIB.shtml

相关文章

Java实现ATM银行模拟系统(含完整代码)

目录 引言 功能简介 登录和注册 1、注册 2、登录 具体功能实现 1、存款功能 2、取款功能 3、转账功能 4、查询功能 5、注销账号 6、修改密码 7、退出 完整代码 引言 &#x1f3e7;&#x1f3e7;&#x1f3e7;本文主要介绍了如何通过Java实现ATM银行模拟系统&…

ATM系统

ATM系统 1、简介 ATM系统包含两个菜单栏&#xff0c;一个是登录、注册菜单栏&#xff0c;一个时是功能菜单栏。 ATM系统共有四个功能&#xff1a;   充值功能&#xff1a;用户登录成功后可以为本账户充值&#xff08;存款&#xff09;。   转账功能&#xff1a;用户登录后可…

银行卡在哪个银行都能取款吗?

银行卡要想取款&#xff0c;分两种情况。 第一种情况是在银行窗口取款&#xff0c;你是哪个银行的银行卡&#xff0c;就得在哪个银行取款&#xff0c;在不同的银行窗口是办理不了的&#xff0c;比如你的卡是工商银行的&#xff0c;你去建设银行窗口是取不了现金的。 第二种情况…

ATM取款机系统

模拟银行实现ATM机取款系统 该系统使用( ( (SQLServer) ) )数据库 功能介绍&#xff1a; 开户&#xff08;到银行填写开户申请单&#xff09;取钱存钱查询余额转账 根据需求设计相对应的数据库概念模型 流程分步详解 1 创建数据库Bank_db --创建数据库 CREATE DATABASE B…

银行ATM活动图

一、 图形文档 1. 密码验证活动图 2. 取款活动图 3. 存款活动图 4. 转账活动图 5. 查询活动图 6. 改密活动图 7. ATM管理员操作活动图 二、 文字说明 1、密码验证活动图 描述银行主机密码验证的过程&#xff0c;包含的动作有&#xff1a;插卡、提示输入密码、输入密码、密…

银行ATM系统——分析类图及文档

一、图形文档 从不同角度出发&#xff0c;可以得出的分析类图有以下两种&#xff1a; 基于类的责任得出的分析类图 基于用况驱动得出的分析类图 二、 文字说明 1、 类图综述 银行ATM分析类类图主要包括实体类&#xff0c;描述了类与类之间的关系&#xff0c;以及说明类有何…

支付平台--清结算流程详解及对账详解

图为清算对账流程 在第三方支付平台拿到银行&#xff08;应该走专线&#xff09;给的对账文件后&#xff0c;会有手动对账和自动对账功能。 手动对账是对自动对账的补充&#xff0c;在自动对账出现问题或者出现差错时再人工介入进行重新对账的操作。 而在很多的情况下&#xf…

数商云采购管理系统支付结算功能详解,实现建筑工程企业采购业务智能化管理

建筑工程行业企业过去受技术、场地等限制&#xff0c;一直采用传统的采购方式&#xff0c;再加上整个行业内部信息相对割裂、采购面临层层传播、中间沟通亦面临多层税费等问题&#xff0c;为建筑工程采购工作增添了不少困难。随着互联网时代的发展&#xff0c;在大数据、云计算…

【支付架构】跨境支付

目录 1 业务介绍 1.1 什么是跨境支付 1.2 跨境支付发展历程 2 技术实现 2.1 业务流程 2.2 交互设计 简单地说&#xff0c;跨境支付指的是两个或两个以上的国家或地区因国际贸易所产生的债券&#xff0c;再借助一定的支付方式与结算工具&#xff0c;实现资金能够跨国…

国际业务结算

国际结算 国际结算(International Settlement)&#xff1a;指处于两个不同国家的当事人&#xff0c;&#xff08;因为商品买卖、服务供应、资金调拨、国际借贷&#xff09;通过银行办理的两国间货币收付业务。 信用证 信用证是一种有条件的银行付款承诺&#xff0c;是开证行…

支付清结算之账户和账务处理(详解)

本文重点介绍清结算中的账户和账务的处理。正文开始前可复习《支付清结算之基本概念和入门》和《支付清结算之渠道侧处理》&#xff0c;以便理解这里的流程。 目录 一、账户体系 1、资产类账户 2、负债类账户 3、所有者权益类账户 4、损益类账户 5、成本类账户 6、共同…

电商平台资金结算流程是什么样的?

&#xff08;图源&#xff1a;pexels网站&#xff09; 在疫情的影响下&#xff0c;越来越多的传统企业开始转向电商&#xff0c;希望通过互联网来拓展业务&#xff0c;开拓新市场。同时&#xff0c;也有越来越多的新兴企业从事电子商务&#xff0c;利用互联网的优势快速发展壮…

支付清结算之账户和账务处理

这是清结算系列的第四篇文章&#xff0c;本文重点介绍清结算中的账户和账务的处理。 请务必阅读这几篇文章以便理解这里的流程。 支付清结算之基本概念和入门支付清结算之渠道侧处理支付清结算之电商侧处理 一、账户体系 在设计清结算系统前&#xff0c;首先需要完成账户体系…

经济法基础(2020年)——第三章 支付结算法律制度

第一节 支付结算概述 支付结算概述 未经中国人民银行批准的非银行金融机构和其他单位不得作为中介机构办理支付结算业务 支付结算工具和原则 传统的人民币非现金支付工具 三票一卡 汇票、本票、支票和银行卡结算方式 汇兑、托收承付和委托收款 原则 恪守信用、履行付款原…

电子支付与结算总结

电子支付与结算总结 第一章 电子支付概述名词解释简答题选择判断题 第二章 支付工具与支付方式名词解释简答题 第三章 网上银行支付名词解释简答题 第四章 电话支付名词解释简答题 第五章 移动支付名词解释简答题讨论题视频 第六章 自助银行支付名词解释简答题讨论题 第七章 跨…

中国支付结算系统发展简史

中国支付结算系统发展史 1949年到今天&#xff0c;中国支付结算系统经历了3个重要的阶段&#xff0c;从无到有&#xff0c;从简单到完善。今天中国的现代支付系统加上各个商业银行内部系统作为基础设计&#xff0c;支撑着第三方支付系统&#xff0c;让我们享受着不需要现金以及…

一张美团外卖的小票看透支付清结算架构!

见字如面&#xff0c;我是军哥&#xff01; 我很少推荐别人的公众号&#xff0c;因为我能看上的原创公众号并不多&#xff0c;让我主动推荐就更难了。 今天这位朋友叫宇宙&#xff0c;认识有两年了&#xff0c;在支付行业里非常有名气&#xff0c;最近闲着无聊翻了他多篇原创文…

支付 VS 清算 VS 结算

概念 标准定义 支付&#xff1a; 完成付款人向收款人转移可以接受的货币债权的过程&#xff0c;包括交易过程、清算过程和结算过程等三个过程&#xff08;一个完整的支付过程&#xff0c;清算和结算都属于支付的某个环节&#xff09;&#xff1b;清算&#xff1a; 包含了在收…

第三方支付平台结算流程是什么样的?

在电商发展的初期曾遇到过一个瓶颈&#xff0c;那就是买卖双方对彼此互不信任&#xff0c;互联网市场中的交易是无形的&#xff0c;大家对对方的信息一无所知&#xff0c;买家害怕自己给了钱没收到货&#xff0c;卖家害怕自己给了货没收到钱&#xff0c;由于缺少这种信任&#…

支付结算系统

不同银行之间 以支付的手段达到结算的目的 所有银行在中国人民银行开 人民银行清算账户&#xff0c;在这个账户存款 用于资金清算通过 人民银行支付系统&#xff08;二代支付系统&#xff09; / 城商行支付系统 等在银行账户间转账结算 文章目录 清算账户管理系统大额支付系统…