(1)想象现实世界中的相关操作沙及哪些实体呢?一个是储户,一个是ATM机。因
此根据面向对象中的抽象原则,可将其抽象为两个类:代表储户的账户信息类,代表银行
ATM机的ATM类。外加一个主类(负责实例化其他类的对象)。
(2)Account类记录储户的卡号,姓名、密码和账户余额等信息,并提供get方法获取每
个属性的值,对账户余额属性提供sub_Balance()方法和add_Balance()方法以模拟余额增
加、减少的功能。
注意:为加强对属性数据的控制访问,考虑将其定义为private。
(3)ATM类模拟ATM机的主要功能,根据对银行ATM机的了解,考虑设计以下主
要方法。
① Welcome()方法:欢迎显示功能。
② Load_Sys()方法:登录功能。
③ SysOpter()方法:根据用户输入进行任务调度。
④ Inqu_Info()方法:查询用户账户。
5 BetBalance()方法:取款。
AddBalance():存款。
⑦ isBalance()方法:判断余额是否足够。
⑧ isRight()方法:判断卡号、密码是否正确。

Account.java

/*Account类封装储户信息及部分功能*/
import java.io.*;
public class Account {private String number=null;          //卡号private String name=null;          //客户姓名private String password=null;        //客户密码private double money=0.0;            //余额/*构造方法,以生成多个储户信息*/public Account(String number,String name,String password,double money) {this.number=number;this.name=name;this.password=password;this.money=money;}protected String get_number() {return number;}protected String get_Name() {return name;}protected String get_Password() {return password;}public double get_Money() {return money;}protected void sub_Balance(double mon) {money-=mon;}                                        //余额减少protected void add_Balance(double mon) {money+=mon;}                                        //余额增加
}

ATM.java

import java.io.*;
class ATM {Account act;Account act2;public ATM() {act=new Account("000","text","111",5000);act2=new Account("222","text","333",5000); }/*********欢迎界面*********/protected void Welcome() {String str="---------------------";System.out.print(str+"\n");System.out.print("1.取款."+"\n"+"2.查询."+"\n"+"3.存款."+"\n"+"4.退出系统"+"\n"+"5.转账");System.out.print(str+"\n");}/*********登录系统* @throws Exception *********/protected void Load_Sys() throws Exception {String card,pwd;int counter=0;BufferedReader br=new BufferedReader(new InputStreamReader(System.in));      //创建标准输入和输出流do {System.out.println("请输入您的卡号:");card=br.readLine();                            //读取键盘信息System.out.println("请输入您的密码:");pwd=br.readLine();if(!isRight(card,pwd)) {System.out.println("您的卡号和密码有误:");counter++;}elseSysOpter();}while(counter<3);System.exit(1);                                   //应用退出}protected void SysOpter()throws Exception{int num;BufferedReader br=new BufferedReader(new InputStreamReader(System.in));System.out.println("请选择您要操作的项目(1-5):");num=br.read();                              //num为ascll码转换的整数switch(num) {case 49:BetBalance();break;case 50:Inqu_Info();break;case 51:AddBalance();case 53:ZhuanZhang();case 52:Exit_Sys();break;}System.exit(1);}/**********信息查询**********/protected void Inqu_Info()throws Exception{System.out.print("------------------------\n"+"账号:"+act.get_number()+"姓名;"+act.get_Name()+"余额:"+act.get_Money()+"\n"+"------------------------\n");SysOpter();}/**********取款**************/public void BetBalance() throws Exception{String str=null,str1;BufferedReader br=new BufferedReader(new InputStreamReader(System.in));do {System.out.println("请输入取款项目:");str=br.readLine();double qu=Double.valueOf(str).doubleValue();             //将字符串转换为double类型if(qu>act.get_Money()) {System.out.println("余额不足,请重新输入你要取的数目:");}else {act.sub_Balance(qu);System.out.println("取款成功,您账户的余额为:"+act.get_Money());Welcome();SysOpter();}}while(true);}public void AddBalance() throws Exception{String str=null,str1;BufferedReader br=new BufferedReader(new InputStreamReader(System.in));do {System.out.println("请输入存款项目:");str=br.readLine();double qu=Double.valueOf(str).doubleValue();act.add_Balance(qu);System.out.println("存款成功,您账户的余额为:"+act.get_Money());Welcome();SysOpter();  }while(true);}public boolean isBalance() {if (act.get_Money()<0) {return false;}return true;}protected boolean isRight(String card,String pwd) {if (act.get_number().equals(card)&&act.get_Password().equals(pwd))return true;elsereturn false;}protected boolean isRight2(String card,String pwd) {if (act2.get_number().equals(card)&&act.get_Password().equals(pwd))return true;elsereturn false;}protected void Exit_Sys() {System.out.println("感谢您使用本系统,再见!");System.exit(1);}/*转账功能*/protected void ZhuanZhang() throws Exception {String card,pwd;int counter=0;BufferedReader br=new BufferedReader(new InputStreamReader(System.in));do {System.out.println("请输入您要转账的卡号:");card=br.readLine();System.out.println("请输入您的密码:");pwd=br.readLine();if(!isRight2(card,pwd)) {System.out.println("您的转账卡号和密码有误:");counter++;}elsedo {System.out.println("请输入转账的金额:");String str = br.readLine();double qu=Double.valueOf(str).doubleValue();if(qu>act.get_Money()) {System.out.println("余额不足,请重新输入你要转账的数目:");}else {act.sub_Balance(qu);double qu1=Double.valueOf(str).doubleValue();act2.add_Balance(qu1);System.out.println("转账成功,您账户的余额为:"+act.get_Money());System.out.println("存款成功,账户2的余额为:"+act2.get_Money());Welcome();SysOpter();}}while(true);}while(counter<3);System.exit(1);}
}

ATMTest.java

public class ATMTest {public static void main(String[] args) throws Exception{ATM atm=new ATM();atm.Welcome();atm.Load_Sys();}}

运行结果:




用Java程序模拟银行ATM机,实现包括存款、取款、查询、转账功能的简单应用相关推荐

