JAVA - ATM机程序

    ATM机程序     

UnionPayTest.java

package oo.day06.work;

public class UnionPayTest {

}

interface UnionPay{ //银联接口
    public double getBalance(); //查询余额
    public boolean drawMoney(double number); //取款
    public boolean checkPwd(String input); //检查密码
}

interface ABC extends UnionPay{ //农行接口
    /**支付电话费*/
    public boolean payTelBill(String phoneNum,double sum);
}
interface CCB extends UnionPay {
    /**增加的支付燃气费功能*/
    public void payGasBill(double number);
}

class ABCImpl implements ABC{ //农行卡
    private double money;
    private String pwd;

    public ABCImpl(double money,String pwd){
        this.money = money;
        this.pwd = pwd;
    }

    @Override
    public double getBalance() {
        return money;
    }
    @Override
    public boolean drawMoney(double number) {
        if(number <= money){
            money -=number;
            return true;
        }
        return false;
    }
    @Override
    public boolean checkPwd(String input) {
        if(pwd.equals(input))
            return true;
        else
            return false;
    }
    public boolean payTelBill(String phoneNum,double sum){
        if(sum <= money){
            money -=sum;
            return true;
        }
        return false;
    }
}

/**
 * 类:用于描述建设银行实际发行的卡片
 * 该卡片具有的功能来自于继承的已经符合银联规范的CCB接口
 */
class CCBImpl implements CCB {
    private double money;
    private String pwd;

    public CCBImpl(double money,String pwd){
        this.money = money;
        this.pwd = pwd;
    }

    @Override
    public double getBalance() {
        return money;
    }
    @Override
    public boolean drawMoney(double number) {
        if(number <= money){
            money -=number;
            return true;
        }
        return false;
    }
    @Override
    public void payGasBill(double number) {
        if(number < money){
            money-=number;
        }
    }
    @Override
    public boolean checkPwd(String input) {
        if(pwd.equals(input))
            return true;
        else
            return false;
    }
}

TestUnionPay.java  (用于测试上面的程序使用)

package oo.day06.work;
import java.util.Scanner;
/**
 * 测试实现接口后的类的方法调用
 */
public class TestUnionPay {
    public static void main(String[] args) {
        //ICBCImpl icbc = new ICBCImpl(2000,"123456");
        //ICBC icbc = new ICBCImpl(2000,"123456");
        //UnionPay icbc = new ICBCImpl(2000,"123456");
        //UnionPay icbc = new ABCImpl(2000,"123456");
        UnionPay ccb = new CCBImpl(2000,"123456");    //这里用了“向上造型”
        Scanner input = new Scanner(System.in);
        System.out.println("请输入密码:");
        if(ccb.checkPwd(input.next())){
            System.out.println("请输入金额:");
            double num = Double.parseDouble(input.next());
            if(ccb.drawMoney(num)){
                System.out.println("取钱成功,卡余额为:"+ccb.getBalance());
            }
            else{
                System.out.println("取钱失败");
            }
        }else{
            System.out.println("密码错误");
        }
    }
}

ABCATMTest.java

package oo.day06.work;
import java.util.Scanner;
public class ABCATMTest {
}

/**
 * ABCATM机类,用于描述模拟插入银行卡后的操作
 */
class ABCATM {
    private UnionPay  card;

    public void insertCard(UnionPay userCard){
        if (card == null) {
            card = userCard;
        }
    }

    private void outCard(){
        card = null;
    }

    private void showBalance(){
        System.out.println("当前余额是:" + card.getBalance());
    }

    private void takeMoney(){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入取款数目:");
        double  number = Double.parseDouble(input.next());
        if(card.drawMoney(number)){
            System.out.println("取款成功");
        }else{
            System.out.println("取款失败");
        }
    }

    private void payTelBill(){
        Scanner input = new Scanner(System.in);
        if(card instanceof ABC){
            ABC abcCard = (ABC)card;          //这里用了“向下造型”。
            System.out.println("请输入电话 号码:");
            String telNum = input.next();
            System.out.println("请输入缴费额:");
            double sum = Double.parseDouble(input.next());
            if(abcCard.payTelBill(telNum,sum)){
                System.out.println("缴费成功");
            }else{
                System.out.println("缴费失败");
            }

        }else{
            System.out.println("您的卡不是农业银行卡,无法完成缴费");
        }
    }
    public void allMenu(){
        Scanner input = new Scanner(System.in);    

        System.out.println("请输入密码:");
        String pwd = input.next();

        if(card.checkPwd(pwd)){
            System.out.println("请选择功能:\n 1.查看余额   2.取款   3.缴电话费");
            int choice = Integer.parseInt(input.next());
            switch(choice){
                case 1:
                    showBalance();
                    break;
                case 2:
                    takeMoney();
                    break;
                case 3:
                    payTelBill();
                    break;
                default:
                    System.out.println("非法输入");
            }
        }else{
            System.out.print("密码错误");
        }
        this.outCard();
    }
}

