java-零钱通(项目)

Posted -深蓝。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java-零钱通(项目)相关的知识,希望对你有一定的参考价值。

java-零钱通介绍




java-零钱通菜单




源码
package com.Start300.SmallChange;

import java.util.Scanner;

public class SmallChangeSys {
//化繁为简
//1.先完成显示菜单 并可以选择 给吃对应提示
public static void main(String[] args) {
//定义相应的变量
boolean loop = true;
Scanner scanner = new Scanner(System.in);
String key = “”;
do {//至少输出一次
System.out.println(“零钱通菜单==”);
System.out.println("\\t\\t\\t1 零钱通明细");
System.out.println("\\t\\t\\t2 收益入账");
System.out.println("\\t\\t\\t3 消费");
System.out.println("\\t\\t\\t4 退 出");

        System.out.println("请选择(1-4)");
        key = scanner.next();

        //使用switch分支结构
        switch (key) {
            case "1"://输入1 则显示零钱通明细
                System.out.println("1 零钱通明细");
                break;
            case "2"://输入1 则显示零钱通明细
                System.out.println("2 收益入账");
                break;
            case "3"://输入1 则显示零钱通明细
                System.out.println("3 消费");
                break;
            case "4"://输入1 则显示零钱通明细
                System.out.println("4 退   出");
                loop = false;
                break;
            default:
                System.out.println("选择有误 请重新选择");
        }
    } while (loop);
    System.out.println("———————————退出了零钱通————————————");
}

}

零钱通明细




零钱通收益



源码
package com.Start300.SmallChange;

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

public class SmallChangeSys {
//化繁为简
//1.先完成显示菜单 并可以选择 给吃对应提示
//2.完成零钱通明细
//3.完成收益入账
public static void main(String[] args) {
//定义相应的变量
boolean loop = true;
Scanner scanner = new Scanner(System.in);
String key = “”;

//2.完成零钱通明细
//(1)可以把收益入账和消费保存到数组 (2)可以使用对象 (3)简单的话可以使用String拼接
String details = “--------------零钱通明细----------------”;

    //3.完成收益入账 完成功能驱动程序员增加新的变量和代码
    //定义新的变量
    double money = 0;
    double balance = 0;//balance 余额
    Date date = null;//date是java.util.Date类型,表示日期
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    //上面是用来日期格式化的 具体以后还会说到 这里只是了解即可

    do {//至少输出一次
        System.out.println("\\n==============零钱通菜单================");
        System.out.println("\\t\\t\\t1 零钱通明细");
        System.out.println("\\t\\t\\t2 收益入账");
        System.out.println("\\t\\t\\t3 消费");
        System.out.println("\\t\\t\\t4 退     出");

        System.out.println("请选择(1-4)");
        key = scanner.next();

        //使用switch分支结构
        switch (key) {
            case "1":
                System.out.println(details);
                break;
            case "2":
                System.out.print("收益入账金额");
                money = scanner.nextDouble();
                //money 的值范围应该效验 一会在完善
                balance += money;//这里因为是入账 所以是+
                //拼接收益入账信息到details
                date = new Date();//获取当前日期
                //System.out.println(sdf.format(date));//用sdf格式化当前日期
                details += "\\n收益入账\\t+" + money + "\\t" + sdf.format(date)
                        + "\\t" + "余额" + balance;

                break;
            case "3":
                System.out.println("3 消费");
                break;
            case "4":
                System.out.println("4 退   出");
                loop = false;
                break;
            default:
                System.out.println("选择有误 请重新选择");
        }
    } while (loop);
    System.out.println("———————————退出了零钱通————————————");
}

}

零钱通消费



源码
package com.Start300.SmallChange;

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

