文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java实现基础银行ATM系统

2024-04-02 19:55

关注

本文实例为大家分享了Java实现银行ATM系统的具体代码,供大家参考,具体内容如下

一、前言

银行ATM系列简单操作

二、使用步骤

1.创建用户信息类Account.java

代码如下(示例):

package ATM;
public class Account {
        private String id;
        private String name;
        private double balance;
        private double norm;
        private String password;
        public Account() {
        }
        public Account(String id, String name, String password,double balance, double norm) {
            this.id = id;
            this.name = name;
            this.password=password;
            this.balance = balance;
            this.norm = norm;
        }
        public String getId() {
            return id;
        }
 
        public void setId(String id) {
            this.id = id;
        }
 
        public String getName() {
            return name;
        }
 
        public void setName(String name) {
            this.name = name;
        }
 
        public double getBalance() {
            return balance;
        }
 
        public void setBalance(double balance) {
            if(balance<0){
                this.balance=0;
            }
            this.balance = balance;
        }
 
        public double getNorm() {
            return norm;
        }
 
        public void setNorm(double norm) {
            if(norm<=0||norm>50000){
             this.norm=50000;
            }
            this.norm = norm;
        }
 
        public String getPassword() {
            return password;
        }
 
        public void setPassword(String password) {
            this.password = password;
        }
        
}

2.编写用户界面和操作功能(代码中含有注释)

ATMSystem.java代码如下(示例):

package ATM;
import java.util.*;
 
