栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

自学Java第十天-ATM银行系统

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

自学Java第十天-ATM银行系统

需求:

(1)主页面:注册和登录

(2)登录页面:

        1.查询
        2.存钱
        3.取钱
        4.转账
        5.修改密码
        6.退出
        7.注销账户

代码:

package ATMSystem;

public class Accounts {
    private String cardId;
    private String userName;
    private String passWord;
    private double money ;
    private double quotaMoney;//每次取现额度

    public Accounts() {
    }

    public Accounts(String cardId, String userName, String passWord, double money, double quotaMoney) {
        this.cardId = cardId;
        this.userName = userName;
        this.passWord = passWord;
        this.money = money;
        this.quotaMoney = quotaMoney;
    }

    public String getCardId() {
        return cardId;
    }

    public void setCardId(String cardId) {
        this.cardId = cardId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }

    public double getQuotaMoney() {
        return quotaMoney;
    }

    public void setQuotaMoney(double quotaMoney) {
        this.quotaMoney = quotaMoney;
    }
}
package ATMSystem;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

import java.util.ArrayList;
import java.util.Scanner;
import java.util.Random;

public class ATM {
    public static void main(String[] args) {
        ArrayList accounts = new ArrayList<>();
        Scanner myscanner = new Scanner(System.in);
        while (true) {
            System.out.println("请选择你要进行的操作:");
            System.out.println("1.登录账号");
            System.out.println("2.注册账号");
            int command = myscanner.nextInt();
            switch (command){
                case 1://登录
                    setIn(myscanner,accounts);
                    break;
                case 2://注册
                    register(myscanner,accounts);
                    break;
                default: {
                    System.out.println("您的输入有误!");
                }
            }
        }
    }

    private static void register(Scanner myscanner,ArrayList accounts) {
        //1.创建一个对象,用于封装账户信息
        Accounts a = new Accounts();
        //2.接收输入信息
        System.out.print("请输入用户名:");
        String username= myscanner.next();
        a.setUserName(username);

        while (true) {
            System.out.print("请设置密码:");
            String password1 = myscanner.next();
            System.out.print("请确认密码:");
            String password2 = myscanner.next();
            if(password1.equals(password2)){
                a.setPassWord(password1);
                break;
            }else{
                System.out.println("您输入的两次密码不一致!请重新设置密码!");
            }
        }

        System.out.print("请汇入开账金额:");
        double money = myscanner.nextDouble();
        a.setMoney(money);
        System.out.print("请设置每次取现额度:");
        double quotamoney = myscanner.nextDouble();
        a.setQuotaMoney(quotamoney);
        //3.随机生成一个八位银行卡号(不能重复)
        String cardId = getRandomId(accounts);
        a.setCardId(cardId);
        //把封装好的对象放到集合中去
        accounts.add(a);
        System.out.println("恭喜您!您的用户名为" + a.getUserName()+"的账户已经开户完成!您的卡号为:"+a.getCardId());
    }

    private static void setIn(Scanner myscanner,ArrayList accounts) {
        System.out.println("请输入您的卡号:");
        String cardId = myscanner.next();
        for (int i = 0; i < accounts.size(); i++) {
            Accounts a = accounts.get(i);
            if (a.getCardId().equals(cardId)){
                while (true) {
                    System.out.println("请输入您的密码:");
                    String password = myscanner.next();
                    if (a.getPassWord().equals(password)){
                        main2(a,myscanner,accounts);
                        return;
                    }
                    else{
                        System.out.println("您的密码输入错误,请重新输入!");
                    }
                }
            }
        }
        System.out.println("未检测到该账户信息!请注册后登录!");
        return;
    }

    private static void main2(Accounts a,Scanner myscanner,ArrayList accounts) {
        while (true) {
            System.out.println("===============================================");
            System.out.println("尊敬的"+a.getUserName()+"用户您好!欢迎登陆ATM系统!");
            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("请选择你要进行的操作编号:");
            int index = myscanner.nextInt();
            switch (index){
                case 1://查询
                    showAccount(a);
                    break;
                case 2://存钱
                    depositMoney(a,myscanner);
                    System.out.println("存钱成功~");
                    break;
                case 3://取钱
                    drawMoney(a,myscanner);
                    System.out.println("取钱成功~");
                    break;
                case 4://转账
                    transferMoney(a,myscanner,accounts);
                    System.out.println("转账成功~");
                    break;
                case 5://修改密码
                    changePassword(a,myscanner);
                    System.out.println("修改密码成功~");
                    break;
                case 6://退出
                    System.out.println("===========账户退出操作===========");
                    System.out.println("退出成功~");
                   return;
                case 7://注销账户
                    System.out.println("您真的要销户?y/n");
                    String input = myscanner.next();
                    switch (input){
                        case "y":
                            accounts.remove(a);
                            System.out.println("您的账户已注销。");
                            return;
                        default:
                            System.out.println("该账户将为您保留。");
                    }
                    break;
                default:
                    System.out.println("您输入的指令有误,请重新输入!");
            }
        }
    }

