用java实现简易的银行系统

用java实现简易的银行系统

创建银行系统 实现多用户的开户 存款 取款 查询余额功能
在这里插入图片描述

思路
新建两个类:
1.(users)用户类 用于存储用户个人信息

  • 用户的卡号
  • 姓名
  • 密码
  • 余额

2.(manageUsersfunction) 功能实现类 用于实现银行系统的功能

  • 实现功能类
  • 开户
  • 存钱
  • 取钱
  • 查余额
  • 登录

要求:
Q:如何确保id的唯一性
用一个id数组存储 用于后续新增id比较

代码:

用户类

用于设置基本的用户信息

/**
 * 用户类 用于存储用户的卡号、姓名、密码、余额等属性
 */
class  users{

    /**
     * 创建私有类封装用户的个人信息
     */

    private String name;//存储用户姓名
    private long id;//存储用户的卡号
    private int password;//存储用户的密码
    private double balance;//存储用户的余额

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public int getPassword() {
        return password;
    }

    public void setPassword(int password) {
        this.password = password;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }

}

功能实现类

实现银行的功能

/**
 * 实现功能类
 * 1.开户
 * 2.存钱
 * 3.取钱
 * 4.查余额
 * 5.登录
 */
class manageUsersfunction {


    /**
     * 创建一个arraylist数组用于存储user全部用户
     */
   ArrayList<users> userslist=new ArrayList<>();


    /**
     * 存储1000个卡号用于判断是否有重复
     */
      long[] cardId = new long[1000];


    /**
     * 主界面
     */
 void start() {
     System.out.println("===========================================");
     System.out.println("欢迎登录银行系统!");
     System.out.println("===========================================");
     System.out.println();
     System.out.println("请选择您需要的功能: (1)开户           (2)登录               (3)退出程序");
     while (true){
         Scanner scanner = new Scanner(System.in);
         if (scanner.hasNextInt()) {//scanner.hasNextInt  判断输入为int类型
             int num = scanner.nextInt();

             if (num > 0 && num < 4) {
                 switch (num) {
                     /**
                      * 新增用户后 给用户选择登录或再新增 返回主程序界面
                      */
                     case 1:
                         add();
                         System.out.println("请选择您需要的功能: (1)开户           (2)登录               (3)退出程序");
                         continue;
                     case 2:
                         signIn();
                     case 3:
                         System.out.println("您的银行程序已结束,谢谢使用!");
                         break;

                 }

             } else {
                 System.out.println("没有此功能请重新输入!");
                 continue;
             }
         }
         else {
             System.out.println("没有此功能请重新输入!");
             scanner.next();//一定要写 不然用户写的数据会保存在缓存中,这样可以清空数据
         }
     }
 }


    /**
     * 新增用户
     */
    void add(){
        double balance=0;
        users user=new users();

        System.out.println("请输入你的姓名:");
        Scanner sc=new Scanner(System.in);
        String name=sc.next();

        /**
         * 依次存入user数据 姓名 id卡号 密码 余额
         */
        userslist.add(user);
        user.setName(name);
        user.setId(noRepeat(user));
        user.setPassword(check(user));
        user.setBalance(balance);
        System.out.println("您已成功开户!");
        System.out.println("你的姓名为:"+user.getName());
        System.out.println("您的id卡号为:"+user.getId());
        System.out.println("您的余额为:"+user.getBalance());
    }


