亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java模仿微信如何實現零錢通簡易功能

發布時間:2021-12-13 20:54:32 來源:億速云 閱讀:167 作者:柒染 欄目:開發技術

本篇文章為大家展示了Java模仿微信如何實現零錢通簡易功能,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

1. 需求描述

使用Java 開發零錢通項目, 模仿微信實現簡易功能,可以完成收益入賬,消費,查看明細,退出系統等功能,先按照一般方法寫,后期在改進為OOP

預期界面:(實際可能不同)

Java模仿微信如何實現零錢通簡易功能

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;

效果演示:

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模仿微信如何實現零錢通簡易功能,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

肇东市| 盐城市| 崇仁县| 莒南县| 南城县| 东乡| 天峨县| 法库县| 湟中县| 辰溪县| 车险| 邵东县| 青铜峡市| 泗阳县| 靖安县| 文山县| 皮山县| 和顺县| 宁安市| 滕州市| 逊克县| 新绛县| 改则县| 思茅市| 茌平县| 泰来县| 镇沅| 阿坝县| 涟源市| 蓬莱市| 巴林右旗| 麦盖提县| 新田县| 保定市| 岐山县| 珠海市| 革吉县| 读书| 安陆市| 开远市| 阿巴嘎旗|