用Java制作一个微信零钱充值和提现的简易系统①

本文描述了一位开发者如何使用Java编程语言构建一个类似微信零钱管理的系统,包括充值、提现和退出功能。用户需输入支付密码,连续输错三次后程序将休眠五分钟。文章提供了测试类、操作类、密码类和自定义异常类的部分源代码作为示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随着手机使用的普及,大多数人出门购物都不再带现金,而是使用微信或之支付宝支付,在微信支付,我们都知道我们的钱存储在微信的零钱中,我们可以打开微信零钱,就能对零钱进行充值和提现的操作,于是乎我想,我可不可以用Java制作这样一个类似的系统,有了这个初步想法,我便开始实现:
我先在某网站上大致画了一个操作流程图:
在这里插入图片描述

当中有充值,提现,退出系统三个操作,每次进行充值和提现的操作时需要输入支付密码,当提现金额不足时则会显示提现失败。当支付密码输入错误三次后,重新程序将会休眠五分钟然后自动结束程序(假设用户没有对结束程序的权限),再次运行程序执行操作。
有了思路和流程,让我们开始构建框架,可以大致分为操作类,密码类,自定义异常类和测试类,并在操作类定义余额这一属性和创建充值和提现的方法,大致框架如图所示:
在这里插入图片描述流程和框架图都清晰了,接下来开始在Java中写代码开始制作这样一个系统。
以下是测试类的源码:

import java.util.Scanner;
public class Demo {
    public static void main(String[] args) throws InterruptedException {
        Password p = new Password();
        boolean OperateFlag = true;
        Account a = new Account();
        a.balance = 10000;
        while (OperateFlag){
            System.out.println("当前账户余额为:"+a.getBalance());
            System.out.println("请输入操作编号");
            System.out.println("1.充值");
            System.out.println("2.提现");
            System.out.println("3.退出系统");
            Scanner sc = new Scanner(System.in);
            int number;
                number = sc.nextInt();
            switch (number) {
                case 1 -> {
                    System.out.println("请输入你要充值金额");
                    Scanner sc1 = new Scanner(System.in);
                    double add = sc1.nextDouble();
                    boolean  flag = p.PayPassword();
                    if (flag) {
                        a.deposit(add);
                        System.out.println("充值成功!");
                        System.out.println("您当前账户的余额为: " + a.getBalance());
                    }else {
                        OperateFlag = false;
                    }
                }
                case 2 -> {
                    System.out.println("请输入你要提现的金额");
                    Scanner sc2 = new Scanner(System.in);
                    double delete = sc2.nextDouble();
                    boolean flag = p.PayPassword();
                    if (flag) {
                        try {
                            a.withdraw(delete);
                            System.out.println("您当前账户的余额为: " + a.getBalance());
                        } catch (OverdraftException e) {
                            e.printStackTrace();
                        }
                    }else {
                        OperateFlag = false;
                    }
                }
                case 3 -> OperateFlag = false;
            }
                if (OperateFlag) {
                    System.out.println("是否继续执行操作?按1继续,其他任意键退出");
                    String id = sc.next();
                    if (!id.equals("1")) {
                        OperateFlag = false;
                    }else OperateFlag = true;
                }
                }
            }
        }

操作类:

public class Account {
 double balance ;

    public double getBalance() {//获取账户余额
        return balance;
    }
    public  void deposit(double add){//充值
        balance+=add;
    }
    public  void withdraw(double delete)throws OverdraftException {//提现,并当余额不足时抛出余额透支异常。
        if (balance - delete < 0) {
            throw new  OverdraftException("余额不足");
        }else {
            balance-=delete;
            System.out.println("提现成功");
        }
    }
}

自定义异常类:

public class OverdraftException extends Exception{
    public OverdraftException(String message){
        super(message);
    }

}

密码类:

import java.util.Scanner;

public class Password extends Thread {
Thread thread = new Thread();
    public  boolean PayPassword() throws InterruptedException {
        String password = "123456";
        for (int i = 1; i < 4; i++) {
            System.out.println("请输入支付密码");
            Scanner scanner = new Scanner(System.in);
            String pwd = scanner.nextLine();
            if (pwd.equals(password)) {
                return true;
            }else if(3-i>0){
                System.out.println("支付密码错误,请重试,你还有"+(3-i)+"次机会");
            }else {
                System.out.println("机会次数已用完,请五分钟后再尝试");
                thread.sleep(3000);
                return false;
            }
        }
        return false;
    }
}

代码可能写的不够华丽精简,当然这是制作微信零钱充值和提现系统的第一个版本,后续还会继续创作,比如在输入支付密码错误的时候,应该还需要提供用户选择忘记密码这一操作,通过身份验证修改支付密码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值