    private static void changePassword(Accounts a, Scanner myscanner) {
        System.out.println("===========账户修改密码操作===========");
        while (true) {
            System.out.println("请输入原密码:");
            String password = myscanner.next();
            if(password.equals(a.getPassWord())){
                while (true) {
                    System.out.println("请输入你要更改的密码:");
                    String password1 = myscanner.next();
                    System.out.println("请确认你要更改的密码:");
                    String password2 = myscanner.next();
                    if (password1.equals(password2)){
                        a.setPassWord(password1);
                        return;
                    }else
                        System.out.println("两次密码输入不同!请重新设置!");
                }
            }else
                System.out.println("您输入的密码错误,请重新输入!");
        }
    }

    private static void transferMoney(Accounts a,Scanner myscanner,ArrayList accounts) {
        System.out.println("===========账户转账操作===========");
        Accounts b = new Accounts();
        System.out.println("您当前的账户余额为:"+a.getMoney());
         {
             while (true) {
                 System.out.println("请输入您要转账的用户账号:");
                 String cardId = myscanner.next();
                 if (getAccountByCardId(cardId,accounts) != null){
                     if (cardId.equals(a.getCardId())){
                         System.out.println("对不起,您不能给自己转账!");
                         continue;
                     }
                     b = getAccountByCardId(cardId,accounts);
                     while (true) {
                         System.out.println("您即将给*"+b.getUserName().substring(1)+"转账,请确认姓氏第一个字:");
                         String nameFirst = myscanner.next();
                         if(nameFirst.equals(b.getUserName().substring(0,1))){
                             System.out.println("姓名验证成功!");
                             while (true) {
                                 System.out.println("您当前的账户余额为:"+a.getMoney()+"。请输入你要转给"+b.getUserName()+"的金额:");
                                 double drawmoney = myscanner.nextDouble();
                                 if(drawmoney <= a.getMoney()){
                                     a.setMoney(a.getMoney() - drawmoney);
                                     b.setMoney(b.getMoney() + drawmoney);
                                     return;
                                 }else {
                                     System.out.println("您的余额不足!");
                                     return;
                                 }
                             }
                         }else
                             System.out.println("姓名验证不成功!请重新输入!");
                     }
                 }else {
                     System.out.println("该用户不存在,请先注册账户!");
                 }
             }
         }


    }

    private static void drawMoney(Accounts a,Scanner myscanner) {
        System.out.println("===========账户取钱操作===========");
        System.out.println("您当前的账户余额为:"+a.getMoney()+",您的单次取款额度为:"+a.getQuotaMoney()+"。");
        while (true) {
            System.out.println("请输入您要取的金额:");
            int drawmoney = myscanner.nextInt();
            if(drawmoney < a.getMoney()){
                if (drawmoney <= a.getQuotaMoney()){
                    a.setMoney(a.getMoney() - drawmoney);
                    return;
                }else
                    System.out.println("您要取的金额超过了单次限额!请重新输入!");
            }else
                System.out.println("您要取的金额超过了余额!请重新输入!");
        }
    }

    private static void depositMoney(Accounts a,Scanner myscanner) {
        System.out.println("===========账户存钱操作===========");
        System.out.println("请输入您要存入的金额:");
        double money = myscanner.nextDouble();
        a.setMoney(a.getMoney()+money);
    }

    private static void showAccount(Accounts a) {
        System.out.println("===========账户查询操作===========");
        System.out.println("用户的卡号为:");
        System.out.println(a.getCardId());
        System.out.println("用户名为:");
        System.out.println(a.getUserName());
        System.out.println("卡内余额为:");
        System.out.println(a.getMoney());
        System.out.println("单次取现额度为:");
        System.out.println(a.getQuotaMoney());
    }

    //随机生成一个八位银行卡号不能重复)
    public static String getRandomId(ArrayList accounts) {
        //1.生成八位数字
        Random r = new Random();
        String cardId = "";
        while (true) {
            for (int i = 0; i < 8; i++) {
                cardId += r.nextInt(10);
            }
            //2.要求不能重复
            if (getAccountByCardId(cardId, accounts) == null) {
                return cardId;
            }
        }
    }
//根据卡号查找账户
    public static Accounts getAccountByCardId(String cardId,ArrayList accounts){
        for (int i = 0; i < accounts.size(); i++) {
            Accounts a1 = accounts.get(i);
            if(cardId.equals(a1.getCardId())){
                return a1;
            }
        }
        return null;//代表查找不到这个卡号
    }
}

运行结果:

 

 

结果太多不想截图了……反正就是把菜单里的目录全都操作一遍。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/820308.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号