public class SmallChangeSys {
//化繁为简
//1.先完成显示菜单 并可以选择 给吃对应提示
//2.完成零钱通明细
//3.完成收益入账
//4.消费
public static void main(String[] args) {
//定义相应的变量
boolean loop = true;
Scanner scanner = new Scanner(System.in);
String key = “”;

//2.完成零钱通明细
//(1)可以把收益入账和消费保存到数组 (2)可以使用对象 (3)简单的话可以使用String拼接
String details = “--------------零钱通明细----------------”;

    //3.完成收益入账 完成功能驱动程序员增加新的变量和代码
    //定义新的变量
    double money = 0;
    double balance = 0;//balance 余额
    Date date = null;//date是java.util.Date类型,表示日期
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    //上面是用来日期格式化的 具体以后还会说到 这里只是了解即可

    //4.消费
    //定义新变量 保存消费的原因
    String note = "";

    do {//至少输出一次
        System.out.println("\\n==============零钱通菜单================");
        System.out.println("\\t\\t\\t1 零钱通明细");
        System.out.println("\\t\\t\\t2 收益入账");
        System.out.println("\\t\\t\\t3 消费");
        System.out.println("\\t\\t\\t4 退     出");

        System.out.println("请选择(1-4)");
        key = scanner.next();

        //使用switch分支结构
        switch (key) {
            case "1":
                System.out.println(details);
                break;
            case "2":
                System.out.print("收益入账金额");
                money = scanner.nextDouble();
                //money 的值范围应该效验 一会在完善
                balance += money;//这里因为是入账 所以是+
                //拼接收益入账信息到details
                date = new Date();//获取当前日期
                //System.out.println(sdf.format(date));//用sdf格式化当前日期
                details += "\\n收益入账\\t+" + money + "\\t" + sdf.format(date)
                        + "\\t" + "余额" + balance;

                break;
            case "3":
                System.out.print("消费金额");
                money = scanner.nextDouble();
                //money 的值范围应该效验余额只有100 消费200肯定是不行的 一会在改善
                System.out.print("消费说明:");
                note = scanner.next();
                balance -= money;
                //拼接消费信息到details
                date = new Date();//获取当前日期
                details += "\\n" + note + "\\t-" + money + "\\t" +
                        sdf.format(date) + "\\t" + "余额" + balance;
                break;
            case "4":
                System.out.println("4 退   出");
                loop = false;
                break;
            default:
                System.out.println("选择有误 请重新选择");
        }
    } while (loop);
    System.out.println("———————————退出了零钱通————————————");
}

}

零钱通退出确认




源码
package com.Start300.SmallChange;

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

public class SmallChangeSys {
//化繁为简
//1.先完成显示菜单 并可以选择 给吃对应提示
//2.完成零钱通明细
//3.完成收益入账
//4.消费
//5.退出
//6.用户输入4退出时 给出提示y/n
public static void main(String[] args) {
//定义相应的变量
boolean loop = true;
Scanner scanner = new Scanner(System.in);
String key = “”;

//2.完成零钱通明细
//(1)可以把收益入账和消费保存到数组 (2)可以使用对象 (3)简单的话可以使用String拼接
String details = “--------------零钱通明细----------------”;

    //3.完成收益入账 完成功能驱动程序员增加新的变量和代码
    //定义新的变量
    double money = 0;
    double balance = 0;//balance 余额
    Date date = null;//date是java.util.Date类型,表示日期
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    //上面是用来日期格式化的 具体以后还会说到 这里只是了解即可

    //4.消费
    //定义新变量 保存消费的原因
    String note = "";

    do {//至少输出一次
        System.out.println("\\n==============零钱通菜单================");
        System.out.println("\\t\\t\\t1 零钱通明细");
        System.out.println("\\t\\t\\t2 收益入账");
        System.out.println("\\t\\t\\t3 消费");
        System.out.println("\\t\\t\\t4 退     出");

        System.out.println("请选择(1-4)");
        key = scanner.next();

        //使用switch分支结构
        switch (key) {
            case "1":
                System.out.println(details);
                break;
            case "2":
                System.out.print("收益入账金额");
                money = scanner.nextDouble();
                //money 的值范围应该效验 一会在完善
                balance += money;//这里因为是入账 所以是+
                //拼接收益入账信息到details
                date = new Date();//获取当前日期
                //System.out.println(sdf.format(date));//用sdf格式化当前日期
                details += "\\n收益入账\\t+" + money + "\\t" + sdf.format(date)
                        + "\\t" + "余额" + balance;

                break;
            case "3":
                System.out.print("消费金额");
                money = scanner.nextDouble();
                //money 的值范围应该效验 如果余额只有100 消费200肯定是不行的
                System.out.print("消费说明:");
                note = scanner.next();
                balance -= money;
                //拼接消费信息到details
                date = new Date();//获取当前日期
                details += "\\n" + note + "\\t-" + money + "\\t" +
                        sdf.format(date) + "\\t" + "余额" + balance;
                break;
            case "4":
                //用户输入4退出时 给出提示"你确定要退出吗?y/n" 必须输入正确的y/n
                //否则循环输入指令 知道输入y或者n
                //思路分析
                //(1)定义一个变量choice 接收用户的输入
                //(2)使用while+break,来处理接收到的输入时y或者n
                //(3)退出while后 在判断while是y还是n 就可以决定是否退出
                //(4)建议一段代码 完成一个小功能 尽量不要混在一起
                String choice = "";
                while (true){//要求用户必须输入y/n 否则就一直循环
                    System.out.println("你确定要退出吗y/n");
                    choice = scanner.next();
                    if ("y".equals(choice)||"n".equals(choice)){
                        break;
                    }
                }
                //当用户退出while后 进行判断
                if (choice.equals("y")){
                    loop = false;
                }
                break;
            default:
                System.out.println("选择有误 请重新选择");
        }
    } while (loop);
    System.out.println("———————————退出了零钱通————————————");
}

}

