编写一个小java程序

问题遇到的现象和发生背景
遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

编写一个银行对新用户进行现金业务办理的系统。(工作)动作:欢迎、离柜提醒、开户、取款、存款。
利用到static方法、构造方法、this关键字等。
思路: 定义一个银行类,银行名字(静态变量)
名字(客户)
密码
余额(balance)
交易额(turnover)
欢迎和离柜(静态方法)+开户(构造方法)+存钱取钱(普通方法)。
再定义一个交易类,用来写主函数,调用银行类里的方法,注意一点:在用户完成存款和取款之后,都要提示账户余额。
必须按要求编写

img

 
import java.util.Scanner;
 
public class Demo01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("------欢迎使用自助存取款系统------");
            System.out.println("请输入账户密码(首次使用请按#注册):");
            String account = scanner.nextLine();
            if (account.equals("#")) {
                System.out.println("请输入新的账户:");
                String account1 = scanner.nextLine();
                System.out.println("请输入密码:");
                String passwd1 = scanner.nextLine();
                System.out.println("请输入用户姓名:");
                String name1 = scanner.nextLine();
                BankOperate.regist(account1, passwd1, name1);
                continue;
            }
            System.out.println("请输入密码:");
            String passwd2 = scanner.nextLine();
            // BankOperate.logine(account, passwd2);
            boolean result = BankOperate.logine(account, passwd2);
            if (result) {
                System.out.println("登录成功,欢迎" + BankTool.account[BankTool.index].getName() + "光临");
                operate();
            } else {
                System.out.println("输入错误,请重新输入。");
            }
        }
    }
 
    public static void operate() {
        Scanner scanner1 = new Scanner(System.in);
        while (true) {
            System.out.println("请选择服务项目:");
            System.out.println("1.存款");
            System.out.println("2.取款");
            System.out.println("3.查询");
            System.out.println("4.退出");
            int n = scanner1.nextInt();
            switch (n) {
 
            case 1:
                System.out.println("请输入存款金额:");
                double money = scanner1.nextDouble();
                BankOperate.save(money);
 
                break;
            case 2:
                System.out.println("请输入取款金额:");
                double money1 = scanner1.nextDouble();
                BankOperate.take(money1);
                break;
            case 3:
                BankOperate.check();
                break;
            case 4:
 
                return;
 
            default:
                System.out.println("输入错误,请重新输入。");
                break;
            }
        }
    }
}
package com.coding.study09;
 
public class Account {
    String account;
    String passwd;
    String name;
    double money;
 
    public Account(String account, String passwd, String name) {
        this.account = account;
        this.passwd = passwd;
        this.name = name;
    }
 
    public String getAccount() {
        return account;
    }
 
    public void setAccount(String account) {
        this.account = account;
    }
 
    public String getPasswd() {
        return passwd;
    }
 
    public void setPasswd(String passwd) {
        this.passwd = passwd;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public double getMoney() {
        return money;
    }
 
    public void setMoney(double money) {
        this.money = money;
    }
 
}
package com.coding.study09;
 
public class BankOperate {
    public static void regist(String account, String passwd, String name) {
        Account account1 = new Account(account, passwd, name);
        for (int i = 0; i < BankTool.account.length; i++) {
            if (BankTool.account[i] == null) {
                BankTool.account[i] = account1;
                System.out.println("注册成功");
                break;
            }
        }
    }
 
    public static boolean logine(String account, String passwd) {
        for (int i = 0; i < BankTool.account.length; i++) {
            if (BankTool.account[i] != null) {
                if (account.equals(BankTool.account[i].getAccount())
                        && passwd.equals(BankTool.account[i].getPasswd())) {
                    BankTool.index = i;
                    return true;
                }
            }
        }
        return false;
    }
 
    public static void save(double money) {
        BankTool.account[BankTool.index].setMoney(BankTool.account[BankTool.index].getMoney() + money);
        System.out.println("存钱成功");
    }
 
    public static void take(double money) {
        BankTool.account[BankTool.index].setMoney(BankTool.account[BankTool.index].getMoney() - money);
        System.out.println("取钱成功");
    }
 
    public static void check() {
        System.out.println("当前账户余额为:"+BankTool.account[BankTool.index].getMoney());
    }
}
package com.coding.study09;
 
public class BankTool {
    public static Account[] account=new Account[100];
    public static int index=0;
}

代码如下,记得采纳一下哦!

img

class Bank {
    // 银行名字(静态变量)
    private static String bankName = "ABC Bank";
    // 客户名字
    private String name;
    // 密码
    private String password;
    // 余额
    private double balance;
    // 交易额
    private double turnover;

    // 欢迎(静态方法)
    public static void welcome() {
        System.out.println("欢迎来到" + bankName + "!");
    }

