微信小程序模拟零钱(微信小程序中的零钱通)

技术Java模仿微信如何实现零钱通简易功能本篇文章为大家展示了Java模仿微信如何实现零钱通简易功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. 需求描述使用Java 开发

这篇文章向你展示了Java是如何模仿微信实现换钱这一简单功能的。内容简洁易懂,一定会让你眼前一亮。希望通过这篇文章的详细介绍,你能有所收获。

00-1010 Java开发的换装项目,模仿微信实现简单的功能,可以完成收入入账、消费、查看明细、退出系统等功能。首先是按照一般方法编写,后来改进为OOP。

预期接口:(实际可能不同)

Java模仿微信如何实现零钱通简易功能

1. 需求描述

面对这样的需求,先把复杂性简单化。

写一份菜单。

完成变更细节。

完成收入输入

消费

放弃

当用户输入4退出时,系统会提示“您确定要退出吗?' Y/n ',您必须输入正确的y/n,否则,循环输入指令,直到您输入y或n。

收入入账消费时,判断金额是否合理,并给予相应提示。

00-1010

2. 需求分析

首先显示菜单,可以选择菜单并给出相应的提示。

publicationstativitmain(String[]args){ 0

//definerelatedvariables

scanner scanner=newScanner(system . in);

Stringkey=

booleanloop=true

做{

system . out . println('==========small change menu==========');

system . out . println(' t \ t \ t1 showchangedetails ');

system . out . println(' t \ t \ t2incomeentry ');

system . out . println(' \ t \ t \ t 3 consume ');

system . out . println(' t \ t \ t 4 exit ');

system . out . println(' pleasechoose 1-4: ');

key=scanner . next();

//useswitchtocontrol

sp; switch (key) {
                case "1":
                    System.out.println("1  show change details");
                    break;
                case "2":
                    System.out.println("2 income entry");
                    break;
                case "3":
                    System.out.println("3 consumption");
                    break;
                case "4":
                    System.out.println("4 exit");
                    System.out.println(" you have exit the SmallChange");
                    loop = false;
                    break;
                default:
                    System.out.println("err please choose again");
            }
        } while (loop);
    }

3.2 零钱通明细

思路

(1) 可以把收益入账和消费保存到数组

(2) 可以使用对象

(3) 简单的话可以使用String拼接

这里直接采取第三种方式

改变一下switch的case1

 String details = "-----------------零钱通明细------------------";
   case "1":
                    System.out.println(details);
                    break;

3.3 收益入账

完成收益入账

定义新的变量

 double money = 0;
        double balance = 0;
        Date date = null; // date 是 java.util.Date 类型,表示日期
        //if you don't like the default format of displaying date ,change it with sdf
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");

修改switch中的case2

 System.out.print("Income recorded amount:");
                    money = scanner.nextDouble();
                    //the range of money should be limited
                    //give the hits of the illegal money value 就直接break
                    balance += money;
                    //拼接收益入账信息到 details
                    date = new Date(); //Get the current time
                    details += "\n收益入账\t+" + money + "\t" + sdf.format(date)+ "\t" + balance;
                    break;

效果演示:

Java模仿微信如何实现零钱通简易功能

保证入账>0

Java模仿微信如何实现零钱通简易功能

3.4 消费

定义新的变量

 String note = "";

修改switch中的case3

  case "3":
                    System.out.print("Consumption amount:");
                    money = scanner.nextDouble();
                    //the range of money should be limited
                    System.out.print("Consumption Description:");
                    note = scanner.next();
                    balance -= money;
                    //Splicing consumption information to details
                    date = new Date();//Get the current time
                    details += "\n"+note + "\t-" + money + "\t" + sdf.format(date) + "\t" + balance;
                    break;

效果演示:

Java模仿微信如何实现零钱通简易功能

3.5 用户退出改进

给出确认,是否要退出

用户输入4退出时,给出提示"你确定要退出吗? y/n",必须输入正确的y/n ,

否则循环输入指令,直到输入y 或者 n

(1) 定义一个变量 choice, 接收用户的输入

(2) 使用 while + break, 来处理接收到的输入时 y 或者 n

(3) 退出while后,再判断choice是y还是n ,就可以决定是否退出

(4) 建议一段代码完成功能,不混在一起

  case "4":
                    String choice = "";
                    while (true) {
                        //The user is required to enter Y / N, otherwise it will cycle all the time
                        System.out.println("你确定要退出吗? y/n");
                        choice = scanner.next();
                        if ("y".equals(choice) || "n".equals(choice)) {
                            break;
                        }
                        //scheme 2
//                        if("y".equals(choice)) {
//                            loop = false;
//                            break;
//                        } else if ("n".equals(choice)) {
//                            break;
//                        }
                    }
                    if (choice.equals("y")) {
                        loop = false;
                    }
                    break;

