千家信息网

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

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章为大家展示了Java模仿微信如何实现零钱通简易功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. 需求描述使用Java 开发零钱通项目, 模仿微信
千家信息网最后更新 2026年11月01日Java模仿微信如何实现零钱通简易功能

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

1. 需求描述

使用Java 开发零钱通项目, 模仿微信实现简易功能,可以完成收益入账,消费,查看明细,退出系统等功能,先按照一般方法写,后期在改进为OOP

预期界面:(实际可能不同)

2. 需求分析

面对这样一个需求,先化繁为简

  1. 写一个菜单

  2. 完成零钱通明细.

  3. 完成收益入账

  4. 消费

  5. 退出

  6. 用户输入4退出时,给出提示"你确定要退出吗? y/n",必须输入正确的y/n ,否则循环输入指令,直到输入y 或者 n

  7. 在收益入账和消费时,判断金额是否合理,并给出相应的提示

3. 实现零钱通主要功能

3.1 写一个菜单

先完成显示菜单,并可以选择菜单,并且给出对应提示

public static void main(String[] args) {        // define related variables        Scanner scanner = new Scanner(System.in);        String key = "";        boolean loop = true;        do {            System.out.println("==========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("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;

效果演示:

保证入账>0

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;

效果演示:

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;

效果演示:

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;                    }

效果演示

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  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 menupublic 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模仿微信如何实现零钱通简易功能,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

输入 收益 功能 零钱 消费 对象 明细 效果 方法 用户 菜单 提示 演示 简易 内容 函数 变量 需求 不用 技能 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳互联网络科技有限公司 亿账通互联网科技 互联网 视角下的科技创新 互联网高科技企业 成都仁贤领冠互联网科技有限公司 华脉科技工业互联网产品 科技互联网的估值 成都互联网科技公司100强 受益于互联网科技的高速发展 苏州五指互联网络科技有限 996高科技互联网公司 无锡工业互联网科技有限公司 伍佰万互联网科技怎么赚钱 广州燕处互联网科技有限公司 国产互联网科技公司 互联网高科技行业有哪些企业 版纳互联网科技选哪家 银川新华互联网科技学校是国营吗 科技和互联网行业的特点 科技发展第三阶段互联网时代 腾讯阿里互联网科技 杭州互联网科技公司 远拓互联网科技 金融科技和互联网金融 互联网科技类展会 互联网科技博主是什么意思 雨阳互联网卡科技有限公司 广州互联网高科技取餐柜 华人运通互联网科技公司 承德科技产业互联网平台
0