    // 离柜提醒(静态方法)
    public static void goodbye() {
        System.out.println("谢谢惠顾,欢迎下次光临!");
    }

    // 开户(构造方法)
    public Bank(String name, String password) {
        this.name = name;
        this.password = password;
        // 开户时余额为0
        this.balance = 0;
        // 开户时交易额为0
        this.turnover = 0;
        System.out.println("恭喜" + name + "成功开户!");
    }

    // 存款
    public void deposit(double amount) {
        this.balance += amount;
        this.turnover += amount;
        System.out.println(name + "成功存入" + amount + "元,余额为" + balance + "元。");
    }

    // 取款
    public void withdraw(double amount) {
        if (amount > this.balance) {
            System.out.println(name + "余额不足,无法取款。");
        } else {
            this.balance -= amount;
            this.turnover += amount;
            System.out.println(name + "成功取出" + amount + "元,余额为" + balance + "元。");
        }
    }
}

// 定义测试类
public class Test {
    public static void main(String[] args) {
        Bank.welcome(); // 开户
        Bank user1 = new Bank("张三", "123456");
        // 存款
        user1.deposit(1000);
        // 取款
        user1.withdraw(40);
    }
}

请参考实例【Java 编写一个银行新用户现金业务办理程序】,链接:https://blog.csdn.net/m0_46824767/article/details/105549097

命令行?还是GUI?

根据理解代码如下:

package bank;

public class Bank {
    static String name;
    private float balance;
    private String customerName;

    public Bank(float balance,String customerName){
        this.balance=balance;
        this.customerName=customerName;
    }

    public static void ShowWelcome(){
        System.out.println(name+"银行,欢迎您");
    }
    public static void ShowBye(){
        System.out.println("欢迎下次光临");
    }

    public void withdraw (float count){
        this.balance-=count;
        System.out.println("尊敬的"+customerName+",您的余额为"+balance);
    }

    public void save(float count){
        this.balance+=count;
        System.out.println("尊敬的"+customerName+",您的余额为"+balance);
    }
}
package bank;

public class Trade {
    public static void main(String[] args) {
        //设置银行名称
        Bank.name="TEST银行";
        //欢迎
        Bank.ShowWelcome();
        //开户
        Bank bank=new Bank(1000,"test");
        //取钱
        bank.withdraw(100);
        //存钱
        bank.save(100);
        //离柜提醒
        Bank.ShowBye();
    }
}

java实现银行新用户现金业务办理
如有帮助,望采纳

package cn.ls.BankSystem;
 
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Scanner;
 
public class Menu {
    public static void main(String[] args) throws AllException, StopException, SQLException {
        int flag = 0; // 记录用户是否开户
        Scanner sc = new Scanner(System.in);
        Users menu = new Users();
        while (true) {
            System.out.println("**************************");
            System.out.println("\t银行管理系统");
            System.out.println("\t********");
            System.out.println("    1.开户\t2.存钱");
            System.out.println("    3.取钱\t4.退出");
            System.out.print("请输入选项:");
            String choose;
            try {
 
                choose = sc.next();
                if (choose.equals("1")) {
                    menu.creat();
                    flag = 1;
                } else if (choose.equals("2")) {
                    if (flag == 1) {
                        menu.save();
 
                    } else {
                        throw new AllException("账户不存在, 请选择“1”开户!\n");
                    }
                } else if (choose.equals("3")) {
                    if (flag == 1) {
                        menu.draw();
                    } else {
                        throw new AllException("账户不存在, 请选择“1”开户!\n");
                    }
 
                } else if (choose.equals("4")) {
                    System.out.println("欢迎下次光临!");
                    break;
                } else {
                    throw new AllException("您输入的序号不存在,请重新输入!\n");
                }
            } catch (AllException e) {
                System.out.println(e.getMessage());
            }
 
        }
        
    }
}

package cn.ls.BankSystem;
 
public class AllException extends Exception {
    public AllException(String msg) {
        super(msg); // 获取父类的方法 获得文本信息
    }
 
}
 
class StopException extends Exception {
    public StopException(String msg) {
        super(msg);
    }
}


package cn.ls.BankSystem;
 
import java.sql.SQLException;
import java.util.Scanner;
 
public class Users {
    Scanner sc = new Scanner(System.in);
    String username = "张三";
    String usercount = "123456";
    String passwd = "123456";
    int money = 5;
    BankSystem user1 = new BankSystem(username); // 创建银行的对象
 
    // 开户
    public void creat() throws AllException, StopException {
        int numcount = 3;
        boolean flag = user1.creatCount(usercount, passwd, money);
        numcount--;
        // judge(flag, numcount);
        while (true) {
            try {
                if (flag == true) {
                    break;
                } else if (flag == false) {
                    throw new AllException("开户金额不足,请继续支付:");
                }
 
                if (numcount <= 0) {
                    throw new StopException("账号或密码错误次数超过三次,已锁定账号!");
                }
            } catch (AllException e) {
                System.out.println(e.getMessage());
                money = sc.nextInt();
                flag = user1.creatCount(usercount, passwd, money);
                numcount--;
            } catch (StopException e) {
                System.out.println(e.getMessage());
                break;
            }
        }
 
    }
 
