Java代码零钱通小型课设

1:菜单类

该类主要作用是对功能菜单的实现

import java.util.Scanner;

public class Menu {
    money money = new money();
    Scanner scanner = new Scanner(System.in);
    //提示菜单
    public void prompt() {
        System.out.println("============零钱通菜单============");
        System.out.println("1:零钱通明细");
        System.out.println("2:收益入账");
        System.out.println("3:消费");
        System.out.println("4:退出");
        System.out.println("============输入1~4选择===========");
    }

    //用户功能选择判定
    public void selectMenu() {
        String option = scanner.next().trim();
        label:
        while (true) {
            switch (option) {
                case "1":
                    money.detailsPrint();
                    detailedMenu();
                    selectDetailedMenu();
                    this.prompt();
                    option = scanner.next().trim();
                    break;
                case "2":
                    System.out.println("请输入收益金额!");
                    money.earnings(scanner.nextDouble());
                    returnMenu();
                    option = scanner.next().trim();
                    break;
                case "3":
                    System.out.println("请输入消费商家!");
                    String business = scanner.next().trim();
                    System.out.println("请输入消费金额!");
                    double cons = scanner.nextDouble();
                    money.consume(business, cons);
                    returnMenu();
                    option = scanner.next().trim();
                    break;
                case "4":
                    System.out.println("已退出!");
                    break label;
                default:
                    System.out.println("输入错误!请重新输入");
                    option = scanner.next().trim();
                    break;
            }
        }
    }

    //返回主菜单
    public void returnMenu() {
        System.out.println("输入0返回主菜单!");
        String r = scanner.next().trim();
        while (true) {
            if (r.equals("0")) {
                this.prompt();
                break;
            } else {
                System.out.println("输入错误,请重新输入!");
                r = scanner.next().trim();
            }
        }

    }
    //返回账单明细筛选菜单
    public void returnDetailMenu() {
        System.out.println("输入0返回账单明细筛选菜单!");
        String r = scanner.next().trim();
        while (true) {
            if (r.equals("0")) {
                this.detailedMenu();
                break;
            } else {
                System.out.println("输入错误,请重新输入!");
                r = scanner.next().trim();
            }
        }

    }
    public void detailedMenu() {
        System.out.println("============账单明细筛选============");
        System.out.println("1:只看收益");
        System.out.println("2:只看支出");
        System.out.println("0:返回主菜单");
        System.out.println("============输入0-2选择============");
    }
    //用户账单筛选功能选择判定
    public void selectDetailedMenu(){
        String key = scanner.next().trim();
        do {
            switch (key) {
                case "1":
                    money.earningsRecords();
                    returnDetailMenu();
                    key = scanner.next().trim();
                    break;
                case "2":
                    money.paymentHistory();
                    returnDetailMenu();
                    key = scanner.next().trim();
                    break;
                case "0":
                    break; // 如果用户输入 "0",则退出循环
                default:
                    System.out.println("输入错误!请重新输入");
                    detailedMenu();
                    key = scanner.next().trim();
                    break;
            }
        } while (!"0".equals(key)); // 当用户输入 "0" 时,终止循环

    }

}

2:money类

该类实现对用户余额的操作,账单的保存,查找,与输出

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

class money {
    private final String[] addOrSub = new String[1000];//记录增减操作
    private final String[] amount = new String[1000];//记录增减金额
    private final String[] dateDetail = new String[1000];//记录金额变动时间
    private final String[] balance = new String[1000];//记录对应余额
    private double Money = 54321;
    private int flag = 1;

    //收益
    public void earnings(double Earn) {
        if (Earn <= 0) {
            System.out.println("输入金额错误!");
        } else {
            this.Money += Earn;
            System.out.println("+" + Earn + "元 " + " 余额" + this.Money + "元!");
            details("收益入账", "+" + Earn + "元 ", date(), " 余额" + this.Money + "元!");
        }
    }

    //消费
    public void consume(String Business, double Cons) {
        if (this.Money < Cons) {
            System.out.println("余额不足!支付失败!!!");
        } else if (Cons <= 0) {
            System.out.println("输入金额错误!");
        } else {
            if (largeReminders(Cons)) {
                this.Money -= Cons;
                System.out.println("-" + Cons + "元 " + " 余额:" + this.Money + "元!");
                details(Business, "-" + Cons + "元 ", date(), " 余额" + this.Money + "元!");
            } else {
                System.out.println("已取消支付!");
            }
        }
    }

    //获取消费时间
    public String date() {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date(System.currentTimeMillis());
        return simpleDateFormat.format(date);
    }

    //保存消费记录
    public void details(String AddOrSub, String Amount, String Date, String Detail) {
        addOrSub[flag - 1] = AddOrSub;//记录增减操作
        amount[flag - 1] = Amount;//记录增减金额
        dateDetail[flag - 1] = Date;//记录金额变动时间
        balance[flag - 1] = Detail;//记录对应余额
        this.flag += 1;
    }

    //输出消费记录
    public void detailsPrint() {
        System.out.println("============零钱通明细============");
        if (flag == 1) {
            System.out.println("暂无明细");
            System.out.println("当前余额为:" + this.Money);
        } else {
            for (int i = flag - 2; i >= 0; i--) {
                System.out.println(addOrSub[i] + "\t" + amount[i] + "\t" + dateDetail[i] + "\t" + balance[i] + "\t");
            }
        }
        System.out.println("\n\n");
    }

    //大额消费判定
    public boolean largeReminders(double LargeMoney) {
        Scanner scanner = new Scanner(System.in);
        if (LargeMoney >= 1000) {
            System.out.println("大额交易,请输入 y/n 进行二次确认!");
            String judgment = scanner.next().trim();
            while (true) {
                if (judgment.equals("y") || judgment.equals("Y")) {
                    return true;
                } else if (judgment.equals("n") || judgment.equals("N")) {
                    return false;
                } else {
                    System.out.println("输入错误,请重新输入!");
                    judgment = scanner.next().trim();
                }
            }
        }
        return true;
    }

    //查询收益
    public void earningsRecords() {
        int temp = 0;
        System.out.println("=============入账明细============");
        for (int i = 0; i < flag - 1; i++) {
            if (addOrSub[i].equals("收益入账")) {
                temp = 1;
                System.out.println(dateDetail[i] + "\t" + addOrSub[i] + "\t" + amount[i] + "\t" + balance[i] + "\t");
            }
        }
        if (temp == 0) {
            System.out.println("暂无收益!");
        }
        System.out.println("\n\n");
    }

    //查询支出
    public void paymentHistory() {
        int temp = 0;
        System.out.println("==============支出明细=============");
        for (int i = 0; i < flag - 1; i++) {
            if (!addOrSub[i].equals("收益入账") && addOrSub[i] != null) {
                temp = 1;
                System.out.println(dateDetail[i] + "\t" + addOrSub[i] + "\t" + amount[i] + "\t" + balance[i] + "\t");
            }
        }
        if (temp == 0) {
            System.out.println("暂无支出!");
        }
        System.out.println("\n\n");
    }




}

3:main

public class Main {
    public static void main(String[] args) {
        Menu menu = new Menu();
        menu.prompt();
        menu.selectMenu();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值