目录

一、Account类

二、ATM功能实现类


一、Account类

package com.xh.java.atm1;
/*账户类*/
public class Account {private String cardId;//卡号private String userName;//用户名private String passWord;//密码private double balance;//余额public Account() {}public Account(String cardId, String userName, String passWord, double balance) {this.cardId = cardId;this.userName = userName;this.passWord = passWord;this.balance = balance;}public String getCardId() {return cardId;}public void setCardId(String cardId) {this.cardId = cardId;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassWord() {return passWord;}public void setPassWord(String passWord) {this.passWord = passWord;}public double getBalance() {return balance;}public void setBalance(double balance) {this.balance = balance;}
}

二、ATM功能实现类

package com.xh.java.atm1;
/*实现ATM功能类*/
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;public class ATM {public static void main(String[] args) {ArrayList<Account> accounts = new ArrayList<>();//向系统添加一个用户(默认账户可以以不添加,但销户时不可删)Account account1 = new Account("1312","zhangsan","123",7000.0);accounts.add(account1);//启动首页界面startMenu(accounts);}//首页界面public static void startMenu(ArrayList<Account> accounts) {System.out.println("---==========欢迎您进入首页==========---");Scanner scanner = new Scanner(System.in);//键输入对应信息while (true){System.out.println("请输入您想做的操作:1.登录 2.开户 3.退出系统");int num = scanner.nextInt();switch (num){case 1:{//登录操作login(accounts);break;}case 2:{//注册操作register(accounts);break;}case 3:{//终止系统System.exit(0);}default:{System.out.println("-输入有误,请重新输入-");}}}}//登录public static void login(ArrayList<Account> accounts) {Scanner scanner = new Scanner(System.in);if(accounts.size() == 0){System.out.println("-当前无任何账户,请注册-");System.out.println("---======已跳转在首页,请重新登录======---");return;}while (true){System.out.println("请输入登录的卡号:");String cardId = scanner.next();//通过卡号的方法来获取账户对象Account account = getAccountByCardId(cardId,accounts);if (account != null) {//账户对象存在while (true){System.out.println("请输入登录密码:");String passWord = scanner.next();//判断输入密码与集合中的用户对象密码是否一致if(account.getPassWord().equals(passWord)){System.out.println("欢迎\""+account.getUserName()+"\"用户登录成功!");operateMenu(account,accounts);}else {System.out.println("-密码错误,请重新输入-");}}}else{System.out.println("-该卡号的用户在当前系统中不存在-");}}}//注册public static void register(ArrayList<Account> accounts){Scanner scanner = new Scanner(System.in);System.out.println("========用户开户界面=========");System.out.println("请输入名称:");String name = scanner.next();String password = "";//避免为空while (true){System.out.println("请输入密码:");password = scanner.next();System.out.println("请再次输入密码:");String checkPassword = scanner.next();//判断两次密码是否一致if(password.equals(checkPassword)){break;}else{System.out.println("-两次密码不一致,请重新输入-");}}//创建随机卡号String cardId = creatCardId(accounts);//创建对象Account account = new Account(cardId,name,password,0.0);accounts.add(account);//添加对象到集合System.out.println("您已成功开户,您的卡号是:"+account.getCardId());System.out.println("---======已跳转在首页,请重新登录======---");}//操作界面public static void operateMenu( Account account, ArrayList<Account> accounts) {Scanner scanner = new Scanner(System.in);while (true){System.out.println("       ======用户操作界面======");System.out.println("1.查询 2.存款 3.取款 4.转账 5.销户 6.退出");System.out.println("====================================");System.out.print("请输入操作命令:");int num = scanner.nextInt();switch (num){case 1:{//查询selectAccount(account);break;}case 2:{//存钱saveMoney(account);break;}case 3:{//取钱withdraw(account);break;}case 4:{//转账transferMoney(accounts,account);break;}case 5:{//集合中的方法来销户accounts.remove(account);System.out.println("-销户成功-");break;}case 6:{//退出操作界面返回到首页System.out.println("   ------=====已换到首页=====-------");startMenu(accounts);}default:{System.out.println("-您输入的命令有误-");}}}}//查询用户信息public static void selectAccount(Account account) {System.out.println("--=====当前用户信息=====--");System.out.println("卡号:"+account.getCardId());System.out.println("姓名:"+account.getUserName());System.out.println("余额:"+account.getBalance());}//存钱public static Account saveMoney(Account account) {Scanner scanner = new Scanner(System.in);System.out.println("------===存钱界面===------");System.out.print("请输入存款金额:");double money = scanner.nextDouble();while (true){if(money >= 0 && money % 100 == 0){//判断money是否规范account.setBalance(money+account.getBalance());System.out.println("-存款成功-");break;}else {System.out.println("-请输入整百存款金额-");return saveMoney(account);//返回该方法}}return account;}//取款public static Account withdraw(Account account) {Scanner scanner = new Scanner(System.in);System.out.println("------===取款界面===------");System.out.print("请输入取款金额:");double money = scanner.nextDouble();while (true){if(money >= 0 && money % 100 == 0){//判断money是否规范if(money < account.getBalance()){//取款金额比系统用户中已存金额小account.setBalance(account.getBalance()-money);System.out.println("-取款成功-");return account;}else{System.out.println("取款金额大于已有金额,当前金额为:"+account.getBalance());System.out.println("----请重新输入取款金额,已跳转到操作界面----");break;}}else {System.out.println("请输入整百存款金额!");return withdraw(account);}}return account;}//转账public static void transferMoney(ArrayList<Account> accounts, Account account) {Scanner scanner = new Scanner(System.in);if (accounts.size() < 2){System.out.println("-当前系统不足两个用户,您不可转账-");return;}if(account.getBalance() == 0){System.out.println("-对不起,您的余额为0,不能转账-");return;}while (true){System.out.println("请输入对方的卡号:");String cardId = scanner.next();//获取集合中的对方用户对象Account account1 = getAccountByCardId(cardId,accounts);if (account1 != null){//当前用户存在//判断对方用户是否是自己if(account1.getCardId().equals(account.getCardId())){System.out.println("-该卡号是您自己的,不能向自己转账-");}else {System.out.print("请输入转账金额:");double money = scanner.nextDouble();if(money > 0 && money % 100 == 0){//判断money是否规范//当前用户account.setBalance(account.getBalance() - money);//转账用户account1.setBalance(account1.getBalance() + money);System.out.println("成功向"+account1.getUserName()+"转账"+money+"元");return;}else{System.out.println("-请输入整百金额-");return;}}}else{System.out.println("对不起,当系统没有该用户!");System.out.println("-已跳转到操作界面-");return;}}}//生成随机卡号public static String creatCardId(ArrayList<Account> accounts) {while (true){String cardId = "";Random r = new Random();for (int i = 1; i < 5; i++) {cardId += r.nextInt(10);}//判断卡号是否重复Account account = getAccountByCardId(cardId,accounts);if(account == null){return cardId;}}}//判断卡号是否重复方法public static Account getAccountByCardId(String cardId, ArrayList<Account> accounts) {//遍历集合获取对象for (int i = 0; i < accounts.size(); i++) {Account account = accounts.get(i);//判断卡号来返回对象if(account.getCardId().equals(cardId)){return account;}}return null;}
}

Java实现ATM机系统相关推荐

  1. Java模拟ATM机系统

    要求: 模拟ATM机系统的登陆.显示个人信息.存取款等基本功能. 图形用户界面,要有登陆界面,主界面有菜单: 连接MySQL数据库:服务器端存放用户账户信息: 实现存.取款,查询余额.显示个人信息等功 ...

  2. ATM柜员机JAVA课程设计_JAVA课程设计报告银行ATM机系统.doc

    JAVA课程设计报告银行ATM机系统 Java课程设计报告 题 目 银行ATM机系统 所在院系 软件学院 学生姓名 金磊 专 业 R机械+软件 班 级 R机械094 学 号 2011年 7 月 15日 ...

  3. 面向对象程序设计——银行ATM机系统

    文章目录 针对于面向对象设计--做一个简单的银行ATM机系统 ATM机需求分析 用户类 ATM机类 银行类 注册操作的大概流程 登录操作的大概流程 用户类代码 ATM机类代码 bank类代码(主类) ...

  4. java web atm机_java笔记——模拟ATM机例子

    模拟ATM机,实现用户登录.查询.取款.存款和退出. 假定一个银行卡账户,程序执行的时候提示用户输入账号,然后输入密码,如果输入内容不符合规范,则程序会给出相应提示,连续3次输入有误,则退出系统.登录 ...

  5. 课程设计:基于JavaWeb实现ATM机系统

    作者主页:编程千纸鹤 作者简介:Java.前端.Pythone开发多年,做过高程,项目经理,架构师 主要内容:Java项目开发.毕业设计开发.面试技术整理.最新技术分享 一,项目简介 本项目主要实现一 ...

  6. 基于JavaWeb实现ATM机系统

    项目编号:KS019 项目运行环境说明 开发工具:IDEA / ECLIPSE 数据库:MYSQL5.7 应用服务器:TOMCAT8.5.31 后台开发技术:JSP.Servlet 前端开发技术:ja ...

  7. java web atm机_Java项目实现模拟ATM机

    本文实例为大家分享了Java实现模拟ATM机的具体代码,供大家参考,具体内容如下 项目名称 模拟ATM机 项目描述 简单实现ATM机功能 代码实现 测试类 public class Test { // ...

  8. Java编写ATM机模拟系统(连接数据库)

    本篇是完整代码,我还上传了资源,资源里有完整的代码和数据库驱动,可以直接下载使用 初学java,在代码上的理解不够,写出的代码极为冗长,有不少的缺陷,等日后慢慢完善,若是有好的建议,请与我分享 一.工 ...

  9. 用Java实现ATM机功能(附带源码)

    目录 一.题目要求 (1)注册功能 (2)登录功能 二.设计思路 (1)银行卡类--BankCard类 (2)银行类--Bank类 (3)ATM机类--ATM类 三.程序代码 (1)BankCard. ...

最新文章

  1. python中的正则表达式语法_Python基础教程之正则表达式基本语法以及re模块
  2. U3D架构系列之- FSM有限状态机设计五
  3. mysql only_full_group_by报错的问题(转)
  4. 神策数据完成B轮融资1100万美元,DCM领投、红杉跟投
  5. 0507css3基础:弹性盒子、媒体查询
  6. BugkuCTF-MISC题蜘蛛侠
  7. (45)npm全局安装包的位置
  8. python数据写入表格生成图片_使用Python制作一个GUI界面,将随机生成的姓名存入到Excel文件中...
  9. java api apk_java-如何在APK文件中保护此API
  10. 独奏骑士服务器维护,独奏骑士最强流派天赋加点攻略
  11. 2018-09-10-整车开发流程名词解释
  12. [读书] 《未来世界的幸存者》关于熵减的心得
  13. 【Python】利用Python对招聘信息数据分析
  14. 计蒜客 青出于蓝胜于蓝 【DFS序 + 树状数组】
  15. 题外-解决mac重启后git无法使用
  16. GFW 三定律,太有创意了,太真实了,胆太大,竟敢光天化日下说实话!
  17. python图片马赛克_如何在Matplotlib中绘制马赛克图
  18. OpenPose环境搭建的经历
  19. 【保姆级·创建对象】如何通过Supplier创建对象
  20. 李克用置酒三垂冈赋——刘翰(清)

热门文章

  1. 最近要买液晶电视,大家觉得哪个品牌好呢?
  2. 分析linux系统的运行性能,Linux系统的性能测试与性能分析
  3. 炒黄金如何避开亏损,有哪些技巧?
  4. 校园失物招领系统的设计与实现
  5. 0x7A09E689 (ucrtbased.dll)处(位于 TalkBack.exe 中)引发的异常: 0xC0000005: 写入位置 0x01100000 时发生访问冲突。
  6. winhe检测虚拟磁盘
  7. 技术好过,人力资源难熬,传统大于能力,遭遇职场潜规则???
  8. Win11的两个实用技巧系列之嵌套虚拟化、无法新建Excel表格解决方法
  9. python - 常用Excel模块
  10. 或将不再公开?第五轮学科评估结果陆续放出,对保研有哪些影响?