    // 存钱
    public void save() throws AllException, StopException, SQLException {
        System.out.println("存钱前,请输入账号密码和金额~~");
        System.out.print("账号:");
        usercount = sc.next();
        System.out.print("密码:");
        passwd = sc.next();
        System.out.print("金额:");
        money = sc.nextInt();
        int numcount = 3;
        boolean flag = user1.SaveMoney(usercount, passwd, money);
        numcount--;
        while (true) {
            try {
                // System.out.println(numcount+"!!");
                if (flag == true) {
                    break;
                } else if (flag == false) {
                    if (numcount <= 0) {
                        throw new StopException("账号或密码错误次数超过三次,已锁定账号!");
                    }
                    throw new AllException("账号或密码错误,剩余输入次数" + numcount + "次,请重新输入");
                }
 
            } catch (AllException e) {
                System.out.println(e.getMessage());
                numcount--;
                System.out.print("账号:");
                usercount = sc.next();
                System.out.print("密码:");
                passwd = sc.next();
                System.out.print("金额:");
                money = sc.nextInt();
                flag = user1.SaveMoney(usercount, passwd, money);
            } catch (StopException e) {
                System.out.println(e.getMessage());
                break;
            }
        }
    }
 
    // 取钱
    public void draw() throws AllException, StopException, SQLException {
        // BankSystem user1 = new BankSystem(name);
        System.out.println("取钱前,请输入账号密码和金额##");
        System.out.print("账号:");
        usercount = sc.next();
        System.out.print("密码:");
        passwd = sc.next();
        System.out.print("金额:");
        money = sc.nextInt();
        int numcount = 3;
        boolean flag = user1.DrawMoney(usercount, passwd, money);
        numcount--;
        while (true) {
            try {
                if (flag == true) {
                    break;
                } else if (flag == false) {
                    if (numcount <= 0) {
                        throw new StopException("账号或密码错误次数超过三次,已锁定账号!");
                    }
                    throw new AllException("账号或密码错误,剩余输入次数" + numcount + "次,请重新输入");
 
                }
 
            } catch (AllException e) {
                System.out.println(e.getMessage());
                numcount--;
                System.out.print("账号:");
                usercount = sc.next();
                System.out.print("密码:");
                passwd = sc.next();
                System.out.print("金额:");
                money = sc.nextInt();
                flag = user1.DrawMoney(usercount, passwd, money);
            } catch (StopException e) {
                System.out.println(e.getMessage());
                break;
            }
        }
    }
}


package cn.ls.BankSystem;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
 
public class BankSystem {
    String Name;
    int money = 0;
    String usercount;
    String passwd;
 
    // 欢迎客户
    public BankSystem(String name) {
        Name = name;
        System.out.println("---------欢迎 来到, " + name + "---------");
    }
 
    // 开户业务
    public boolean creatCount(String usercount1, String passwd1, int money1) {
        usercount = usercount1;
        passwd = passwd1;
        money += money1;
 
        if (money >= 10) {
            money -= 10;
            System.out.println(Name + "开户成功, 账户余额为:" + money);
            return true;
        } else {
 
            System.out.println("开户金额的10元, 您支付的钱币的为" + money + "元, 还差" + (10 - money) + "元。");
            return false;
 
        }
    }
 
    // 存钱业务
    public boolean SaveMoney(String usercount1, String passwd1, int money1) throws SQLException {
        Connection con = JDBCUtils.getConnection();
        String sql = "select username from t_bank where usercount = ? and passwd = ?";
        // 对sql语句进行预编译
        PreparedStatement ps = con.prepareStatement(sql);
        // 赋值
        ps.setString(1, usercount1);
        ps.setString(2, passwd1);
        ResultSet rs = ps.executeQuery();
 
        if (rs.next()) {
            money += money1;
            System.out.println(Name + "您好, 您的账号已存入" + money1 + ", 当前余额为:" + money + "元。");
 
            return true;
        } else {
 
            return false;
        }
 
    }
 
    // 取钱业务
    public boolean DrawMoney(String usercount1, String passwd1, int money1) throws SQLException {
        Connection con = JDBCUtils.getConnection();
        String sql = "select username from t_bank where usercount = ? and passwd = ?";
        // 对sql语句进行预编译
        PreparedStatement ps = con.prepareStatement(sql);
        // 赋值
        ps.setString(1, usercount1);
        ps.setString(2, passwd1);
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            if (money1 <= money) {
                money -= money1;
                System.out.println(Name + "您好, 您的账号已取出" + money1 + ", 当前余额为:" + money + "元。");
 
                return true;
            } else {
                System.out.println("余额不足,当前余额为" + money + "元,请重新输入取出金额:");
                while (money1 > money) {
                    Scanner input = new Scanner(System.in);
                    money1 = input.nextInt();
                }
                money -= money1;
                System.out.println(Name + "您好, 您的账号已取出" + money1 + ", 当前余额为:" + money + "元。");
 
                return true;
 
            }
        }
 