public class ATMSystem {
    public static void main(String[] args) {
    //1.准备系统需要的容器对象,用于存储账户对象
        ArrayList<Account> account=new ArrayList<>(100);
        //提前准备了,甄嬛用户信息,可删 ——自行注册
        account.add(new Account("11111111","甄嬛","111",0.0, 30000));
    //2.准备系统首页,登录和开户
        //调用shouMain方法
        shouMain(account);
    }
    //首页
    public static void shouMain(ArrayList<Account> account){
        Scanner sc=new Scanner(System.in);
        while(true){
        System.out.println("=========欢迎您进入赵氏ATM系统=========");
        System.out.println("1.登录账户");
        System.out.println("2.注册开户");
        System.out.println("请输入命令(1、2)选择对应操作:");
        String a1=sc.next();
        switch(a1){
        case "1":
            //登录
            DL(account,sc);
            break;
        case "2":
            //开户
            ZC(account,sc);
            break;
        default:
            System.out.println("错误:命令输入不规范!");
        }}
    }
    //开户功能的实现
    public static void ZC(ArrayList<Account> account,Scanner sc){
        System.out.println("=========用户开户功能=========");
        System.out.println("请输入姓名:");
        String name=sc.next();
        String password="";
        while(true){
            System.out.println("请设置密码:");
            password=sc.next();
            System.out.println("请再输入一次密码:");
            String againPassword=sc.next();
            if(password.equals(againPassword)){
                break;
            }else{
                System.out.println("两次密码不一致,请重新设置密码!");
            }
        }
        System.out.println("请输入取现限额:");
        Double norm=sc.nextDouble();
        if(norm<=0||norm>50000){
            norm=50000.0;
            System.out.println("您的取现额度不规范,默认为50000元");
        }
        String id=ID(account);
        Account accounts=new Account(id,name,password,0,norm);
        account.add(accounts);
       System.out.println("您的卡号为:"+id);
    }
    //随机生成八位数卡号不与已存在的卡号重复
    //关键 !!!!!此方法与此方法下方的两个方法效果一样,任选其一
public static String ID(ArrayList<Account> account){
    while(true){
        Random r=new Random();
        String id="";
        for(int i=0;i<1;i++){
            int q=r.nextInt(2);
            id+=q;
        }int T=0;
        for(int j=0;j<account.size();j++){
            Account ac=account.get(j);                
            if(ac.getId().equals(id)){
                T=1;
                break;
            }
        }
        if(T==0){
            return id;
        }
    }
}
//随机生成八位数卡号不与已存在的卡号重复
//    public static String ID(ArrayList<Account> account){
//        while(true){
//        Random r=new Random();
//        String id="";
//            for(int i=0;i<8;i++){
//            int q=r.nextInt(10);
//              id+=q;
//        }
//            //判断卡号是否重复了
//            Account ac=pdid(account,id);
//            if(ac==null){
//                //说明当前卡号没有重复
//                return id;
//            }
//        }
//    public static Account pdid(ArrayList<Account> account,String id){
//        int acount=0;
//        //如果有重复的返回重复的对象
//        for(int i=0;i<account.size();i++){
//            Account ac=account.get(i);
//            if(id.equals(ac.getId())){
//                return ac;
//            }        
//            }
//        return null;        
//    }
    //登录
    public static void DL(ArrayList<Account> account,Scanner sc){
        //调用检查卡号的JC方法
        Account acc=JC(account,sc);
        while(true){
            //核对输入密码
        System.out.println("请输入密码:");
        String password=sc.next();
        if(acc.getPassword().equals(password)){
            //登录后页面//操作页面
            System.out.println("恭喜您,"+acc.getName()+"成功进入系统!");
            showUser(account,acc,sc);
            return;
        }else{
            System.out.println("密码错误!");
        }
        }
}
//检查登录卡号是否存在
    public static Account JC(ArrayList<Account> account,Scanner sc){  
        while(true){
            System.out.println("请输入卡号:");
        String id=sc.next();
           for(int i=0;i<account.size();i++){
           Account acc=account.get(i);
         if(id.equals(acc.getId())){
             return acc;
        }}
            System.out.println("警告:卡号错不存在!");
       }
    }   
    //用户操作页面
    private static void showUser(ArrayList<Account> account,Account acc,Scanner sc) {
        while(true){
        System.out.println("====================用户操作页面==========================");
        System.out.println("1.查询账户");
        System.out.println("2.存款");
        System.out.println("3.取款");
        System.out.println("4.转账");
        System.out.println("5.修改密码");
        System.out.println("6.退出");
        System.out.println("7.注销账户");
        System.out.println("请输入命令(1、2、3、4、5、6、7)选择对应操作:");
        String a2=sc.next();
        switch(a2){
        case "1"://查询
            CX(acc);
            break;
        case "2"://存款
            CK(acc,sc);
            break;
        case "3"://取款
            QK(acc,sc);
            break;
        case "4"://转账
            ZZ(account,acc,sc);
            break;
        case "5"://修改密码
            XG(acc,sc);
            return;
        case "6"://退出
            System.out.println("欢迎下次登录!");
            return;
        case "7"://注销
            SC(account,acc);
            return;
       default:
           System.out.println("错误:命令输入不规范!");
        }
    }
    }
    //简单的删除该对象
    private static void SC(ArrayList<Account> account,Account acc) {
        account.remove(acc);
        return;
    }
    //通过Account类中set方法修改对象的密码,可举一反三修改取款限额
    private static void XG(Account acc, Scanner sc) {
        while(true){
            System.out.println("请输入修改后的密码:");
        String mima=sc.next();
        System.out.println("请再输入一次:");
        String mm=sc.next();
        if(mima.equals(mm)){
            acc.setPassword(mima);
            System.out.println("密码修改成功!");
            System.out.println("请重新登录~~");
            return;
        }
        }    
    }
    //转账有账户个数限制,转账的卡号是否存在,并核对姓名,限制转账金额
    //通过Account类中set方法修改对象的余额
    private static void ZZ(ArrayList<Account> account,Account acc, Scanner sc) {
        if(account.size()<2){
            System.out.println("当前系统,账户不足2个,不支持转账!");
            return;
        }else{
        while(true){
            System.out.println("请您输入转账的账户卡号:");
            String cards=sc.next();
            for(int i=0;i<account.size();i++){
                   Account car=account.get(i);
                 if(cards.equals(car.getId())&&!cards.equals(acc.getId())){
                     QR(car,sc);
                     while(true){
                         System.out.println("请您输入转账的金额:");
                         double money=sc.nextDouble();
                            if(money>acc.getNorm()){
                                System.out.println("转账金额不能大于限额:"+acc.getNorm()+"元");
                            }else if(money>acc.getBalance()){
                                System.out.println("您的余额为:"+acc.getBalance()+"元,不支持大额度的转账金额!");
                            }else{
                                acc.setBalance(acc.getBalance()-money);
                                car.setBalance(acc.getBalance()+money);
                                System.out.println("转账成功,现在你的余额为:"+acc.getBalance());
                                break;
                     }
                     }
                     break;
                }else{System.out.println("警告:卡号错,不存在!");}break;      
            }break;
               }
        }
    }
    //确认转账对象的姓名,避免转错对象
    private static void QR( Account car, Scanner sc) {
        String name="**"+car.getName().substring(2);
        while(true){
            System.out.println("您确定要为"+name+"转账!");
        System.out.println("请您输入对方姓名确认:");
        String names=sc.next();
        if(names.equals(car.getName())){
            System.out.println("请继续转账");
            break;
        }else{
            System.out.println("姓名不符合");
        }
        }
    }
    //取款是简单的修改余额,注意取款限额
    private static void QK(Account acc, Scanner sc) {
        while(true){
            System.out.println("输入您要取款的金额:");
        double money=sc.nextDouble();
        if(money>acc.getNorm()){
            System.out.println("取款金额不能大于限额:"+acc.getNorm()+"元");
        }else if(money>acc.getBalance()){
            System.out.println("您的余额为:"+acc.getBalance()+"元,不支持大额度的取款金额!");
        }else{
            acc.setBalance(acc.getBalance()-money);
            System.out.println("取款成功,现在你的余额为:"+acc.getBalance());
            break;
        }
    }
    }
    //存款是简单的修改余额
    private static void CK(Account acc, Scanner sc) {
        System.out.println("输入您要存款的金额:");
        double money=sc.nextDouble();
        double balance=acc.getBalance();
        double bal=money+balance;
        acc.setBalance(bal);
        System.out.println("存款成功~您现在的金额为"+bal+"元");
    }
    //查询信息,通过Account类中get方法读出想知道的数据
    private static void CX(Account acc) {
        System.out.println("您的帐户信息如下:");
        System.out.println("卡号:"+acc.getId());
        System.out.println("姓名:"+acc.getName());
        System.out.println("余额:"+acc.getBalance());
        System.out.println("当前取现额度:"+acc.getNorm());
    }
    
}

三、运行效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