银行取款、查询余额、交电话费功能

主函数测试方法:

public class TestATM {
    public static void main(String[] args) {
        ABCATM a = new ABCATM();
        //ICBCImpl icbc = new ICBCImpl(3000, "123456");//工商卡号
        ABCImpl abc = new ABCImpl(3000, "123456");//农行卡号
        //a.insertCard(icbc);
        a.insertCard(abc);
        a.allMenu();
    }
}

ABCATM类

import java.util.Scanner;

public 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 sc = new Scanner(System.in);
        System.out.println("请输入取款数目:");
        double num = Double.parseDouble(sc.next());
        if(card.drawMoney(num)){
            System.out.println("取款成功");
        }else{
            System.out.println("取款失败");
        }
    }
    private void payTelBill(){
        Scanner sc = new Scanner(System.in);
        if(card instanceof ABC){
            ABC abcCard = (ABC)card;
            System.out.println("请输入电话号码:");
            String telNum = sc.next();
            System.out.println("请输入缴费金额:");
            double num = Double.parseDouble(sc.next());
            if(abcCard.payTelBill(telNum, num)){
                System.out.println("缴费成功");
            }else{
                System.out.println("缴费失败");
            }
        }else{
            System.out.println("您的卡有误");
        }
    }
    public void allMenu(){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入密码:");
        String pwd = sc.next();
        if(card.checkPwd(pwd)){
            System.out.println("请选择功能:\n 1.查看余额 2.取款 3.交电话费");
            int choice = Integer.parseInt(sc.next());
            switch(choice){
            case 1:
                showBalance();
                break;
            case 2:
                takeMoney();
                break;
            case 3:
                payTelBill();
                break;
            default:
                System.out.println("非法输入");
            }
        }else{
            System.out.println("密码错误");
        }
        this.outCard();
    }

}

功能效果

时间: 2024-10-03 22:55:46

银行取款、查询余额、交电话费功能的相关文章

学习练习 java面向对象存取款查询余额

1 package com.hanqi; 2 3 public class Account { 4 5 String ZhangHao; 6 7 double CunKuanYuE; 8 9 Account(String ZhangHao,double CunKuanYuE) 10 { 11 //初始化 12 this.ZhangHao = ZhangHao; 13 this.CunKuanYuE = CunKuanYuE; 14 } 15 16 //存款 17 //无返回值带参数的方法 18

Android Tasker应用之自动查询并显示话费流量套餐信息

Android Tasker应用之自动查询并显示话费流量套餐信息 虽然Android平台有非常多的流量监控软件,但最准确的流量数据还是掌握在运营商手里.有些朋友可能像我一样时不时地发短信查询流量信息,这个操作在智能手机上显得太不智能了,本文将用Tasker让这个操作变得智能化. 1.功能需求 每天早上闹钟响时,Tasker自动发送短信给运营商查询套餐信息.收到短信后Tasker自动分析短信内容,并将话费余额,流量信息等显示在桌面上. 用户可以手动随时给运营商发短信查询,Tasker自动判断为套餐

【百度地图API】建立全国银行位置查询系统(一)——如何创建地图

原文:[百度地图API]建立全国银行位置查询系统(一)--如何创建地图 <摘要>你将在第一章中学会以下知识: 如何创建一个网页文件 怎样利用百度地图API建立一张2D地图,以及3D地图 如何添加对地图进行鼠标和键盘操作的功能 ------------------------------------------------------------------------------------------------------------------- 一.创建网页文件 粘贴以下代码至记事本中

【百度地图API】建立全国银行位置查询系统(二)——怎样为地图添加控件

原文:[百度地图API]建立全国银行位置查询系统(二)--怎样为地图添加控件 <摘要>你将在第二章中学会以下知识: 使用手写代码的利器——notepad++: 如何为地图添加控件——鱼骨.鹰眼.比例尺.2D3D转换控件.版权控件. ----------------------------------------------------------------------------------------------------------------- 一.安装配置notepad++ 为什么

【百度地图API】建立全国银行位置查询系统(四)——如何利用百度地图的数据生成自己的标注

原文:[百度地图API]建立全国银行位置查询系统(四)--如何利用百度地图的数据生成自己的标注 摘要: 上一章留个悬念,"如果自己没有地理坐标的数据库,应该怎样制作银行的分布地图呢?" 答案就是,利用百度地图上的数据. ---------------------------------------------------------------------------------------------- 我们不用花大把时间写代码去跑数据,只需要利用百度地图API提供的免费接口,就可以

【百度地图API】建立全国银行位置查询系统(三)——如何在地图上添加银行标注

原文:[百度地图API]建立全国银行位置查询系统(三)--如何在地图上添加银行标注 <摘要>你将在第三章中学会以下知识: 如何在地图上添加带银行logo的标注?(你也可以换成商场logo,酒店logo等) 如何在标注上显示信息窗口,以及添加文字标签等其他覆盖物: 最后,介绍一个获取坐标的给力工具. ---------------------------------------------------------------------------------------------------

MySQL实现排名并查询指定用户排名功能,并列排名功能

MySQL实现排名并查询指定用户排名功能,并列排名功能 表结构: CREATE TABLE test.testsort ( id int(11) NOT NULL AUTO_INCREMENT, uid int(11) DEFAULT 0 COMMENT '用户id', score decimal(10, 2) DEFAULT 0.00 COMMENT '分数', PRIMARY KEY (id) ) ENGINE = INNODB AUTO_INCREMENT = 1 CHARACTER SE

【SSH网上商城项目实战11】查询和删除商品功能的实现

在第8节我们完成了查询和删除商品类别的功能,那么现在实现查询和删除商品的功能就很好做了,原理和第8节一模一样,只是修改一些参数,比如请求不同的action等.由于查询和删除商品不需要弹出新的UI窗口,所以我们只要完成完成query.jsp中相应的部分以及相应的后台即可. 1. 查询商品功能的实现 查询功能主要在查询框中实现,从上一节可知,查询框用的是一个text:"<input id='ss' name='serach' />",我们通过把普通的文本框转化为查询搜索文本框来

OpenLayers学习笔记6——使用jQuery UI实现查询并标注(功能实现篇)

本篇博客接上篇是关于OpenLayers的地图标注及弹出窗(marker+popup),先来看下效果图: 下面给出代码,都写了注释,不做过多解释了: ///添加标记 function addMarke(x, y, attribute) { //设置marker样式 var style_mark = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']); style_mark.graphicWidth = 64