  1. Java程序模拟银行ATM机,实现存款、取款、查询、转账功能等操作

    一.介绍 ATM柜员机模拟程序 程序的功能点如下: 要求使用图形用户界面: 通过主界面,可以进入管理员界面.用户界面.系统设置界面.退出: 启动软件,可以进入用户模式,也可以进入系统管理模式: 进入系 ...

  2. c语言银行自动取款系统,[c语言]模拟银行atm机,实现存款、取款等业务

    可以使用结构体来存储账号.密码.余额等. // // main.c // testATM // // Created by 赵亚北 on 14-7-10. // Copyright (c) 2014年 ...

  3. Java 多线程 模拟银行ATM实时存取钱

    近期想回顾一些知识: 一.Java 多线程 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务.多线程是多任务的一种特别的形式,但多线程使用了更小的资源开 ...

  4. ATM机程序Linux,c语言模拟银行ATM机程序

    import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Calendar; public c ...

  5. python定义一个类savingaccount表示银行账户_c#教程之c#模拟银行atm机示例分享

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ATM ...

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

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

  7. 简单Java小程序----有界面ATM机

    继<简单Java小程序---无界面ATM机>以后,尝试对有界面ATM机改写,对面向对象的了解又深了一层! 桌面的创建过程       由于使用的NetBean软件没有提供专用的控件拖拽使用 ...

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

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

  9. python循环案例:模拟银行ATM存款取款

    案例:模拟银行ATM存款取款 1.模拟3张银行卡,1001,1002,1003,分别设置密码和余额(使用列表嵌套字典的方式): 2.提示用户输入银行卡和密码,遍历每张卡的信息验证是否成功: 3.如果用 ...

最新文章

  1. C/C++ 语言获取文件大小
  2. 年轻代频繁ParNew GC,导致http服务rt飙高
  3. 库对比工具mysqldiff使用
  4. 聊一聊ThreadLocal
  5. [java]ArrayList的介绍
  6. YbtOJ#832-鸽子饲养【凸包,Floyd】
  7. 3个简单步骤即可测试Java 8
  8. 贪吃蛇小游戏源码再回顾
  9. java.security.AccessControlException: access denie
  10. 安防监控必备的基础知识
  11. #2009. 「SCOI2015」小凸玩密室
  12. BZOJ2241 [SDOI2011]打地鼠 【模拟】
  13. angular读取html文件路径,angular中关于路径问题的详解
  14. 读书笔记_Effective_C++_条款二:尽量以const, enum, inline替换#define
  15. Django下载超时
  16. 如何用python编表白程序
  17. 【CentOS8.0开启防火墙放行8081端口】
  18. html5 页面整体居中,html5标题居中 DIV布局怎么在页面水平居中
  19. nginx学习,看这一篇就够了(转)
  20. QBC 通过Heibernate查询 discriminator 配置的属性问题

热门文章

  1. 程序员的这些冷笑话,你能看懂几个?
  2. Nikkor镜头介绍
  3. phantomjs 抓取html,phantomjs抓取完整网页
  4. DirectX12 - Command List(命令列表)
  5. 简易在线投票系统(php)——投票结果页面
  6. Android Manager之Vibrator(振动器)
  7. Android Vibrator手机震动详解
  8. offsetWidth与offsetLeft
  9. JAVA计算机毕业设计音乐资源分享网站系统Mybatis+源码+数据库+lw文档+系统+调试部署
  10. C++类与对象(二) 六个默认成员函数