效果演示:

Java模仿微信如何实现零钱通简易功能

3.6 改进金额判断

收入时

 if (money <= 0) {
                        System.out.println("The income entry amount must be greater than 0");
                        break;
                    }

支出时

   if (money <= 0 || money > balance) {
                        System.out.println("Your consumption amount should be 0-" + balance);
                        break;
                    }

效果演示

Java模仿微信如何实现零钱通简易功能

4. 面向过程版实现

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class SmallChangeSys {
    // try to reduce complexity to simplicity
//1.  First complete the display menu,
// and you can select the menu to give the corresponding prompt
//2.  Complete change details
//3.  Complete income entry
//4.  consumption
//5.  exit
//6.  When the user enters 4 to exit, the prompt "are you sure you want to exit?
// Y / N" will be given. You must enter the correct Y / N,
// otherwise cycle the input instruction until y or n is entered
//7. When the income is recorded and consumed,
// judge whether the amount is reasonable and give corresponding tips
    public static void main(String[] args) {
        // define related variables
        Scanner scanner = new Scanner(System.in);
        String key = "";
        boolean loop = true;
        //2. complete the change details
        //(1) 可以把收益入账和消费,保存到数组 (2) 可以使用对象 (3) 简单的话可以使用String拼接
        String details = "-----------------Change details------------------";
        //3. complete income entry
        double money = 0;
        double balance = 0;
        Date date = null; // date 是 java.util.Date 类型,表示日期
        //if you don't like the default format of displaying date ,change it with sdf
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        //4. consumption
        //define new variable,store the reason why consume
        String note = "";
        do {
            System.out.println("\n==========Small Change Menu==========");
            System.out.println("\t\t\t1 show change details");
            System.out.println("\t\t\t2 income entry");
            System.out.println("\t\t\t3 consumption");
            System.out.println("\t\t\t4 exit");
            System.out.println("please choose 1-4:");
            key = scanner.next();
            //use switch to control
            switch (key) {
                case "1":
                    System.out.println(details);
                    break;
                case "2":
                    System.out.print("Income recorded amount:");
                    money = scanner.nextDouble();
                    //the range of money should be limited
                    //commonly use <if> to judge the wrong situation make the code easy to read
                    //give the hits of the illegal money value 就直接break
                    if (money <= 0) {
                        System.out.println("The income entry amount must be greater than 0");
                        break;
                    }
                    balance += money;
                    //Splicing consumption information to details
                    date = new Date(); //Get the current time
                    details += "\n" + "Income " + "\t" + "+" + money + "\t" + sdf.format(date) + "\t" + balance;
                    break;
                case "3":
                    System.out.print("Consumption amount:");
                    money = scanner.nextDouble();
                    //the range of money should be limited
                    if (money <= 0 || money > balance) {
                        System.out.println("Your consumption amount should be 0-" + balance);
                        break;
                    }
                    System.out.print("Consumption Description:");
                    note = scanner.next();
                    balance -= money;
                    //Splicing consumption information to details
                    date = new Date();//Get the current time
                    details += "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t" + balance;
                    break;
                case "4":
                    String choice = "";
                    while (true) {
                        //The user is required to enter Y / N, otherwise it will cycle all the time
                        System.out.println("你确定要退出吗? y/n");
                        choice = scanner.next();
                        if ("y".equals(choice) || "n".equals(choice)) {
                            break;
                        }
                        //scheme 2
//                        if("y".equals(choice)) {
//                            loop = false;
//                            break;
//                        } else if ("n".equals(choice)) {
//                            break;
//                        }
                    }
                    if (choice.equals("y")) {
                        loop = false;
                    }
                    break;
                default:
                    System.out.println("err please choose again");

            }
        } while (loop);
        System.out.println(" you have exit the SmallChange");
    }
}

5. 优化成OOP版

很多东西可以直接复制过来变成方法,把原来的改过来是简单的

5.1 实现OOP版

那么先有一个执行的主类SmallChangeSysApp

//Call the object directly and display the main menu
public class SmallChangeSysApp {
    public static void main(String[] args) {
        new SmallChangeSysOOP().mainMenu();
    }
}

还有一个类专门是对象,我们叫它为SmallChangeSysOOP

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

/**
 * This class is used to complete various functions of zero money pass
 * Using OOP (object-oriented programming)
 * Each function corresponds to a method
 */