TestATM.java (用于测试上面的程序使用)

package oo.day06.work;

public class TestATM {
    public static void main(String[] args) {
        ABCATM atm =new ABCATM();
//        ICBCImpl icbc = new ICBCImpl(3000, "123456");//工商银行的卡
        ABCImpl  abc  = new ABCImpl(1000, "123456");//农业银行的卡
//        CCBImpl  abc  = new CCBImpl(1000, "123456");//农业银行的卡

        //atm.insertCard(icbc);
        atm.insertCard(abc);
        atm.allMenu();
    }
}
时间: 2024-08-25 22:30:39

JAVA - ATM机程序的相关文章

Java ATM机

package Test; import java.util.*; class Acount{ String kahao; String name; String date; String mima; double yue ; Scanner input = new Scanner(System.in); public Acount(String k,String n,String d,String m,double y) { kahao = k; name = n; date = d; mim

菜鸡程序猿的开始:java基础知识之一个简单ATM机

import java.util.Scanner; public class Atm{ static int allmoney=150000; //ATM现有余额 static int all=200000; // ATM最大量 static int money =10000; // 初始化用户的余额 public static void main(String[] args) { System.out.print("*********************************"

文件及输入输出流模拟ATM机

题目:两部分要求都要实现. 一.ATM机的账户记录Account有账户的唯一性标识(11个长度的字符和数字的组合),用户的姓名,操作日期(Date),操作类型,账户密码(六位的数字,可以用0开头),当前的余额(可以为0). 模拟ATM的功能设计,用户插卡后显示选择语言界面,输入密码界面,用户输入正确密码(用户输入错误密码,则提示该卡已被锁定,无法操作),则弹出选择界面:存款.取款.转账汇款.修改密码.查询余额. 选择"取款",则显示100元.500元.1000元.1500元.2000元

Atm机制作

大概一个星期以前,我对java的认识就是:java是什么?编程是什么? 想从一个初学者,变成一个精通者,有点难!! 如今学习java已经一个星期了,简单编写了Atm机的程序,希望前辈们,多多指教 import java.util.Scanner; public class Atmfangfa { public static boolean login(){ boolean boo;  Scanner s = new Scanner(System.in);  System.out.println(

模拟ATM机银行系统

淄博汉企Java基础考核项目 模拟银行自助终端系统 一. 本系统模拟银行用户使用ATM机开户.查询.存款.取款功能,要求使用java语言编程实现. 说明: 1. 对于数据输入异常,可使用java异常处理机制进行处理. 2. 评分将以功能实现与代码规范性相结合的方式进行考核. 3. 如果对项目需求有疑问,可以随时以QQ留言方式联系我进行咨询. 4. 国庆放假期间,每天都有老师在公司值班,10月4日是我在公司值班,10月7日正常上班,欢迎大家到公司来做项目. 二. 项目功能要求: 项目开始运行显示主

人生第一次的自己完成的atm机

package DiSan; import java.util.Scanner; public class DiS { private static double money = 150000; private static double maxmoney = 200000; private static double smoney = 20000; public static void main(String[] args) { int user = 123456; int passWord

摩根大通银行被黑客攻克, ATM机/网银危在旦夕,winxp退市灾难来临了

winxp4月退市到如今还不到半年,就出现故障了 7600多万个消费者银行账户被黑.此外还有700万个小企业账户的信息也被黑客窃取,这个算不算灾难呢?假设等到银行业彻底崩溃,资金彻底丧失,那不仅仅是灾难,而是末日. 因为越来越多黑客受雇于组织.针对winxp退市的唾手可得的攻击成了他们的巨大狂欢.我觉得黑客可能利用winxp漏洞入侵atm机后再进入银行网络.在没有安全操作系统(windows不安全众人皆知)情况下把数据放到云服务.等于把安全钥匙交给了黑客.摩根发布这些事件是想获得针对账户攻击的免

模块购物商城和ATM机代码:

http://outofmemory.cn/python/video/let-us-python/ python为程序员服务 一下三个模块完美的实现了模块之间的参数传递. 1.将编写好的代码设置成模块 2.设置成模块之后还存在一些导入模块之后,怎么时候执行,怎么执行的问题 这个问题使用如下代码解决.   if __name__=='__main__'#如果程序是主函数自己执行的,(意思就是该函数不是被别人import(被调用)执行的),那么久执行shop()函数,你就可以先导入到你的当前代码中,

ATM机的代码(作业)

import java.util.Scanner; public class ATMDemo { /**  * 简单ATM机取款过程模拟  */ public static void main(String[] args) {  String pass = ""; // 保存用户输入密码  int amount = 0; // 取款金额  String password = "111111"; // 用户密码  int count = 0; // 记录密码输入次数