零钱通金额效验


在case “2”:和case “3”:里面加了些代码



源码
package com.Start300.SmallChange;

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

public class SmallChangeSys {
//化繁为简
//1.先完成显示菜单 并可以选择 给吃对应提示
//2.完成零钱通明细
//3.完成收益入账
//4.消费
//5.退出
//6.用户输入4退出时 给出提示y/n
public static void main(String[] args) {
//定义相应的变量
boolean loop = true;
Scanner scanner = new Scanner(System.in);
String key = “”;

//2.完成零钱通明细
//(1)可以把收益入账和消费保存到数组 (2)可以使用对象 (3)简单的话可以使用String拼接
String details = “--------------零钱通明细----------------”;

    //3.完成收益入账 完成功能驱动程序员增加新的变量和代码
    //定义新的变量
    double money = 0;
    double balance = 0;//balance 余额
    Date date = null;//date是java.util.Date类型,表示日期
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    //上面是用来日期格式化的 具体以后还会说到 这里只是了解即可

    //4.消费
    //定义新变量 保存消费的原因
    String note = "";

    do {//至少输出一次
        System.out.println("\\n==============零钱通菜单================");
        System.out.println("\\t\\t\\t1 零钱通明细");
        System.out.println("\\t\\t\\t2 收益入账");
        System.out.println("\\t\\t\\t3 消费");
        System.out.println("\\t\\t\\t4 退     出");

        System.out.println("请选择(1-4)");
        key = scanner.next();

        //使用switch分支结构
        switch (key) {
            case "1":
                System.out.println(details);
                break;
            case "2":
                System.out.print("收益入账金额");
                money = scanner.nextDouble();
                //money 的值范围应该效验 一会在完善
                //编程思想 找出不正确的金额条件 然后给出提示 就直接break
                if (money <= 0){
                    System.out.println("收益入账金额需要大于0");
                    break;
                }
                balance += money;//这里因为是入账 所以是+
                //拼接收益入账信息到details
                date = new Date();//获取当前日期
                //System.out.println(sdf.format(date));//用sdf格式化当前日期
                details += "\\n收益入账\\t+" + money + "\\t" + sdf.format(date)
                        + "\\t" + "余额" + balance;
                break;
            case "3":
                System.out.print("消费金额");
                money = scanner.nextDouble();
                //money 的值范围应该效验 如果余额只有100 消费200肯定是不行的
                if (money <= 0 ||money > balance){
                    System.out.println("你的消费金额应该在0-"+balance);
                    break;
                }
                System.out.print("消费说明:");
                note = scanner.next();
                balance -= money;
                //拼接消费信息到details
                date = new Date();//获取当前日期
                details += "\\n" + note + "\\t-" + money + "\\t" +
                        sdf.format(date) + "\\t" + "余额" + balance;
                break;
            case "4":
                //用户输入4退出时 给出提示"你确定要退出吗?y/n" 必须输入正确的y/n
                //否则循环输入指令 知道输入y或者n
                //思路分析
                //(1)定义一个变量choice 接收用户的输入
                //(2)使用while+break,来处理接收到的输入时y或者n
                //(3)退出while后 在判断while是y还是n 就可以决定是否退出
                //(4)建议一段代码 完成一个小功能 尽量不要混在一起
                String choice = "";
                while (true){//要求用户必须输入y/n 否则就一直循环
                    System.out.println("你确定要退出吗y/n");
                    choice = scanner.next();
                    if ("y".equals(choice)||"n".equals(choice)){
                        break;
                    }
                }
                //当用户退出while后 进行判断
                if (choice.equals("y")){
                    loop = false;
                }
                break;
            default:
                System.out.println("选择有误 请重新选择");
        }
    } while (loop);
    System.out.println("———————————退出了零钱通————————————");
}

}