        return false;
 
    }
 
}


package cn.itcast.jabcutil;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
public class JDBCUtils {
    private JDBCUtils() {
    }
 
    private static Connection con;
    static {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/mybase?serverTimezone=UTC";
            String username = "root", password = "ls12345";
            con = DriverManager.getConnection(url, username, password);
        } catch (Exception e) {
            throw new RuntimeException(e + "数据库连接失败");
        }
 
    }
 
    public static Connection getConnection() {
        return con;
    }
 
    public static void close(Connection con, Statement stat, ResultSet re) {
        if (con != null) {
            try {
                con.close();
            } catch (SQLException e) {
            }
        }
        if (stat != null) {
            try {
                stat.close();
            } catch (SQLException e) {
            }
        }
        if (re != null) {
            try {
                re.close();
            } catch (SQLException e) {
            }
        }
    }
 
    public static void close(Connection con, Statement stat) {
        if (con != null) {
            try {
                con.close();
            } catch (SQLException e) {
            }
        }
        if (stat != null) {
            try {
                stat.close();
            } catch (SQLException e) {
            }
        }
    }
}

代码如下,有详细注释,如有帮助,望采纳,有问题欢迎讨论

import java.math.BigDecimal;

//银行类
public class Bank {
    //银行名字,用静态变量表示
    private static String bankName;
    //客户名字
    private String customerName;
    //密码
    private String passWord;
    //余额
    private String balance;
    //交易额
    private String turnover;

    //构造有参方法 开户(构造方法)
    public Bank(String bankName, String customerName, String passWord, String balance, String turnover) {
        //静态变量用类名引用
        Bank.bankName = bankName;
        //成员变量用this引用
        this.customerName = customerName;
        this.passWord = passWord;
        this.balance = balance;
        this.turnover = turnover;
    }

    //定义无参构造方法
    public Bank() {

    }

    public String getCustomerName() {
        return customerName;
    }

    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }

    public String getPassWord() {
        return passWord;
    }

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

    public String getBalance() {
        return balance;
    }

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

    public String getTurnover() {
        return turnover;
    }

    public void setTurnover(String turnover) {
        this.turnover = turnover;
    }

    //以下定义银行类方法
    //欢迎方法  静态方法
    public static void welcome() {
        System.out.println("欢迎您光临" + bankName);
    }

    //离柜方法 静态方法
    public static void leave() {
        System.out.println("客户离柜,欢迎下次光临" + bankName);
    }

    //存钱(普通方法)
    public void addMoney(String money) {
        //存入金额
        BigDecimal addMoney = new BigDecimal(money);
        //当前余额
        BigDecimal balance = new BigDecimal(this.balance);
        //存钱后余额
        BigDecimal newBalance = addMoney.add(balance);
        //赋值操作
        this.balance = newBalance.toString();
        //提示账户余额
        System.out.println("存钱成功,当前账户余额为【" + this.balance + "】");
    }

    //取钱(普通方法)
    public void plusMoney(String money) {
        //取出金额
        BigDecimal plusMoney = new BigDecimal(money);
        //当前余额
        BigDecimal balance = new BigDecimal(this.balance);
        //取出后余额
        BigDecimal newBalance = balance.subtract(plusMoney);
        //如果余额小于0,不允许取款
        if (newBalance.compareTo(new BigDecimal("0.0")) < 0) {
            System.out.println("账户余额不足,不允许取款");
            return;
        }
        //赋值操作
        this.balance = newBalance.toString();
        //提示账户余额
        System.out.println("取钱成功,当前账户余额为【" + this.balance + "】");
    }
}


import java.util.Scanner;

//测试类
public class Deal {
    public static void main(String[] args) {
        //创建银行对象信息
        Bank bank = new Bank("中国银行", "李先生", "123456", "100.0", "0.0");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入密码");
        String pwd = scanner.nextLine();
        while (!bank.getPassWord().equals(pwd)) {
            System.out.println("密码错误,请重新输入");
            pwd = scanner.nextLine();
        }
        System.out.println("请输入取款金额");
        String turnover = scanner.nextLine();
        //调用银行取款方法
        bank.plusMoney(turnover);
        System.out.println("请输入存款金额");
        turnover = scanner.nextLine();
        //调用银行存款方法
        bank.addMoney(turnover);
    }
}


运行结果如下

img