public class SmallChangeSysOOP {
    //basic variables
    boolean loop = true;
    Scanner scanner = new Scanner(System.in);
    String key = "";

    //display details
    String details = "-----------------Change details------------------";

    //income
    double money = 0;
    double balance = 0;
    Date date = null;
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");

    // consume
    String note = "";

    public void mainMenu() {
        do {

            System.out.println("\n================Small Change Menu(OOP)===============");
            System.out.println("\t\t\t1 show change details");
            System.out.println("\t\t\t2 income entry");
            System.out.println("\t\t\t3 consumption");
            System.out.println("\t\t\t4 exit");
            System.out.println("please choose 1-4:");
            key = scanner.next();

            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("Choose the wrong number please choose again");
            }

        } while (loop);
    }


    public void detail() {
        System.out.println(details);
    }

    public void income() {
        System.out.print("Income recorded amount:");
        money = scanner.nextDouble();

        if (money <= 0) {
            System.out.println("The income entry amount must be greater than 0");
            return; //exit and do not execute next sentence.change break to return
        }
        balance += money;
        date = new Date();
        details += "\nIncome \t+" + money + "\t" + sdf.format(date) + "\t" + balance;
    }

    public void pay() {
        System.out.print("Consumption amount:");
        money = scanner.nextDouble();
        if (money <= 0 || money > balance) {
            System.out.println("Your consumption amount should be 0-" + balance);
            return;
        }
        System.out.print("consumption description:");
        note = scanner.next();
        balance -= money;
        date = new Date();
        details += "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t" + balance;
    }

    //退出
    public void exit() {
        //When the user enters 4 to exit, the prompt "are you sure you want to exit?
        // Y / N" will be given. You must enter the correct Y / n
        String choice = "";
        while (true) {
            System.out.println("are you really gonna exit? y/n");
            choice = scanner.next();
            if ("y".equals(choice) || "n".equals(choice)) {
                break;
            }
            //scheme 2
//                        if("y".equals(choice)) {
//                            loop = false;
//                            break;
//                        } else if ("n".equals(choice)) {
//                            break;
//                        }
        }
        if (choice.equals("y")) {
            loop = false;
        }
    }
}

5.2 OOP的好处

OOP版主函数很简单,只要new这个对象就可以了,关于这个对象的其他方法也好属性也好,不用放在主函数里面,那样在主函数也可以自由加上想加得到内容,未来假如有他人要用,不用把整个文件拷过去,只要把类交给对方即可,这样扩展和可读性大大提升,要加什么功能就再写方法原先的扩展功能很麻烦,要来回切

上述内容就是Java模仿微信如何实现零钱通简易功能,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/144821.html

(0)

相关推荐

  • 注安报考条件,注安工程师需要什么条件

    技术注安报考条件,注安工程师需要什么条件一)具有安全工程及相关专业大学专科学历注安报考条件,从事安全生产业务满5年;或具有其他专业大学专科学历,从事安全生产业务满7年。(二)具有安全工程及相关专业大学本科学历,从事安全生

    生活 2021年10月20日
  • 狗能吃猫粮么,狗常吃猫粮会怎样

    技术狗能吃猫粮么,狗常吃猫粮会怎样狗常吃猫粮是有害处的,长期饲喂猫粮,狗狗会因为无法消化高量的蛋白质而出现胃肠敏感,甚至出现呕吐、腹泻等症状狗能吃猫粮么。随特别是对肝肾功能本来就有问题的狗狗来说,过多的蛋白质更是禁忌。

    生活 2021年10月26日
  • 微信如何实名认证不绑定银行卡,微信没有银行卡怎么实名认证

    技术微信如何实名认证不绑定银行卡,微信没有银行卡怎么实名认证微信不绑定银行卡也可通过绑定身份证进行实名认证的微信如何实名认证不绑定银行卡,具体操作如下:1、打开手机微信,点击微信页面下方的“我”2、进入我的页面,点击“钱

    生活 2021年10月28日
  • flinksql读取kafka写入mysql(flink写数据到数据库)

    技术flinksql怎么将数据写入到文件中本篇内容主要讲解“flinksql怎么将数据写入到文件中”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“flinksql怎么将数据写入

    攻略 2021年12月23日
  • sqlserver数据库主键的生成方式有哪些

    技术sqlserver数据库主键的生成方式有哪些sqlserver数据库主键的生成方式有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。主键的生成方式

    攻略 2021年12月1日
  • springboot会自动更新nacos配置吗(nacos与springboot版本对应)

    技术springboot使用nacos的示例分析springboot使用nacos的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、pom.xml

    攻略 2021年12月20日