零钱通OOP版





SmallChangeSysOOP类源码
package com.Start300.SmallChange.oop;

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

/**

  • 该类是完成零钱通的各个功能的类

  • 使用OOP(面向对象编程)

  • 将各个功能对应一个方法
    */
    public class SmallChangeSysOOP {

    //属性
    //定义相应的变量
    boolean loop = true;
    Scanner scanner = new Scanner(System.in);
    String key = “”;

    //2.完成零钱通明细
    //(1)可以把收益入账和消费保存到数组 (2)可以使用对象 (3)简单的话可以使用String拼接
    String details = “--------------零钱通明细----------------”;

    //3.完成收益入账 完成功能驱动程序员增加新的变量和代码
    //定义新的变量
    double money = 0;
    double balance = 0;//balance 余额
    Date date = null;//date是java.util.Date类型,表示日期
    SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm”);
    //上面是用来日期格式化的 具体以后还会说到 这里只是了解即可

    //4.消费
    //定义新变量 保存消费的原因
    String note = “”;

    //先完成显示菜单 并可以选择
    public void mainMenu() {
    do {//至少输出一次
    System.out.println("\\n零钱通菜单(OOP)=");
    System.out.println("\\t\\t\\t1 零钱通明细");
    System.out.println("\\t\\t\\t2 收益入账");
    System.out.println("\\t\\t\\t3 消费");
    System.out.println("\\t\\t\\t4 退 出");

         System.out.println("请选择(1-4)");
         key = scanner.next();
    
         //使用switch分支结构
         switch (key) {
             case "1":
                 this.detail();
                 break;
             case "2":
                 this.income();
                 break;
             case "3":
                 this.pay();
                 break;
             case "4":
                 this.exit();
                 break;
             default:
                 System.out.println("选择有误 请重新选择");
         }
     } while (loop);
     System.out.println("您退出了零钱通");
    

    }

    //完成零钱通明细
    public void detail() {
    System.out.println(details);
    }

    //完成收益入账
    public void income() {
    System.out.print(“收益入账金额”);
    money = scanner.nextDouble();
    //money 的值范围应该效验 一会在完善
    //编程思想 找出不正确的金额条件 然后给出提示 就直接return
    if (money <= 0) {
    System.out.println(“收益入账金额需要大于0”);
    return;//退出方法 不在执行后面的代码
    }
    balance += money;//这里因为是入账 所以是+
    //拼接收益入账信息到details
    date = new Date();//获取当前日期
    //System.out.println(sdf.format(date));//用sdf格式化当前日期
    details += “\\n收益入账\\t+” + money + “\\t” + sdf.format(date)
    + “\\t” + “余额” + balance;
    }
    //消费
    public void pay() {
    System.out.print(“消费金额”);
    money = scanner.nextDouble();
    //money 的值范围应该效验 如果余额只有100 消费200肯定是不行的
    if (money <= 0 || money > balance) {
    System.out.println(“你的消费金额应该在0-” + balance);
    return;
    }
    System.out.print(“消费说明:”);
    note = scanner.next();
    balance -= money;
    //拼接消费信息到details
    date = new Date();//获取当前日期
    details += “\\n” + note + “\\t-” + money + “\\t” +
    sdf.format(date) + “\\t” + “余额” + balance;
    }
    //退出
    public void exit() {
    String choice = “”;
    while (true) {//要求用户必须输入y/n 否则就一直循环
    System.out.println(“你确定要退出吗y/n”);
    choice = scanner.next();
    if (“y”.equals(choice) || “n”.equals(choice)) {
    break;
    }
    }
    //当用户退出while后 进行判断
    if (choice.equals(“y”)) {
    loop = false;
    }
    }
    }
    SmallChangeSysApp类源码
    package com.Start300.SmallChange.oop;

/**
*这里我们直接调用SmallChangeSysOOP对象 显示主菜单即可
*/
public class SmallChangeSysApp {
public static void main(String[] args) {
new SmallChangeSysOOP().mainMenu();
}
}

以上是关于java-零钱通(项目)的主要内容,如果未能解决你的问题,请参考以下文章

java-零钱通(项目)

节练习)

微信支付测试零钱通 零钱理财对标余额宝

java刷题--322零钱兑换

java刷题--518零钱兑换II

怎样设置微信转账到零钱?