Java实现基础银行ATM系统

目录
  • 一、前言
  • 二、使用步骤
  • 三、运行效果图:

本文实例为大家分享了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());
    }
    
}

三、运行效果图:

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

(0)

相关推荐

  • Java实现银行存取款

    本文实例为大家分享了Java银行存取款的具体代码,供大家参考,具体内容如下 1.不加锁情况 运行结果: 代码:将加锁情况中加锁部分进行注释即可 2.加锁情况 运行结果 缓冲区代码 package Bank; import java.util.LinkedList; public class BankAccount { static double sum=1000; private LinkedList<Object> list = new LinkedList<>(); //存款

  • java实现简单银行ATM系统

    本文实例为大家分享了java实现简单银行ATM系统的具体代码,供大家参考,具体内容如下 #ATM系统 ##功能 模拟银行ATM机系统,具有注册.登录功能用户登录后可实现以下功能:1)存款 2)取款 3)转账 4)查询 5)退出 ##设计思路 首先,要进行ATM机操作应该具有银行卡和ATM,所以我们要设计一个ATM类和Bankcard类,ATM具有存取款等操作,Bankcard用来记录用户存取款等操作后的越,其次因为ATM同时为多个用户服务,所以我们应该识别每张卡,这里增加一个Bank类来记录银行

  • java实现简单银行管理系统

    本文实例为大家分享了java银行管理系统的具体代码,供大家参考,具体内容如下 账户类 package Account; public abstract class Account { private int id;//账号 private String password;//密码 private String name;//姓名 private String personId;//身份证号码 private String email;//邮箱 private double ceiling;//贷

  • Java 模拟银行自助终端系统

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

  • java代码实现银行管理系统

    本文实例为大家分享了java银行管理系统的具体代码,供大家参考,具体内容如下 银行业务调度 一.系统要求 1.银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口. 2.有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费.电话费之类业务的客户). 3.异步随机生成各种类型的客户,生成各类型用户的概率比例为: VIP客户 :普通客户 :快速客户  =  1 :6 :3. 4.客户办理业务所需时间有最大值和最小值,在该范围内随机设定每个VIP客

  • java实现简单银行家算法

    本文实例为大家分享了java实现银行家算法的具体代码,供大家参考,具体内容如下 题目: 初始时,Allocate[i,j]=0,表示初始时没有进程得到任何资源.假定进程对资源的请求序 列为: Request(1)[M]=(1,0,0); Request(2)[M]=(2,1,0); Request(2)[M]=(2,0,1); Request(3)[M]=(2,1,1); Request(4)[M]=(0,0,2); Request(2)[M]=(1,0,1); Request(1)[M]=(1

  • 以银行取钱为例模拟Java多线程同步问题完整代码

    简单了解下在操作系统中进程和线程的区别: 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程.(进程是资源分配的最小单位) 线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小.(线程是cpu调度的最小单位) 线程和进程一样分为五个阶段:创建.就绪.运行.阻塞.终止. 多进程是指操作系统能同时运行多个任务(程序). 多线程是指在同一程序中有多个顺序流在执行.首先存钱取钱的这个操作,应该是线程操作的

  • Java实现简单银行ATM功能

    本文实例为大家分享了Java实现简单银行ATM功能的具体代码,供大家参考,具体内容如下 实现功能 1.用户需要通过输入银行卡号和密码才能进入ATM系统 2.用户可以在ATM中实现取款.存款.转账.余额查询.退出系统等功能 简单分析 1.创建User类(cardNo,identity,phone,username,password,balance(余额)) 2.创建Bank类,主要实现初始化用户.用户登录.显示菜单.取款.存款.转账.余额查询.退出系统等功能. 代码实现 User.java pub

  • Java实现银行ATM系统

    用Java模拟一个银行ATM系统,供大家参考,具体内容如下 系统功能介绍: 使用面向对象的编程思想,尽可能模拟真实世界中的银行ATM业务流程. main方法里通过调用一行代码,完成整个业务流程的顺序调用. 加入了身份证号,手机号等元素,虽然他们不涉及银行卡的业务处理,但它们是真实世界中办理银行卡的必需条件,这些在代码中也有所体现. 为了尽可能使得随机生成的身份证号码和手机号码和银行卡号切合实际,还手动设计了一个工具类,用来生成随机的号码. 其中涉及到的知识,包括但不限于static修饰符的使用,

  • Java简单实现银行ATM系统

    实现步骤: 定义账户类,用于后期创建账户对象封装用户的账户信息. 账户类中的信息至少需要包含(卡号.姓名.密码.余额.取现额度) 需要准备一个ArrayList的集合,用于存储系统用户的账户对象. 定义一个系统启动类ATMSystem需要展示欢迎页包含2个功能:开户功能.登录账户. 账户类 Account package test;/*账户类*/public class Account {    private String cardId; //卡号    private String user

随机推荐