    /**
     * 登录
     */
    void signIn(){
        A:
        while (true) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入你的账户:");
            boolean reInputPwd = true;


            if (scanner.hasNextLong()) {

                long id = scanner.nextLong();

                if (index(id) >= 0) {
                    /**
                     * 用户存在,判断输入的密码
                     */
                    B:
                    while (reInputPwd) {
                        System.out.println("请输入你的密码:");
                        int password = scanner.nextInt();
                        /**
                         * 判断密码是否输入错误
                         */
                        if (userslist.get(index(id)).getPassword() == password) {
                            System.out.println("成功登录!请选择您想要的功能");
                            /**
                             * 功能方法 1.存款 2.取款 3.查询余额
                             */
                            D:
                            while (true) {
                                System.out.println("(1)存款     (2)取款    (3)查询余额      (4)返回主界面 ");
                                if (scanner.hasNextInt()) {
                                    int num = scanner.nextInt();
                                    if (num > 0 && num < 5) {
                                        switch (num) {
                                            /**
                                             * 新增用户后 给用户选择登录或再新增 返回主程序界面
                                             */
                                            case 1:
                                                deposit(userslist.get(index(id)));
                                                System.out.println("请选择您想要的功能:");
                                                continue D;

                                            case 2:
                                                withdrawal(userslist.get(index(id)));
                                                System.out.println("请选择您想要的功能:");
                                                continue D;
                                            case 3:
                                                checkBalance(userslist.get(index(id)));
                                                System.out.println("请选择您想要的功能:");
                                                continue D;
                                            case 4:
                                                System.out.println("您的程序已结束");
                                                start();
                                                /**
                                                 * 返回主界面
                                                 */
                                        }
                                        break;
                                    } else {
                                        System.out.println("没有此功能请重新输入!");
                                        continue D;
                                    }
                                } else {
                                    System.out.println("没有此功能请重新输入!");
                                    scanner.next();//一定要写 不然用户写的数据会保存在缓存中,这样可以清空数据
                                }
                            }
                        } else {
                            System.out.println("密码输入错误请重新输入");
                            continue B;
                        }


                    }
                } else {
                    System.out.println("该账号不存在!");
                    C:
                    while (true) {
                        System.out.println("(1)重输id     (2)新建用户    (3)返回主界面");
                        if (scanner.hasNextInt()) {
                            int num = scanner.nextInt();
                            if (num > 0 && num < 4) {
                                switch (num) {
                                    case 1:
                                        continue A;

                                        /**
                                         * 新增用户后 给用户选择登录或再新增 返回主程序界面
                                         */
                                    case 2:
                                        add();
                                        break A;

                                    case 3:
                                        System.out.println("您的程序已结束!");
                                        start();
                                        break A;
                                }
                                break;
                            } else {
                                System.out.println("没有此功能请重新输入!");
                                continue C;
                            }
                        } else {
                            System.out.println("没有此功能请重新输入!");
                            scanner.next();//一定要写 不然用户写的数据会保存在缓存中,这样可以清空数据
                        }

                    }


                }

            }
            else {
                System.out.println("账号格式输入错误!");
                continue A;
            }


        }

    }


    /**
     *
     *返回id对于的arrays里的下标 用于保证id的唯一
     */
    int index (long id){
        int index=-1;
        for (int i = 0; i <userslist.size() ; i++) {
            if(id==userslist.get(i).getId()){
               index=i;
               break;
            }
        }
        return  index;//返回对应id用户的在list中的位置
    }


    /**
     *
     *存款
     */
    void deposit(users user){
        System.out.println("您当前的余额:"+user.getBalance());
        System.out.println("请输入您要存款的金额");
        Scanner scanner=new Scanner(System.in);
        Double deposit;

        /**
         * while循环判断输入格式是否正确
         *
         */
        while(true) {
           if (scanner.hasNextDouble()) {
               deposit = scanner.nextDouble();
               if(deposit>0){
                   break;
               }
               else {System.out.println("输入的金额必须为正数!");
                     System.out.println("请重新输入:");
               }
           } else if (!scanner.hasNextInt()) {
               System.out.println("输入格式不正确请再次输入:");
               scanner.next();//一定要写 不然用户写的数据会保存在缓存中,这样可以清空数据
           }
       }

        System.out.println("您已成功存储金额!");
        user.setBalance(user.getBalance()+deposit);
        System.out.println("您当前的金额为:"+user.getBalance());

    }


    /**
     * 取款
     */
    void withdrawal(users user){
        System.out.println("您当前的余额:"+user.getBalance());
        System.out.println("请输入您要取款的金额");
        Scanner scanner=new Scanner(System.in);
        Double withdrawal;

        /**
         * while循环判断输入格式是否正确
         *
         */
        A:
        while (true) {
            B:
            while (true) {
                if (scanner.hasNextDouble()) {
                    withdrawal = scanner.nextDouble();
                    if (withdrawal > 0) {
                        if (withdrawal <= user.getBalance()) {
                            break;
                        } else {
                            System.out.println("您没有足够的钱取出!");
                            break A;

                        }

                    } else {
                        System.out.println("输入的金额必须为正数!");
                        System.out.println("请重新输入:");
                    }
                } else if (!scanner.hasNextInt()) {
                    System.out.println("输入格式不正确请再次输入:");
                    scanner.next();//一定要写 不然用户写的数据会保存在缓存中,这样可以清空数据
                }
            }

            System.out.println("您已成功存储金额!");
            user.setBalance(user.getBalance() - withdrawal);
            System.out.println("您当前的金额为:" + user.getBalance());
            break A;
        }


    }


    /**
     * 查询余额
     */
    void checkBalance(users user){

        System.out.println("您当前的余额为:"+user.getBalance());

    }


    /**
     * 获得银行卡的账户
     */
    int check(users user) {

        int[] pwd = new int[2];//存储两位密码用于比较验证
        boolean bool = true;//用于判断是否继续while循环重输入密码

        while (bool) {

            System.out.println("请输入你的密码(提示:密码为6位整数):");
            Scanner scanner = new Scanner(System.in);

            /**
             * for循环直达输入为int类型进入下一个密码输入
             */
            for (int i = 0; i < 2; i++) {
                if (scanner.hasNextInt()) {
                    pwd[i] = scanner.nextInt();
                    if(pwd[i]>=100000&&pwd[i]<=999999){
                        if(i==0){
                            System.out.println("输入成功请再次输入密码:");
                        }
                    }

                    else {
                        i = i - 1;
                        System.out.println("请正确输入6位正整数密码");
                        continue;
                    }

                }
                else if(!scanner.hasNextInt()) {
                    i = i - 1;
                    System.out.println("输入格式不正确请再次输入:");
                    scanner.next();//一定要写 不然用户写的数据会保存在缓存中,这样可以清空数据
                    continue;
                }
            }
            /**
             * 条件判断两次密码是否一直是否需要重新输入
             */

            if (pwd[0] == pwd[1]) {
                bool = false;
                System.out.println("您的密码验证成功,您已经成功开户!");
            } else {
                bool = true;
                System.out.println("您两次输入密码不同!请再重新输入");
            }

        }
        return pwd[0];//方法结束返回密码

    }


    /**
     * 用与判断是否有重复的id 若有则反复直到没有重复id
     */
    long noRepeat(users user) {
        boolean bool = true;
        long id = 0;
        A:
        while (bool) {
            long id_ = (long) ((Math.random() * 9 + 1) * 1e10);//19位卡号
            /**
             * 逐个查看是否有卡号重复
             */
            for (int i = 0; i < userslist.size(); i++) {
                if (userslist.get(i).getId() == id_) {
                    bool = true;
                    continue A;
                }
            }

            bool = false;
            id = id_;

        }
        return id;

    }

}

调用方法 运行银行系统


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

public class text {
    public static void main(String[] args) {
        manageUsersfunction muf=new manageUsersfunction();
        muf.start();
    }
}

版权声明:本文为weixin_52122032原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。